From f9ac31853e77747c01f909180f7b22b9a0f97422 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Tue, 16 Mar 2021 14:30:15 +0800 Subject: [PATCH 01/60] Update version to v4.36.1 --- core.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core.go b/core.go index 1ebf417f0..5b9d3ce68 100644 --- a/core.go +++ b/core.go @@ -18,7 +18,7 @@ import ( ) var ( - version = "4.36.0" + version = "4.36.1" build = "Custom" codename = "V2Fly, a community-driven edition of V2Ray." intro = "A unified platform for anti-censorship." From c71ae9b31034641a31c34b46e3f18c58e37f531f Mon Sep 17 00:00:00 2001 From: DarthVader <61409963+darsvador@users.noreply.github.com> Date: Tue, 16 Mar 2021 19:07:32 +0800 Subject: [PATCH 02/60] Fix: core panics when zero domain/full type of rule (#786) --- common/strmatcher/mph_matcher.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/strmatcher/mph_matcher.go b/common/strmatcher/mph_matcher.go index 794d6b8d4..21b98e764 100644 --- a/common/strmatcher/mph_matcher.go +++ b/common/strmatcher/mph_matcher.go @@ -94,6 +94,10 @@ func (g *MphMatcherGroup) Build() { g.ac.Build() } keyLen := len(*g.ruleMap) + if keyLen == 0 { + keyLen = 1 + (*g.ruleMap)["empty___"] = RollingHash("empty___") + } g.level0 = make([]uint32, nextPow2(keyLen/4)) g.level0Mask = len(g.level0) - 1 g.level1 = make([]uint32, nextPow2(keyLen)) From cb4dd644fce0ddcebd8698df47281cde22807b7f Mon Sep 17 00:00:00 2001 From: loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Tue, 16 Mar 2021 19:21:14 +0800 Subject: [PATCH 03/60] Chore: fix MphDomainMatcher log --- app/router/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/router/config.go b/app/router/config.go index dc3b041dc..64213603f 100644 --- a/app/router/config.go +++ b/app/router/config.go @@ -75,7 +75,7 @@ func (rr *RoutingRule) BuildCondition() (Condition, error) { if err != nil { return nil, newError("failed to build domain condition with MphDomainMatcher").Base(err) } - newError("MphDomainMatcher is enabled for ", len(rr.Domain), "domain rules(s)").AtDebug().WriteToLog() + newError("MphDomainMatcher is enabled for ", len(rr.Domain), " domain rule(s)").AtDebug().WriteToLog() conds.Add(matcher) case "linear": fallthrough From 1eaec6818acef642ebfb050cc0b11b41afd62080 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Tue, 16 Mar 2021 12:49:23 +0000 Subject: [PATCH 04/60] Fix max delay unintentionally low --- transport/internet/grpc/dial.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transport/internet/grpc/dial.go b/transport/internet/grpc/dial.go index 4b4242aab..d376fc2b4 100644 --- a/transport/internet/grpc/dial.go +++ b/transport/internet/grpc/dial.go @@ -83,7 +83,7 @@ func getGrpcClient(dest net.Destination, dialOption grpc.DialOption) (*grpc.Clie BaseDelay: 500 * time.Millisecond, Multiplier: 1.5, Jitter: 0.2, - MaxDelay: 19 * time.Millisecond, + MaxDelay: 19 * time.Second, }, MinConnectTimeout: 5 * time.Second, }), From fcee3af2509a4cc8cf16fbaacca30f9350bbc8de Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Tue, 16 Mar 2021 21:21:23 +0800 Subject: [PATCH 05/60] Bump version to v4.36.2 --- core.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core.go b/core.go index 5b9d3ce68..ddcd44de4 100644 --- a/core.go +++ b/core.go @@ -18,7 +18,7 @@ import ( ) var ( - version = "4.36.1" + version = "4.36.2" build = "Custom" codename = "V2Fly, a community-driven edition of V2Ray." intro = "A unified platform for anti-censorship." From 00879c483e54dd327b153920569353c96398f90f Mon Sep 17 00:00:00 2001 From: RPRX <63339210+rprx@users.noreply.github.com> Date: Wed, 17 Mar 2021 10:09:07 +0000 Subject: [PATCH 06/60] Add grpcSettings & gunSettings to streamSettings --- infra/conf/transport_internet.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/infra/conf/transport_internet.go b/infra/conf/transport_internet.go index 80e18b58f..5e489b8e5 100644 --- a/infra/conf/transport_internet.go +++ b/infra/conf/transport_internet.go @@ -388,6 +388,8 @@ type StreamConfig struct { HTTPSettings *HTTPConfig `json:"httpSettings"` DSSettings *DomainSocketConfig `json:"dsSettings"` QUICSettings *QUICConfig `json:"quicSettings"` + GunSettings *GunConfig `json:"gunSettings"` + GRPCSettings *GunConfig `json:"grpcSettings"` SocketSettings *SocketConfig `json:"sockopt"` } @@ -469,17 +471,30 @@ func (c *StreamConfig) Build() (*internet.StreamConfig, error) { if c.QUICSettings != nil { qs, err := c.QUICSettings.Build() if err != nil { - return nil, newError("Failed to build QUIC config").Base(err) + return nil, newError("Failed to build QUIC config.").Base(err) } config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ ProtocolName: "quic", Settings: serial.ToTypedMessage(qs), }) } + if c.GunSettings == nil { + c.GunSettings = c.GRPCSettings + } + if c.GunSettings != nil { + gs, err := c.GunSettings.Build() + if err != nil { + return nil, newError("Failed to build Gun config.").Base(err) + } + config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ + ProtocolName: "gun", + Settings: serial.ToTypedMessage(gs), + }) + } if c.SocketSettings != nil { ss, err := c.SocketSettings.Build() if err != nil { - return nil, newError("Failed to build sockopt").Base(err) + return nil, newError("Failed to build sockopt.").Base(err) } config.SocketSettings = ss } From 9e9173acb42edb3c87ba4cd9f5ed5e3a72653db3 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:17:26 +0800 Subject: [PATCH 07/60] Chore: update protobuf & dependencies (#793) * Chore: update protobuf * Chore: regenerate mock files * Chore: update dependencies * Chore: use Go v1.16.2 and later --- .github/workflows/coverage.yml | 2 +- .github/workflows/linter.yml | 2 +- .github/workflows/release.yml | 4 +-- .github/workflows/test.yml | 2 +- app/commander/config.pb.go | 9 ++----- app/dispatcher/config.pb.go | 9 ++----- app/dns/config.pb.go | 9 ++----- app/dns/fakedns/fakedns.pb.go | 9 ++----- app/log/command/config.pb.go | 9 ++----- app/log/config.pb.go | 9 ++----- app/policy/config.pb.go | 9 ++----- app/proxyman/command/command.pb.go | 9 ++----- app/proxyman/config.pb.go | 9 ++----- app/reverse/config.pb.go | 9 ++----- app/router/command/command.pb.go | 9 ++----- app/router/config.pb.go | 9 ++----- app/stats/command/command.pb.go | 9 ++----- app/stats/config.pb.go | 9 ++----- common/log/log.pb.go | 9 ++----- common/net/address.pb.go | 9 ++----- common/net/destination.pb.go | 9 ++----- common/net/network.pb.go | 9 ++----- common/net/port.pb.go | 9 ++----- common/protocol/headers.pb.go | 9 ++----- common/protocol/server_spec.pb.go | 9 ++----- common/protocol/user.pb.go | 9 ++----- common/serial/typed_message.pb.go | 9 ++----- config.pb.go | 9 ++----- go.mod | 12 ++++----- go.sum | 27 ++++++++++--------- proxy/blackhole/config.pb.go | 9 ++----- proxy/dns/config.pb.go | 9 ++----- proxy/dokodemo/config.pb.go | 9 ++----- proxy/freedom/config.pb.go | 9 ++----- proxy/http/config.pb.go | 9 ++----- proxy/loopback/config.pb.go | 9 ++----- proxy/mtproto/config.pb.go | 9 ++----- proxy/shadowsocks/config.pb.go | 9 ++----- proxy/socks/config.pb.go | 9 ++----- proxy/trojan/config.pb.go | 9 ++----- proxy/vless/account.pb.go | 9 ++----- proxy/vless/inbound/config.pb.go | 9 ++----- proxy/vless/outbound/config.pb.go | 9 ++----- proxy/vmess/account.pb.go | 9 ++----- proxy/vmess/inbound/config.pb.go | 9 ++----- proxy/vmess/outbound/config.pb.go | 9 ++----- testing/mocks/dns.go | 1 - testing/mocks/log.go | 1 - testing/mocks/mux.go | 1 - testing/mocks/outbound.go | 1 - testing/mocks/proxy.go | 1 - transport/config.pb.go | 9 ++----- transport/internet/config.pb.go | 9 ++----- transport/internet/domainsocket/config.pb.go | 9 ++----- transport/internet/grpc/config.pb.go | 9 ++----- transport/internet/grpc/encoding/stream.pb.go | 9 ++----- transport/internet/headers/http/config.pb.go | 9 ++----- transport/internet/headers/noop/config.pb.go | 9 ++----- transport/internet/headers/srtp/config.pb.go | 9 ++----- transport/internet/headers/tls/config.pb.go | 9 ++----- transport/internet/headers/utp/config.pb.go | 9 ++----- .../internet/headers/wechat/config.pb.go | 9 ++----- .../internet/headers/wireguard/config.pb.go | 9 ++----- transport/internet/http/config.pb.go | 9 ++----- transport/internet/kcp/config.pb.go | 9 ++----- transport/internet/quic/config.pb.go | 9 ++----- transport/internet/tcp/config.pb.go | 9 ++----- transport/internet/tls/config.pb.go | 9 ++----- transport/internet/udp/config.pb.go | 9 ++----- transport/internet/websocket/config.pb.go | 9 ++----- 70 files changed, 144 insertions(+), 441 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 8c4eadb9c..0cdc7a43f 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v2 with: - go-version: ^1.16 + go-version: ^1.16.2 - name: Checkout codebase uses: actions/checkout@v2 diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 02d79f271..8ac51a4c9 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v2 with: - go-version: ^1.16 + go-version: ^1.16.2 - name: Checkout codebase uses: actions/checkout@v2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dee41439e..150ba21c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -98,7 +98,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: ^1.16 + go-version: ^1.16.2 - name: Get project dependencies run: go mod download @@ -164,7 +164,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: ^1.16 + go-version: ^1.16.2 - uses: actions/download-artifact@v2 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9e3e3d078..07d8dd316 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v2 with: - go-version: ^1.16 + go-version: ^1.16.2 - name: Checkout codebase uses: actions/checkout@v2 diff --git a/app/commander/config.pb.go b/app/commander/config.pb.go index 46ba967a6..3c251b713 100644 --- a/app/commander/config.pb.go +++ b/app/commander/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/commander/config.proto package commander import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Config is the settings for Commander. type Config struct { state protoimpl.MessageState diff --git a/app/dispatcher/config.pb.go b/app/dispatcher/config.pb.go index c8aa4c320..f0dd27dda 100644 --- a/app/dispatcher/config.pb.go +++ b/app/dispatcher/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/dispatcher/config.proto package dispatcher import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type SessionConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/app/dns/config.pb.go b/app/dns/config.pb.go index 29b8b2d25..c2a5fb705 100644 --- a/app/dns/config.pb.go +++ b/app/dns/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/dns/config.proto package dns import ( - proto "github.com/golang/protobuf/proto" router "github.com/v2fly/v2ray-core/v4/app/router" net "github.com/v2fly/v2ray-core/v4/common/net" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -23,10 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type DomainMatchingType int32 const ( diff --git a/app/dns/fakedns/fakedns.pb.go b/app/dns/fakedns/fakedns.pb.go index 18d187b4c..4ffb298b8 100644 --- a/app/dns/fakedns/fakedns.pb.go +++ b/app/dns/fakedns/fakedns.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/dns/fakedns/fakedns.proto package fakedns import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type FakeDnsPool struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/app/log/command/config.pb.go b/app/log/command/config.pb.go index 9ae79fb86..48abda07c 100644 --- a/app/log/command/config.pb.go +++ b/app/log/command/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/log/command/config.proto package command import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/app/log/config.pb.go b/app/log/config.pb.go index 4a6f9d041..b14f894a0 100644 --- a/app/log/config.pb.go +++ b/app/log/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/log/config.proto package log import ( - proto "github.com/golang/protobuf/proto" log "github.com/v2fly/v2ray-core/v4/common/log" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type LogType int32 const ( diff --git a/app/policy/config.pb.go b/app/policy/config.pb.go index 53ae954f6..eda161864 100644 --- a/app/policy/config.pb.go +++ b/app/policy/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/policy/config.proto package policy import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Second struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/app/proxyman/command/command.pb.go b/app/proxyman/command/command.pb.go index 0072e2761..e08158ad6 100644 --- a/app/proxyman/command/command.pb.go +++ b/app/proxyman/command/command.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/proxyman/command/command.proto package command import ( - proto "github.com/golang/protobuf/proto" v4 "github.com/v2fly/v2ray-core/v4" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" serial "github.com/v2fly/v2ray-core/v4/common/serial" @@ -24,10 +23,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type AddUserOperation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/app/proxyman/config.pb.go b/app/proxyman/config.pb.go index 82478e380..84cfc802f 100644 --- a/app/proxyman/config.pb.go +++ b/app/proxyman/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/proxyman/config.proto package proxyman import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" serial "github.com/v2fly/v2ray-core/v4/common/serial" internet "github.com/v2fly/v2ray-core/v4/transport/internet" @@ -24,10 +23,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type KnownProtocols int32 const ( diff --git a/app/reverse/config.pb.go b/app/reverse/config.pb.go index c8270d61c..a64ae8dae 100644 --- a/app/reverse/config.pb.go +++ b/app/reverse/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/reverse/config.proto package reverse import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Control_State int32 const ( diff --git a/app/router/command/command.pb.go b/app/router/command/command.pb.go index 62eee395b..34a0f6c02 100644 --- a/app/router/command/command.pb.go +++ b/app/router/command/command.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/router/command/command.proto package command import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // RoutingContext is the context with information relative to routing process. // It conforms to the structure of v2ray.core.features.routing.Context and // v2ray.core.features.routing.Route. diff --git a/app/router/config.pb.go b/app/router/config.pb.go index 5e77322d0..8fa534e9d 100644 --- a/app/router/config.pb.go +++ b/app/router/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/router/config.proto package router import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Type of domain value. type Domain_Type int32 diff --git a/app/stats/command/command.pb.go b/app/stats/command/command.pb.go index 40eb45fce..cc1361962 100644 --- a/app/stats/command/command.pb.go +++ b/app/stats/command/command.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/stats/command/command.proto package command import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type GetStatsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/app/stats/config.pb.go b/app/stats/config.pb.go index d7c663133..fc797c0b7 100644 --- a/app/stats/config.pb.go +++ b/app/stats/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: app/stats/config.proto package stats import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/common/log/log.pb.go b/common/log/log.pb.go index b3134807b..877e4fb43 100644 --- a/common/log/log.pb.go +++ b/common/log/log.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/log/log.proto package log import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Severity int32 const ( diff --git a/common/net/address.pb.go b/common/net/address.pb.go index 969157686..e6181d99b 100644 --- a/common/net/address.pb.go +++ b/common/net/address.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/net/address.proto package net import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Address of a network host. It may be either an IP address or a domain // address. type IPOrDomain struct { diff --git a/common/net/destination.pb.go b/common/net/destination.pb.go index ffb422d09..34ae9c3ff 100644 --- a/common/net/destination.pb.go +++ b/common/net/destination.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/net/destination.proto package net import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Endpoint of a network connection. type Endpoint struct { state protoimpl.MessageState diff --git a/common/net/network.pb.go b/common/net/network.pb.go index cdc7b0949..9d0d1e21b 100644 --- a/common/net/network.pb.go +++ b/common/net/network.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/net/network.proto package net import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Network int32 const ( diff --git a/common/net/port.pb.go b/common/net/port.pb.go index 890f0916f..bd0116ff3 100644 --- a/common/net/port.pb.go +++ b/common/net/port.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/net/port.proto package net import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // PortRange represents a range of ports. type PortRange struct { state protoimpl.MessageState diff --git a/common/protocol/headers.pb.go b/common/protocol/headers.pb.go index d420dba77..8a27ef1de 100644 --- a/common/protocol/headers.pb.go +++ b/common/protocol/headers.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/protocol/headers.proto package protocol import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type SecurityType int32 const ( diff --git a/common/protocol/server_spec.pb.go b/common/protocol/server_spec.pb.go index bdd7ba8a6..9c89d98bb 100644 --- a/common/protocol/server_spec.pb.go +++ b/common/protocol/server_spec.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/protocol/server_spec.proto package protocol import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type ServerEndpoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/common/protocol/user.pb.go b/common/protocol/user.pb.go index 02388bdcf..bb810c153 100644 --- a/common/protocol/user.pb.go +++ b/common/protocol/user.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/protocol/user.proto package protocol import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // User is a generic user for all procotols. type User struct { state protoimpl.MessageState diff --git a/common/serial/typed_message.pb.go b/common/serial/typed_message.pb.go index f47aaf93f..cbba9a9fb 100644 --- a/common/serial/typed_message.pb.go +++ b/common/serial/typed_message.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: common/serial/typed_message.proto package serial import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // TypedMessage is a serialized proto message along with its type name. type TypedMessage struct { state protoimpl.MessageState diff --git a/config.pb.go b/config.pb.go index 55a353a24..5a0fbb5b5 100644 --- a/config.pb.go +++ b/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: config.proto package core import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" transport "github.com/v2fly/v2ray-core/v4/transport" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -23,10 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Config is the master config of V2Ray. V2Ray takes this config as input and // functions accordingly. type Config struct { diff --git a/go.mod b/go.mod index 84236bd02..c598d181b 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.16 require ( github.com/golang/mock v1.5.0 - github.com/golang/protobuf v1.4.3 + github.com/golang/protobuf v1.5.1 github.com/google/go-cmp v0.5.5 github.com/gorilla/websocket v1.4.2 github.com/lucas-clemente/quic-go v0.19.3 @@ -13,12 +13,12 @@ require ( github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c github.com/stretchr/testify v1.7.0 github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 - go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb - golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 - golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 + go.starlark.net v0.0.0-20210312235212-74c10e2c17dc + golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 + golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b + golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e google.golang.org/grpc v1.36.0 - google.golang.org/protobuf v1.25.0 + google.golang.org/protobuf v1.26.0 h12.io/socks v1.0.2 ) diff --git a/go.sum b/go.sum index fe5410ecc..e98351138 100644 --- a/go.sum +++ b/go.sum @@ -62,8 +62,9 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1 h1:jAbXjIeW2ZSW2AwFxlGTDoc2CjI2XujLkV3ArsZFCvc= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -179,8 +180,8 @@ github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49u github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb h1:4cM8hRkSWxRrHV7AQowcBrM91A8KJcUp2z0sfQOGMY0= -go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= +go.starlark.net v0.0.0-20210312235212-74c10e2c17dc h1:pVkptfeOTFfx+zXZo7HEHN3d5LmhatBFvHdm/f2QnpY= +go.starlark.net v0.0.0-20210312235212-74c10e2c17dc/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -189,8 +190,8 @@ golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 h1:gzMM0EjIYiRmJI3+jBdFuoynZlpxa2JQZsolKu09BXo= +golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -212,8 +213,9 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 h1:b0LrWgu8+q7z4J+0Y3Umo5q1dL7NXBkKBWkaVkAq17E= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -237,16 +239,15 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b h1:ggRgirZABFolTmi3sn6Ivd9SipZwLedQ5wR0aAKnFxU= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e h1:XNp2Flc/1eWQGk5BLzqTAN7fQIwIbfyVTuVxXxZh73M= +golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -305,8 +306,10 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 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= diff --git a/proxy/blackhole/config.pb.go b/proxy/blackhole/config.pb.go index acf2b47fa..17f96be0f 100644 --- a/proxy/blackhole/config.pb.go +++ b/proxy/blackhole/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/blackhole/config.proto package blackhole import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type NoneResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/dns/config.pb.go b/proxy/dns/config.pb.go index 032bb1632..1636576e7 100644 --- a/proxy/dns/config.pb.go +++ b/proxy/dns/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/dns/config.proto package dns import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/dokodemo/config.pb.go b/proxy/dokodemo/config.pb.go index 573810c4a..5556a15eb 100644 --- a/proxy/dokodemo/config.pb.go +++ b/proxy/dokodemo/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/dokodemo/config.proto package dokodemo import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/freedom/config.pb.go b/proxy/freedom/config.pb.go index 2740859ff..cb8d79af7 100644 --- a/proxy/freedom/config.pb.go +++ b/proxy/freedom/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/freedom/config.proto package freedom import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config_DomainStrategy int32 const ( diff --git a/proxy/http/config.pb.go b/proxy/http/config.pb.go index c5d6b9e1f..1f89d63de 100644 --- a/proxy/http/config.pb.go +++ b/proxy/http/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/http/config.proto package http import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Account struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/loopback/config.pb.go b/proxy/loopback/config.pb.go index dbef555fc..182d0bdc9 100644 --- a/proxy/loopback/config.pb.go +++ b/proxy/loopback/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/loopback/config.proto package loopback import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/mtproto/config.pb.go b/proxy/mtproto/config.pb.go index c413a93f6..15238541c 100644 --- a/proxy/mtproto/config.pb.go +++ b/proxy/mtproto/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/mtproto/config.proto package mtproto import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Account struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/shadowsocks/config.pb.go b/proxy/shadowsocks/config.pb.go index 46a5b8411..7b6386530 100644 --- a/proxy/shadowsocks/config.pb.go +++ b/proxy/shadowsocks/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/shadowsocks/config.proto package shadowsocks import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -23,10 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type CipherType int32 const ( diff --git a/proxy/socks/config.pb.go b/proxy/socks/config.pb.go index 567267fa0..56fe34e15 100644 --- a/proxy/socks/config.pb.go +++ b/proxy/socks/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/socks/config.proto package socks import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -23,10 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // AuthType is the authentication type of Socks proxy. type AuthType int32 diff --git a/proxy/trojan/config.pb.go b/proxy/trojan/config.pb.go index 33884f9f0..4f5df4f0a 100644 --- a/proxy/trojan/config.pb.go +++ b/proxy/trojan/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/trojan/config.proto package trojan import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Account struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/vless/account.pb.go b/proxy/vless/account.pb.go index bf9e616de..4270e8925 100644 --- a/proxy/vless/account.pb.go +++ b/proxy/vless/account.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vless/account.proto package vless import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Account struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/vless/inbound/config.pb.go b/proxy/vless/inbound/config.pb.go index 95b1db0a1..8c3fca490 100644 --- a/proxy/vless/inbound/config.pb.go +++ b/proxy/vless/inbound/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vless/inbound/config.proto package inbound import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Fallback struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/vless/outbound/config.pb.go b/proxy/vless/outbound/config.pb.go index 3fcb0b171..900d07e38 100644 --- a/proxy/vless/outbound/config.pb.go +++ b/proxy/vless/outbound/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vless/outbound/config.proto package outbound import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/vmess/account.pb.go b/proxy/vmess/account.pb.go index b8214ca43..268089ec2 100644 --- a/proxy/vmess/account.pb.go +++ b/proxy/vmess/account.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vmess/account.proto package vmess import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Account struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/vmess/inbound/config.pb.go b/proxy/vmess/inbound/config.pb.go index 13b99be78..80ab7787a 100644 --- a/proxy/vmess/inbound/config.pb.go +++ b/proxy/vmess/inbound/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vmess/inbound/config.proto package inbound import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type DetourConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proxy/vmess/outbound/config.pb.go b/proxy/vmess/outbound/config.pb.go index ab045d1c4..1991204d3 100644 --- a/proxy/vmess/outbound/config.pb.go +++ b/proxy/vmess/outbound/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vmess/outbound/config.proto package outbound import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/testing/mocks/dns.go b/testing/mocks/dns.go index 92c43f6bc..1961578c4 100644 --- a/testing/mocks/dns.go +++ b/testing/mocks/dns.go @@ -9,7 +9,6 @@ import ( reflect "reflect" gomock "github.com/golang/mock/gomock" - dns "github.com/v2fly/v2ray-core/v4/features/dns" ) diff --git a/testing/mocks/log.go b/testing/mocks/log.go index ef357e3fb..436d97e7b 100644 --- a/testing/mocks/log.go +++ b/testing/mocks/log.go @@ -8,7 +8,6 @@ import ( reflect "reflect" gomock "github.com/golang/mock/gomock" - log "github.com/v2fly/v2ray-core/v4/common/log" ) diff --git a/testing/mocks/mux.go b/testing/mocks/mux.go index d6f1139cc..e22d78798 100644 --- a/testing/mocks/mux.go +++ b/testing/mocks/mux.go @@ -8,7 +8,6 @@ import ( reflect "reflect" gomock "github.com/golang/mock/gomock" - mux "github.com/v2fly/v2ray-core/v4/common/mux" ) diff --git a/testing/mocks/outbound.go b/testing/mocks/outbound.go index 5c91d757c..ec576b1c8 100644 --- a/testing/mocks/outbound.go +++ b/testing/mocks/outbound.go @@ -9,7 +9,6 @@ import ( reflect "reflect" gomock "github.com/golang/mock/gomock" - outbound "github.com/v2fly/v2ray-core/v4/features/outbound" ) diff --git a/testing/mocks/proxy.go b/testing/mocks/proxy.go index c01239bfc..0b625fc64 100644 --- a/testing/mocks/proxy.go +++ b/testing/mocks/proxy.go @@ -9,7 +9,6 @@ import ( reflect "reflect" gomock "github.com/golang/mock/gomock" - net "github.com/v2fly/v2ray-core/v4/common/net" routing "github.com/v2fly/v2ray-core/v4/features/routing" transport "github.com/v2fly/v2ray-core/v4/transport" diff --git a/transport/config.pb.go b/transport/config.pb.go index cee6ce289..ac751bf57 100644 --- a/transport/config.pb.go +++ b/transport/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/config.proto package transport import ( - proto "github.com/golang/protobuf/proto" internet "github.com/v2fly/v2ray-core/v4/transport/internet" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Global transport settings. This affects all type of connections that go // through V2Ray. Deprecated. Use each settings in StreamConfig. // diff --git a/transport/internet/config.pb.go b/transport/internet/config.pb.go index a5e9f5829..14c0ed478 100644 --- a/transport/internet/config.pb.go +++ b/transport/internet/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/config.proto package internet import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type TransportProtocol int32 const ( diff --git a/transport/internet/domainsocket/config.pb.go b/transport/internet/domainsocket/config.pb.go index 518c508a6..913ca7406 100644 --- a/transport/internet/domainsocket/config.pb.go +++ b/transport/internet/domainsocket/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/domainsocket/config.proto package domainsocket import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/grpc/config.pb.go b/transport/internet/grpc/config.pb.go index 14bb4f284..d1b81b9fc 100644 --- a/transport/internet/grpc/config.pb.go +++ b/transport/internet/grpc/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/grpc/config.proto package grpc import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/grpc/encoding/stream.pb.go b/transport/internet/grpc/encoding/stream.pb.go index 0474bb6b8..1afcf3f3b 100644 --- a/transport/internet/grpc/encoding/stream.pb.go +++ b/transport/internet/grpc/encoding/stream.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/grpc/encoding/stream.proto package encoding import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Hunk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/http/config.pb.go b/transport/internet/headers/http/config.pb.go index 114df7911..13079fe42 100644 --- a/transport/internet/headers/http/config.pb.go +++ b/transport/internet/headers/http/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/http/config.proto package http import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/noop/config.pb.go b/transport/internet/headers/noop/config.pb.go index 1e011bd94..4a170ddaa 100644 --- a/transport/internet/headers/noop/config.pb.go +++ b/transport/internet/headers/noop/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/noop/config.proto package noop import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/srtp/config.pb.go b/transport/internet/headers/srtp/config.pb.go index f8567f5ea..4e70e1433 100644 --- a/transport/internet/headers/srtp/config.pb.go +++ b/transport/internet/headers/srtp/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/srtp/config.proto package srtp import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/tls/config.pb.go b/transport/internet/headers/tls/config.pb.go index 0b27bbd87..60cc4b61e 100644 --- a/transport/internet/headers/tls/config.pb.go +++ b/transport/internet/headers/tls/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/tls/config.proto package tls import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type PacketConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/utp/config.pb.go b/transport/internet/headers/utp/config.pb.go index 9e698b0a7..313590347 100644 --- a/transport/internet/headers/utp/config.pb.go +++ b/transport/internet/headers/utp/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/utp/config.proto package utp import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/wechat/config.pb.go b/transport/internet/headers/wechat/config.pb.go index dd912775b..d77437987 100644 --- a/transport/internet/headers/wechat/config.pb.go +++ b/transport/internet/headers/wechat/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/wechat/config.proto package wechat import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type VideoConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/headers/wireguard/config.pb.go b/transport/internet/headers/wireguard/config.pb.go index 4eff2c8e5..8c2c5994c 100644 --- a/transport/internet/headers/wireguard/config.pb.go +++ b/transport/internet/headers/wireguard/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/headers/wireguard/config.proto package wireguard import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type WireguardConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/http/config.pb.go b/transport/internet/http/config.pb.go index fd720a307..63a882a68 100644 --- a/transport/internet/http/config.pb.go +++ b/transport/internet/http/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/http/config.proto package http import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/kcp/config.pb.go b/transport/internet/kcp/config.pb.go index 1ac2e4cc4..661536c03 100644 --- a/transport/internet/kcp/config.pb.go +++ b/transport/internet/kcp/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/kcp/config.proto package kcp import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - // Maximum Transmission Unit, in bytes. type MTU struct { state protoimpl.MessageState diff --git a/transport/internet/quic/config.pb.go b/transport/internet/quic/config.pb.go index ecdab72a9..e8602c749 100644 --- a/transport/internet/quic/config.pb.go +++ b/transport/internet/quic/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/quic/config.proto package quic import ( - proto "github.com/golang/protobuf/proto" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -23,10 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/tcp/config.pb.go b/transport/internet/tcp/config.pb.go index 35419c739..2aaa6cc44 100644 --- a/transport/internet/tcp/config.pb.go +++ b/transport/internet/tcp/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/tcp/config.proto package tcp import ( - proto "github.com/golang/protobuf/proto" serial "github.com/v2fly/v2ray-core/v4/common/serial" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,10 +21,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/tls/config.pb.go b/transport/internet/tls/config.pb.go index a40ca774e..04658f41a 100644 --- a/transport/internet/tls/config.pb.go +++ b/transport/internet/tls/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/tls/config.proto package tls import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Certificate_Usage int32 const ( diff --git a/transport/internet/udp/config.pb.go b/transport/internet/udp/config.pb.go index 8b716d0aa..da9773170 100644 --- a/transport/internet/udp/config.pb.go +++ b/transport/internet/udp/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/udp/config.proto package udp import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/transport/internet/websocket/config.pb.go b/transport/internet/websocket/config.pb.go index a14cd3bf8..c3e370b9d 100644 --- a/transport/internet/websocket/config.pb.go +++ b/transport/internet/websocket/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: transport/internet/websocket/config.proto package websocket import ( - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -21,10 +20,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache From 7459e2c5efe95144b09dbfd80ab0ee95e1539a55 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Thu, 18 Mar 2021 18:32:40 +0800 Subject: [PATCH 08/60] Fix: vprotogen loop dependency (#797) * Chore: remove protoc-gen-gofast * Fix: loop dependency * Chore: regenerate VLESS pb.go file * Fix: compare test --- infra/vprotogen/main.go | 93 ++++- proto.go | 7 - proxy/vless/encoding/addons.pb.go | 483 +++++++------------------- proxy/vless/encoding/encoding_test.go | 12 +- 4 files changed, 221 insertions(+), 374 deletions(-) diff --git a/infra/vprotogen/main.go b/infra/vprotogen/main.go index 0d8f1cabd..e7d6efe6d 100644 --- a/infra/vprotogen/main.go +++ b/infra/vprotogen/main.go @@ -2,16 +2,81 @@ package main import ( "fmt" + "go/build" + "io/ioutil" "os" "os/exec" "path/filepath" "runtime" "strings" - - core "github.com/v2fly/v2ray-core/v4" - "github.com/v2fly/v2ray-core/v4/common" ) +// envFile returns the name of the Go environment configuration file. +// Copy from https://github.com/golang/go/blob/c4f2a9788a7be04daf931ac54382fbe2cb754938/src/cmd/go/internal/cfg/cfg.go#L150-L166 +func envFile() (string, error) { + if file := os.Getenv("GOENV"); file != "" { + if file == "off" { + return "", fmt.Errorf("GOENV=off") + } + return file, nil + } + dir, err := os.UserConfigDir() + if err != nil { + return "", err + } + if dir == "" { + return "", fmt.Errorf("missing user-config dir") + } + return filepath.Join(dir, "go", "env"), nil +} + +// GetRuntimeEnv returns the value of runtime environment variable, +// that is set by running following command: `go env -w key=value`. +func GetRuntimeEnv(key string) (string, error) { + file, err := envFile() + if err != nil { + return "", err + } + if file == "" { + return "", fmt.Errorf("missing runtime env file") + } + var data []byte + var runtimeEnv string + data, readErr := ioutil.ReadFile(file) + if readErr != nil { + return "", readErr + } + envStrings := strings.Split(string(data), "\n") + for _, envItem := range envStrings { + envItem = strings.TrimSuffix(envItem, "\r") + envKeyValue := strings.Split(envItem, "=") + if strings.EqualFold(strings.TrimSpace(envKeyValue[0]), key) { + runtimeEnv = strings.TrimSpace(envKeyValue[1]) + } + } + return runtimeEnv, nil +} + +// GetGOBIN returns GOBIN environment variable as a string. It will NOT be empty. +func GetGOBIN() string { + // The one set by user explicitly by `export GOBIN=/path` or `env GOBIN=/path command` + GOBIN := os.Getenv("GOBIN") + if GOBIN == "" { + var err error + // The one set by user by running `go env -w GOBIN=/path` + GOBIN, err = GetRuntimeEnv("GOBIN") + if err != nil { + // The default one that Golang uses + return filepath.Join(build.Default.GOPATH, "bin") + } + if GOBIN == "" { + return filepath.Join(build.Default.GOPATH, "bin") + } + return GOBIN + } + return GOBIN +} + func main() { pwd, wdErr := os.Getwd() if wdErr != nil { @@ -19,17 +84,17 @@ func main() { os.Exit(1) } - GOBIN := common.GetGOBIN() + GOBIN := GetGOBIN() binPath := os.Getenv("PATH") - pathSlice := []string{binPath, GOBIN, pwd} + pathSlice := []string{pwd, GOBIN, binPath} binPath = strings.Join(pathSlice, string(os.PathListSeparator)) os.Setenv("PATH", binPath) - EXE := "" + suffix := "" if runtime.GOOS == "windows" { - EXE = ".exe" + suffix = ".exe" } - protoc := "protoc" + EXE + protoc := "protoc" + suffix if path, err := exec.LookPath(protoc); err != nil { fmt.Println("Make sure that you have `" + protoc + "` in your system path or current path. To download it, please visit https://github.com/protocolbuffers/protobuf/releases") @@ -64,11 +129,13 @@ func main() { for _, files := range protoFilesMap { for _, relProtoFile := range files { - var args []string - if core.ProtoFilesUsingProtocGenGoFast[relProtoFile] { - args = []string{"--gofast_out", pwd, "--gofast_opt", "paths=source_relative", "--plugin", "protoc-gen-gofast=" + GOBIN + "/protoc-gen-gofast" + EXE} - } else { - args = []string{"--go_out", pwd, "--go_opt", "paths=source_relative", "--go-grpc_out", pwd, "--go-grpc_opt", "paths=source_relative", "--plugin", "protoc-gen-go=" + GOBIN + "/protoc-gen-go" + EXE, "--plugin", "protoc-gen-go-grpc=" + GOBIN + "/protoc-gen-go-grpc" + EXE} + args := []string{ + "--go_out", pwd, + "--go_opt", "paths=source_relative", + "--go-grpc_out", pwd, + "--go-grpc_opt", "paths=source_relative", + "--plugin", "protoc-gen-go=" + filepath.Join(GOBIN, "protoc-gen-go"+suffix), + "--plugin", "protoc-gen-go-grpc=" + filepath.Join(GOBIN, "protoc-gen-go-grpc"+suffix), } args = append(args, relProtoFile) cmd := exec.Command(protoc, args...) diff --git a/proto.go b/proto.go index 9b39bed83..54562ae2c 100644 --- a/proto.go +++ b/proto.go @@ -1,12 +1,5 @@ package core -import "path/filepath" - //go:generate go install -v google.golang.org/protobuf/cmd/protoc-gen-go@latest //go:generate go install -v google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest -//go:generate go install -v github.com/gogo/protobuf/protoc-gen-gofast@latest //go:generate go run ./infra/vprotogen/ - -// ProtoFilesUsingProtocGenGoFast is the map of Proto files -// that use `protoc-gen-gofast` to generate pb.go files -var ProtoFilesUsingProtocGenGoFast = map[string]bool{filepath.Join("proxy", "vless", "encoding", "addons.proto"): true} diff --git a/proxy/vless/encoding/addons.pb.go b/proxy/vless/encoding/addons.pb.go index 6c50767a3..ff1400594 100644 --- a/proxy/vless/encoding/addons.pb.go +++ b/proxy/vless/encoding/addons.pb.go @@ -1,381 +1,160 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/vless/encoding/addons.proto package encoding import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Addons struct { - Flow string `protobuf:"bytes,1,opt,name=Flow,proto3" json:"Flow,omitempty"` - Seed []byte `protobuf:"bytes,2,opt,name=Seed,proto3" json:"Seed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Flow string `protobuf:"bytes,1,opt,name=Flow,proto3" json:"Flow,omitempty"` + Seed []byte `protobuf:"bytes,2,opt,name=Seed,proto3" json:"Seed,omitempty"` } -func (m *Addons) Reset() { *m = Addons{} } -func (m *Addons) String() string { return proto.CompactTextString(m) } -func (*Addons) ProtoMessage() {} -func (*Addons) Descriptor() ([]byte, []int) { - return fileDescriptor_75ab671b0ca8b1cc, []int{0} -} -func (m *Addons) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Addons) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Addons.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *Addons) Reset() { + *x = Addons{} + if protoimpl.UnsafeEnabled { + mi := &file_proxy_vless_encoding_addons_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } } -func (m *Addons) XXX_Merge(src proto.Message) { - xxx_messageInfo_Addons.Merge(m, src) -} -func (m *Addons) XXX_Size() int { - return m.Size() -} -func (m *Addons) XXX_DiscardUnknown() { - xxx_messageInfo_Addons.DiscardUnknown(m) + +func (x *Addons) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_Addons proto.InternalMessageInfo +func (*Addons) ProtoMessage() {} -func (m *Addons) GetFlow() string { - if m != nil { - return m.Flow +func (x *Addons) ProtoReflect() protoreflect.Message { + mi := &file_proxy_vless_encoding_addons_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Addons.ProtoReflect.Descriptor instead. +func (*Addons) Descriptor() ([]byte, []int) { + return file_proxy_vless_encoding_addons_proto_rawDescGZIP(), []int{0} +} + +func (x *Addons) GetFlow() string { + if x != nil { + return x.Flow } return "" } -func (m *Addons) GetSeed() []byte { - if m != nil { - return m.Seed +func (x *Addons) GetSeed() []byte { + if x != nil { + return x.Seed } return nil } -func init() { - proto.RegisterType((*Addons)(nil), "v2ray.core.proxy.vless.encoding.Addons") -} +var File_proxy_vless_encoding_addons_proto protoreflect.FileDescriptor -func init() { proto.RegisterFile("proxy/vless/encoding/addons.proto", fileDescriptor_75ab671b0ca8b1cc) } - -var fileDescriptor_75ab671b0ca8b1cc = []byte{ - // 206 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x28, 0xca, 0xaf, - 0xa8, 0xd4, 0x2f, 0xcb, 0x49, 0x2d, 0x2e, 0xd6, 0x4f, 0xcd, 0x4b, 0xce, 0x4f, 0xc9, 0xcc, 0x4b, - 0xd7, 0x4f, 0x4c, 0x49, 0xc9, 0xcf, 0x2b, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x2f, - 0x33, 0x2a, 0x4a, 0xac, 0xd4, 0x4b, 0xce, 0x2f, 0x4a, 0xd5, 0x03, 0xab, 0xd6, 0x03, 0xab, 0xd6, - 0x83, 0xa9, 0x56, 0x32, 0xe0, 0x62, 0x73, 0x04, 0x6b, 0x10, 0x12, 0xe2, 0x62, 0x71, 0xcb, 0xc9, - 0x2f, 0x97, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0xb3, 0x41, 0x62, 0xc1, 0xa9, 0xa9, 0x29, - 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0x3c, 0x41, 0x60, 0xb6, 0x53, 0x1f, 0xe3, 0x89, 0x47, 0x72, 0x8c, - 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe3, 0xb1, 0x1c, 0x03, 0x97, 0x72, 0x72, - 0x7e, 0xae, 0x1e, 0x01, 0x9b, 0x02, 0x18, 0xa3, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, - 0x92, 0xf3, 0x73, 0xf5, 0xcb, 0x8c, 0xd2, 0x72, 0x2a, 0xf5, 0xc1, 0x7a, 0x74, 0x41, 0x7a, 0xf4, - 0xcb, 0x4c, 0xf4, 0xb1, 0x79, 0x67, 0x15, 0x93, 0x7c, 0x98, 0x51, 0x50, 0x62, 0xa5, 0x9e, 0x33, - 0xc8, 0xe0, 0x00, 0xb0, 0xc1, 0x61, 0x60, 0x83, 0x5d, 0xa1, 0x2a, 0x92, 0xd8, 0xc0, 0x5e, 0x35, - 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x1d, 0xb4, 0x93, 0x0f, 0x01, 0x00, 0x00, -} - -func (m *Addons) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Addons) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Addons) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Seed) > 0 { - i -= len(m.Seed) - copy(dAtA[i:], m.Seed) - i = encodeVarintAddons(dAtA, i, uint64(len(m.Seed))) - i-- - dAtA[i] = 0x12 - } - if len(m.Flow) > 0 { - i -= len(m.Flow) - copy(dAtA[i:], m.Flow) - i = encodeVarintAddons(dAtA, i, uint64(len(m.Flow))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintAddons(dAtA []byte, offset int, v uint64) int { - offset -= sovAddons(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Addons) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Flow) - if l > 0 { - n += 1 + l + sovAddons(uint64(l)) - } - l = len(m.Seed) - if l > 0 { - n += 1 + l + sovAddons(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func sovAddons(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozAddons(x uint64) (n int) { - return sovAddons(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Addons) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAddons - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Addons: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Addons: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Flow", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAddons - } - 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 ErrInvalidLengthAddons - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAddons - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Flow = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Seed", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAddons - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAddons - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAddons - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Seed = append(m.Seed[:0], dAtA[iNdEx:postIndex]...) - if m.Seed == nil { - m.Seed = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAddons(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthAddons - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipAddons(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAddons - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAddons - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowAddons - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthAddons - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupAddons - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthAddons - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF +var file_proxy_vless_encoding_addons_proto_rawDesc = []byte{ + 0x0a, 0x21, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x22, 0x30, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x46, 0x6c, + 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x53, 0x65, 0x65, 0x64, 0x42, 0x7e, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, + 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, + 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x01, 0x5a, + 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, + 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0xaa, 0x02, 0x1f, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, + 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - ErrInvalidLengthAddons = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowAddons = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupAddons = fmt.Errorf("proto: unexpected end of group") + file_proxy_vless_encoding_addons_proto_rawDescOnce sync.Once + file_proxy_vless_encoding_addons_proto_rawDescData = file_proxy_vless_encoding_addons_proto_rawDesc ) + +func file_proxy_vless_encoding_addons_proto_rawDescGZIP() []byte { + file_proxy_vless_encoding_addons_proto_rawDescOnce.Do(func() { + file_proxy_vless_encoding_addons_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vless_encoding_addons_proto_rawDescData) + }) + return file_proxy_vless_encoding_addons_proto_rawDescData +} + +var file_proxy_vless_encoding_addons_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_proxy_vless_encoding_addons_proto_goTypes = []interface{}{ + (*Addons)(nil), // 0: v2ray.core.proxy.vless.encoding.Addons +} +var file_proxy_vless_encoding_addons_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_proxy_vless_encoding_addons_proto_init() } +func file_proxy_vless_encoding_addons_proto_init() { + if File_proxy_vless_encoding_addons_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proxy_vless_encoding_addons_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Addons); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_proxy_vless_encoding_addons_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_proxy_vless_encoding_addons_proto_goTypes, + DependencyIndexes: file_proxy_vless_encoding_addons_proto_depIdxs, + MessageInfos: file_proxy_vless_encoding_addons_proto_msgTypes, + }.Build() + File_proxy_vless_encoding_addons_proto = out.File + file_proxy_vless_encoding_addons_proto_rawDesc = nil + file_proxy_vless_encoding_addons_proto_goTypes = nil + file_proxy_vless_encoding_addons_proto_depIdxs = nil +} diff --git a/proxy/vless/encoding/encoding_test.go b/proxy/vless/encoding/encoding_test.go index 8b93afa4c..7463a001e 100644 --- a/proxy/vless/encoding/encoding_test.go +++ b/proxy/vless/encoding/encoding_test.go @@ -52,7 +52,11 @@ func TestRequestSerialization(t *testing.T) { if r := cmp.Diff(actualRequest, expectedRequest, cmp.AllowUnexported(protocol.ID{})); r != "" { t.Error(r) } - if r := cmp.Diff(actualAddons, expectedAddons); r != "" { + + addonsComparer := func(x, y *Addons) bool { + return (x.Flow == y.Flow) && (cmp.Equal(x.Seed, y.Seed)) + } + if r := cmp.Diff(actualAddons, expectedAddons, cmp.Comparer(addonsComparer)); r != "" { t.Error(r) } } @@ -120,7 +124,11 @@ func TestMuxRequest(t *testing.T) { if r := cmp.Diff(actualRequest, expectedRequest, cmp.AllowUnexported(protocol.ID{})); r != "" { t.Error(r) } - if r := cmp.Diff(actualAddons, expectedAddons); r != "" { + + addonsComparer := func(x, y *Addons) bool { + return (x.Flow == y.Flow) && (cmp.Equal(x.Seed, y.Seed)) + } + if r := cmp.Diff(actualAddons, expectedAddons, cmp.Comparer(addonsComparer)); r != "" { t.Error(r) } } From fe4a9331d92ac0eb113602bd2f5ba29a2ec3701d Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 19 Mar 2021 00:11:12 +0000 Subject: [PATCH 09/60] update geoip, geosite --- release/config/geoip.dat | Bin 5213751 -> 5224365 bytes release/config/geosite.dat | 14321 ++++++++++++++++++----------------- 2 files changed, 7171 insertions(+), 7150 deletions(-) diff --git a/release/config/geoip.dat b/release/config/geoip.dat index e49c70876ce9a644fc3e0049918a0e14d16d6a53..16b4335a43a9c727c396e95e54084d2be5e21021 100644 GIT binary patch delta 23486 zcmZvE2Ut|s6EEkMW!a@H>@K^&BE7@XOF$_$Kq>YfMPp4|LJz}{lVqo@c<5@U>t zsDnl$s8M5LjV=C-qA|v(vBXBA#y7X@jo*9E@AKOqbI+MGGiT16Iptnh_bv1F!*3Zz z^Bm?BhKw}<84+^PlYe#GPG^R5;q$bVq={EHm9hYRMGtuyaYVR;NH?@X~C~LIS z=_Pa*A4%vwvXRguJDq{%98_EV15gH$Rvu`3S{`brGfK1=q1=>%>i7LMHZC(AZRKX_ z@TpjCrZ2VzcMhsQ^{1sb)xVR?@b0f_EejvtR`+I@+9YVYqs}3qzpL)%VQSL(3bp1; zS#e0`Bcmg_RxpxvNaKkfYSj*R8Gqleq+%8235RSbDbt2pJL!C(m7{|n!}nS*m@(Da z;Wt%4LT_1}+Jru`z_kg(74*JP($nZLhk-372Q{zS`7l`^ZL>H8aHXPcc3rwE7vFX1 zn#^q1rR#P&4?$8yWjaq8HR`-%)U30}=#j3KjGjumVU6dK(1==e-qO=%xp#J5E0b-# z>l)nmb@+ne2SqgKykT*G!w)KAfqvl*8+82cd4iNrQyrXBX!T?VBcq9cLNdjF~ z;$U#rq}VC{bWz|k&f#eit=W@c0J6p5urs|n!lWUou(!eCA9YoUiIU9&@ngs(%v;FP9`nFwBMuaOsWvPnVV5B%8*&toBgQ zKn2aSp*2}HRH>l#du+6-xeCG>w0L9QWzIAhQQJ*|%RA0B*{*M;W>3woyf zkhc{Hf95T7VB+kcx2Jk9lzkyZqg=F`e~BF}QS_=#8a>e(E-{m02xqo8+(GAo2`q5Y+c-J71;>eYk8Ky{?GUnLN#CT@57&+xsHU~h7sp-R@?U%<4_Ox z&`c=~Au5vM5TatKUl5I#;t-+|$=eZ4lHw4eGAXY0a1WCO>){@bg6+AIGr<{JMkcl6 zn5AiOZ9{HrPa5lm0mZy8H;ZLH{{?opatqLM!lVJ`!rYeVSqnPH&^B(Z9H6?R8`zUp z(5JwyoMjz#KJ;8yw;&dM1s-*E%L?UR;6O1${l%+PA4TU*|_gh(P*I+wVj z<@(KYqa3_kGhNVu> zc}(uJAn^X%;?0u3U_Y1pK+pU%2{xK@x43aQU6`O_MD7`u!^mi&*67@0#01ZybKmfc zHJkpKn7cS$ocJ5NW3&~g=f>_hjf?)**gXL&3AStOE`%TnrC^AKX-T;|)m;2;6fZO* z*PmyPy$FPM?Q>s*lh5c`bYPk~Cf5}zzPDfRL#m+LM8h#&_4U)_7@Y--(+od(!nN7@ zzZsZwmhH(>>(fs6*q_QY5cI&XPy_o~3>uy<6B>tuuMI(L#RH=cH4$S+PRL1MFflG+ z;2+j_jgjV+s6K}UgZ!*AI;fZh=jatjV?FmBkHXD$GUm1B9-(S*Dc5+9=PS18(60^@ z8qJRMdVgaHEgE3_iMDyy*pYtvuJITQ9B2$-U`>(nCq^qOJR&VlkmJMmj0qfkHNrTU zVFq2I-229}^!oe8Mch|H%VRz;hN`&V1-NXi(Lm_-kBwcZ!#HCoq>VGq<(N&cU|)%G z8OQBH1!&LPwq0y+H1~6T2759eQH- zQn`~)?5>t`iW9pVg_b|L7osvL)FG;tLLH(VQm8|;ONt(d_DDew z5hhcD@epCGpbux^(A)ygxAC1+Ol<U6uqu)Qo*FA-#yd!E=vX70Z6(^|woek~IK+5^hScb#Q!UXSK42?)Z9!s3Ves$vqw-<+! zUzoi;(k6t4jd$VD`%Lg>a@dNAd`!B4r)~@D;sG~~h3$)nx|d25$a%=1OfM%_=Q@VOycGi?>C#%p5*bZc z-P=?*gGLvwLu%Pu)NqMPm))>8>UEd@dxA*kt+@|lK6G8d5+krg z`Ua7(NUWLbnr&wOr-SAVt~|%}5&Hi6Cf6WWVxTU&U3+m|gsEZFZr3M-80iRby-(E8 zsloNNmYXg(W9K8T6FR})O_p{lu>YX&PXgi5A>9e|FSTe{diyuSUS|1HYTg#I2)1nt zS!`b_uIKzmbm642jmSX~2$4piIZFMFG@TR|5cw)7Mk$BxCAb_u?WWM=92#kTq*#Fn zmrQcHhV(aYUupNkcI9y(O6=LoOeq|>V;DCyKe>erjWmQbP~!QB(7B=McF0VgO}5iO?ER2(2iUM&KRz7x{AmRO9xp={x{!@Dc!Z$>z8hg! zLZIU~i_wwXhx@%O4;fMc=lWU_SaJwn53me!q{By9K2+^}g#+CTr$<>z93Wzvy&nVn zzUI>i6wbHrWrmColNvc;N+`oA;pNz*VVpFVQWv$o%99&I-gY6KpXgplEu&3) zvh^Ng$h^0n>m={P$Mb0HTn~LIg2Dei*TvXs&l~a=fyeu%Kd$Kwy@s>!@WFaF2UsBFLoNIg0a7JI^Yf`o?E&zWCw)*rq6Ih zbB%wjFAJpq8Vy@i%R>93b!e@-p;A?$4-qVtYBCHCXK^;9S&puHo?G8&=Sy$Qv+8Mm zmSH710zn^{<~VUb31zoWHI3)Fgj*OTy~|CT-J~Vy!4;;kY^Pdzq6*V)Mx)%jV*1fS z9j^yD5IgE>HXDIyFC`nHq?i|(R0r+JA~E8!avZkW>ivjE6fv&oU99}E-d6$>_j^p!6 zV+1aYaP!Fw9a}}{wft|L1>7Sn;vT0JCx;%oJ)ziMrZvKaVTI{FCnf?^rQ$|x&q0}T zg5Glw&P?JetmmK}avnK_qV!BWkN~Zg1mUTAZV>#=$H%B2UOzMV^om^-;&ksn={#2MlS=20B}ARhMHH2a{e(Lmb~er>jE!>%XX9L=ws9^|j8&o-t3)wY ziDIl0UxlB)!Y@$ahn_0wTUw&nvP7|EiDJtV#g-+CElU(zmMFF?QA}B)n6gAMWrX5xDVG6!_l5+ z5dl2&_dM|WCn7zNANE{$+@n=wu-dsouCsSK#%L2v4~|UG!~S<7+Yw^klNQ<43DeF2 zIgta*aHuG9xEtvTKI0;%^eh$Qz~R0{avVC`ccdKl4)=ZEPFkQM%9H{Mq9REtL?a~y z5RI0ULNrEF6p=i{5XnRAaNiGP5fAqrEeF}deYs*GEL9$lboHaV|A;)GI(Z92k{&*~ z8)@%YDu%}Mf%D|z=L2y|MYPfRz{NtYgn|-BXL_P50-19{!(!p(F!o#HR@*#SxE~lQGGFUsg}mi0t0(utnk#2Dds zYF*5cUuo<@{A0p8>qn8)Kfz*xTgR=ZU1)T-Pt4>pZ8yP6hzydw5Sb)x=LL}P;k=)gYilhO7s8}gCS*bfk z;WtfbL)LoTOQ`YF%y4n`m%D3o*BC+h*jUZJD0ntdQ{ko&Q*K|Q2^OwvPdRE`Vk-Fws4Q!;#U79r;4MDEyL*T(q_G=b;-nC3{gmGW+ z*($p8S;!{x5?c3)+2u%L;rAgi3&R;r46T{$V1SQ5jVV*p$H&?mz_Kdla~CmD9or>Z zPY-<-a~VFH!8owc5*zaaLmDAudE#7L(XB|lK$w0pbaq8zA#tQXR3yfd0rW{l;t*!R zJjh>_SgbLMkz-&BYAU+_z?MgX&fiui{vFD!S`8O!87s$R7txoSnF5z`U)e+v<>(Y< zX#XWMsB?0yMlqbDJa$IZ>J*wmq1m?8M%1QYb5Qk^Q8m!4WQ3cxvR7DeFNw}jk$>Rh zUg|n$eo(Ju%#>OUQ{VRF#034{QuWgSTs#XyhW@ol-JO|bgw;ibA8Dio$!Gufg5>Mj zOnViqyy)+*g3DmPmS-v_KwFDi>*i8xbLtVbcqn3m9IM*wNyoaFjC4?rI*No!J-RSQ zJ=KW~w6}_Tr;L3xU8d_`p!U7g?~`kEz-hzpT;WBOvdtO81Qq-{nLEtF&%+Y$5mF21 z2PV!Y!ny^6DD*5!T+6}aA3NazMu%Fpp1^!_+%N{_K1n=CVBf;RC4@P85IpTKbOYEbcc{zafkIen_3ie+9^l~6hc@SQR}AA%!;uwjTVFKh}uY{oE2`qi1V@s z`!{iIIq1&DFACtc3T^!y9N$k%_Ct7F{5Z}`)W#*;Qg>+mImfA>(^k&%4sn2Yf8)M#!o%G+e{o-{%t5lr z_rAmoLG0DNFS8NBj=wp*8=TbguX>RNTKv6>fnghISBfWU*N5pV zto+5ghlh_IS{)gPUZ49lgG!9*8Z(OABAZaKVM(NkR}+>Q}+w+ysl1~ zGTR+n*MuFK-e32jiXI%S`w7+!(PbLpc8RW!9uMmZQxen+3{Fk>%TKV09onRDK*AUy zZ#y_D;WT3uqwKc>=E+0j+W{*Dr-9K49tI|G13g}rQ2)gbHy!6e@; zP55)LxL0qKHYIlbm2e;TJDQx`!dRiHrP$PMS2v<&HeH0L&s$B3V{Wg5pJ~ zMBOEWAnGAy4v6|l83v*vDN92nXA|)*w%j(}MaXRh)$mFQ8c0H=t97=@tIamnt37Sa zt;Qp7xr&_RU}Z(D)m@ajeUx$ol)8fyeu`MD%aj`P#iyl$Gz*j}ixf6!SGnP8n@+16 zZI)T1*l10rt&uftZCuv0w{cmMV{2{=1`>(i8bz2jXd`ir6z@{0FsxJH}CnZh?d>A3eyhBeXB6-kesZ_-KKe!$!6UuQ>LtWm8nP;ugWw;7P-naR92(P zG*VW#%2X^HsLEusZk1Win&PX3ZC5dsim%EC~Z8&AAWAL`Qhg_n;(9G<>AtoKF#iq)6Pr6CA>TR zAK2dLv%$Wr*yl-seaj?MBC3|kAlfJigy=H`eXcy+ED4EEcSvd>!bYL+xX)uJ=}(=cBkk>h?*t25Z#fQM08hb648CBNkoFw z2g7~my6|~+!hNYhslFq0*`ho5pYv0u#1B!CWFbWI+7gkxwnQYaEfL9UOGH8+9P8x! zE(6wl-zrzQIMDa5C!CncN{+vzo#k8DUyQeNKf$R%mJ`Ff=x|7r10W(f03wnDAflx$+{zIkmN_SPm&)I>JG7$zQr8zgw<8P z?E~O;lkap#g3c=Fh7C;$6>SBhkNPgPmyWA8jo%}v{`#bE4+dtQ@jdDa@80xXkj`m^ z=yb!^?}i8e%~Js%Nc9`y#I;9AJ#zd~oP~=`f^d6ZeJ?!joa6UO4_ycN{p|uhM*A&y z!sC8^ir+3R9G>mRI?*%B{m#MG6@I%MeMFtkPCC#{vLhln$w7ok4h*jLTjR`DqeY)= z^D}X{`n(f^P9;vzxj0#EjMv^7wDOvI}It;8{x$> zzi|tQie^<~BL9Awzb{8`6l2}_v;2QG(7|1!jr4;x{tv*ZT}*#xIQl5DiGc`DwUJ>q zZ-o8_ayt|5jIdDO@@?*M!j%guk8aEjBunVr#@uUKG0XIcz@?Zw3~$OE&6XC)(_zrU zA+lA17QQFDC?eTK5zUjl9MK}FQxGkd%z#LCQADzfB9dJ+XyH(K@(o%zQl1!t7FJ91 zBK`SDZg*T%1$>uV#65&1*dPa9Fx6CQB5fu`;t7m^yP3*XyA0thiR(o!+ zlUep`%EV^q=JUDpgnM~LNWYMq$S^Of=?9l`7x1&L2n-)x%FS^gNf3P_SL;N+h1dt! zIwxoj(;w!pRMWe^nmbarmfYX?x*~!4S4-{?mZZ_nuW}1J;WaRE=njgWUnYeKM2*sr zMAR%<1JO;%LWpijRzoDmendhPUHK|E%Y#`n3r-q4#q#vd15a=I+OyLy7^Kg7b;1=e z8wx+Q>SW=W=tuB-K&L=qXUZ|CQ$>VuW~j#di=D>j&}9Q~rIWL!Q~NktH#7;42dkxf zg3D%EjdbA;ogP5X=OMqbkWX^Y5?nZsE-viRM$CS~^8S+J8zNsRz95pr79tE=g3ZJ7 zp2#*2%fqqc4o$^{2|R`G6A!}?FSm#IX2I|Ea|=(Hc>Q_wr24!OTgC`W6fxPF5wAm3 z|LEc}SKO2EtemV5U5j(Ub9)9QaZ8lh)jCW+9tK?!a&=5I$1 zpdZuh&#(=&E0=8KZZ+DK(Ts68?CU;Zo^p7K8s`-{)CH=;L+=t;85w$xXZV#cFfKI1 z2=&>a(=^bbTWAK01@|mA?^F>t*j{1ota0g$J1SB{>%AQjeYU~;C9W*LtTqpGgRNb- zt{n9IBzmZd{`ITjDqOy0a3=7&2ltx5@EMj*2@J@HsV6Y(1H&H-II0tWC$MK0kK3u0 z^P)3Y7_5|fgPCA0Fc7YL6(PfE@*4-+MF z^5^ZOX%3NE8V!i>=78W{h;)+kA(E$AM4?JKt5PmTDJMHAmP03nI|a#W2u@uyx+MF% zbGU{v!{*`1OH{a#eB{IAet3~)OmYRM6&=zwA7^zFy*e)0i<0rlzDCi44Y;IE0v3QFZchd~N89 z8dc7iM+0g-ar0n@>eWs>D!Y0m72KkzL@fZ7ay@rP;i|kWiCW{ zr<`{!brxy_w70XV?t=UrMO1`HE21*6M5ko>!0>_;r$G4R^KxZP-`Rm)R8rv)ogR>6Z6DGM0kdb=4uUX{{?z>hTL5P{WeQaB>q zBs0@hl_^$wsxqa5ez-QJD|KF%BHd=D1?y6>_$9Td0xVdU@*XcGUs09c*-4&-h?8P8 zBKaZ;B6-DtNcKuZzEXTgB>NpAIXFgD9u=(ppeDtWx@}BZMR#sYY0U|f7*%ab$-{R$ zayO-%&{FU1DgNjYncGv|^=B{Yd}#IAl<(Nnm{W~BmlCTLM*^;&USZl$c`n6|XvH)m z;oZ_lNICjb%8lkyF{#5%CON4?Bp-Yt+9{0@M7t#I5H(0+4pF0|C!#}2xg$!s<4UYww4PWdG^?aIw%;sY$8xS>cVb{Yj~zDtOR3wL76b(^D&nJN+j;^(51Ho*v9d zweU@2JD_1MW~BC_nVG5893%AqmCV#{32bbeI+lQU`_yGBXy}w$!gUqL!=S|&v&A(N zBAq<-E}rb6AbGb4pIRiv5y{<(NbXid*sV0CFm;3U8rq=xm3H#nUcXYFB9Rs&SqxE% zWKTq?a#QsyF+vEAk2D+G`jxV`464T^iX?Eo5Qe03INrsiY*77Hn@IK0T$uXUkMGh$ z@ZTTDriSpu1WzZXPO`$p&r&COa6h7peR1d8R4pg$^~25YQ@?Tw6B&+tfqVX9BO_l3 zGp*3b$QSN%b0c4vg*kNbrPT2n4r7ix=x(OQ8Zh5&`#jak!<3h)&7Mg(dPR|D#H+E0 zz+pzbK|#ntrs2pJ!`F;>kyQ`(wB775>Dh$Va*H!2q}xfc6;Y;SPDJwF3L<%L1(CeB zf@q{ty%c{hFK@HX#e zrX2F--9+KVur=>jJ7Fc8Q$* zAVk8)X<JPIVqynN{#jkEl09GKJ6k|A5oEw)~S4?Qc%7afR9((9+y{3U5vCw1vM*d zUMr&hi#G?aJV_ftvPBogBO^O0;Y3s>ISe9&$ItQ}3exV_+WPsCf`rJ~_F0)Mn{0Xq;De-%cVclL5wlo=-6Kj0S$w2{D>Mh3<{T7Hw=o9g+?Uz1)^$6Xhb_C zp%Kab(=aGfR=r_R42Bfw=$GDG%{WIwMOgZ5!f6EI3=!$C8St{EpCm9ZCjGpcxIp)J z(!XOk4216B);fJP#|bMbsLf3O(H^Gcqz_=BxpTUOp}KELG5I>=wA$ExkP}To*P$c&~Iv&R8z%cyQPZS?`0xW24;N5&|Od( zl!33Mj1*LO8k{kkp)j7p29Jo?zC^wGyQrH?)ql&01l8Slf! z9T|IA7_uwFl@NTJWp{?w4cBb@k7X3PU_f`jlo7*nWrB%DUdgER0{7<`?Tpe%;EypW zavML!pbMFxpElDd+)^plXGZ8S5qlnxS>fR$`uWM)V%hX3Ytg)7C!EAv*vNNPo6J=@ zNGizetmk_?61;cX;LN>xA8{>k>XaRp5$29lr%(!UIy`k6X*!xTA@hB%P%uR8gv?>; zFwp@{GZ+@d&0a*AQU@U_lY+o$=7b=pW_spiCuv!8x-H5jN_e{MB;+Nubh@n=?Pe{^ z+@O(mZcp!@h4sW|`)$5{dcWY|6736H&HbB|a$6M|PS6tH{iwOvC#U!CR%rVbnqUo) z-vQK5)b#WLSiCB;!W-kNbysG8RLWJ6tGl3(N|3f@`r^+bu@XyqAAMLyH@8mwyu7 zZE-=?iE(sVb(RA;Lmvlw=!JLC_4LM(ECUh<-&W5efp%>tgPLR+l;6*i9^Lp;1ZP*R z&oa`%75M)1phH=&J@M^{y06Rzj#t^?p3BKBJ$(F2)_||*y#w(YxIC}zd_ql@aD1;*Vb+@hA3TTLXia3$g}?e~#@f{*?E{pYQ1g ztmuw!J}dupAvUfw>rOj8930wi#xh3jKp#KBk`9lQg6MMMg}7km6|G6gHn7YqkZ-Rw zNVnIrp0^w9IJbdm4-HHQ%VgYBS~jGEk)EI0!9;g9^7^@VrgnfkQ#%f{!hkIu@q!?J zJpwO4Fe|IYU-;qcj?4&Z^iiZ};Xoh% zjbZDJA^S%+IyE#~10*z?>RBFlz3S4kadJ+}ey_Jj2e1F?+UZgR8-)|V-3GcW%vBHi z71=v{=(dbd71a&2a`f+=*^%_-sAxCo&!4`@cJmNkJ+%DCMbaT$cm*TY*HteS-1M6T z-|el>K3>9XTfdC0sN3jIRKYWa&|Ke04m$8P!hBdiMe8r#)6wZH^{aI^IO1ME1>Y;K z-|7|Vx#B@$pZWnwu1x*Rlqi-yu6H)B*q&CrBC)lxzNqzac13z-pZcwthxqzg9ru#@ z?l}`k{nOlKJoTQ;-C$-OfXc)CNga1l7{Y_k^HWv0pYh8TJ~jXs$S(i#^&VO=&i2bk z2hhPYlPb!A=wOte>aM+iFFBZv=qcoyLTDP%^9LI`aR;@a6T(zaRU=>MkqX1YRReRx zO%FKmvC1U`H@t4FQC%UWr}x{Ez0>>W$UIN)pQi-ArAi>JR%o?yJE!-5uAnVSUEAvC z^nPJ4Q3}Gl6tqVvhx50)8#Js{rD}}gtZ>0=W04dH5n({V@8hVb1AFO@%`kJjYKht? zPV+yHsf&?979w1UP#`2QZOcC>`2;yLbM5mP>XL4g0r zTXKsnUp{C)=<$Ssmxnxf75Bct{h#9=qgh(~qsLIV_M^ukE%)B182M{2 zdt70KLlP66an<8_WcPNWr%RlO1m39e;TuM!wMdgSpTzIFQXV-I|NN|=G6`MJlFaQcg%=kG~p z<+45dpTn|3t)BhQ%g)@h|7F?1dk(-+CY=cl7%gxZ7~p9VUO-(C=-Ep+{Bws}fu8p@ z9F8p$oR9Wg!$3)#=MBPPMuJmt0=@(+Ejaqm`k$aeQ6hS^xrf|P|KqkX)&IC4GOTRl zxr%U4g_408o+&&GZ||x0f=PosIU^S*l$bc)vq{eA-~Gx-D3~(QbGAYe8~L`x^AD9) zOxXr56lcuM(>-r+QVu@II#{T+V5VmxF^c9I6kUQ8!321Y^egtwiCLbWE}WRE-&x@~ zisy&i6{_T|@f`0V?nJ_=ot|YX=(E>zIpM+uu^#O69L;i8p;(V^J;!RXdzrK_i&*-x@RYMyqah{1QtuDBzgj;f zwB9xO8BP5sn_EI|d8v*9KH*U1p+7iD_trFt3;(&lGSgm>Hi$L(>D+yS!Wa zr<9rDPVEEii^lW-H`cN5CW(kwS8CxzR)9NUR_DXzwgCvH*TcCJhDoSg6p*ap9U6tS{>N1Tb!v9V^LsFH zLqILZEfI`qs13NFl`ms7jm?x2#QsfV+e`8w>L}R)k-W!)NZ#W?B*$(XTqdX}%*A@uLlHv!-9 zBjn3AxQ8XbRe>m7k_wS*SVSKwG+8R7l}UL$qNUO#hv<=lS|mM?_6l1*!v|KGxT)26 z-*u#SV0oAr1vbRQ$irYmOajUzSbsxIvfK|Fgk_--?s^A;BfsR@HRQ4`Jn(Y^%hUT!sy0*hl7Db)J$^&%sLi$ zN_e?5_e9|LY99}oUDF9q1>xWpJ*nwLD{%NJ@Jo&KKIhh70tecI;kUre?r`*FV1+aB zro%Ns4>1+!r41Tx=KO`W_XGst=M%&bx<4ssvepT=@C3tL2z&214xN;?LBBdm*~Nuk zcw10<)~gD)C8?z_s9YLH7kX{M?SH5$40^zFdFbshr+d&^4nLCQ-zVq~y^nl2iQkLB zVgh$W@&O2<80tPc=zs8XbkJyqw59{c1bMUA*)V=gkdd%mknxP-pf6cS93ND=q*Qq= zUY9B4zrMu2#crIP@-nzC<1H#@OLTSVZ&8&LUf1R=s!l1}`Yo!jLQRvXrDAiL3OV(y z!et8eo&TtcymG=W39QI#r%V2?tRk&udPu#UHpG_ zGXJB-{YNePj~WXH*YMZr&%fLyQ2q!`x@KW;eR8&6k{*t> zOVS3B&!wF8?8u}La+KCzG<4)6wu({aqT#h8SqW25Bu>Qi>&L`uJy`@VdvQBBIM|;X zi0@6;8NOtob^k=l!k>FQ>Nw^_19&~_)FXvIEL7pmaB)tyrVp#GcA^{nuY`T$1H@Pz8x;F6Zd1^L*+orTpP zCfbKO>&-k-ywy&ZAoOpz-Q;F0zjS|R17?Jo|Mj!j`_j|0|ERG_9fm&Ynrnci2Rpy3 zp`F`hYso-bvlCyCYx%zOKW_Af@KrR+FP&%Wg)VsXCdmLbk2()Zr_-!?nyCNx6BEMc z7l$bA*vZRFfjX3y$K)9p-AH=fnrCz>eydOf#VBV@G+_QFUWebRe+l5PI1 zO~Cn6RJt~ym4f_a?zIUxH_A_ggu0HWy!-YShkI>859LuWrFcJuHb4#wwFyNE8mc@U zsh|&(y5fqe_>^}Wt*MV>EZmTvryyab-S@NiIQ~{DR-PMr#T!Dev~qH!%NS<^#NTdp zP{%+e4Bx2f*UF`=S@xNTvO8EBzG>7fcHpL;!ejq-Cp0PM(ub1iF|B?o^%ra#f#VVRYiVBiZ)IAJ#Z17$6m%dsq8d4R6r+IqrtzYMP;v~5`8 z1ToRt)kfb0m7nN(F7&2Tj%ZsMaI@0(Pl`H$Of@a9 z%f`*aBifM>_!XIXMbeG1@JHGqJiaY>H&4IEjn@YVQmh@MU&HY38wDIaMBn7#gwAC9 zr^|%jKhS4z&>D{j8~|Tp{Za+p{>^#Gz^8}(?Qzf5EBP55+Mt2Fc!!NcMh2viBpBy&n;JKh>SI+>6@ZBKuGO?;I5rDI2K&2_e-KfBdzI;OrBJ(Wxh|p`?m*mtC16i%y!zL>5`tB);iM2d^&Bb0VedSh?m|WQx*w(XPW~;5teMHN#}E zG|bh28^p9R(A7XX&>BZKJ$|0F13h~+)*!Mi2*%%zwCQUz-eI=7o)T8>gEQ57I2-Ni zsl_)1@vTP#Vd=6Aqm;rDRHKb=6+iE;Qs)nLFZ)v delta 15437 zcmZu&2V4`$_s{HZdSM}j&_W2I1W2UoDJ4`9q*$e=;qFL)7l-+&aZJm&W=M)} z&(^46X3IEd3Ma0tt%N15<3eftplw`FT=^wli5s_z)1nr(SD;(FxT7@Q?_XDi!#l>c zK)vnokWn&b?-KLwrA!VGmVE5_xz;8EH;gk=|zgjss{E|1mNsfPr^4ZMSuCdZ>^ zJl56z=-=w$FRQ87G)qgF*q- z4LRtKO7O<+A!_)ydq@;Qet3V+5G5FUhP*dG`1BA3AI@#jiD^j9*Cz?!P@y7Iil)Qf zfi6wth{gLK>(msB@$F+OH6A_I#hF@xq07HI3xk)u(WSztH@X%XFg?K=ZHLt#ysyyk zMQiO%L27+nIgMuHrppZj1>U=o7O@_1e7T_&AHvrfIwPmFnGPB4NW=(dCl2&J>Kks4#3SO0vZWAtvt!?;6_tH48qf%xT>&gb3r%goUcn2 z!0o%rIvoGGbEWA5SiMNvOhK*O4KD`7onqn0__+Q8q=nciabdnl2R%2%ZE=fWIT5wU zDB`isHY$@>O%cq+j-BPPDm!(H$11^mBF-$XYa5@xr)pIGo(i&YZdCrBgAT#v?>R!4 zwPQz#<=UyL+4A?;X3M)6_ef}H?0C6j?lH$J9dl1qQO6&V3312kaj&7njkp$RaLg}W z9H92%=BvCmB!~5MPzA)KF4T{|il9bzd`$`2?a=1&SPY)+;wOlZ2j0;&K8bkFtFG}i z5fMRf_ju<_)ELBZpE&tn(kcW>PaG3QL3gs4KC@L zNIB#*)r>O1gCfnp-ca$k(uYDtzn``)6v1e*wH*bX_moYv(Db60n1um%y@CX=wv&Dy zA0lJ5QZa1aFLb40`x?;#Z*&x_m*Y1eM$Req;gxt-3T8hSh9Nk1P`Jn!wx9Q!hu}eZ zQUro!&9qbbU`jBlDQbN`Nb8}Ox>w9%zUDnEgzpZb)zd- zFX$vjb@)gH%M|Dlg=ae>Rbh@pv!x@6j%_ipbYv5UW=lsl<+1LZ@(5+MtC3JStWC9q zYQ}myp60Q72bFL4Yx0z++kq9aZgwiadbI+w34*~EXQZRxniAa-z#Vrql43S-!fxe- zNSqsBK;8^e!$*I#pMpasbXb7AU~(v0$U;;C64#Q4@~Z!^Ay7ORy^aRF5$#t%kA3Ja zjTgBo8QhI{E}900zdT1;X~GMv@b;pO#QY4&UK5-YzK-p#Y7ojTy}gmwPBW51=aF7z zF8Jx+d?B6mUVzaOT4^H|w^1t@f+S;SkyS+r((u_CUTScj>9to1|19)+&BxD|dyRpK zE4;qC;M)NLC5+wS^-2IeJ*>oBsKHr7$#HhxH-|)vQ)EG`xZqnKx4+;!mRhy~M%}L8 zLI*Ft)}JWGqs5uwa6z0oDiF60&m73_w2I^JTzKYF8jeP18W6m$nRzx0PIt~+hhR+C z%qSWvdt^>k!;mqVe;{Z-F0-wco$d2GL*QR0Dpe@3l5w$IOK5s&Tt z6G}wQ_Hv+w|C2mL;GRDX=KQ?JPpF8X-G4$^f_D1})f2SqPpFlkU0hU!Kj^uLz@2{_ z%-IIp=|`0C%VRtKh!TEz?5{tfgkK)p;YXD4TgYSE{|M{3!R>xTtsL6+N3@7T+x&pq zY?&?i0p|b!yc#XE z@oM`Yk8M^B+W;HGJhtigsEuD9+vI!H#xIY}{T{XP%VQgVkLo!dcx)pME&QMJTkUYe z?*|vz(FWh4c7Azm&UdJtUmlzN9ct&7$7X$p+WFuv+&5?yzdSbf8?=gF9vfpvU2UOX z@8E&Q)^QBRy~{k6`3~c#Vv)!G^1r#NS>&;`{)bkx$YX2%53OdA$3|D7cw~2j(qcP$ zs=4B^kyVd*NYAVK!$vqz?6c5Q>1OAusOl+?4Xb**xJ0eQMV~YIGb-bq;lSt25y8;J zl+}SxZQBZ;Cn>s7eDj)KBw=hnMd3}89AL~e1(gjYw-nFa_=}534g^C!D!#~Il+fu$ zkja)2{l1TKWH7()<7z)Hm-&4kSG(CMa&)MnAl#|BiWJH_Q=L%s_(Q{-$bT#x8s>cG zZ)jHF(o;aqp9C^5>*WBTQmp@p=t=zD@HW#LD`I+)nV@D9>uxPX^|Uq&g9VGMgDG?g z&Q37i;KTkY#*PA6VS!`4j)ilvzSMXPoq?C7#(HXI0LOIHT4O6EweBEzlx6i7!rbLq z0S)2AyDV8f?7e{zPzdn9BN!FXN!e#e&YGO9m4YTGyGA(WbQ_2L#i()WsO(sD8cN5y z%%Dl#YMSV>Ktr;vYYScKY9VC1%V!!QcDr~xOKmdQ*t-)~>^3^((u8To?Z5n#%PVAm zw)x^|!V+G5#^nj%vo5ct%rI_;Q?I-9Pe;pO+h9Kv4G)L;eHOx^M_xA&tS$(8PEnh$ zgJg!lR|+-D1QV6CmgFs!n*=(sd-5~u7<*PpD3Z=_QYTai8E|8#V3&|^Ip=_2B#n)S z1v;pISWr6hk!CB22wfe;nEn3??+p{cMiUe{QL9^nQ;Mv1-Z>rB)aIXv4c zZHkC?7j2WSeg1oq?{wzJG-sXl!{Se95%o*l~X=tR?w9Uo;FcA)LmqBT<|XjAGGb zIa-Ic+m)px=RL!XT)ka615r~LeD17onINy?A{mamp7Y(#?w``p;bQxb5)*U9-sgRn zLKC6+A%&LV0hi*>kvZ;hb0qx{pN&AX)Y=@urdrz344Mf|j*E`)A>gd&j60muSS=K) z0l{a}%lSwNPcNk>xPV||+G+|c57Nyt@D9}#I-!gB?kfF#xU^c|Q-F5k*4Op6{OX&@z!0^052C+(6+`$-(Ig4K7w4w1 z{gcRvv}ur7Pg5`Y;fIVkfE2PqzBrqCz&T3`zIZCd|M-~O#$BQK4nC75# zq_w9wPyl`UixmiE;ei9h%~2#iGC&;0lyHw<4iFbJFmb4OBExLtf`Fz-JOY;$iF<%% zq&UaSG;KlbsLOhBpqg1gW*$GeQVf$TCC(JAJS2H9AUv!&DS5!a{BshW8#9v=*w#mq za)g|r?1|)^h|1mr#cw1P2%5f=lpCrh= zu=OjgqL|va6S4$fUXEmzN67&bOIv288 zP}g=6N_DFT;N&{<5MC0BeM?W<1Wv9KT|KyWASm-4MxU^@X>MAJ%M75V>NTL zx!hKdpHtlt@u$4z2CTZO>dWVs?cgTV+)~vMQ1|yjy?d%MhG^u$BUO8Z?~gF0Lj5PI zb6m?;_phpcxR%(Cjn&GrddJk2V-4KYgM8Jar$XlkLNTJ=tKt4}q!7T@v*HdK4an%EPU9VlrRw?HExlT&|Pig z$ii~{AC5N*tKgP7nvy{5Cp9DCX%JuhmLS+NAmItA;~YxOJLnjnn|FwG3vG(dJ5*$E zr4X#b-WVa&E&DM;s0a223ZWj^n<|8QVn6f<^}^nK$;~_L*h+5RQQ~>_nTa$x6Y^kk z^Lh5J3Zc4Hv5?<`V>xGFf-6$nZL@4=)g)!RIeBy%l+c8+a$)JfpoAw9hU<>Q=Ftgr zDC)mOkTfpgA!3GeSm=ZVnmat=CMLLu47rXK@{W>zkxk}#M~SW5M3#4S7WYD@X$i9s zh-M^&^HDT}%}#LkVA^sIVzwkm)R1#DVHYBXra7K4miv3fiG+s&5~$~%Pq@t);J7~% zq8uqj>l(K6?(F3RcPFL}H^sC237z@S=4nDtH^piPE1TEY;@3q%Vv#^VvNj@o$dM<` zLQEj1;75wYZZs6QBzBcLysKtyZmN@BiRY!vK#rVkO1v&WW1wqjVtW@nZiz{U&m<-; zR)jfL*zr1o8`du=@j4xOMe;i5Hbj zD^3sZdn9I3_Vf0D_XciUYVX9ha@af~@fL#lMTxgXWaA?yCh8g3T%33&8uwmKf>`0f z#KmJFIz34vMR)KfiAfFhbCX)oc-jP^8kRRps!;=5j(fVorSVCd4d^m7Jgj_9LB=s< zFbzc~l}%*S?GgC&Wo3WJyrS$YChb(ES_b1ol~NisjJX)0(eTE{=!v{-{XXZ+$5y+M zI%hs{XxBOO8R-V%P+#K?c;#yxp@g9|jic4LMoeCU;FJnjNafHFxy z%}U0FL$bC)?9ePP2D#(n!mP)5R8f|iu?3{%MOlw1m@_(yMzCT`);1ddIw8vhb0%c< zSHY`nU4I$0t<*H4V0nzli-z-irN_k3K2fuYh81UgO^BLCLdEO!ozcGgh@5TSP-owJ zhY8l%_sPL{oqb<8LAwNJTp|||<_so~q*kgX8J(P&8Qg;b9W$;YrZ-2{@0`(}hQGRH z^yH&%kkTikAeQu{PjAThpten4I+FN_Enb(7Bw4QpLN;YYkpm5PgNzXd?tJE4a#^I# zvGlS?eKlqz7}jskXfCx)uq?8Gi(?nJXT(b7j-ss)IGozT|6lIqYn}Z6 zqmes^yZiqqB6!UK{&EIsah)OltKr!Y|AQKSw`-iN%BT7JQDlJIO#ffp$gPPN&M5b9 zihAKW<^BP1yxiZ&l0}2}`j2;V%ivYrThu3%{Z=Ehg4;iw^6$u!SvuVGZ%OfYbJ~MF zxBQnn^Y@Tgr-i(i{?Fa{lR`NiAO4-^0u%0bMB&HxCd|ihfpm44$j#$EEs< z^8ywK$qe<{1vI8YxNM5k=+eUvs;Q^d6fru-(^rH7+#%qkvy_~THgHvgFlaF_U`8Cg z`#s>A8(cpV&{B?*ZUltG#2W!`mE19=fx-UqUhwr1fS^N`Pze*;>J0*TbP4UJsq5pxYeQ1GC)_-dG!dz7 z*FDaOGg-S}2}P=B=yWQn2g0{bC%KZVo%g4cNH!I6IVsi=49SHfSBiDHnp7$U<-Mf8 z{P8DQaw#mAC(CI#%qA;H!tI=lB=ieX^->cE`RH7rqEVp4JkSLB6PwMZT) zwK33GQEw2jNqt^&cOsYBdC4^;aHT`?IuT6mk-UI`=)TEkq{Q&*7bZ_3rwLB}A_dj5 z$O}ILk-ITmVE~o5=^0=?B8CHi6?@jIlP4*?f5Vle|JiWNB#-Xa> zwyq>ja_S?L!?*}l&wjuYD&0O8q3YWYctR1=bG+fWH6a)$HS3Y&zZfu`OrAxau5!sO zTyBz5AhF#|;hZ)pzA(H^$~sSo7?IN4nc>V9N~Wf?6~QN*a+rdXb5klruytw5A_=rw zpVCZ7!c+P0DVsD5mtR7&lPU8QQrm@aWpZW=vFq1YQ=St;xqB_;S1mMto$|?r%W_?z zu`qS8l&&Buzv_~DM@FLadGFMbM8mE0sn2L=VoWV%NI&37VCqAq)YC4PD?Lj>@ave= zYsdgrlCrrhaOo%hQyOjEQEJ*U}9*o5MXQr#+ zR7qWL10I=cR8uk$_BomPfTYHG0$AZ}6q3;G zWej5gJ@xI3(5+2WZ&!XeiGMCzdbnP5-_j`D6g*>k%g%WEpYi3??5Q|2QaPD)r+Sm> z>0+dE1{akd#V8Xcw)P43udAF!-BrS=y2_V)a)MQ4DrX6_0*C$W`cG0#*^<G>; zA^F#+`Lcda%zkeEk85Q!1^_n5Gu-edPn{ZW*OBjvz+v^IYM9qk-cgUs$JEjQRU+>h ziN_z5hoEqr(26|#>!7@bGZ_Dn*P^HsFX4P^ZA}EqHrnk7F16LBt4SYAGf2CKh8sh* zzp9vvoE68GXvMf# zyThRRFnOQbdj)dE{m-~{C+bK!?{?dHn|?MJt0BQ(>w`-tpa zfbstBkxJAHHvi&YpDPHy)^=|ow`a>c9yH<9-XP6AU&|;t)vhdX@8$wtecgNKA{THz z=I-o672n0~kK7Nz!$s_d!EaKJhXQil?r}kaTX=coz*a90RzMy<_4V)! z#=Ym#!63@^(7l3~M95Ifcsb3Y97q-l|kr5%q2y z^hj0xt^#wOYD*9N_L#~EdBe!h-c|ve_z==w04>YYNnRZL%%cn7-g(Wla^tlcDk)HaPFlW6$Gp2>WW0D2M${&RinPR!4kO|;+N`{IpGhR zb(hh47;=v}>J0VYGdrZ<#PCz)(At@wswBa0r;&fgA7*6m4>7i{GsZW};X}h5!6X6N zi3R7pj?kS}p2mmIdA)=y`}7^CE!o|AiMAZ;x5k4RMC@ow_Y#>0wRty8Ii$ZF4ZS|; zgBx+*Ww}CWw$CvotZ(O|6fyxEQMApEnJ7D3}LUIMNR$rI?vw{Wg7O{j|^iHlfg7AUy(DaXO2y`)CffST3qq}hEP zxQ-DA@9Qvz+u8}G?lcYMuDUD%IO}x%CD1l6Yqfy-6bBDxWw+qtRX3$dNSL2}fd<{8 z>>b?M8nYsMGz%Lxr(v2j$zT1hAB$iV=rMy`CMh0*aI5|?g1Q^i|8zr-A?k&ft3YtN zF)0UBkoMLqM*xa5=^hCG`qb-BSbGHpQ)mjT*r6Mb&=xT6(%nQ@wntYNx7?!(#8da^ zn#0RIx=s=j#d;pqeF!8i-k?e%fZGGp29QQSmv%wJA!*B%q-i_8kF-Apg8tIq<-;l?iyP=3yVJ1-9ol<_G4Wy9SH>QwQ28Z#uh$ad!}{f z^H;`jLThG7`%2mx_BlLF5Y!hIta)9B`ttH zuIWW`lApaYrZ*BpjwSs%MUFFbSh`;@RU8ZH`RNB!uxee>8&E7s|3!@DgRpm`r z7;5_r{EMp@Go;RQg^R9c5ITi~IGEvw)ZnBv&f9F2;j_W!j%34$A?5@vv6u(R<~fL1 z(5O_iLBkNcC!NrI^Hf2ht=MuluOjnt=0ZLsbDW2Sa)e7l6*#IG^O{a}A0Svadj?Oa z9(G?LRNrc1*`{7?Q9O40pny7>wI$?4JXOX=DVI;-KvGFXUti0 z<~=tsbc^J$u(^Y2nR?IH*>#MQNn|z6D90EJ;Gt7KZn!}YLOspDX|2i2{^OFQbtXFg71`Anx{|X*)u3|J62?mZGy5NeS<&=ab{E{x=7oNVp0Bog7iNG zyspDIu{VhbU1&GuywZCd@HQg!l+%7L59OxL+t1|=_+Dga6KUfr>?p<&QK75hUR3CI zgjgu889D^8az zp@qbML+`mmds!H%&(tu84XYhRzQ$%wGI6hoAvg0iBp`!4og!L-1(jtQm(w&(V{ zen!|5(g23Kv%{XdHIR`vIkAzf$!a$!LKWEkhfr z7lbOQ#vJBPFk=3&?on7rE+uL4Bupg7-9Chc!>SKq8$`tKx>4b0ML1O&?n4fuKGJZ5 zGjo&^+-%SA+1;V`Z{bea(DF)nnT6;nQ53Pki|9b$AMuYb`TI$|2y!2+guC@4hAYUw z2joTk8pe5wO(UyH$B-T2N0TG!)V3M;s?tT(kCr(Eu&Q)LHMXi6TVIWBgqp<>X>MeZ z_bW(sKzNjGi#V@FZ{gC3h?W){^D!bjsCShPH}>Xq$SG`N-;E9v+1Ph`6*V9S@W+U4 zNOqA#C>xKPFP?;yPZ6J4yM@QdBRynft<7$cO+}zIL=HzV*EjMVMb)eW6a6DEp~A}! zCU<0#+SL|Y3B}qqKqwcxZ4gRjw+KRM?G`~Oz1@ZgWvzaFAt7mCk{cf{rD&O|h zgCQ@su70JUdO~7i&@3?Wst97jB6m|jMMh3%psZHpVIlWR0`i@*HL@*@asiSe{U~W@ z)iz#-;|nQ~DcF!2`I%TqP~FIxwCye&{z#7`zx(LGy{pTLlrd-asw;K6V~4F2dI z`6ojh`(&TUp?O3t4Nphr$w`I(=vw3l&ZpnMh@9jmwwW!tD=30BlBjSw+;fdukEB(K z-XE|ACb>mLB7UuB+%h}eqt;Wnk5|+}@X$r|MKIets*s|neC%Y1N|BQD&!)5k{Fykz z5Y?9NSwY^ys|-;;NJk=f@=e8=s8HI#c?V~zM+Q!C z80e9KB~`BuB(9=_Dd(f+dMFH4Gru!(ycwQF)l(D67tzsbuHKj>jSgn>Y&R7ri+PS? z>SS?|k|&G*am;zLm>d!|sh%u;;9%oq@e2nVC#R74oZx^*bg7$^ z`v{&nwT#T`3gixQ?$JSO+Qx#^hP>xmM&SQC=%z zdeg9Tbqwl=i+y87s3u;V8KR{1gz!1-tArZPu_s+{o?om48ErqDqVswFv;1S#z&FNX z5`=2Tc4!Lbsj-K>acsV)5Jy2h4SqG5e7W^;eQXWHV(SJ{qMA0uYE-J~?+baXh5NuT zh~ADj9jm9J$ludCk`~d-4Y5ZCqDj#5vb?hZ&fb(0_sYB_U#P-wU(0*pUT@_0X!1iR z-2AOPi6;GeSol`nRZiXg6DUUUP6n>didD`iAGR43i(H|gwt}4c?yxvsQOHLk?3$to zqeDp+l$)aHRU1u)<1GZUxyz|NZ3X=mFyw*ncn0dOO;=NBF7CA3uo#qk3_}?h7pR*f zgu1(>lgMR8+pPa6$Zi&N4nagKtt-OiFJeTvVQcLOGGS%B=$R6BH4>38VLJXQI!idquwb=yN@?Xmi0&473 zxJ)iyxL&01Z8S>2aCz9u)%VFSY__~av-nIBDLEkNJyQ7LJTEGT@gdLg1~00BIl*m6 zsiPiI3R39X!n$SgSuUV?`%q7~&*9YIWT2YTxWbRRfEV~v-f-BT8g4+bP`e)0oDU1K zs1*i8LG9kuTru1nLdCm4Krxl?$+)JG=EeBc)EyD@+e{4;@E4PE+!Y>grxZe^?}nr(o|9N-QItm%SIL818oTzf06bvHg?XV}DU4GHCaNilzA--g3;&drs}-L+dwG z6D{5+r(?iLK?h18K}!#y@P2oCB-Hny{TLYPP0vNlbM6&4A39zLZ3F55B-~vX`C(cF zJtqx54y7N_@T`z76T+6ZGm2x?5y z%*`!=BKhb5o_|ytAaH$hhOmP79hJ`Gr|~(ia*s)GQgqkZB@l8_s&RqOmHMd&@7tFB G?Ee5Q8Pa9| diff --git a/release/config/geosite.dat b/release/config/geosite.dat index f869e74bc..544fa4818 100644 --- a/release/config/geosite.dat +++ b/release/config/geosite.dat @@ -1,696 +1,91 @@ -„ -DEDAO biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com -² -HUAWEI  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com -µ -LOGITECH logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net -r -ZENDESK outbound.io zdassets.comzdusercontent.com zendesk.com  zndsk.com  zopim.com -y -FONTSHOP fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com -+ -MYFONTS myfonts.com myfonts.net -' -POLYV  polyv.net videocc.net -¸ -AIRWICK -airwick.at -airwick.be -airwick.ca -airwick.ch -airwick.cl airwick.co.in airwick.co.nz airwick.co.uk airwick.co.za airwick.comairwick.com.auairwick.com.brairwick.com.cn -cnairwick.com.mxairwick.com.tr -airwick.cz -airwick.de -airwick.dk -airwick.es -airwick.fi -airwick.fr -airwick.hr -airwick.hu -airwick.ie -airwick.it -airwick.jp airwick.net -airwick.nl -airwick.no -airwick.pl -airwick.pt -airwick.ro -airwick.ru -airwick.se -airwick.si -airwick.sk -airwick.tv -airwick.usairwickarabia.com vipoo.es -H -BLENDERbigbuckbunny.org blender.orgelephantsdream.org -s -EHENTAI e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org -¼ -GOG gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn - -WWE wwe.com wwe9.com -{ -OREILLY oreil.ly oreilly.comoreilly.com.cn -cnoreilly.revieworeillystatic.com -orl.ly -6 - RULEOFLAWrolfoundation.orgrolsociety.org -‹ - HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io -# - EMOGI-ADS emogi.com -ads -ì - -GOOGLE-ADS2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -ads -" - MASTERCLASSmasterclass.com -6 - NORDSTROM nordstrom.comnordstrommedia.com -` -OAN aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com - -BILIPLUS biliplus.com - -CODE code.org -®' -FOXfoxfox-corporation.com fox-news.com fox.com -fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com -fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com -fox5dc.com -fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com -foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv -foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com -foxest.com -foxfaq.com -foxfdm.com foxfiles.com -foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com -foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com -foxnews.cc foxnews.com foxnews.net foxnews.org -foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com -foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com -fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com -anidom.comcasoneexchange.comcoronavirusnow.com -fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com -my13la.com -my20dc.commy20houston.com -my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com -q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.net - -BETHESDA -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.com -” - EASTMONEY1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn -ô -EPOCHMEDIAGROUP dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net -etviet.comlagranepoca.com ntd.com  ntdca.com -ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz -. -KUAIKAN kkmh.comkuaikanmanhua.com -% -KUGOU  kgimg.com  kugou.com - -TENCENT dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.com -rtx.com.cnservicewechat.com smtcdns.com smtcdns.net -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com wegame.com.cn -weiyun.com alloyteam.com imweb.io ivweb.io - - TEST-IPV6 test-ipv6.com -U - CLEARASIL clearasil.cn -cnclearasil.com.cn -cn clearasil.us -3 -ENTRUST entrust.netentrustdatacard.com - -EVERNOTE evernote.com - -KNOVEL -knovel.com -D - -LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com g SPRINGER apress.com springer.comspringerlink.comspringernature.com wkap.nl -* - -FLURRY-ADSdata.flurry.com -ads -K -PINGAN -pingan.com pingan.com.cn pingan.com.hk yqb.com -T - -PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me -' - UBERADS-ADS uberads.com -ads -Ò - -SF-EXPRESS  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org -Ó— -CATEGORY-ENTERTAINMENT abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net bandcamp.com -bcbits.com blizzard.cn -cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +ô’ +BEATS100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com +aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com +airmay.com +ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com +beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn +cn  beats1.tv beats1.com.cn +cn beats123.com beats2.com.cn +cn beats4.cn cn -battle.netbattlenet.com.cn -cn bnet.163.com -cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com -cn!diablo3.nosdn.127.net -cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net -cnheroesofthestorm.com%hearthstone.nosdn.127.net -cn"heroes.nos.netease.com -cnplayoverwatch.com#overwatch.nosdn.127.net -cn starcraft.comstarcraft2.comsc2.nosdn.127.net -cnplaywarcraft3.comworldofwarcraft.com wowchina.com -cnwow.nosdn.127.net -cnblizzcon-a.akamaihd.netblz.nosdn.127.net -cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn -cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net -lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com -lpl.com.cn -cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com -cn -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv fanatical.comhumblebundle.com dazn-api.com dazn.com -dazndn.com -indazn.com indaznlab.comdeviantart.comdeviantart.net da-files.comabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com -babble.com babyzone.com -dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za -disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com -dssott.comgo-disneyworldgo.com -go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com -huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com -hulugo.com -huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com -huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com -hulutv.com huluusa.comjoinmaidez.com mushymush.tv -myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com -kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com -netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.netnico -nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net -pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com -movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsoundcloud.com -sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  amemv.com -muscdn.com -musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net -vhx.tv -vhxqa1.com -vhxqa2.com -vhxqa3.com -vhxqa4.com -vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com abow.jp angelbeats.jp -anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com -z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com litv.tv megaphone.fm moov.hk -odysee.com overcast.fm syosetu.com -weverse.io yande.re -Í - -CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflare.netcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.one  pages.devtrycloudflare.comvideodelivery.net  warp.plus workers.dev -) -MEITU  meitu.com meitudata.com -Ê -VEET veet.at veet.be veet.ca veet.ch veet.clveet.cn -cn -veet.co.id -veet.co.in -veet.co.kr -veet.co.nz -veet.co.uk -veet.co.za veet.com veet.com.ar veet.com.au veet.com.bd veet.com.br veet.com.cn -cn veet.com.co veet.com.hk veet.com.mx veet.com.my veet.com.ph veet.com.pk veet.com.sg veet.com.tr veet.de veet.dk veet.es veet.fi veet.fr veet.hu veet.jp veet.nl veet.no veet.pt veet.ro veet.ru veet.se veet.tv veet.usveetarabia.comveetbangladesh.comveetcentroamerica.com veetclub.it -$ -AFP afp.com afpforum.com -s - GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.org -n -TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net -í -CATEGORY-CRYPTOCURRENCY asproex.comasproexapi.combinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com bitflyer.com bitflyer.jp bisq.io bisq.network bitsquare.io coinone.co.krcoinonecore.comcoinonecorp.com -devcon.orgethereum.foundation ethereum.org -hbabit.com -hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.comlocalbitcoins.comlocalbitcoinschain.com -zb.app -zb.com zb.io zb.live -bitbank.cc bitcoin.org bitfinex.com -bitmex.com bitquick.co bitstamp.net bittrex.com btcbox.co.jp -cex.io coinbase.com dogecoin.com -kraken.com okex.com -paxful.com -/ -FASTLANE fastlane.cifastlane.tools -¸ - STARBUCKS sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn -cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com - -TINYURL tinyurl.com -P -AEROGARDaerogard.com.auaerogard.com.cn -cnaerogardcn.com -O -PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com -ads -4 - ARCHLINUX archlinux.orgarchlinuxarm.org +beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com +beatsep.cn +cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com +biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net +bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com +cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com +dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com +lyzsxx.com mairbeats.com +makeeu.commallheadphone.commbeats-tech.commbheadphone.com +micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com +ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com +scnshop.cc +shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com +theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net +unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.net % -NEOWIN neow.in -neowin.net -j - PLAYSTATION playstationplaystation.complaystation.net sonyentertainmentnetwork.com +IMGIX  imgix.com  imgix.net  -SETAPP -setapp.com -‰ -BRAVEUXbraventures.com braveux.com -compass.isfightforux.comforthebadge.comstockagainstphotography.com -$ - CLOUDCONVERTcloudconvert.com -' -CODING  coding.me -coding.net - -GLYPHS glyphsapp.com -· -HANYI hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cn -ï -WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com -, -CYLINK -cylink.procylink0122.icu - -GRAVATAR gravatar.com -a -NOW now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -2 -YNET ynet.cn ynet.com ynet.com.cn -W -HAINANAIRLINEShainanairlines.com hnacargo.com  hnair.com 10044.cn -­ - IQIYI-ADSa.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads -4 -MAILRU imgsmail.ru mail.ru mycdn.me - - SITEPOINT sitepoint.com -Ó -UU-CHAT  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com -Ü -VANISHo2action.co.krpowerofresolve.capowerofresolve.comspraynwash.com  vanish.at  vanish.be  vanish.ch  vanish.cl vanish.cn -cn vanish.co.id vanish.co.il vanish.co.in vanish.co.nz vanish.co.uk vanish.co.za vanish.com.ar vanish.com.br vanish.com.co vanish.com.hr vanish.com.mx vanish.com.my vanish.com.pe vanish.com.sg vanish.com.tr  vanish.de  vanish.dk  vanish.es  vanish.fi  vanish.fr  vanish.hu  vanish.ie  vanish.it  vanish.nl  vanish.no  vanish.pl  vanish.pt  vanish.ro  vanish.ru  vanish.se  vanish.si  vanish.skvanisharabia.comvanishbancaseulook.com.brvanishcentroamerica.com vanishinfo.czvanishstains.comvanishstains.com.au - - -TYPOGRAPHYtypography.com - -3TYPE 3type.cn -9 -DOUBAN -douban.com  douban.fm doubanio.com -b - ECONOMIST economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com - - -INFRAPEDIAinfrapedia.com -/ -MAPBOX mapbox.cn -cn -mapbox.com -< -QUIP quip-cdn.com quip.comquipelements.com -B -MITmit mit.edu mit.netmitpressjournals.org -² -BLIZZARD blizzard.cn -cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn -cn -battle.netbattlenet.com.cn -cn bnet.163.com -cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com -cn!diablo3.nosdn.127.net -cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net -cnheroesofthestorm.com%hearthstone.nosdn.127.net -cn"heroes.nos.netease.com -cnplayoverwatch.com#overwatch.nosdn.127.net -cn starcraft.comstarcraft2.comsc2.nosdn.127.net -cnplaywarcraft3.comworldofwarcraft.com wowchina.com -cnwow.nosdn.127.net -cnblizzcon-a.akamaihd.netblz.nosdn.127.net -cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn -B -HKEDCITY  edcity.hk hkedcity.nethkreadingcity.net -# - MOPUB-ADS mopub.com -ads -1 -ZIROOM -ziroom.comziroomapartment.com -% - -ADJUST-ADS -adjust.com -ads -Y -DAZN dazn-api.com dazn.com -dazndn.com -indazn.com indaznlab.com -8 - KINGKONGLIVEkingkong.com.twkingkongapp.com -ä -TLD-CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b -Æ -BOC -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cn +J-TEST +j-test.com +z +CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org i HKBN csifund.org hkbn.com.hk hkbn.net hkbnes.net jos.comspeedtest.com.hk - -SFACG  sfacg.com - -DISCORD -discord.co discord.com -discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com -, - -HOTJAR-ADSstatic.hotjar.com -ads -0 - -SOUNDCLOUDsoundcloud.com -sndcdn.com -" - TYPENETWORKtypenetwork.com - -CAIXIN -caixin.com - -REURL reurl.cc - -VIM vim.org -ª -XBOX -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv -ç -BINGbing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn -† -MUJI muji.com muji.com.cn -cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.net - -TUMBLR -tumblr.com -' -APA apa.orgpsyccareers.com -% -RTHK etvonline.hk rthk.hk -: - SOFTETHER softether.orgsoftether-download.com -ÿ -TELEGRAM contest.com  graph.orgquiz.directoryt.me tdesktop.com -telega.one -telegra.ph telegram.dog telegram.me telegram.orgtelegram.space -telesco.pe -tg.dev tx.meusercontent.dev -A -NYPOST -nypost.com nypost.helpnypostreprints.com - -XINGRZ  xingrz.me +( +OPENCOLLECTIVEopencollective.com +_ +GUO  guo.media  gnews.org gtv.org gtv1.org +gclubs.com g-tvapp.com + - ONESIGNAL-ADS onesignal.com -ads -& - STEAMUNLOCKEDsteamunlocked.net -M - -LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com -­ -MEDIACHINESEGROUPmediachinese.com mysinchew.comsinchew.com.my -sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +LINKEDIN linkedin.com  licdn.com +6 + NORDSTROM nordstrom.comnordstrommedia.com +. +SCALAscala-lang.org scala-sbt.org + +KNOVEL +knovel.com +å +NETFLIX fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.net +7 +OSCHINA  gitee.com gitee.io oschina.net +À +FANDOM cursecdn.com +fandom.com  wikia.com  wikia.org dndbeyond.com futhead.com gamepedia.com muthead.comwikia.nocookie.netfandom.zendesk.com ' -HEYZO heydoga.com  heyzo.com -% -MIHOYO -mihoyo.com bh3.com -– -NYTIMES nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com -1 -HOMEBREW brew.shhomebrew.bintray.com -Z -INTERCOM intercom.com intercom.iointercomassets.comintercomcdn.com -Ÿ -QIHOO360 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn - -SHORTURL shorturl.at -F - IDENTRUST identrust.comidentrust.co.uk identrust.net -å -MOZILLA firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net -L - -TEAMBITIONteambition.comteambition.netteambitionapis.com -c - UMENG-ADSalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads - -XUNLEI -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com -™ -TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com -twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.co -G -ASAHI  asahi.com asahicom.jpasahishimbun.sc.omtrdc.net -Ò - CALGONCARBON  calgon.at  calgon.be  calgon.ch calgon.cn -cn calgon.co.uk -calgon.com calgon.com.tr  calgon.de  calgon.es  calgon.fr  calgon.ie  calgon.it  calgon.nl  calgon.pt  calgon.ru  calgon.tvcalgoncarbon-china.comcalgoncarbon.com calgonit.com -8 -DMM dmm.com  dmm.co.jpdmm-extension.com -? -GEETEST geetest.com#geetest.datasink.sensorsdata.cn -= -LANDIAN -lancdn.comlandiannews.com  wsoso.com - -STEEMIT steemit.com -Û -SPOTIFY byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net -R -ARPHIC -arphic.com arphic.com.cn arphic.com.twifontcloud.com +HM +hm.com hm.com.cn +cn +d + JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net +ý +ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com +7 +DART dart.dev dartlang.org dartpad.dev  -CHIPHELL chiphell.com -ý -CISCO webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn -cn  cisco.com cisco.com.cn -cn -cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co -devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com -mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com -mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn -cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com -versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org -mearki.com meraki-go.com  meraki.hk merakigo.com -tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net - -MPV -mpv.io +GRAVATAR gravatar.com +( +IMGUR  imgur.com imgurinc.com + + +KINDLE4RSSkindle4rss.com +) + REBRANDLY rb.gy rebrandly.com +1 +JINSHUJU jinshuju.netjinshujucdn.com +F +COINONE coinone.co.krcoinonecore.comcoinonecorp.com + +SETAPP +setapp.com ½B RBaerogard.com.auaerogard.com.cn cnaerogardcn.com @@ -791,639 +186,159 @@ woolite.uswoolitecarpet.comdigital-rb.com rb-crisis.com rb.netrbbusinessshop.comrbdigitalab.comrbdigitallab.comrbeuroinfo.com rbgrads.comrbgraduates.comrbmavericks.comrbnainternational.com  rbplc.comrbrandlibrary.com rbspeakup.com reckitt.netreckittbenckiser.cn cnreckittbenckiser.com#reckittbenckiser.com.cn cnreckittbenckiser.netreckittbenckiser.tvreckittprofessional.com -> -UBUNTU -ubuntu.com -ubuntu.netubuntuforums.org -i -ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -, - BYTEDANCE-ADSmcs.snssdk.com +' +APA apa.orgpsyccareers.com +. +CABLETVcabletv.com.hk i-cable.com + +XHAMSTER xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com ads - -TIPDM -tipdim.org -Ü -WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.com -¤ -ZEE -bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com -ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com -zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com -Œ -9TO59to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com -æ -ADOBE typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com -adobedc.cn -cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com -demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com -omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com -fotolia.cc fotolia.com -fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net -marketo.tvmarketodesigner.commarketolive.com -mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.new - - APPLE-DEVappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net -* -JAVWIDE -javwide.tv javwide.com -£ -CATEGORY-MEDIA-CN36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.com -$ - FREECODECAMPfreecodecamp.org -ä -SMARTONEbarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com -; -XUEERSI speiyou.com -xesimg.com xueersi.com -Ô -CATEGORY-MOOC-CNchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com -, -DUYAOSS duyaoss.com duyaossr.com -l -XUEQIU aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com -t - CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org -E - HIIDO-ADSmlog.hiido.com -adsylog.hiido.com -ads -f -ROKU fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com -8 -TARGET -target -target.comtargetimg1.com -f - TAYLORFRANCIS tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -é -ATTaccbusiness.com -atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn -cn att.com att.jobs att.net -att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com -attcorp.cn -cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com -attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com -attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net -budatt.com -cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com -uverse.comwebhosting.com att-idns.net -attdns.com -attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com -dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com -diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.com -Ú% - BAIDU-ADS a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads -8 - CLUBHOUSEclubhouseapi.comjoinclubhouse.com -Ü - DAILYMAIL  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk -mol.imthisismoney.co.uk -thismon.ee -™ -IEEE ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org -ieeer5.org -ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org -comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org -3 -PPTV  pplive.cn -pplive.com pptv.com -k - CHEETAHMOBILE cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.com -: - ENTERMEDIADBentermediadb.netentermediadb.org -ß -THETIMES driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.com -6 -CATEGORY-COLLABORATE-CN shimo.im  yuque.com -( -CHINAZ -chinaz.com -chinaz.net - -GFASHION gfashion.com - -FIREFOX firefox.com -+ - MYTVSUPER mytvsuper.com tvb.com -9 -SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl -) -TUTANOTA tuta.io tutanota.com -j -IMPERIALCOLLEGE ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com -1 - STACKPATH stackpath.com stackpath.dev -B - APPLOVIN-ADS applovin.com -ads -applvn.com -ads -Þ -HEROKU  heroku.co -heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh -codeish.co -codeish.io -9 - YCOMBINATORstartupschool.orgycombinator.com -ã -TESLA solarcity.comtesla.cn -cn  tesla.com tesla.com.cn -cnteslamotors.cn -cnteslamotors.comteslamotors.com.cn -cntesla-cdn.thron.cn -cntesla-cdn.thron.com -¡ - BYTEDANCE  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com -B - LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com - -B3LOG  b3log.org -q -CATEGORY-HOSPITAL-CN  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn -4 -SCInewisiknowledge.comisiknowledge.com - -ABEMA abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net -’ -AZURE azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.com -, -HITUN hitun.ioxn--90wwvt03e.com -ó -REAGROUPflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com -š -QINIUstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com -i -SNAP -sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com -snapkit.co - -SSPAI  sspai.com -, -ACPLAY -acplay.netdandanplay.com -® -CATEGORY-BANK-CN -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -Ì -EA dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.net -w -JWPLAYER -jwpcdn.comjwplatform.com jwplayer.com -jwpltx.com -jwpsrv.comlongtailvideo.com -- -LANTERNgetlantern.org -lantern.io -+ -MONGODB mongodb.com mongodb.org -% - -CHINAPOWERchinapower.csis.org -” -DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to -E -ETHEREUM -devcon.orgethereum.foundation ethereum.org +… +AMP amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.net + +HEYTEA +heytea.com = JAVFINDER javfinder.sh findercdn.me o0-2.com -À -FANDOM cursecdn.com -fandom.com  wikia.com  wikia.org dndbeyond.com futhead.com gamepedia.com muthead.comwikia.nocookie.netfandom.zendesk.com -B -HASKELL haskell.orghaskellstack.org stackage.org - -MIAOPAI miaopai.com -ì -NAVER -lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net -nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net -i -RAZER  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com -+ - TAPPX-ADSssp.api.tappx.com -ads -D - -POCOIQ-ADS cdn.pocoiq.cn -ads oct.pocoiq.cn -ads -Ì -CATEGORY-SECURITIES-CN -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn - -FEEDLY -feedly.com -, -MATTERS matters.news matters.one -‹ -DMM-ADS bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp +W +MOJANGcallersbane.com minecraft.netminecraftshop.com +mojang.com +? +LIEPIN +liepin.com +lietou.comlietou-static.com +| +MEITUAN dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com +- +WANFANGwanfangdata.com.cn +wf.pub +Þ + ALIBABA-ADS a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com ads -microad.jp -ads socdm.com -ads -ÞU - MICROSOFT azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv  microsoft azure hotmail -office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com -m12.vc -aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com -binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com -ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com -gears5.com gearspop.comgearstactics.com -gfx.ms -gigjam.com hololens.com -hotmail.co hotmail.com -hotmail.eu hotmail.net hotmail.orghummingbird.ms -ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl -ingads.comintunewiki.comiotinactionevents.com -kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn -cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn -cn -msauth.netmschallenge2018.com -msecnd.net -msedge.net  msft.info msft.net msftauth.cn -cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com -msocdn.com -msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com -office.com -office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net -pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com -pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net -sfx.ms sharepoint.cn -cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com -techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com -userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net -wbd.ms what-fan.netwindows-int.net windows.com windows.net -windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com -winhec.com -winhec.net -yammer.com(dl.delivery.mp.microsoft.com -cn&download.windowsupdate.com -cn'bg.v4.a.dl.ws.microsoft.com -cn(bg4.v4.a.dl.ws.microsoft.com -cn2&cdn.marketplaceimages.windowsphone.com -cn cn.windowssearch.com -cn#ctldl.windowsupdate.com -cn#developer.microsoft.com -cndocs.microsoft.com -cn"download.microsoft.com -cn/#download.visualstudio.microsoft.com -cnfs.microsoft.com -cn(msgr.dlservice.microsoft.com -cn, msgruser.dlservice.microsoft.com -cn#officecdn.microsoft.com -cn&qh.dlservice.microsoft.com -cnsdx.microsoft.com -cn/#silverlight.dlservice.microsoft.com -cn, slupdate.dlservice.microsoft.com -cn, storeedgefd.dsx.mp.microsoft.com -cn&wl.dlservice.microsoft.com -cn&wscont1.apps.microsoft.com -cn&wscont2.apps.microsoft.com -cnwww.microsoft.com -cn&xb.dlservice.microsoft.com -cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net -C - SCIENCEDIRECTsciencedirect.comsciencedirectassets.com -è -ZDNS zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cn -^ -BITAUTO bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com -”$ -CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com -knovel.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com -apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -aclweb.org acm.org acs.org altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org -nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu -zenodo.org - -GUOKR  guokr.com -¹ -IBMibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com -C -MAOCLOUD -maoyun.commaoyuncloud.cnmaoyuncloud.com -# -V8 -v8.dev v8project.org -' - WTEAM-ADS ads.wteam.xyz +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com ads " - HUBBLEPHONEhubblephone.com -+ - MXPLAYER-ADSevt.mxplay.com + FOUNDERTYPEfoundertype.com +ñ +SHOPEE shopee.cn +cn shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com +cn +shp.ee +ì +NETEASE 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.comanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com ads - - NEURALINK neuralink.com -. -SXL mysxl.cn -sxl.cn  sxlcdn.cn - -JIYUKOBOjiyu-kobo.co.jp -4 - KHANACADEMYkhanacademy.org kastatic.org -% -RUMBLE rmbl.ws -rumble.com -F -COINONE coinone.co.krcoinonecore.comcoinonecorp.com -' -HACPAI -hacpai.com  ld246.com -u +È + REALCLEAR realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com + + YUNFANJIASU yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +0 -ATTWATCHTV -att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com -¬ -DELL +SOUNDCLOUDsoundcloud.com +sndcdn.com +\ +TAIKANG taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +ñ +VMWARE cfblob.comcloudchoose.comcloudvolumes.com cmpaas.com cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com @@ -1436,42 +351,828 @@ badaas.com bitnami.combitnamiapp.combitnamistudio.comdock nyansa.com velocloud.com gopivotal.com heptio.cn cn heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.com -Ô -VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com -7 - BOOTSTRAPbootstrapcdn.comgetbootstrap.com -H -COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net -@ -JQUERY -jquery.comjquerymobile.com jqueryui.com -; - SCORELAND scoreland.comcdn77.scoreuniverse.com -/ - SNAPCRAFT snapcraft.io snapstore.io -1 - LIBERAPAY liberapay.com liberapay.org -Ý -SKYsky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com -H - ZYNGA-ADS zynga.com -ads#zyngaplayersupport.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.net +Ò + CALGONCARBON  calgon.at  calgon.be  calgon.ch calgon.cn +cn calgon.co.uk +calgon.com calgon.com.tr  calgon.de  calgon.es  calgon.fr  calgon.ie  calgon.it  calgon.nl  calgon.pt  calgon.ru  calgon.tvcalgoncarbon-china.comcalgoncarbon.com calgonit.com + +PKOPLINK pkoplink.com +B +PUGPIGpugpig-dev.compugpig-stage.com +pugpig.com + +TINYURL tinyurl.com + +DGTLE  dgtle.com +* + +FLURRY-ADSdata.flurry.com ads +Q + SOURCEFORGEsourceforge.comsourceforge.net +sf.net fsdn.com +( +TAPTAP +tapimg.com +taptap.com +ô +VERIZON +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com +oath.cloud oath.com ouroath.comstatic-verizon.com +uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com +xo.com +r +ZENDESK outbound.io zdassets.comzdusercontent.com zendesk.com  zndsk.com  zopim.com +e +PYTHON  pycon.org pypa.io pypi.io pypi.org +python.orgpythonhosted.org + +REURL reurl.cc +¬ +VIMEO +vhx.tv +vhxqa1.com +vhxqa2.com +vhxqa3.com +vhxqa4.com +vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com +" + ACCUWEATHERaccuweather.com +A + PINDUODUO +pddpic.com pinduoduo.com yangkeduo.com +ª +XBOX +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv +7 + FONTAWESOMEfontawesome.comfortawesome.com +û + HARPERCOLLINSbookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com + +ISGD is.gdv.gd +w +JWPLAYER +jwpcdn.comjwplatform.com jwplayer.com +jwpltx.com +jwpsrv.comlongtailvideo.com +’ +RUANMEI 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com + +EVERNOTE evernote.com ++ + MYTVSUPER mytvsuper.com tvb.com +$ +TAOMEE +61.com +taomee.com +. +U17 u17.com u17i.com u17t.com + +VIM vim.org +Œ +DETTOLdettol-prize.com  dettol.at  dettol.be  dettol.ch  dettol.cl dettol.co.id dettol.co.in dettol.co.ke dettol.co.nz dettol.co.uk +dettol.com dettol.com.au dettol.com.bd dettol.com.br dettol.com.cn +cn dettol.com.eg dettol.com.hk dettol.com.my dettol.com.ng dettol.com.sg  dettol.cz  dettol.fr  dettol.hu  dettol.ie +dettol.net  dettol.nl  dettol.pk  dettol.pl  dettol.pt  dettol.rudettolarabia.comdettolcleannaija.comdettolsitishield.co.indettolthailand.comespadoldettol.com.ar + +OSDN osdn.net + +QUALCOMMairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org +iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com +qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com +uplinq.com wipower.comwirelessreach.com +brewmp.comqualcomm.sc.omtrdc.net +( +REDIS redis.io redislabs.com +¢ +WIX editorx.comparastorage.com wix-code.com wix.comwixanswers.com wixapps.net  wixmp.com wixsite.com wixstatic.com +W +HAINANAIRLINEShainanairlines.com hnacargo.com  hnair.com 10044.cn +f +ROKU fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com +™ + +EVERBRIGHT cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +É +GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk + +PASTEBIN pastebin.com + +ANTUTU +antutu.com +3 +ELEME +ele.me elemecdn.com eleme.cn + + SPOTIFY-ADS'adeventtracker.spotify.com +ads$adstudio-assets.scdn.co +ads#bloodhound.spotify.com +ads +/ +XVIDEOS xvideos.comxvideos-cdn.com +U +SB +dns.sb ip.sb loli.net sb.sb sm.msu.nu +www.sb +m +SUNING cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com +" + TYPENETWORKtypenetwork.com + + BRILLIANT brilliant.org 9 -ABCabc-studios.com abc.com edgedatg.com +DOUBAN +douban.com  douban.fm doubanio.com +E +HCAPTCHA botstop.com hcaptcha.comhcaptchastatus.com +Þ +HEROKU  heroku.co +heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh +codeish.co +codeish.io +0 +N3RO n3ro.lol n3ro.net n3ro.wtf +c +YOUKU +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +L + +TEAMBITIONteambition.comteambition.netteambitionapis.com +ß +THELINUXFOUNDATION +kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.orglfai.foundationlinuxfoundation.org +R +UPAI  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com +6 +AGORA agora.io +agoraio.cn agoralab.co +< +ANACONDA anaconda.com anaconda.org conda.io +Î +DNSPOD dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub +' +HEYZO heydoga.com  heyzo.com +ñ + +SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com +4 + KHANACADEMYkhanacademy.org kastatic.org +5 +SENSORSDATA-ADS"static.sensorsdata.cn +ads +ï +WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com +) + ADCOLONY-ADS adcolony.com +ads +Ž +ELSEVIER els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com +scopus.com +É +LG +lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com +lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net +„ +MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud +å + + MICROSOFT-DEVadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net + + 4PARADIGM 4paradigm.com +# + EMOGI-ADS emogi.com +ads +$ + FREECODECAMPfreecodecamp.org +þ +JIGUANG +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn +P + KUAISHOU-ADS log-sdk.gifshow.com +adswlog.kuaishou.com +ads + +LINOTYPE linotype.com +l +XUEQIU aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com +^ +BITAUTO bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com +˜ +CATEGORY-SCHOLAR-CN +csdl.ac.cn  las.ac.cn cnki.netwanfangdata.com.cn +wf.pub  apabi.comcnthinkers.com  cqvip.com +ê +HP +123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com +compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info +hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com +hp.com +hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net +hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com +hpfaqs.comhpfeedback.com +hpgift.com +hpgpas.comhpgraphicspartners.com  hpiie.org +hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com +hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com +hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com +hpstore.cn +cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com +hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.com +9 +NIKKEI +nikkei.com  nikkei.jp nikkei.co.jp + +SVP svp-team.com +% + +ADJUST-ADS +adjust.com +ads +L +APKPURE apkpure.com cdnpure.com pureapk.com +winudf.com +þ¯ +CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au9to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com afp.com afpforum.com +ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com +ap.org +apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com +bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net  bloomberg bbgevent.com bbhub.io +bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com +c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com +cbsi.video +cbsiam.com  cbsig.net +cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com +viacbs.com +viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com cnn.com +cnn.io +cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk +mol.imthisismoney.co.uk +thismon.ee economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net +etviet.comlagranepoca.com ntd.com  ntdca.com +ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz +forbes.com forbesimg.comfoxfox-corporation.com fox-news.com fox.com +fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com +fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com +fox5dc.com +fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com +foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv +foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com +foxest.com +foxfaq.com +foxfdm.com foxfiles.com +foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com +foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com +foxnews.cc foxnews.com foxnews.net foxnews.org +foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com +foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com +fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com +anidom.comcasoneexchange.comcoronavirusnow.com +fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com +my13la.com +my20dc.commy20houston.com +my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com +q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.netgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org +gclubs.com g-tvapp.comapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn +cn etnet.com.hketnetchina.com.cn +cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk hkopentv.com fantv.hkhuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com banned.video infowars.cominfowarsmedia.combusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.comes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.comfreedomplatform.tv londonreal.tv +ltn.com.tw yes123.com.twmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in +theweek.invanitaonline.com +vanitha.invanithaveedu.com matters.news matters.onemediachinese.com mysinchew.comsinchew.com.my +sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +medium.commedium.systems +myradio.hkmyradio.com.hkdreamworks.com cnbc.com +cnbcfm.com  msnbc.com +nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com +nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com neow.in +neowin.netbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com +nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au +news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au +nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.ukandysparis.com newsmax.com +newsmax.in newsmaxtv.com +nikkei.com  nikkei.jp nikkei.co.jp now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com etvonline.hk rthk.hk scmp.com +i-scmp.comsingtaonewscorp.com +sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com +eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hksky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com theguardiandev-guardianapis.comdev-theguardian.com +gu-web.netguardianapis.comguardianapps.co.uk +guim.co.uktheguardian.comtheguardiandns.comtheinitium.com  init.shop thetype.cloud +cn thetype.comtypeisbeautiful.com reuters.com +reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs +tr.com mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com +tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn +cntvbeventpower.com.hk +tvbusa.com tvbweekly.comtvmedia.net.au +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp udn.com +udn.com.twudnfunlife.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net watchout.tw +waa.twstartupschool.orgycombinator.com +zaobao.com zaobao.com.sg  zaobao.sg +bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com +ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com +zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com +881903.com am730.com.hkamericasvoice.newsappleinsider.com  axios.com bbgwatch.com breitbart.combusinessfocus.iocaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.com +cup.com.hk d100.net +dw.com factwire.orgfortuneinsight.comfreebeacon.com hk01.comhkcitizenmedia.com hkcnews.com hkej.com +hkgpao.comhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com macrumors.com newyorker.com on.ccpassiontimes.hk post852.com qmap.pubrealvision.com rfa.org +rfi.fr rsf.org +rt.com +rtings.comshuziyimin.orgsingpao.com.hksinoinsider.com slashdot.org +socrec.orgthegatewaypundit.comthenationalpulse.comthestandnews.com tvmost.com.hk  unwire.hkvjmedia.com.hk warroom.orgwashingtonpost.com weiyuksj.com +wenzhao.ca youlucky.com zerohedge.com zoomingin.tv +b + +EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la + +CNKI cnki.net +6 +PROQUESTserialssolutions.com proquest.com +P +AEROGARDaerogard.com.auaerogard.com.cn +cnaerogardcn.com +­] +CATEGORY-GAMES blizzard.cn +cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +cn +battle.netbattlenet.com.cn +cn bnet.163.com +cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com +cn!diablo3.nosdn.127.net +cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net +cnheroesofthestorm.com%hearthstone.nosdn.127.net +cn"heroes.nos.netease.com +cnplayoverwatch.com#overwatch.nosdn.127.net +cn starcraft.comstarcraft2.comsc2.nosdn.127.net +cnplaywarcraft3.comworldofwarcraft.com wowchina.com +cnwow.nosdn.127.net +cnblizzcon-a.akamaihd.netblz.nosdn.127.net +cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net +cn dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net +lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com +lpl.com.cn +cn pvp.net +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +cn +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv fanatical.comhumblebundle.com +i +SNAP +sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com +snapkit.co + +UDACITY udacity.com +³ + +BRIGHTCOVE bcove.video bcovlive.io bcvp0rtal.com boltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com videojs.com +zencdn.net zencoder.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.net +8 + HOMEDEPOThomedepot-static.com homedepot.com +ä +PRIVATElan localdomain example invalid  localhosttest local  home.arpa ^[^.]+$router.asus.comlocalhost.sec.qq.comlocalhost.ptlogin2.qq.commsftconnecttest.com 9 ARTSTATIONartstation.comartstationmedia.com +{ + CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com +ë +CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com +) + LEANPLUM-ADS leanplum.com +ads +% +RTHK etvonline.hk rthk.hk + +GFASHION gfashion.com + + +INFRAPEDIAinfrapedia.com +V + JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org +A +MEIZU flyme.cn meizu.cn  meizu.com  mzres.com + +TIKTOK  amemv.com +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net +è +ZDNS zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cn + +TUMBLR +tumblr.com +¯ + XIAOMITV-ADSad.intl.xiaomi.com +ads ad.mi.com +ads ad.xiaomi.com +adsadmob.xiaomi.com +adsad1.xiaomi.com +adsmistat.xiaomi.com +adstracking.miui.com +adsadv.sec.miui.com +ads"adv.sec.intl.miui.com +ads"misc.in.duokanbox.com +ads ad.hpplay.cn +adsadeng.hpplay.cn +ads kuyun.com +ads umeng.com +ads +& +XNXX xnxx.com xnxx-cdn.com +Q + CHINANEWS chinanews.comchinanews.com.cn +cns.com.cn ecns.cn +Y +DAZN dazn-api.com dazn.com +dazndn.com +indazn.com indaznlab.com ++ +FLATPAK flathub.org flatpak.org + +GOFUNDME gofundme.com +k +IKEAikea.cn +cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.com +9 +SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl + + +XUEYUANJUNxueyuanjun.com +' +ZEPLIN +zeplin.dev  zeplin.io +s + GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.org +– + HKETGROUPapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn +cn etnet.com.hketnetchina.com.cn +cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk ++ + +KUBERNETES kubernetes.io +k8s.io +2 + NEWRELIC-ADS"js-agent.newrelic.com +ads +6 + RULEOFLAWrolfoundation.orgrolsociety.org +- +SURFLITE surflite.co surflite.net += + TRANSLATEWIKItranslatewiki.nettranslatewiki.org +T + DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best +E +ETHEREUM +devcon.orgethereum.foundation ethereum.org +à +ICLOUDapple-icloud.cn +cnappleicloud.cn +cnapplemx-icloud.comicloud-apple.cn +cnicloud-content.comicloud-isupport.com  icloud.ch +icloud.com icloud.com.cn +cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn +cn  icloud.om +icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn +cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com +icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com +me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net +M + +LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com +é +MINImini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com +mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl +mini.co.cr +mini.co.id +mini.co.il +mini.co.kr +mini.co.me +mini.co.th +mini.co.uk +mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua +mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com +minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com +minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com +trmini.comtroisrivieresmini.comyours-customised.mini.com +Œ +9TO59to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com +_ +CATEGORY-WIKI-CNhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn +" +KODI kodi.tv  kodi.wiki +y + QINGCLOUD frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com +yunify.com  - BITWARDEN bitwarden.com -D -RUST rust-lang.org  rustup.rs  crates.io docs.rs -Ì - THEGUARDIAN theguardiandev-guardianapis.comdev-theguardian.com -gu-web.netguardianapis.comguardianapps.co.uk -guim.co.uktheguardian.comtheguardiandns.com + TEST-IPV6 test-ipv6.com +š +CCBccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn +² +HUAWEI  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com +œ +HUOBI +hbabit.com +hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.com +/ + JIBENCAOZUO jbcz.tvjibencaozuo.com + +ALI213 +ali213.net +‰ +BRAVEUXbraventures.com braveux.com +compass.isfightforux.comforthebadge.comstockagainstphotography.com +` +GEMFURY  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com +­ +MEDIACHINESEGROUPmediachinese.com mysinchew.comsinchew.com.my +sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +" +NIST nist.gov time.gov +Ç + CATEGORY-ORGS archive.org ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net csis.orgcsis-prod.s3.amazonaws.comemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org +ieeer5.org +ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org +comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org nist.gov time.gov openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgrolfoundation.orgrolsociety.org aomedia.org  atypi.org +change.orgglobalsecurity.org ietf.org itu.int  smpte.org +un.org +w3.org who.int wto.org +š +QINIUstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com +• +WOOLITE +woolite.ca +woolite.cn +cn woolite.comwoolite.com.cn +cn +woolite.pl +woolite.uswoolitecarpet.com +Ê +VEET veet.at veet.be veet.ca veet.ch veet.clveet.cn +cn +veet.co.id +veet.co.in +veet.co.kr +veet.co.nz +veet.co.uk +veet.co.za veet.com veet.com.ar veet.com.au veet.com.bd veet.com.br veet.com.cn +cn veet.com.co veet.com.hk veet.com.mx veet.com.my veet.com.ph veet.com.pk veet.com.sg veet.com.tr veet.de veet.dk veet.es veet.fi veet.fr veet.hu veet.jp veet.nl veet.no veet.pt veet.ro veet.ru veet.se veet.tv veet.usveetarabia.comveetbangladesh.comveetcentroamerica.com veetclub.it ++ +AFDIAN +afdian.net afdiancdn.com +– +WEBEX webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr +% +MIHOYO +mihoyo.com bh3.com +Ò + +SF-EXPRESS  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org + +TOR onion +A +ACERacer-group.com acer.com acer.com.cn +cn + +ARCHIVE archive.org +] +BUYPASSbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no +I +DMM dmm.com  dmm.co.jpdmm-extension.com dmmapis.com +í + NBCUNIVERSALdreamworks.com cnbc.com +cnbcfm.com  msnbc.com +nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com +nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com + + APPLE-DEVappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net +€ + INTEL-DEV +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org +' +MOJI moji.com mojichina.com +C + SCIENCEDIRECTsciencedirect.comsciencedirectassets.com +1 + STACKPATH stackpath.com stackpath.dev + +TIDELIFT tidelift.com +' +WATCHOUT watchout.tw +waa.tw +B +HASKELL haskell.orghaskellstack.org stackage.org +8 + KINGKONGLIVEkingkong.com.twkingkongapp.com + + SHARETHIS sharethis.com + +PATREON patreon.com +4 +PERL perl.org cpan.org metacpan.org + +B3LOG  b3log.org +, +MEDIUM +medium.commedium.systems +M + MESSENGERfbmessenger.comm.me messenger.com +nbabot.net + +SINGTAONEWSCORPsingtaonewscorp.com +sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com +eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hk +Ð +VK mvk.com userapi.com  vk-cdn.me +vk-cdn.net vk-portal.net vk.cc +vk.com  vk.design vk.link vk.me vkcache.com vkgo.app +vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net +H +BLENDERbigbuckbunny.org blender.orgelephantsdream.org +& +HUYA huya.com msstatic.com +7 + +LONDONREALfreedomplatform.tv londonreal.tv ++ + SEGMENT-ADScdn.segment.com +ads +) +DRIBBBLE drbl.in dribbble.com + +JINJIANG  jjwxc.net +² +MOVEFREEkeepmovingwithmovefree.com move-free.net movefree.cn +cn movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.com +á + +AKAMAI ak1.net +aka-ai.com +aka-ai.net akacrypto.net akadeem.net +akadns.com akadns6.net +akaeai.com +akafms.net akahost.net +akaint.net akam.net +akamaa.com +akamah.com +akamak.com +akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com akamai.co.kr +akamai.com +akamai.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.net akamaihd.com akamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaized-staging.net akamaized.netakamaizercentral.com +akamci.com  akami.com  akami.net +akamii.com +akamqi.com akastream.com akastream.net +akatns.net iamakamai.com iamakamai.netsoasta-dswb.com +srtcdn.net +Y +JSDELIVR jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net +cn + +WEBTYPE webtype.com « YOUTUBE youtubeggpht.cn cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com @@ -1554,247 +1255,157 @@ youtube.ua youtube.ug youtube.uy youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com -' -HM -hm.com hm.com.cn -cn -Ÿ -MUCINEX -mucinex.ca -mucinex.cn mucinex.co.nz mucinex.commucinex.com.cn mucinex.net -mucinex.tvmucinexprofessional.com +. +JIEMIAN jiemian.comjiemian.com.cn + +SSPAI  sspai.com +Ž +THESUNdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie / - JIBENCAOZUO jbcz.tvjibencaozuo.com -H - NEXITALLY nexitally.comnexitallysafe.com nexitcore.com -: -POLYMERpolymer-project.orgpolymerproject.org -à -ICLOUDapple-icloud.cn -cnappleicloud.cn -cnapplemx-icloud.comicloud-apple.cn -cnicloud-content.comicloud-isupport.com  icloud.ch -icloud.com icloud.com.cn -cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn -cn  icloud.om -icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn -cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com -icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com -me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net + +THEINITIUMtheinitium.com  init.shop +d +BARRONSbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.com +Œ + +ITUNES!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn +cn itun.es itunbes.com ituneas.comitunes-apple.cn +cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th +itunes.com  itunes.hk  itunes.mx +itunes.org +itunes.rio  itunes.usitunes12days.comitunesapple.cn +cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn +cnitunesradio.comitunesradio.com.cn +cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.net +* +JAVBUS +javbus.com javbus22.com +8 +NPMJS npm.community  npmjs.com  npmjs.org +¸ + STARBUCKS sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn +cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com +a +DYNA dynacw.co.jp +dynacw.com dynacw.com.cn dynacw.com.hk dynacw.com.tw +Q + BANDWAGONHOSTbandwagonhost.com bwh1.net bwh8.net  bwh88.net + + +GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com +cnocsp.globalsign.com +cn ocsp2.globalsign.com +cn +™ +IEEE ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org +ieeer5.org +ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org +comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org +* +PAGECDN pagecdn.com +pagecdn.io +¯ + +VISUALARTS abow.jp angelbeats.jp +anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp +Æ +BOC +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cn -STATICFILEstaticfile.org -3 - XHAMSTER-ADS#collector.xhamster.com +FONTSINUSEfontsinuse.com +2 + GROWINGIO-ADS!assets.growingio.com ads -¿ -GIGABYTE  aorus.com aoruszone.cn -cn gigabyte.cn -cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net -â -HKT 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com -¹ -UBI ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com -cn -º{ -CATEGORY-ECOMMERCE  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk -adidas.com adidas.com.cn -cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com -bestbuy.ca -bestbuy.cn -cn bestbuy.combestbuy.com.cn -cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn -cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info -gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com -booking.cn -cn booking.com bstatic.comcostco-static.com -costco.comcostcobusinessdelivery.comcraigslist.org dmm.com  dmm.co.jpdmm-extension.com21centuryaccess.com4ebaytraders.com adcommerce.cn -cn adcommerce.tv appforebay.cn -cnappsonebay.net -asebay.com -baazee.com -bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn -cn"connectcommerce.com.cn -cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn -cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn -cncyber-bay.com.cn -cncyber-bay.info cyber-bay.org -dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn -cn -ebay.co.nz -ebay.co.uk -ebay.co.ve -ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn -cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn -cn ebay.nl ebay.org ebay.org.cn -cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn -ebay.yn.cn -cn -ebay.zj.cn -cn -ebay25.com -ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn -cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com -ebayca.com -ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn -cnebayclassifieds.com"ebayclassifieds.com.cn -cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com -ebayde.com ebaydesc.cn -cnebaydesc.com.cn -cnebaydlassifieds.com -ebaydns.cn -cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn -cnebayenterprise.com!ebayenterprise.com.cn -cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com -ebayit.comebayjewelry.com ebayjob.com -ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn -cnebaymotors.comebaymotors.com.cn -cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com -ebayon.com -ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn -cnebaypedia.com.cn -cnebayprivacycenter.com -ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn -cnebayshopping.com.cn -cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn -cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn -cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com -ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn -cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net -myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn -cn prostores.comprostores.com.cn -cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com -svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn -cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com -gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn -cnkijijidns.com.cn -cnkijijiforbusiness.ca -kijijii.ca kijijiraps.ca kijji.ca -kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn -cn -q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn -cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com -nexcat.com nexpart.com -nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.comfarfetch-apps.comfarfetch-contents.com farfetch.cn -cn farfetch.comfarfetch.com.cn -cn farfetch.netfarfetch.net.cn -cn  fflnk.net gfashion.com guccichimeforchange.orggucci.cn -cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com -hm.com hm.com.cn -cnhomedepot-static.com homedepot.comikea.cn -cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.comloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn -cn  miniso.co miniso.co.id miniso.co.tz -miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn -cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn -cn myminiso.com muji.com muji.com.cn -cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.netnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com -eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com -gonike.comhandbags-nike.comhightopnikes.com -idnike.cominikesneakers.com just-do-it.cn -cn justdoit.uskicksnike1.comkidsnikeshoes.com -mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn -cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn -cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com -nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn -cnnikebetterworld.com"nikebetterworld.com.cn -cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com -nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn -cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org -nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn -cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn -cn nikeid.com.cn -cnnikeidshoes.com nikeinc.comnikeinc.com.cn -cnnikeincchemistry.comnikeinstock.com -nikeit.comnikeitalia.com nikeitaly.com -nikekd.com nikekid.com -nikelab.cn -cnnikelab.com.cn -cn nikelink.comnikeliuxiang.cn -cnnikeliuxiang.comnikeliuxiang.com.cn -cn nikelives.comnikelunarglide.com nikemall.cn -cnnikemall.com.cn -cnnikemarketing.com nikenews.com -niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn -cnnikerunclub.com.cn -cnnikerunner.comnikerunning.com.cn -cnnikerunningshoes.com -nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn -cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh -swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e nordstrom.comnordstrommedia.com shopee.cn -cn shopee.co.id shopee.co.th -shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com -cn -shp.ee -target -target.comtargetimg1.com walmart wal-mart.com -wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com -wmt.co -Õ -ONEDRIVE 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com - -SOLIDOT solidot.org -M - MESSENGERfbmessenger.comm.me messenger.com -nbabot.net -¦ - CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -/ -CLEARBITJS-ADSx.clearbitjs.com -ads -Œ -ESPN espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -€ - INTEL-DEV -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org -Y -JFROG  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net -B -PUGPIGpugpig-dev.compugpig-stage.com -pugpig.com - - -SKILLSHAREskillshare.com -& -CHINASO chinaso.com -pg0.cn -™ -MARVEL -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com -+ -TYPEKIT typekit.com typekit.net +Z +INTERCOM intercom.com intercom.iointercomassets.comintercomcdn.com +Ü +WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.com ™ BILIBILI acg.tv acgvideo.com b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com mincdn.com$ upos-hz-mirrorakam.akamaized.net +š +DIDI didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com +z +MATRIXarewereadyyet.com +element.io +matrix.org  matrix.to +modular.im riot.im  vector.im +2 +ZOOM zoom.com zoom.com.cn zoom.us + +ADDTOANY addtoany.com +Õ +ONEDRIVE 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com % -IMGIX  imgix.com  imgix.net -) -OSCHINA  gitee.com oschina.net -= -SIGNAL -signal.art -signal.orgsignalusers.org -: -ZAOBAO -zaobao.com zaobao.com.sg  zaobao.sg -” - HELLOFONT hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com -ª -OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +FONTS  fonts.com  fonts.net +Ë +GITHUB npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com +ä +SMARTONEbarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +œ + STREPSILS +cepacol.ca cepacol.com dobendan.degraneodin.com.mx +repsils.no strepsils.at strepsils.ch strepsils.cn +cnstrepsils.co.krstrepsils.co.nzstrepsils.co.zastrepsils.com.arstrepsils.com.brstrepsils.com.cn +cnstrepsils.com.costrepsils.com.austrepsils.com.hkstrepsils.com.phstrepsils.com.tw strepsils.es strepsils.fi strepsils.fr strepsils.hr strepsils.hu strepsils.ie strepsils.net strepsils.pl strepsils.pt strepsils.ro strepsils.ru strepsils.si strepsils.usstrepsilsarabia.com +‡ +WHOLEFOODSMARKETwholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.org +Ò + YOUKU-ADSactives.youku.com +ads ad.api.3g.youku.com +ads$ad.api.mobile.youku.com +ads ad.mobile.youku.com +ads(a-dxk.play.api.3g.youku.com +ads atm.youku.com +ads#b.smartvideo.youku.com +adsc.yes.youku.com +adsdas.api.youku.com +ads!das.mobile.youku.com +ads!dev-push.m.youku.com +adsdl.g.youku.com +adsdmapp.youku.com +adse.stat.ykimg.com +ads#gamex.mobile.youku.com +ads!guanggaoad.youku.com +ads hudong.pl.youku.com +ads!huodong.pl.youku.com +ads"huodong.vip.youku.com +ads hz.youku.com +adsiyes.youku.com +ads l.ykimg.com +adslstat.youku.com +ads mobilemsg.youku.com +ads msg.youku.com +adsmyes.youku.com +ads p.l.youku.com +ads pl.youku.com +ads#passport-log.youku.com +adsp-log.ykimg.com +adspush.m.youku.com +ads r.l.youku.com +ads s.p.youku.com +adssdk.m.youku.com +adsstat.youku.com +ads$statis.api.3g.youku.com +ads&store.tv.api.3g.youku.com +ads&store.xl.api.3g.youku.com +adstdrec.youku.com +adstest.ott.youku.com +ads!test.sdk.m.youku.com +ads v.l.youku.com +adsval.api.youku.com +ads wan.youku.com +adsykatr.youku.com +adsykrec.youku.com ads -3 - -CONTENTFULcontentful.com ctfassets.net +Ë + ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com è ENFAbebepremium3.com.bo enfa.co.id enfa.com.vn enfaaplus.com enfababy.com enfabebe.comenfabebe.com.brenfabebe.com.coenfabebe.com.doenfabebe.com.ecenfabebe.com.mxenfabebe.com.peenfabebe.com.veenfabebe3.com.arenfagrow.co.inenfagrow.com.bnenfagrow.com.myenfagrow.com.phenfagrow.com.sg enfagrow4.comenfamama.com.arenfamama.com.ph @@ -1802,7 +1413,130 @@ enfamil.ca enfamil.com enfamil.es enfamil.pl enfamil.pt enfasmart.comenspireformula.comnutramigen.net nutramigen.pl -µˆ + +GAMERSKY gamersky.com +p +KKBOX +kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me +O +PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com +ads +¤ +ZEE +bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com +ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com +zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com + + ZHIHUISHU zhihuishu.com +ƒ + NETEASE-ADSanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads +Y +UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com +© +VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz + +GLYPHS glyphsapp.com +Ö + INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com +“ + LIMELIGHTdelvenetworks.com limelight.com  lldns.netllnw-trials.com llnw.com llnw.net  llnwd.net  llnwi.net +T + +PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me +& +CHINASO chinaso.com +pg0.cn +À + +DUCKDUCKGOcispaletter.comcispaletter.orgcometotheduckside.com +ddg.co +ddg.gg +ddh.gg +dgg.gg dontbubble.us donttrack.us duck.co duck.comduckduckco.com duckduckco.de duckduckgo.ca duckduckgo.coduckduckgo.co.ukduckduckgo.comduckduckgo.com.mxduckduckgo.com.tw duckduckgo.de duckduckgo.dk duckduckgo.in duckduckgo.jp duckduckgo.ke duckduckgo.mx duckduckgo.nlduckduckgo.org duckduckgo.pl duckduckgo.sg duckduckgo.ukduckduckhack.com +duckgo.com ducksear.ch duckside.com  dukgo.comenteentegeh.defixtracking.com goduckgo.com hacksear.chjustduckit.comprivacysimplified.comprivatebrowsingmyths.comspreadprivacy.com + +JIYUKOBOjiyu-kobo.co.jp + +VGTIME +vgtime.com +ä +CATEGORY-ANTICENSORSHIP citizenlab.cacitizenlab.org  gfw.press +gfw.reportapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.orghaveibeenpwned.compwnedpasswords.comgetlantern.org +lantern.io softether.orgsoftether-download.com  v2ray.com +v2ray.cool  v2fly.org ahmia.fi akasha.worldbrowserleaks.combypasscensorship.orgdat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org +geti2p.netguardianproject.info ipfs.io  jitsi.org  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co +uproxy.org vuvuzela.io +whonix.org wikileaks.org wireguard.com +zeronet.io +3 + +CONTENTFULcontentful.com ctfassets.net +¿ +GIGABYTE  aorus.com aoruszone.cn +cn gigabyte.cn +cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net +' +POLYV  polyv.net videocc.net + +DISCORD +discord.co discord.com +discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com +B +DISQUS +disqus.com disquscdn.comdisqusservice.com + +3TYPE 3type.cn ++ + MXPLAYER-ADSevt.mxplay.com +ads + +WWE wwe.com wwe9.com +ô* +PAYPALaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.org anfutong.cn +cn anfutong.comanfutong.com.cn +cn beibao.cn +cn +beibao.com beibao.com.cn +cn bill-safe.combillmelater.combillmelater.infobillmelater.net bml.infobuyfast-paysmart.net cashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com +gmoney.org +i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net +pa9pal.com paaypal.com  paily.net  paily.org +paipal.com +pavpal.com paydiant.com paylike.com +paypa1.com +paypa1.org paypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net  paypal.ca +paypal.com paypal.com.cn +cn paypal.com.hk paypal.com.sg  paypal.hk paypal.info  paypal.jp  paypal.me paypal.net.cn +cn paypal.org.cn +cn  paypal.so  paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.cn +cnpaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.org paypalhere.cn +cnpaypalhere.compaypalhere.com.cn +cnpaypalhere.infopaypalhere.netpaypalhere.org paypalhere.tv paypali.net paypalinc.compaypalindia.compaypalinsuranceservices.org paypall.compaypallabs.com paypalme.com paypalnet.net paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.com paypalx.com paypaly.com payppal.com payypal.compdncommunity.com +pp-soc.com ppaypal.com  pppds.com pypl.com  pypl.info pypl.net pypl.tvsecure-paypal.infosecurepaypal.info sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info www-paypal.usxn--bnq297cix3a.cn +cnbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tv card.iogetbraintree.com krakenjs.comloanbuilder.comswiftcapital.com simility.com cashify.netswiftbank.info swiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com  venmo.com +venmo.info  venmo.net  venmo.org  cash2.comfilipino-music.net +s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.com wwwxoom.comxoom-experience.com xoom.com xoom.io xoom.net.cn +cn xoom.us xoomcom.comvenmo.s3.amazonaws.com + + TRUSTWAVE trustwave.com +ñ +WANGSU  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org +5 +COLORFULCLOUDS caiyunai.com caiyunapp.com + + +JINRISHICIjinrishici.com + +SHORTURL shorturl.at +úŠ GEOLOCATION-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup olayan praxisapseek vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci @@ -2164,7 +1898,7 @@ swissid.ch swissign.com swissign.liswisssign-group.chswiss telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.comclubhouseapi.comjoinclubhouse.com discord.co discord.com discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com freenode.net intercom.com intercom.iointercomassets.comintercomcdn.com -lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw nhncorp.jparewereadyyet.com element.io matrix.org  matrix.to @@ -2196,7 +1930,7 @@ bestbuy.cn gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com booking.cn cn booking.com bstatic.comcostco-static.com -costco.comcostcobusinessdelivery.comcraigslist.org dmm.com  dmm.co.jpdmm-extension.com21centuryaccess.com4ebaytraders.com adcommerce.cn +costco.comcostcobusinessdelivery.comcraigslist.org dmm.com  dmm.co.jpdmm-extension.com dmmapis.com21centuryaccess.com4ebaytraders.com adcommerce.cn cn adcommerce.tv appforebay.cn cnappsonebay.net asebay.com @@ -2446,7 +2180,9 @@ wwtbam.comyourfantasybeginsnow.comsoundcloud.com sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  amemv.com muscdn.com musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net vhx.tv vhxqa1.com vhxqa2.com @@ -2456,7 +2192,7 @@ vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vi anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com litv.tv megaphone.fm moov.hk +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com  linetv.tw litv.tv megaphone.fm moov.hk odysee.com overcast.fm syosetu.com weverse.io yande.re 0x0.st db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com @@ -2899,7 +2635,7 @@ mac.com.au machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn -cn xn--ruq8a011kt6y.xn--hxt814e."amp-api-search-edge.apps.apple.com +cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com cn"amp-api.apps.apple.com cn aod.itunes.apple.com cn#api-edge.apps.apple.com @@ -2992,6 +2728,7 @@ touchid.tv touchid.wangtracking-location.comtruedepth3d.com cn, gsp4-cn.ls.apple.com.edgekey.net cn gsp4-cn.ls.apple.com cn gsp5-cn.ls.apple.com +cn%gsp85-cn-ssl.ls.apple.com cn&gspe19-cn-ssl.ls.apple.com cn-!gspe19-cn.ls-apple.com.akadns.net cn"gspe19-cn.ls.apple.com @@ -3062,7 +2799,7 @@ touchid.tv touchid.wangtracking-location.comtruedepth3d.com cn<0www.apple.com.edgekey.net.globalredir.akadns.net cn%www.apple.com.edgekey.net cn www.apple.com -cnapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net asus.com asus.com.cn +cn asus.com asus.com.cn cn atlassian.com bitbucket.org statuspage.ioaccbusiness.com atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn cn att.com att.jobs att.net @@ -3426,7 +3163,7 @@ yammer.com(dl.delivery.mp.microsoft.com cn&wscont2.apps.microsoft.com cnwww.microsoft.com cn&xb.dlservice.microsoft.com -cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net neuralink.com +cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com neuralink.com geforce.cn cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn @@ -3599,641 +3336,752 @@ rea.global rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com tsquare.tv  windy.com xdty.org  xingrz.me -Ú - - BLOOMBERG  bloomberg bbgevent.com bbhub.io -bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video -«X -FACEBOOKaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com -nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org -atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com -facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com -faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com -fb.careers -fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com -fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com -fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net -freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com -groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com -redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net -ƒ - NETEASE-ADSanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com + +IINA iina.io +? + BONGACAMS bongacams.com +bcicdn.com bcrncdn.com +6 +CATEGORY-COLLABORATE-CN shimo.im  yuque.com +Û +SPOTIFY byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net ++ +XIMALAYA ximalaya.com  xmcdn.com +Ÿs +BMWmini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com +mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl +mini.co.cr +mini.co.id +mini.co.il +mini.co.kr +mini.co.me +mini.co.th +mini.co.uk +mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua +mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com +minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com +minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com +trmini.comtroisrivieresmini.comyours-customised.mini.combmwapprovedusedbmw.combaltimorebmw.combayareabmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.com bmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.ca bmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.chbmw-connecteddrive.co.nzbmw-connecteddrive.co.ukbmw-connecteddrive.co.zabmw-connecteddrive.combmw-connecteddrive.com.aubmw-connecteddrive.com.brbmw-connecteddrive.com.cybmw-connecteddrive.com.hrbmw-connecteddrive.com.kwbmw-connecteddrive.com.mtbmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.combmw-driving-center.co.krbmw-drivingexperience.com bmw-dubai.com +bmw-eg.com bmw-fleet.net bmw-ghana.combmw-golfsport.com bmw-group.com bmw-group.netbmw-grouparchiv.debmw-grouparchives.com +bmw-gta.cabmw-i-pure-impulse.com bmw-i.jp bmw-int1.com bmw-iraq.combmw-jordan.combmw-konzernarchiv.de bmw-ksa.combmw-kuwait.com +bmw-lao.labmw-lebanon.combmw-m-safetycar.com  bmw-m.combmw-mdrivetour.com +bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.cobmw-motorrad.co.idbmw-motorrad.co.krbmw-motorrad.co.nzbmw-motorrad.co.thbmw-motorrad.co.ukbmw-motorrad.co.zabmw-motorrad.combmw-motorrad.com.arbmw-motorrad.com.aubmw-motorrad.com.brbmw-motorrad.com.dobmw-motorrad.com.hrbmw-motorrad.com.mxbmw-motorrad.com.mybmw-motorrad.com.pebmw-motorrad.com.pybmw-motorrad.com.trbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.com bmw-oman.com bmw-ottawa.cabmw-pakistan.combmw-plant-munich.combmw-pma.com.sgbmw-powertrain.combmw-product-highlights.com bmw-qatar.combmw-routes.com +bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.ca bmw-voli.me bmw-welt.com bmw-welt.net bmw-welt.tvbmw-werk-berlin.de bmw-world.com bmw-world.net bmw-world.tvbmw-worldfinal.combmw-yachtsport.com +bmw-yeg.ca bmw-yemen.com +bmw.am +bmw.at +bmw.az +bmw.ba +bmw.bb +bmw.be +bmw.bg +bmw.bm +bmw.bs +bmw.by +bmw.ca +bmw.cc +bmw.ch +bmw.cl  bmw.co.ao  bmw.co.cr  bmw.co.id  bmw.co.il  bmw.co.jp  bmw.co.ke  bmw.co.kr  bmw.co.nz  bmw.co.th  bmw.co.uk  bmw.co.za bmw.com +bmw.com.ar +bmw.com.au +bmw.com.bd +bmw.com.bn +bmw.com.bo +bmw.com.br +bmw.com.cn +cn +bmw.com.co +bmw.com.cy +bmw.com.do +bmw.com.ec +bmw.com.ge +bmw.com.gt +bmw.com.kh +bmw.com.ky +bmw.com.mk +bmw.com.mo +bmw.com.mt +bmw.com.mx +bmw.com.my +bmw.com.ni +bmw.com.pa +bmw.com.pe +bmw.com.ph +bmw.com.py +bmw.com.sg +bmw.com.sv +bmw.com.tr +bmw.com.tw +bmw.com.uy +bmw.com.ve +bmw.cw +bmw.cz +bmw.de +bmw.dk +bmw.dz +bmw.ee +bmw.es +bmw.fi +bmw.fr +bmw.gp +bmw.gr +bmw.hn +bmw.hr +bmw.ht +bmw.hu +bmw.ie +bmw.in +bmw.is +bmw.it +bmw.kg +bmw.kz +bmw.lc +bmw.lk +bmw.lt +bmw.lu +bmw.lv +bmw.ly +bmw.ma +bmw.md +bmw.mn +bmw.mq +bmw.mu +bmw.nc +bmw.nl +bmw.no +bmw.pl +bmw.ps +bmw.pt +bmw.re +bmw.ro +bmw.rs +bmw.se +bmw.si +bmw.sk +bmw.sn +bmw.tm +bmw.tt +bmw.ua +bmw.uz +bmw.vn bmwarchiv.at bmwarchiv.debmwartjourney.com bmwasia.combmwauslieferungszentrum.com bmwbikes.com  bmwbkk.de +bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.com bmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.com bmwgroup.at bmwgroup.com bmwgroup.net bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com  bmwhk.com bmwi.ca bmwi.jpbmwiventures.combmwjamaica.com +bmwlat.combmwlifestyle.ca bmwm.combmwmagazine.combmwmagazine.de bmwmass.com bmwmass.net  bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.combmwmotorrad.co.krbmwmotorrad.com.aubmwmotorrad.com.phbmwmotorrad.com.sgbmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com bmwsafari.com +bmwsfl.com +bmwsfl.net +bmwshop.cabmwspecialoffers.ca bmwsports.combmwstartupgarage.com bmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com +bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.com bmwworld.com bmwworld.net bmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com daytonbmw.comdealerspeed.net desertbmw.com dreambmw.ca grupobmw.com guambmw.comhackthedrive.com hawaiibmw.com iaablog.comlasvegasbmw.com m-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.com mybmw.ca  mybmw.comnewhampshirebmw.com  nmbmw.comocbmwdealers.comoffresspecialesbmw.ca park-now.com parkinfo.com +pdxbmw.com +phxbmw.compre-bmwgroup.jobspugetsoundbmw.com rentaride.com rentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.com socalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.com alfera.com.hk alfera.com.my  alfera.in  alfera.myalphera-finance.co.inalphera-finance.com.hkalphera-finance.in +alphera.ca alphera.co.in alphera.co.nz alphera.comalphera.com.esalphera.com.hkalphera.com.my +alphera.de +alphera.es +alphera.ie +alphera.in +alphera.my alphera.netalpherafinance.com.hkalpherafinancialservices.esalpherafinancialservices.in alpherafs.caalpherafs.co.nzalpherafs.com.hkalpherafs.com.my alpherafs.ie alpherafs.in alpherafs.my premiumfs.de alphabet.asia alphabet.at alphabet.be alphabet.biz alphabet.chalphabet.co.hualphabet.co.ukalphabet.co.za alphabet.comalphabet.com.cn +cnalphabet.com.esalphabet.com.lvalphabet.com.mxalphabet.com.plalphabet.com.pt alphabet.cz alphabet.de alphabet.es alphabet.eu alphabet.fr alphabet.info alphabet.jp alphabet.lt alphabet.lu alphabet.lv alphabet.mxalphabet.net.cn +cn alphabet.noalphabet.org.uk alphabet.pl alphabet.pt alphabet.uk alphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com  rrtis.comspiritofecstasy.com +â + HUNANTV-ADSclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com ads -Ì -NVIDIA -geforce.cn -cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn -cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn -cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk -nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net -€ - YUANFUDAO banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com -2 -ZOOM zoom.com zoom.com.cn zoom.us -9 -EMBEDLY embed.ly embedly.com playerjs.io -% - FONTEXPLORERfontexplorerx.com -` -GEMFURY  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com -×! - -MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.cl mastercard.cn -cnmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cn -cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.iemastercard.inc mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com idservice.incinclusivegrowthscore.com findacard.com mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.com paypass.netpieceofplastic.compredictivetechnologies.com priceless.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.cacashpassport.co.zacashpassport.comcashpassport.com.brcashpassport.netcorporatecashpassport.comicashpassport.com.mxintercamcashpassport.com.mx!multicurrencycashpassport.comshinhangmc.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.com -nab.com.aunabtravellercard.com.au 53world.com53worldsweeps.comlovethiscity.commastercardmoments.compahabicilemezsurprizler.com priceless.compriceless.com.cn -cn priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.cn -cnpricelessbeijing.com#pricelessbeijing.com.cn -cnpricelesshongkong.compricelesshonolulu.compricelesspick.compricelesssantiago.compricelesssydney.compricelesssurprises.compricelesstoronto.capricelesstv.com simplify.comsimplifycommerce.comcashpassportglobe.comgwktravelex.nl travelex.be travelex.bh travelex.catravelex.co.intravelex.co.jptravelex.co.nztravelex.co.uk travelex.comtravelex.com.autravelex.com.cn -cntravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.tr travelex.de travelex.fr travelex.it travelex.qatravelexae.comtravelexch.comtravelexmoneycard.combidvestbank.co.zaworldcurrencycard.co.zanab.demdex.net&"nationalaustraliaban.tt.omtrdc.net -; -UBERuber-assets.com uber.com ubereats.com -8 - -CYBERTRUSTcybertrust.co.jpcybertrust.ne.jp -É -LG -lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com -lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net -² -MONOTYPEfontexplorerx.com  fonts.com  fonts.net fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com linotype.com myfonts.com myfonts.net monotype.commonotypeimaging.com bitstream.com itcfonts.com - -MZED mzed.com -> -NOTION  notion.sonotion-static.com -notion.new -% -NGINX  nginx.com  nginx.org -N -SEASUNseasungames.com xishanju.com xoyo.com testplus.cn -9 - SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net -' -ZEPLIN -zeplin.dev  zeplin.io - - ZHIHUISHU zhihuishu.com - - BRILLIANT brilliant.org -* -JIANSHU jianshu.com -jianshu.io -0 -MEGA -mega.co.nz mega.io mega.nz -2 - NEWRELIC-ADS"js-agent.newrelic.com +ƒ +MSNmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com +d +REDDIT +reddit.comredditstatic.comredditmail.comredditmedia.com redd.it ++ + ONESIGNAL-ADS onesignal.com +ads +¦ + BRIDGESTONE bridgestone  bandag.cc +bandag.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpbridgestone-korea.co.krbridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clbridgestone.cn +cnbridgestone.co.crbridgestone.co.idbridgestone.co.inbridgestone.co.jpbridgestone.co.thbridgestone.combridgestone.com.arbridgestone.com.brbridgestone.com.cn +cnbridgestone.com.cobridgestone.com.mxbridgestone.com.sgbridgestone.com.twbridgestone.com.vnbridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.clbridgestonecomercial.co.crbridgestonecomercial.com.arbridgestonecomercial.com.brbridgestonecomercial.com.cobridgestonecomercial.com.mxbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.combridgestonetyre.com.mybridgestonevan.combridgestonewx.combs-adreview.com bs-awh.ne.jp  bsw.co.jp +bsw.jpcarcare-and-tireshop.jpdaytontrucktires.com ecoforme.jp gcrtires.comjsbridgestone.commenshin-channel.com monitrix.net mr-tireman.jpmybridgestoneeducation.com playz.jp +potenza.jpprodrive-japan.comstore-bridgestonesports.com thetread.com tiresplus.com cfna.combastropfirestone.comcrossfitfirestone.com firestone.clfirestone.co.crfirestone.com.arfirestone.com.brfirestone.com.cofirestone.com.mxfirestonebpco.comfirestonecomercial.clfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mx!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comhibdontire.comwheelworks.netnokiantyres.cn +cnnokiantyres.com +Þ + +JD3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com ads -^ -SWIFTappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cn š TVB mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn cntvbeventpower.com.hk tvbusa.com tvbweekly.comtvmedia.net.au -e -PYTHON  pycon.org pypa.io pypi.io pypi.org -python.orgpythonhosted.org - -115 115.com -< -ANACONDA anaconda.com anaconda.org conda.io -Ž -GUCCI guccichimeforchange.orggucci.cn -cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com -× -UMENG mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads -2 -INNER-ACTIVE-ADSinner-active.mobi -ads -  -ORACLE -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net -1 -GODADDY godaddy.comx.co godaddy - -MOCHA mochajs.org -" - ADBLOCKPLUSadblockplus.org - -AVSFORUM avsforum.com -Î -DNSPOD dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub -* -DUOWAN -duowan.com dwstatic.com -? -STRIPE -stripe.comstripe.network stripecdn.com -< -DOCKERcompose-spec.io -docker.com  docker.io -0 - MIXPANEL-ADS decide.mixpanel.com -ads -N -CNBC cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com -@ - ZUOYEBANG zuoyebang.cc zuoyebang.com -zybang.com -c -COMODO -comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com -o -UNITY  unity.com unity3d.com!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -Œ - -ITUNES!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn -cn itun.es itunbes.com ituneas.comitunes-apple.cn -cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th -itunes.com  itunes.hk  itunes.mx -itunes.org -itunes.rio  itunes.usitunes12days.comitunesapple.cn -cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn -cnitunesradio.comitunesradio.com.cn -cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.net . ASPROEX asproex.comasproexapi.com -0 -BITLY -bit.ly  bitly.com bitly.is - -GCORES -gcores.com -Ý -VOLVO volvodynafleetonline.comescandinavia-arg.comindependentoperatorcn.com road-crew.com udfs.com vfsco.at vfsco.be vfsco.bg vfsco.ca vfsco.ch vfsco.cl vfsco.co.uk vfsco.co.za  vfsco.com vfsco.com.au vfsco.com.br vfsco.com.cn -cn vfsco.com.tr vfsco.cz vfsco.de vfsco.dk vfsco.ee vfsco.es vfsco.fi vfsco.fr vfsco.hu vfsco.ie vfsco.in vfsco.it vfsco.jp vfsco.kr vfsco.lt vfsco.lv vfsco.mx vfsco.nl vfsco.no vfsco.pe vfsco.pl vfsco.ro vfsco.ru vfsco.se vfsco.sk vfsco.us vgcareers.netvolvo-truck.nl volvo.cavolvo.cn -cn  volvo.com volvo.com.cn -cn volvo.sevolvobrandshop.com volvobuses.at volvobuses.be volvobuses.ca volvobuses.ch volvobuses.covolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zavolvobuses.comvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.tw volvobuses.de volvobuses.dk volvobuses.es volvobuses.fi volvobuses.fr volvobuses.hk volvobuses.hu volvobuses.in volvobuses.it volvobuses.jo volvobuses.kr volvobuses.ma volvobuses.mx volvobuses.my volvobuses.no volvobuses.om volvobuses.ph volvobuses.pk volvobuses.pl volvobuses.ru volvobuses.se volvobuses.sg volvobuses.tn volvobuses.us volvoce.comvolvodefense.com volvogroup.be volvogroup.cn -cnvolvogroup.comvolvogroup.com.brvolvogroup.com.cn -cn volvogroup.de volvogroup.fr volvogroup.jp volvogroup.kr volvogroup.mx volvogroup.nl volvogroup.pe volvogroup.pl volvogroup.ru volvogroup.sevolvogrouptruckcenter.nlvolvomerchandise.comvolvopenta.comvolvopenta.com.br volvopenta.de volvopenta.es volvopenta.fr volvopenta.it volvopenta.nl volvopenta.se volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.ukvolvotrucks.co.nzvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwvolvotrucks.comvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.cn -cnvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eevolvotrucks.esvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvolvotrucks.mavolvotrucks.mdvolvotrucks.mkvolvotrucks.mnvolvotrucks.myvolvotrucks.netvolvotrucks.nlvolvotrucks.novolvotrucks.pevolvotrucks.phvolvotrucks.pkvolvotrucks.plvolvotrucks.psvolvotrucks.qavolvotrucks.rovolvotrucks.rsvolvotrucks.ruvolvotrucks.sevolvotrucks.sgvolvotrucks.sivolvotrucks.skvolvotrucks.tmvolvotrucks.tnvolvotrucks.uyvolvotruckcenter.bevolvotruckcenter.dkvolvotruckcenter.esvolvotruckcenter.fivolvotruckcenter.itvolvotruckcenter.krvolvotruckcenter.kzvolvotruckcenter.nlvolvotruckcenter.novolvotruckcenter.sevolvotruckrental.beudtrucksmeena.com -= - TRANSLATEWIKItranslatewiki.nettranslatewiki.org -ê -THOMSONREUTERS reuters.com -reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs -tr.com -u -CREATIVECOMMONS ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net +: +ZAOBAO +zaobao.com zaobao.com.sg  zaobao.sg +v +NATIONALGEOGRAPHICnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.com +Ú% + BAIDU-ADS a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads +®' +FOXfoxfox-corporation.com fox-news.com fox.com +fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com +fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com +fox5dc.com +fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com +foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv +foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com +foxest.com +foxfaq.com +foxfdm.com foxfiles.com +foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com +foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com +foxnews.cc foxnews.com foxnews.net foxnews.org +foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com +foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com +fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com +anidom.comcasoneexchange.comcoronavirusnow.com +fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com +my13la.com +my20dc.commy20houston.com +my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com +q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.net +ì + +GOOGLE-ADS2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +ads +) +KEEP gotokeep.com keepcdn.com " - FOUNDERTYPEfoundertype.com -É -GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk -7 -PGYER  pgyer.com -tracup.com frontjs.com -' -928PLUS 928.plus -zind.cloud - -CATEGORY-VPNSERVICES 928.plus -zind.cloud boslife.biz boslife.net -cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net n3ro.lol n3ro.net n3ro.wtf nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.meshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.netairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz aaex.uk amytele.com -ark.tobaicaonetwork.com bighead.groupblinkload.zone  cloudn.me  conair.me cordcloud.org ctyun.online geph.io  maying.comocloudplus.com  mray.club muncloud.dog renzhe.cloud -ssplive.pw -ssrpass.pwstc-server.com -Ÿ -PIXNET pimg.twpixanalytics.com  pixfs.netpixinsight.com.tw  pixnet.cc -pixnet.net -pixnet.pro  pixnet.tw -pixplug.in - -QUANTIL quantil.com - -0X0 -0x0.st -7 -AMD amd.comamdfanstore.com -radeon.com -Š -SLACKslack-edge.comslack-imgs.com  slack.com -slackb.comslackcertified.com slackdemo.com slackhq.com -( -IMGUR  imgur.com imgurinc.com -+ -RUBY ruby-lang.org rubygems.org -² -MOVEFREEkeepmovingwithmovefree.com move-free.net movefree.cn -cn movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.com -ý -RIOThistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn + MASTERCLASSmasterclass.com +Ì + THEGUARDIAN theguardiandev-guardianapis.comdev-theguardian.com +gu-web.netguardianapis.comguardianapps.co.uk +guim.co.uktheguardian.comtheguardiandns.com +¸ +VISA visa.be visa.ca visa.clvisa.cn +cn +visa.co.ao +visa.co.cr +visa.co.id +visa.co.il +visa.co.in +visa.co.jp +visa.co.ke +visa.co.ni +visa.co.nz +visa.co.th +visa.co.uk +visa.co.ve +visa.co.za visa.com visa.com.ag visa.com.ai visa.com.ar visa.com.au visa.com.az visa.com.bo visa.com.br visa.com.bs visa.com.bz visa.com.cn +cn visa.com.co visa.com.cy visa.com.dm visa.com.do visa.com.ec visa.com.ge visa.com.gt visa.com.gy visa.com.hk visa.com.hn visa.com.hr visa.com.jm visa.com.kh visa.com.kn visa.com.kz visa.com.lc visa.com.lk visa.com.ms visa.com.mx visa.com.my visa.com.ng visa.com.pa visa.com.pe visa.com.ph visa.com.pr visa.com.py visa.com.ru visa.com.sg visa.com.sv visa.com.tr visa.com.tt visa.com.tw visa.com.ua visa.com.uy visa.com.vc visa.com.vi visa.com.vn visa.cz visa.de visa.dk visa.es visa.fi visa.fr visa.gd visa.gp visa.gr visa.hk visa.hu visa.ie visa.is visa.ky visa.lt visa.lv visa.mn visa.mq visa.nl visa.no visa.pl visa.pt visa.ro visa.se visa.sk visa.so visa.sx visa.tc +visabg.com visaeurope.at visaeurope.ch visaeurope.lu visaeurope.sivisaitalia.com visakorea.comvisamiddleeast.comvisasoutheasteurope.comfinlitsummit.orgmyvisaluxuryhotels.comvisainfinite.cavisainfiniteluxuryhotels.ca!visaluxuryhotelcollection.com$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisaluxuryhotels.comvisaluxuryhotels.com.arvisasignaturehotels.com($connaissancesfinancierespratiques.ca dnsvisa.comeubluecardvisa.comfinancialsoccer.ca"financialsoccer.com.cn +cnlightbridge.commiamifintechfestival.commhshosting.compracticalbusinessskills.compracticalmoneyskills.ca#practicalmoneyskills.cn +cn'practicalmoneyskills.com.cn +cnpracticalmoneyskills.jpsoccerfinancier.catorcidadeouro.com vaultify.com vaultify.info vaultify.net visa-atm.com visa-news.jp visabank.orgvisabusinessinsights.comvisacarddesignlab.com visacards.comvisacheckout.netvisacheckout.orgvisaconciergelac.comvisadigital.comvisadigitalconcierge.com visadns.comvisadpsonline.usvisaeverywhereshop.comvisafintechfasttrack.comvisafulfillment.comvisagiftcard.usvisaglobalfinance.comvisaicsdirect.comvisainfinite.cavisainfinite.cn +cn visanet.net +visapay.cn +cnvisapcsdirect.comvisaplatinum.cn +cnvisaplatinum.com.cn +cn visaplus.comvisasavingsedge.cavisasignature.co.kr visb.org +, +GANJI  ganji.comganjistatic1.com +ó +SQUAREUP cash.appcashbycashapp.com gosq.co gosq.comissquaredown.comissquareup.com mkt.comsellercommunity.comsquarecapital.com squarecdn.comsquarecloudservices.com squareup.com +æ +ADOBE typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com +adobedc.cn +cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com +demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com +omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com +fotolia.cc fotolia.com +fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net +marketo.tvmarketodesigner.commarketolive.com +mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.new +$ +CAS +csdl.ac.cn  las.ac.cn +Ì +CATEGORY-SECURITIES-CN +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn + +HINET  hinet.net +i +RAZER  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com +» +PCCW 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hk +±˜ +CATEGORY-ENTERTAINMENT abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net bandcamp.com +bcbits.com blizzard.cn +cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +cn +battle.netbattlenet.com.cn +cn bnet.163.com +cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com +cn!diablo3.nosdn.127.net +cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net +cnheroesofthestorm.com%hearthstone.nosdn.127.net +cn"heroes.nos.netease.com +cnplayoverwatch.com#overwatch.nosdn.127.net +cn starcraft.comstarcraft2.comsc2.nosdn.127.net +cnplaywarcraft3.comworldofwarcraft.com wowchina.com +cnwow.nosdn.127.net +cnblizzcon-a.akamaihd.netblz.nosdn.127.net +cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net +cn dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com lpl.com.cn cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.com -4 -ZB -zb.app -zb.com zb.io zb.live -0 -SOHU sohu.com -sohucs.com -itc.cn -ô -VERIZON -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com -oath.cloud oath.com ouroath.comstatic-verizon.com -uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com -xo.com - -WEBFLOW webflow.com - -ALI213 -ali213.net -. -ANDROID android.comandroidify.com -Q - SOURCEFORGEsourceforge.comsourceforge.net -sf.net fsdn.com -. -U17 u17.com u17i.com u17t.com -c -YOUKU -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -. - POCKETCASTS -pca.stpocketcasts.com -M - -STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com - - 4PARADIGM 4paradigm.com -ô’ -BEATS100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com -aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com -airmay.com -ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com -beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn -cn  beats1.tv beats1.com.cn -cn beats123.com beats2.com.cn -cn beats4.cn +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com cn -beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com -beatsep.cn -cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com -biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net -bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com -cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com -dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com -lyzsxx.com mairbeats.com -makeeu.commallheadphone.commbeats-tech.commbheadphone.com -micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com -ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com -scnshop.cc -shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com -theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net -unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.net -´ - CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn -e -METART -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net - -SVP svp-team.com -© - CATEGORY-CASbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.comcybertrust.co.jpcybertrust.ne.jp digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com -cnocsp.globalsign.com -cn ocsp2.globalsign.com -cn identrust.comidentrust.co.uk identrust.net  lencr.orgletsencrypt.org secom.co.jpsecomtrust.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com -telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com - -ELECTRONelectronjs.org -ñ - -SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com -- -BITFLYER bitflyer.com bitflyer.jp -% -CDN77  cdn77.com  cdn77.org - -IINA iina.io -* -GITBOOK gitbook.com -gitbook.io -" -NIST nist.gov time.gov -’ -RUANMEI 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com - -DMZJ dmzj.com -@ - GLOBALVOICESglobalvoices.orgglobalvoicesonline.org -Þ -VERCEL -now.shvercel-dns.comvercel-status.com -vercel.app -vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com -× -OPPO coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com -– - SOUNDOFHOPE bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com - -SAFECHAT safechat.com -˜ -CCTV cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn -Q - CHINANEWS chinanews.comchinanews.com.cn -cns.com.cn ecns.cn -z -CMB cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.com -4 -CSIS csis.orgcsis-prod.s3.amazonaws.com -d -REDDIT -reddit.comredditstatic.comredditmail.comredditmedia.com redd.it -+ -VAPTCHA vaptcha.com vaptcha.net -À - -DUCKDUCKGOcispaletter.comcispaletter.orgcometotheduckside.com -ddg.co -ddg.gg -ddh.gg -dgg.gg dontbubble.us donttrack.us duck.co duck.comduckduckco.com duckduckco.de duckduckgo.ca duckduckgo.coduckduckgo.co.ukduckduckgo.comduckduckgo.com.mxduckduckgo.com.tw duckduckgo.de duckduckgo.dk duckduckgo.in duckduckgo.jp duckduckgo.ke duckduckgo.mx duckduckgo.nlduckduckgo.org duckduckgo.pl duckduckgo.sg duckduckgo.ukduckduckhack.com -duckgo.com ducksear.ch duckside.com  dukgo.comenteentegeh.defixtracking.com goduckgo.com hacksear.chjustduckit.comprivacysimplified.comprivatebrowsingmyths.comspreadprivacy.com -k -IKEAikea.cn -cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.com -) - LEANPLUM-ADS leanplum.com -ads -Æ -SOFTBANK softbank sb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.net softbank.jp softbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com -þ -JIGUANG -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn - - MANMANBUY manmanbuy.com -2 -MORISAWAmorisawa.co.jptypesquare.com -( -LTN -ltn.com.tw yes123.com.tw -ì -NETEASE 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.comanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads -, -SECOM secom.co.jpsecomtrust.net -* -WIWIDE wamawama.com -wiwide.com -g - READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org - -TIDELIFT tidelift.com -k -SLING dishworld.comslinginternational.com  sling.commovenetworks.com -movetv.com - -NODEJS -nodejs.org -‰ - -APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com -B -DISQUS -disqus.com disquscdn.comdisqusservice.com -‘ -KUAISHOU gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads -» - MCDONALDSmcd  mcdonalds4008-517-517.cn -cnaboutmcdonalds.comhappymeal.co.nzhappymeal.com.au mcd.commcdelivery.co.idmcdelivery.co.krmcdelivery.com.aumcdelivery.com.mymcdelivery.com.sgmcdelivery.com.twmcdindonesia.com mcdonalds.camcdonalds.co.uk mcdonalds.commcdonalds.com.hk mcdonalds.hk mcdonalds.it mcdonalds.no mcdonalds.semcdonaldsarabia.commcdonaldsparties.co.nzmcdonaldsparties.com.au!xn--qhrx81fxh2a.xn--55qx5d.hk -& -HUYA huya.com msstatic.com - -OK ok.ru -* -BOXUN  boxun.combowenpress.com -] -BUYPASSbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -) -DRIBBBLE drbl.in dribbble.com - -OSDN osdn.net - -PATREON patreon.com -Œ -AMAZON amazon-adsystem.com -adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws -amazonimdb -kindle xn--cckwcxetdxn--jlq480n2rg yamaxun -zappos a2z.comaboutamazon.cn -cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn -cnalexafund.com.cn -cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn -cn amazon.co.jp amazon.co.uk -amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl -amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn -cn!amazonbusiness.com.cn -cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn -cnamazonchoice.com.cn -cnamazonchoices.cn -cn amazonchoices.com.cn -cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn -cn amazoninspire.com.cn -cnamazonlaunchpad.cn -cnamazonlaunchpad.com"amazonlaunchpad.com.cn -cn amazonlending.com.cn -cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn -cnamazonnow.com.cn -cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn -cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn -cnprimeday.com.cn -cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de -yamaxun.cn -cn yamaxun.comz.cn -cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn -cnamazonworkdocs.com!amazonworkdocs.com.cn -cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn -cn kindle.co.jp kindle.co.uk -kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn -cnkindleoasis.comkindleoasis.com.cn -cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn -cn#amazonprimevideo.com.cn -cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com -cn-!images-cn-8.ssl-images-amazon.com -cn -ç - FACEBOOK-DEVaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com -a -DYNA dynacw.co.jp -dynacw.com dynacw.com.cn dynacw.com.hk dynacw.com.tw - - -FONTSINUSEfontsinuse.com -. -OP op.ggopgg-static.akamaized.net -©$ -INTEL -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn -cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn -cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt -altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com -intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn -cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com -niosii.com -niosii.netomekinteractive.com -omnitek.tv openamt.comopendroneid.orgoptanedifference.com -pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com -siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net -vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn -xscale.combarefootnetworks.com - -J-TEST -j-test.com -C -ADDTHIS addthis.comaddthiscdn.comaddthisedge.com -+ -FORBES -forbes.com forbesimg.com -* -JAVBUS -javbus.com javbus22.com -" -KODI kodi.tv  kodi.wiki - -PINGPE ping.pe -¡ -SHOPIFY myshopify.com shop.app shopify.com shopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com - - -KINDLE4RSSkindle4rss.com -) - ADCOLONY-ADS adcolony.com -ads - -FARFETCHfarfetch-apps.comfarfetch-contents.com farfetch.cn -cn farfetch.comfarfetch.com.cn -cn farfetch.netfarfetch.net.cn -cn  fflnk.net - -GEEKPARK geekpark.net - -GITV gitv.cn gitv.tv - - LARACASTS laracasts.com -a -LE -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com -ß -OCULUS binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com -T - DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best -à -DUREXdewitwithdurex.com dotherex.com durex-shop.chdurex-shopline.comdurex-slovenia.si durex.at durex.be durex.cl durex.co.id durex.co.il durex.co.nz durex.co.th durex.co.uk durex.co.za  durex.com durex.com.au durex.com.bd durex.com.cn -cn durex.com.co durex.com.hr durex.com.my durex.com.ng durex.com.pe durex.com.ph durex.com.pk durex.com.sg durex.com.tr durex.cz durex.de durex.dk durex.ee durex.es durex.fi durex.fr durex.hu durex.ie durex.it durex.jp durex.lv durex.mx durex.nl durex.no durex.pl durex.pt durex.ro durex.ru durex.se durex.us durexcam.comdurexcanada.comdurexchina.comdurexchina.com.cn -cndurexindia.comdurexloveclub.comdurexukraine.com durexusa.comlovesexdurex.cn -cnlovesexdurex.complaybydurex.com shopdurex.com trydurex.net trydurex.tv -% -FONTS  fonts.com  fonts.net - -SPACEX -spacex.com -3 - -STREAMABLE embed-cdn.comstreamable.com -¬ -VIMEO +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv fanatical.comhumblebundle.com dazn-api.com dazn.com +dazndn.com +indazn.com indaznlab.comdeviantart.comdeviantart.net da-files.comabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com +babble.com babyzone.com +dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za +disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com +dssott.comgo-disneyworldgo.com +go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com +hbonow.com  maxgo.com +112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com +huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com +hulugo.com +huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com +huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com +hulutv.com huluusa.comjoinmaidez.com mushymush.tv +myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com +kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.netnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net +pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com +movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsoundcloud.com +sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  amemv.com +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net vhx.tv vhxqa1.com vhxqa2.com vhxqa3.com vhxqa4.com -vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com -Y -UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com -ß - CANONICAL launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io -ubuntu.com -ubuntu.netubuntuforums.org canonical.com -ØÆ +vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com abow.jp angelbeats.jp +anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com +z5.app +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com  linetv.tw litv.tv megaphone.fm moov.hk +odysee.com overcast.fm syosetu.com +weverse.io yande.re +/ + STARTPAGE startpage.com ixquick.com + +TABOOLA taboola.com +1 +ZIROOM +ziroom.comziroomapartment.com +H +ACFUN acfun.cn aixifan.com apilog-web.acfun.cn +ads +B +HKEDCITY  edcity.hk hkedcity.nethkreadingcity.net +™ +INSIDERbusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.com +™ +MARVEL +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com + +MIAOPAI miaopai.com +µ +LOGITECH logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net +( +UDEMY  udemy.com udemycdn.com +u + +ATTWATCHTV +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com +‹ +DMM-ADS bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads + +SPACEX +spacex.com +ç +PEARSONactivelearnprimary.co.ukactivelearnprimary.com.auactiveteachonline.comaddison-wesley.ch adobepress.ch +btec.co.uk ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comdombosco.com.br ecpa.frescapestudios.co.uk ilongman.com integral7.com'#internationalconnectionsacademy.com +longman.ch +mut.chmyhelpinglab.commylogiclab.com mypearson.commypearsonenglish.chmypearsonshop.com.mxmypearsonshop.mxmysocialworklab.comnetname.com.brpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch +pearson.ch +pearson.cl pearson.co.in pearson.co.jp pearson.compearson.com.arpearson.com.aupearson.com.cn +cnpearson.com.hkpearson.com.uy +pearson.es +pearson.fr +pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonclinical.co.ukpearsonclinical.com.aupearsonclinical.com.brpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoned.co.nz pearsoned.compearsoneducacion.netpearsoneducationbooks.com pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.compearsoninstitute.ac.zapearsonlongman.chpearsononlineacademy.compearsonperu.pepearsonplaces.com.au%!pearsonschoolsandfecolleges.co.ukpearsonvue.compearsonvue.netpobl-content.com  pvue1.com  pvue2.comquatrum.com.brstark-verlag.chtalentlens.comthemathsfactor.comxn--pearsonenespaol-brb.com +s +EHENTAI e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org +$ + HUANGHUAGANGhuanghuagang.org +; +XUEERSI speiyou.com +xesimg.com xueersi.com +( +LTN +ltn.com.tw yes123.com.tw +ž + ALJAZEERA +ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com +% + FONTEXPLORERfontexplorerx.com +j +IMPERIALCOLLEGE ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com +s +SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +/ +CLEARBITJS-ADSx.clearbitjs.com +ads +ª +OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads +; + SCORELAND scoreland.comcdn77.scoreuniverse.com ++ +TYPEKIT typekit.com typekit.net +* +BETTEREXPLAINEDbetterexplained.com +1 +GODADDY godaddy.comx.co godaddy +, +JAVAjava java.com java.net +Ý +SKYsky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com +m +WPS +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn +ž +CNN cnn.com +cnn.io +cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com +‹ + HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io +; +WJX +sojump.com +wjx.cn wjx.com wjx.top +Ë +HULU +112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com +huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com +hulugo.com +huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com +huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com +hulutv.com huluusa.comjoinmaidez.com mushymush.tv +myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com +* +JIANSHU jianshu.com +jianshu.io + +5CH 2ch.net 5ch.net +ÿÆ APPLEiadsdk.apple.com ads iad.apple.com ads qwapi.com @@ -4372,7 +4220,7 @@ mac.com.au machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn -cn xn--ruq8a011kt6y.xn--hxt814e."amp-api-search-edge.apps.apple.com +cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com cn"amp-api.apps.apple.com cn aod.itunes.apple.com cn#api-edge.apps.apple.com @@ -4465,6 +4313,7 @@ touchid.tv touchid.wangtracking-location.comtruedepth3d.com cn, gsp4-cn.ls.apple.com.edgekey.net cn gsp4-cn.ls.apple.com cn gsp5-cn.ls.apple.com +cn%gsp85-cn-ssl.ls.apple.com cn&gspe19-cn-ssl.ls.apple.com cn-!gspe19-cn.ls-apple.com.akadns.net cn"gspe19-cn.ls.apple.com @@ -4535,112 +4384,64 @@ touchid.tv touchid.wangtracking-location.comtruedepth3d.com cn<0www.apple.com.edgekey.net.globalredir.akadns.net cn%www.apple.com.edgekey.net cn www.apple.com -cnapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net -¶ - APPLE-UPDATEappldnld.apple.com gg.apple.comgnf-mdn.apple.comgnf-mr.apple.com gs.apple.com ig.apple.commesu.apple.comns.itunes.apple.comoscdn.apple.comosrecovery.apple.com skl.apple.comswcdn.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.com xp.apple.com -. -FLUTTER flutter.devflutterapp.com -) -KEEP gotokeep.com keepcdn.com - - YUNFANJIASU yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -z -MATRIXarewereadyyet.com -element.io -matrix.org  matrix.to -modular.im riot.im  vector.im -- -SURFLITE surflite.co surflite.net -! -WANFANGwanfangdata.com.cn -3 -ELEME -ele.me elemecdn.com eleme.cn -J -HUPUhoopchina.com.cn hupu.com hupucdn.com  shihuo.cn - -REMIREPO remirepo.net -æ - SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch -4 -THEBORINGCOMPANYboringcompany.com x.com -~ -GITLAB -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com -? -MAFENGWO mafengwo.cn mafengwo.com mafengwo.net -p -ONEPLUS oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com -Ë - ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com -W -FLICKR -flickr flic.kr -flickr.com -flickr.netstaticflickr.com - -GAB gab.com -Ð -NEWSCORPbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com -nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au -news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au -nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.uk -j -BAHAMUT gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net - +cn +F -CODECADEMYcodecademy.com -† -NICONICOnico -nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp - -PASTEBIN pastebin.com -­ +DEVIANTARTdeviantart.comdeviantart.net da-files.com +¹ +IBMibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com +5 +YOUJIZZ youjizz.comyjcontentdelivery.com +% -BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn -x -FASTLY -fastly.com -fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com -zencdn.net -$ -GFW  gfw.press -gfw.report +CHINAPOWERchinapower.csis.org +* +DANGDANG dangdang.com ddimg.cn † GOLANG go-lang.com go-lang.net go-lang.org go.dev  godoc.org golang.com golang.net golang.org -E -INFOWARS banned.video infowars.cominfowarsmedia.com -í - NBCUNIVERSALdreamworks.com cnbc.com -cnbcfm.com  msnbc.com -nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com -nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com -S - UNITY-ADS!unityads.unity3d.com -ads#unityads.unitychina.cn +† +NICONICOnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp +N + CLOUDCONE clco.cc +cloudc.one cloudcone.com cloudcone.net +0 + MIXPANEL-ADS decide.mixpanel.com ads - - INOREADER inoreader.com -U -SB -dns.sb ip.sb loli.net sb.sb sm.msu.nu -www.sb -÷˜ +p +ONEPLUS oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com +Ž +GUCCI guccichimeforchange.orggucci.cn +cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com +â +NINTENDO100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com +Þ +VERCEL +now.shvercel-dns.comvercel-status.com +vercel.app +vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com +ï™ CATEGORY-ADS-ALL7box.vip adsad-delivery.net ads adinplay.com @@ -5247,54 +5048,1039 @@ w.cnzz.com ads zynga.com ads#zyngaplayersupport.com ads 51y5.net a.adtng.com -aaxads.com +aaxads.comaddthisedge.com +adtrue.com ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com -exosrv.comimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.topkepler-37b.com -lqc006.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn -L -IMDBboxofficemojo.com imdb.com imdb.tomedia-imdb.com - -QUALCOMMairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org +exosrv.com +go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com +lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn +( +DEBIAN +debian.org +dotdeb.org +œ +TMTPOST tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com +í + WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org +w.wiki toolforge.orgwikimediacloud.org wmcloud.org wmflabs.org + +XDTY xdty.org + + NEURALINK neuralink.com +* +BOXUN  boxun.combowenpress.com +žŸ +CATEGORY-COMPANIESacer-group.com acer.com acer.com.cn +cn typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com +adobedc.cn +cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com +demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com +omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com +fotolia.cc fotolia.com +fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net +marketo.tvmarketodesigner.commarketolive.com +mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.newalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon-adsystem.com +adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws +amazonimdb +kindle xn--cckwcxetdxn--jlq480n2rg yamaxun +zappos a2z.comaboutamazon.cn +cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn +cnalexafund.com.cn +cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn +cn amazon.co.jp amazon.co.uk +amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl +amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn +cn!amazonbusiness.com.cn +cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn +cnamazonchoice.com.cn +cnamazonchoices.cn +cn amazonchoices.com.cn +cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn +cn amazoninspire.com.cn +cnamazonlaunchpad.cn +cnamazonlaunchpad.com"amazonlaunchpad.com.cn +cn amazonlending.com.cn +cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn +cnamazonnow.com.cn +cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn +cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn +cnprimeday.com.cn +cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de +yamaxun.cn +cn yamaxun.comz.cn +cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn +cnamazonworkdocs.com!amazonworkdocs.com.cn +cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn +cn kindle.co.jp kindle.co.uk +kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn +cnkindleoasis.comkindleoasis.com.cn +cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn +cn#amazonprimevideo.com.cn +cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com +cn-!images-cn-8.ssl-images-amazon.com +cn amd.comamdfanstore.com +radeon.comiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com +aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com +airmay.com +ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com +beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn +cn  beats1.tv beats1.com.cn +cn beats123.com beats2.com.cn +cn beats4.cn +cn +beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com +beatsep.cn +cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com +biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net +bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com +cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com +dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com +lyzsxx.com mairbeats.com +makeeu.commallheadphone.commbeats-tech.commbheadphone.com +micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com +ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com +scnshop.cc +shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com +theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net +unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.netapple-icloud.cn +cnappleicloud.cn +cnapplemx-icloud.comicloud-apple.cn +cnicloud-content.comicloud-isupport.com  icloud.ch +icloud.com icloud.com.cn +cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn +cn  icloud.om +icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn +cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com +icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com +me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn +cn itun.es itunbes.com ituneas.comitunes-apple.cn +cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th +itunes.com  itunes.hk  itunes.mx +itunes.org +itunes.rio  itunes.usitunes12days.comitunesapple.cn +cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn +cnitunesradio.comitunesradio.com.cn +cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.netappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cn apple apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cmapple.cn +cn apple.co apple.co.cr apple.co.hu apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk  apple.com apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn +cn apple.com.co apple.com.de apple.com.do apple.com.gr apple.com.gy apple.com.jm apple.com.lk apple.com.mg apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pl apple.com.pr apple.com.pt apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.eu apple.fi apple.fr apple.hamburg apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.jp apple.kr apple.lk apple.lt apple.lv apple.me apple.my  apple.net apple.net.gr apple.nl apple.no apple.pk apple.pl apple.pt apple.ro apple.rs apple.ru apple.sa apple.se apple.sg apple.si apple.sk apple.so apple.tt apple.tw apple.uk apple.usapple.xn--czr694bapple.xn--fiqs8s  apple.xyz aplestore.comapple-store.cn +cnapple-store.netapple-store.wang applestor.com applestore.bg applestore.cc applestore.ch applestore.cm applestore.cn +cnapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.comapplestore.com.auapplestore.com.bnapplestore.com.cn +cnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.tw applestore.de applestore.hk applestore.kr applestore.meapplestore.netapplestore.net.gr applestore.ph applestore.qa applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comapple-appstore.cn +cnappleappstore.cn +cnappleappstore.netappleappstore.tv  appsto.reappstore.co.id appstore.hk appstore.my appstore.phappstoreapple.cn +cn asto.retvappstore.netapple-imac.com appleimac.comimac-apple.comimac-applecomputer.com imac.co +imac.co.nz imac.com imac.eu imac.gr imac.one imac.rs imacapple.comimacapplecomputer.comebookforipad.com euroipad.comfindmyipad.com indiaipad.com +ipad.co.kr ipad.de  ipad.host  ipad.wang  ipad3.com +ipadair.cl +ipadair.cmipadair.com.bripadair.com.es +ipadair.fr +ipadair.hk +ipadair.ie +ipadair.jp +ipadair.twipadaustralia.com ipadmini.cmipadmini.com.lk ipadmini.lk ipadpro.buzz +ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com dl-iphone.comfundaiphone5s.com hebiphone.com hf-iphone.com +iphine.comiphone-8.com.cn +cn iphone-cd.com iphone-cn.com iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.com iphone-x.tv iphone-yh.com iphone-zh.com  iphone.cm +iphone.com iphone.com.au iphone.com.gr  iphone.es iphone.host iphone.net.gr  iphone.pt  iphone.rs  iphone.ru iphone.wang iphone4.comiphone4.com.br iphone4s.com iphone5.comiphone5casescovers.comiphone5s5case.comiphoneacessorios.com.briphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comiphoneclaro.com.briphonecollcase.com iphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang iphonerip.net iphonese.tviphoneunlockimei.com iphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.com ipod.ca ipod.ch ipod.cm ipod.co +ipod.co.nz +ipod.co.uk +ipod.co.za ipod.com ipod.com.au ipod.com.cn +cn ipod.com.fr ipod.com.hk ipod.com.sg ipod.com.tw ipod.de ipod.es ipod.eu ipod.fr ipod.gr ipod.hk ipod.is ipod.net ipod.no ipod.pk ipod.rs ipod.ru ipod.tw ipodcentre.nlipodcleaner.comipoditouch.com ipodnano.com ipodnano.netipodprices.com +ipodrip.caipodrocks.com.au  ipods.comipodshop.com.au ipodtouch.co ipodtouch.com +myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wang mac.wang +macbook.co +macbook.hk +macbook.tw macbook.wang macbookair.cn +cnmacbookair.co.krmacbookair.co.ukmacbookair.commacbookair.com.aumacbookair.com.cn +cnmacbookair.com.es macbookair.es macbookair.hk macbookair.kr macbookair.jpmacbookair.net macbookpro.comacbookpro.commacbookpro.com.aumacbookpro.net macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapple-watch.com.ru applewatch.hk applewatch.tv applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin applemusic.coapplemusic.comapplemusic.com.auapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.com musickit.netwwwapplemusic.comapple.comscoreresearch.com +apple.newsappleenews.comapplenews.berlinapplenews.hamburg applenews.tvapplenewsformat.com apple-pay.com apple-pay.rsapple-pay.wangapplepay.berlinapplepay.co.rsapplepay.com.twapplepay.hamburg applepay.hk applepay.info applepay.jp applepay.rs applepay.tvapplepaycash.cn +cnapplepaycash.com.cn +cnapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.cn +cnapplepaysupplies.com#applepaysupplies.com.cn +cnapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv +i-book.com +i-book.net ibook.co.nz  ibook.com ibook.eu  ibook.netibookpartner.comibooksauthor.com  iphoto.eu  iphoto.no  iphoto.se iphoto.wang  imovie.euimoviegallery.comimoviestage.comapplecare.berlin applecare.cc applecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com appleid-uk.usappleid.berlin appleid.comappleid.hamburg +appleid.hk ids-apple.com myappleid.com appletv.com +appletv.fr appletv.wang appletv4.cn +cnappletv4.com.cn +cnappletvapp.appleappleone.audio appleone.blog appleone.chatappleone.cloud appleone.clubappleone.community appleone.filmappleone.guide appleone.hostappleone.space appleone.techappleone.website +shazam.com1to1computing.com.au1to1conference.com.au 5lml.com +a0pple.net aapl.twairport.brussels airport.com +airport.euairsupportapp.com airtunes.com airtunes.info airtunes.netalchemysynth.com  ap0le.com aple.com  apole.com +app0le.com +appl-e.com appl.com +appl4e.com  appla.comapple-darwin.comapple-darwin.netapple-darwin.org apple-dns.cn +cn apple-dns.comapple-dns.com.cn +cn apple-dns.netapple-enews.comapple-expo.com apple-expo.eu apple-hk.comapple-ibooks.cn +cn apple-inc.netapple-livephotoskit.com apple-maps.cn +cnapple-online.com apple-usa.netappleafrica.comappleantilles.comappleaustralia.comappleaustralia.com.auappleaustralia.net.au applebk.netapplecarbon.com applecard.tvapplecentar.co.rsapplecentar.rsapplecenter.cn +cnapplecenter.com.cn +cnapplecentre.com.auapplecentre.infoappleclub.com.hk applecom.comapplecomputer-imac.comapplecomputer.cn +cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com applecomputer.com.cn +cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoapplecomputers.co.nzapplecoronavirus.com appledns.cn +cnappledns.com.cn +cn appleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comapplehongkong.com.hkappleinclegal.comappleipodsettlement.comappleiservices.com applelink.comapplemagickeyboard.comapplemalaysia.com.myapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com +appleos.tvapplepencil.netapplepodcasts.comapplepremiumreseller.com.au applepremiumresellers.com.auapplereach.comapplereach.net apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoappleshop.co.uk applesiri.cn +cnapplesurveys.comappletaiwan.com appletips.net appleweb.net applexpo.net applezh.com  applf.com +applfe.com +applle.com  applw.comappmediagroup.com +appule.com  appye.com  apyle.com  beddit.tvbraeburncapital.com burstly.netburstlyrewards.com buyaapl.com buyaapl.net buyaple.com camelphat.comcamelspaceeffect.com +carbon.com catalina.hk cdn-apple.com  chomp.com +coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com +dot-mac.de  dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us +earpod.net ecgapp.com.cn +cn +ecgapp.netedu-research.org +emac.co.in emac.in  emagic.de +eworld.com faceid99.com faceid99.netfaceidglobal.com faceshift.cn +cn facetime.netfinalcutpro.comfind-apple.com firewire.cl firewire.eu geoport.com +homepod.cn +cn +hopstop.tv ichat.co.in idvd.eu  ikids.comilecture.co.nz ilife.eu ilife.gr +ilife.wang imessage.tv insidear.cn +cninsidemacintosh.comiosinthecar.comipa-iphone.net  ipple.com ischool.com itools.info  iwork.com iwork.se +iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com livephotos.cn +cnlivephotos.com.cn +cn livephotos.tvlojaiphone.com.br mac-mini.com mac.com +mac.com.au +mac.eu +mac.rs macappsto.re macboxset.com mach-os.com mach-os.net +machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com +newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us +touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn +cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com +cn"amp-api.apps.apple.com +cn aod.itunes.apple.com +cn#api-edge.apps.apple.com +cn(apptrailers.itunes.apple.com +cn bag.itunes.apple.com +cn'bookkeeper.itunes.apple.com +cnbooks.apple.com +cn'client-api.itunes.apple.com +cn cma.itunes.apple.com +cn!communities.apple.com +cn(discussionschinese.apple.com +cnfides-pol.apple.com +cn(gspe11-2-cn-ssl.ls.apple.com +cn&gspe12-cn-ssl.ls.apple.com +cn&gspe85-cn-ssl.ls.apple.com +cn!init.itunes.apple.com +cn$iosapps.itunes.apple.com +cn"js-cdn.music.apple.com +cn km.support.apple.com +cnmaps.apple.com +cn$osxapps.itunes.apple.com +cnpd.itunes.apple.com +cn!play.itunes.apple.com +cn$se-edge.itunes.apple.com +cn se2.itunes.apple.com +cn#search.itunes.apple.com +cn1%sf-api-token-service.itunes.apple.com +cnsp.itunes.apple.com +cn&stocks-sparkline.apple.com +cn+streamingaudio.itunes.apple.com +cnsu.itunes.apple.com +cn!sync.itunes.apple.com +cn upp.itunes.apple.com +cn"weather-data.apple.com +cn#^a[1-5]\.mzstatic\.com$ +cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$ +cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$ +cn!^cl[1-5]\.apple\.com$ +cn+^is[1-5](-ssl)?\.mzstatic\.com$ +cn$^s[1-5]?\.mzstatic\.com$ +cna1.mzstatic.com +cna2.mzstatic.com +cna3.mzstatic.com +cna4.mzstatic.com +cna5.mzstatic.com +cn, adcdownload.apple.com.akadns.net +cn!adcdownload.apple.com +cnappldnld.apple.com +cn"appldnld.g.aaplimg.com +cnapps.apple.com +cnapps.mzstatic.com +cn$cdn-cn1.apple-mapkit.com +cn$cdn-cn2.apple-mapkit.com +cn$cdn-cn3.apple-mapkit.com +cn$cdn-cn4.apple-mapkit.com +cn cdn.apple-mapkit.com +cn!cdn1.apple-mapkit.com +cn!cdn2.apple-mapkit.com +cn!cdn3.apple-mapkit.com +cn!cdn4.apple-mapkit.com +cn!cds-cdn.v.aaplimg.com +cn$cds.apple.com.akadns.net +cn cds.apple.com +cn/#cl1-cdn.origin-apple.com.akadns.net +cn cl1.apple.com +cncl2-cn.apple.com +cn<0cl2.apple.com.edgekey.net.globalredir.akadns.net +cn cl2.apple.com +cn/#cl3-cdn.origin-apple.com.akadns.net +cn cl3.apple.com +cn/#cl4-cdn.origin-apple.com.akadns.net +cncl4-cn.apple.com +cn cl4.apple.com +cn/#cl5-cdn.origin-apple.com.akadns.net +cn cl5.apple.com +cn+clientflow.apple.com.akadns.net +cn clientflow.apple.com +cn."configuration.apple.com.akadns.net +cn#configuration.apple.com +cncstat.apple.com +cn."dd-cdn.origin-apple.com.akadns.net +cn(download.developer.apple.com +cngs-loc-cn.apple.com +cngs-loc.apple.com +cn%gsp10-ssl-cn.ls.apple.com +cn!gsp11-cn.ls.apple.com +cn!gsp12-cn.ls.apple.com +cn!gsp13-cn.ls.apple.com +cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net +cn, gsp4-cn.ls.apple.com.edgekey.net +cn gsp4-cn.ls.apple.com +cn gsp5-cn.ls.apple.com +cn%gsp85-cn-ssl.ls.apple.com +cn&gspe19-cn-ssl.ls.apple.com +cn-!gspe19-cn.ls-apple.com.akadns.net +cn"gspe19-cn.ls.apple.com +cn#gspe21-ssl.ls.apple.com +cngspe21.ls.apple.com +cn#gspe35-ssl.ls.apple.com +cniadsdk.apple.com +cn, icloud-cdn.icloud.com.akadns.net +cn icloud.cdn-apple.com +cn'images.apple.com.akadns.net +cn?3images.apple.com.edgekey.net.globalredir.akadns.net +cnimages.apple.com +cn3'init-p01md-lb.push-apple.com.akadns.net +cn init-p01md.apple.com +cn3'init-p01st-lb.push-apple.com.akadns.net +cn%init-p01st.push.apple.com +cn3'init-s01st-lb.push-apple.com.akadns.net +cn%init-s01st.push.apple.com +cn(iosapps.itunes.g.aaplimg.com +cniphone-ld.apple.com +cn is1-ssl.mzstatic.com +cnis1.mzstatic.com +cn is2-ssl.mzstatic.com +cnis2.mzstatic.com +cn is3-ssl.mzstatic.com +cnis3.mzstatic.com +cn is4-ssl.mzstatic.com +cnis4.mzstatic.com +cn is5-ssl.mzstatic.com +cnis5.mzstatic.com +cn'itunes-apple.com.akadns.net +cnitunes.apple.com +cn#itunesconnect.apple.com +cn)mesu-cdn.apple.com.akadns.net +cn+mesu-china.apple.com.akadns.net +cnmesu.apple.com +cnmusic.apple.com +cn(ocsp-lb.apple.com.akadns.net +cnocsp.apple.com +cnoscdn.apple.com +cn-!oscdn.origin-apple.com.akadns.net +cnpancake.apple.com +cn, pancake.cdn-apple.com.akadns.net +cnphobos.apple.com +cn1%prod-support.apple-support.akadns.net +cn#reserve-prime.apple.com +cns.mzstatic.com +cn4(stocks-sparkline-lb.apple.com.akadns.net +cn>2store.apple.com.edgekey.net.globalredir.akadns.net +cn'store.apple.com.edgekey.net +cnstore.apple.com +cn2&store.storeimages.apple.com.akadns.net +cn+store.storeimages.cdn-apple.com +cn2&support-china.apple-support.akadns.net +cnsupport.apple.com +cn."swcatalog-cdn.apple.com.akadns.net +cnswcatalog.apple.com +cnswcdn.apple.com +cnswcdn.g.aaplimg.com +cn'swdist.apple.com.akadns.net +cnswdist.apple.com +cn+swscan-cdn.apple.com.akadns.net +cnswscan.apple.com +cn1%updates-http.cdn-apple.com.akadns.net +cn&updates-http.cdn-apple.com +cnvalid.apple.com +cn-!valid.origin-apple.com.akadns.net +cn<0www.apple.com.edgekey.net.globalredir.akadns.net +cn%www.apple.com.edgekey.net +cn www.apple.com +cn asus.com asus.com.cn +cn atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.comaccbusiness.com +atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn +cn att.com att.jobs att.net +att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com +attcorp.cn +cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com +attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com +attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net +budatt.com +cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com +uverse.comwebhosting.com att-idns.net +attdns.com +attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com +dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com +diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.combandwagonhost.com bwh1.net bwh8.net  bwh88.net canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn +cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn +cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn +cn  cisco.com cisco.com.cn +cn +cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co +devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com +mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com +mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn +cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com +versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org +mearki.com meraki-go.com  meraki.hk merakigo.com +tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net clco.cc +cloudc.one cloudcone.com cloudcone.net +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.comaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com +nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org +atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com +facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com +faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com +fb.careers +fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com +fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com +fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net +freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com +groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com +redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net  aorus.com aoruszone.cn +cn gigabyte.cn +cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net godaddy.comx.co godaddy android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org +v8.dev v8project.org youtubeggpht.cn +cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com +youtube.ae +youtube.al +youtube.am +youtube.at +youtube.az +youtube.ba +youtube.be +youtube.bg +youtube.bh +youtube.bo +youtube.by +youtube.ca youtube.cat +youtube.ch +youtube.cl +youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve +youtube.cr +youtube.cz +youtube.de +youtube.dk +youtube.ee +youtube.es +youtube.fi +youtube.fr +youtube.ge +youtube.gr +youtube.gt +youtube.hk +youtube.hr +youtube.hu +youtube.ie +youtube.in +youtube.iq +youtube.is +youtube.it +youtube.jo +youtube.jp +youtube.kr +youtube.kz +youtube.la +youtube.lk +youtube.lt +youtube.lu +youtube.lv +youtube.ly +youtube.ma +youtube.md +youtube.me +youtube.mk +youtube.mn +youtube.mx +youtube.my +youtube.ng +youtube.ni +youtube.nl +youtube.no +youtube.pa +youtube.pe +youtube.ph +youtube.pk +youtube.pl +youtube.pr +youtube.pt +youtube.qa +youtube.ro +youtube.rs +youtube.ru +youtube.sa +youtube.se +youtube.sg +youtube.si +youtube.sk +youtube.sn youtube.soy +youtube.sv +youtube.tn +youtube.tv +youtube.ua +youtube.ug +youtube.uy +youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand +chromedclkgbizgle gmailgoogoog +googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca +google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn +cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw +google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com +466453.com abc.xyz adgoogle.net +admeld.comangulardart.org +api.ai +apigee.com appbridge.ca appbridge.io appbridge.it appspot.com +apture.com area120.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +brotli.org bumpshare.com +bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org +chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com +foofle.com froogle.com fuchsia.dev  g-tun.comg.cn +cng.co g.dev +g.page gateway.dev +gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn +cn globaledu.org  gmail.com gmodules.com  gogle.com +gogole.comgonglchuangl.net +goo.gl +googel.com +googil.com  googl.comgoogle-syndication.com google.berlin +google.dev +google.net +google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn +cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn +cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com +googlr.com +goolge.com gooogle.com gridaware.app gsrc.io +gstatic.cn +cn gstatic.comgstaticcnapps.cn +cn +gsuite.com +gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org +picasa.com picasaweb.com picasaweb.net picasaweb.org +picnik.com pittpatt.com +pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com +revolv.comridepenguin.com run.appsavethedate.foo +saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com +verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org +wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com +webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company +x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com +cnwww.recaptcha.net +cn265.com +cn2mdn.net +cn adservice.google.com +cnapp-measurement.com +cn beacons.gcp.gvt2.com +cnbeacons.gvt2.com +cnbeacons3.gvt2.com +cn c.admob.com +cn(c.android.clients.google.com +cn!cache.pack.google.com +cncheckin.gstatic.com +cn%clickserve.dartsearch.net +cn)clientservices.googleapis.com +cn)connectivitycheck.gstatic.com +cncorp.google.com +cn crl.pki.goog +cncsi.gstatic.com +cn dl.google.com +cndl.l.google.com +cndoubleclick.net +cn-!firebase-settings.crashlytics.com +cn fonts.googleapis.com +cnfonts.gstatic.com +cn google-analytics.com +cn googleadservices.com +cngoogleanalytics.com +cn!googlesyndication.com +cn googletagmanager.com +cn!googletagservices.com +cngtm.oasisfeng.com +cn!imasdk.googleapis.com +cn ocsp.pki.goog +cn, pagead-googlehosted.l.google.com +cn!pki-goog.l.google.com +cn recaptcha.net +cnredirector.gvt1.com +cn)safebrowsing-cache.google.com +cn'safebrowsing.googleapis.com +cn$settings.crashlytics.com +cn-!ssl-google-analytics.l.google.com +cnssl.gstatic.com +cn%toolbarqueries.google.com +cntools.google.com +cntools.l.google.com +cn$translate.googleapis.com +cn!update.googleapis.com +cn-!www-googletagmanager.l.google.com +cnwww.gstatic.com +cn  hinet.net csifund.org hkbn.com.hk hkbn.net +hkbnes.net jos.comspeedtest.com.hk +123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com +compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info +hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com +hp.com +hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net +hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com +hpfaqs.comhpfeedback.com +hpgift.com +hpgpas.comhpgraphicspartners.com  hpiie.org +hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com +hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com +hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com +hpstore.cn +cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com +hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.comibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn +cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn +cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt +altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com +intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn +cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com +niosii.com +niosii.netomekinteractive.com +omnitek.tv openamt.comopendroneid.orgoptanedifference.com +pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com +siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net +vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn +xscale.combarefootnetworks.com +lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com +lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net linkedin.com  licdn.com logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net imgsmail.ru mail.ru mycdn.me azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv  microsoft azure hotmail +office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com +m12.vc +aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com +binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com +ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com +gears5.com gearspop.comgearstactics.com +gfx.ms +gigjam.com hololens.com +hotmail.co hotmail.com +hotmail.eu hotmail.net hotmail.orghummingbird.ms +ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl +ingads.comintunewiki.comiotinactionevents.com +kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn +cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn +cn +msauth.netmschallenge2018.com +msecnd.net +msedge.net  msft.info msft.net msftauth.cn +cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com +msocdn.com +msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com +office.com +office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net +pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com +pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net +sfx.ms sharepoint.cn +cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com +techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com +userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net +wbd.ms what-fan.netwindows-int.net windows.com windows.net +windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com +winhec.com +winhec.net +yammer.com(dl.delivery.mp.microsoft.com +cn&download.windowsupdate.com +cn'bg.v4.a.dl.ws.microsoft.com +cn(bg4.v4.a.dl.ws.microsoft.com +cn2&cdn.marketplaceimages.windowsphone.com +cn cn.windowssearch.com +cn#ctldl.windowsupdate.com +cn#developer.microsoft.com +cndocs.microsoft.com +cn"download.microsoft.com +cn/#download.visualstudio.microsoft.com +cnfs.microsoft.com +cn(msgr.dlservice.microsoft.com +cn, msgruser.dlservice.microsoft.com +cn#officecdn.microsoft.com +cn&qh.dlservice.microsoft.com +cnsdx.microsoft.com +cn/#silverlight.dlservice.microsoft.com +cn, slupdate.dlservice.microsoft.com +cn, storeedgefd.dsx.mp.microsoft.com +cn&wl.dlservice.microsoft.com +cn&wscont1.apps.microsoft.com +cn&wscont2.apps.microsoft.com +cnwww.microsoft.com +cn&xb.dlservice.microsoft.com +cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com neuralink.com +geforce.cn +cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn +cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn +cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk +nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net  panasonic panasonic.cn +cn panasonic.com panasonic.jp technics.com 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hkairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com uplinq.com wipower.comwirelessreach.com -brewmp.comqualcomm.sc.omtrdc.net -6 -UDN udn.com -udn.com.twudnfunlife.com - -XHAMSTER xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com +brewmp.comqualcomm.sc.omtrdc.net  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com samsung +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn +cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.combarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com +snapkit.co playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net +spacex.comboringcompany.com x.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com +twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.couber-assets.com uber.com ubereats.com +oath.cloud oath.com ouroath.comstatic-verizon.com +uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com +xo.com mvk.com userapi.com  vk-cdn.me +vk-cdn.net vk-portal.net vk.cc +vk.com  vk.design vk.link vk.me vkcache.com vkgo.app +vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netg-technology.com +sandisk.ae +sandisk.it +sandisk.cn +cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw +sandisk.de +sandisk.es +sandisk.fr +sandisk.hk +sandisk.id +sandisk.in +sandisk.nl +sandisk.sg +wd.com wdc.comwesterndigital.com +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.comxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il +yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md +yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net +yandex + +FIGMA  figma.com +" + HUBBLEPHONEhubblephone.com +ÞU + MICROSOFT azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv  microsoft azure hotmail +office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com +m12.vc +aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com +binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com +ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com +gears5.com gearspop.comgearstactics.com +gfx.ms +gigjam.com hololens.com +hotmail.co hotmail.com +hotmail.eu hotmail.net hotmail.orghummingbird.ms +ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl +ingads.comintunewiki.comiotinactionevents.com +kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn +cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn +cn +msauth.netmschallenge2018.com +msecnd.net +msedge.net  msft.info msft.net msftauth.cn +cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com +msocdn.com +msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com +office.com +office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net +pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com +pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net +sfx.ms sharepoint.cn +cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com +techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com +userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net +wbd.ms what-fan.netwindows-int.net windows.com windows.net +windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com +winhec.com +winhec.net +yammer.com(dl.delivery.mp.microsoft.com +cn&download.windowsupdate.com +cn'bg.v4.a.dl.ws.microsoft.com +cn(bg4.v4.a.dl.ws.microsoft.com +cn2&cdn.marketplaceimages.windowsphone.com +cn cn.windowssearch.com +cn#ctldl.windowsupdate.com +cn#developer.microsoft.com +cndocs.microsoft.com +cn"download.microsoft.com +cn/#download.visualstudio.microsoft.com +cnfs.microsoft.com +cn(msgr.dlservice.microsoft.com +cn, msgruser.dlservice.microsoft.com +cn#officecdn.microsoft.com +cn&qh.dlservice.microsoft.com +cnsdx.microsoft.com +cn/#silverlight.dlservice.microsoft.com +cn, slupdate.dlservice.microsoft.com +cn, storeedgefd.dsx.mp.microsoft.com +cn&wl.dlservice.microsoft.com +cn&wscont1.apps.microsoft.com +cn&wscont2.apps.microsoft.com +cnwww.microsoft.com +cn&xb.dlservice.microsoft.com +cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net +× +SOHU-ADSadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads +" + ADBLOCKPLUSadblockplus.org +U +DOWJONESdjreprints.com dowjones.com dowjones.iodowjoneson.com +y +GANNETTgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.com +- +LANTERNgetlantern.org +lantern.io +% +NEOWIN neow.in +neowin.net +, +PAOFUYUN paofu.cloud paofuyun.me +< +SHOWTIMEANYTIMEshowtimeanytime.com showtime.com + +BINANCEbinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com +I +MADSHI +madshi.net  madvr.com  madvr.net madvrlabs.llc +C +MAOCLOUD +maoyun.commaoyuncloud.cnmaoyuncloud.com +Í + TENCENT-ADS ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +Ô +VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com +­ + IQIYI-ADSa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com ads -L -APKPURE apkpure.com cdnpure.com pureapk.com -winudf.com -@ - DIGITALOCEANdigitalocean.comdigitaloceanspaces.com -– - HKETGROUPapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn -cn etnet.com.hketnetchina.com.cn -cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk -¥ -LYSOL lizol.co.in lysol.ca lysol.cllysol.cn -cn lysol.co.cr  lysol.com lysol.com.cn -cn lysol.com.mx  lysol.net -Ð - OPENSTREETMAP openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.org -* -TELEKOM telekom.com -telekom.de -+ -FLATPAK flathub.org flatpak.org -© -GOOGLE-REGISTRYcharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4c -ö -ICBCicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn -' -MOJI moji.com mojichina.com -ä -PRIVATElan localdomain example invalid  localhosttest local  home.arpa ^[^.]+$router.asus.comlocalhost.sec.qq.comlocalhost.ptlogin2.qq.commsftconnecttest.com ‹ STEAMplayartifact.com s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com @@ -5308,187 +6094,325 @@ icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardreso cn&steampowered.com.8686c.com cn%steamstatic.com.8686c.com cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.net -è -ALIYUNalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com -? - BONGACAMS bongacams.com -bcicdn.com bcrncdn.com - - -JINRISHICIjinrishici.com -I -MADSHI -madshi.net  madvr.com  madvr.net madvrlabs.llc -Ÿs -BMWmini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com -mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl -mini.co.cr -mini.co.id -mini.co.il -mini.co.kr -mini.co.me -mini.co.th -mini.co.uk -mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua -mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com -minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com -minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com -trmini.comtroisrivieresmini.comyours-customised.mini.combmwapprovedusedbmw.combaltimorebmw.combayareabmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.com bmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.ca bmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.chbmw-connecteddrive.co.nzbmw-connecteddrive.co.ukbmw-connecteddrive.co.zabmw-connecteddrive.combmw-connecteddrive.com.aubmw-connecteddrive.com.brbmw-connecteddrive.com.cybmw-connecteddrive.com.hrbmw-connecteddrive.com.kwbmw-connecteddrive.com.mtbmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.combmw-driving-center.co.krbmw-drivingexperience.com bmw-dubai.com -bmw-eg.com bmw-fleet.net bmw-ghana.combmw-golfsport.com bmw-group.com bmw-group.netbmw-grouparchiv.debmw-grouparchives.com -bmw-gta.cabmw-i-pure-impulse.com bmw-i.jp bmw-int1.com bmw-iraq.combmw-jordan.combmw-konzernarchiv.de bmw-ksa.combmw-kuwait.com -bmw-lao.labmw-lebanon.combmw-m-safetycar.com  bmw-m.combmw-mdrivetour.com -bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.cobmw-motorrad.co.idbmw-motorrad.co.krbmw-motorrad.co.nzbmw-motorrad.co.thbmw-motorrad.co.ukbmw-motorrad.co.zabmw-motorrad.combmw-motorrad.com.arbmw-motorrad.com.aubmw-motorrad.com.brbmw-motorrad.com.dobmw-motorrad.com.hrbmw-motorrad.com.mxbmw-motorrad.com.mybmw-motorrad.com.pebmw-motorrad.com.pybmw-motorrad.com.trbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.com bmw-oman.com bmw-ottawa.cabmw-pakistan.combmw-plant-munich.combmw-pma.com.sgbmw-powertrain.combmw-product-highlights.com bmw-qatar.combmw-routes.com -bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.ca bmw-voli.me bmw-welt.com bmw-welt.net bmw-welt.tvbmw-werk-berlin.de bmw-world.com bmw-world.net bmw-world.tvbmw-worldfinal.combmw-yachtsport.com -bmw-yeg.ca bmw-yemen.com -bmw.am -bmw.at -bmw.az -bmw.ba -bmw.bb -bmw.be -bmw.bg -bmw.bm -bmw.bs -bmw.by -bmw.ca -bmw.cc -bmw.ch -bmw.cl  bmw.co.ao  bmw.co.cr  bmw.co.id  bmw.co.il  bmw.co.jp  bmw.co.ke  bmw.co.kr  bmw.co.nz  bmw.co.th  bmw.co.uk  bmw.co.za bmw.com -bmw.com.ar -bmw.com.au -bmw.com.bd -bmw.com.bn -bmw.com.bo -bmw.com.br -bmw.com.cn -cn -bmw.com.co -bmw.com.cy -bmw.com.do -bmw.com.ec -bmw.com.ge -bmw.com.gt -bmw.com.kh -bmw.com.ky -bmw.com.mk -bmw.com.mo -bmw.com.mt -bmw.com.mx -bmw.com.my -bmw.com.ni -bmw.com.pa -bmw.com.pe -bmw.com.ph -bmw.com.py -bmw.com.sg -bmw.com.sv -bmw.com.tr -bmw.com.tw -bmw.com.uy -bmw.com.ve -bmw.cw -bmw.cz -bmw.de -bmw.dk -bmw.dz -bmw.ee -bmw.es -bmw.fi -bmw.fr -bmw.gp -bmw.gr -bmw.hn -bmw.hr -bmw.ht -bmw.hu -bmw.ie -bmw.in -bmw.is -bmw.it -bmw.kg -bmw.kz -bmw.lc -bmw.lk -bmw.lt -bmw.lu -bmw.lv -bmw.ly -bmw.ma -bmw.md -bmw.mn -bmw.mq -bmw.mu -bmw.nc -bmw.nl -bmw.no -bmw.pl -bmw.ps -bmw.pt -bmw.re -bmw.ro -bmw.rs -bmw.se -bmw.si -bmw.sk -bmw.sn -bmw.tm -bmw.tt -bmw.ua -bmw.uz -bmw.vn bmwarchiv.at bmwarchiv.debmwartjourney.com bmwasia.combmwauslieferungszentrum.com bmwbikes.com  bmwbkk.de -bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.com bmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.com bmwgroup.at bmwgroup.com bmwgroup.net bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com  bmwhk.com bmwi.ca bmwi.jpbmwiventures.combmwjamaica.com -bmwlat.combmwlifestyle.ca bmwm.combmwmagazine.combmwmagazine.de bmwmass.com bmwmass.net  bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.combmwmotorrad.co.krbmwmotorrad.com.aubmwmotorrad.com.phbmwmotorrad.com.sgbmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com bmwsafari.com -bmwsfl.com -bmwsfl.net -bmwshop.cabmwspecialoffers.ca bmwsports.combmwstartupgarage.com bmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com -bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.com bmwworld.com bmwworld.net bmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com daytonbmw.comdealerspeed.net desertbmw.com dreambmw.ca grupobmw.com guambmw.comhackthedrive.com hawaiibmw.com iaablog.comlasvegasbmw.com m-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.com mybmw.ca  mybmw.comnewhampshirebmw.com  nmbmw.comocbmwdealers.comoffresspecialesbmw.ca park-now.com parkinfo.com -pdxbmw.com -phxbmw.compre-bmwgroup.jobspugetsoundbmw.com rentaride.com rentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.com socalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.com alfera.com.hk alfera.com.my  alfera.in  alfera.myalphera-finance.co.inalphera-finance.com.hkalphera-finance.in -alphera.ca alphera.co.in alphera.co.nz alphera.comalphera.com.esalphera.com.hkalphera.com.my -alphera.de -alphera.es -alphera.ie -alphera.in -alphera.my alphera.netalpherafinance.com.hkalpherafinancialservices.esalpherafinancialservices.in alpherafs.caalpherafs.co.nzalpherafs.com.hkalpherafs.com.my alpherafs.ie alpherafs.in alpherafs.my premiumfs.de alphabet.asia alphabet.at alphabet.be alphabet.biz alphabet.chalphabet.co.hualphabet.co.ukalphabet.co.za alphabet.comalphabet.com.cn -cnalphabet.com.esalphabet.com.lvalphabet.com.mxalphabet.com.plalphabet.com.pt alphabet.cz alphabet.de alphabet.es alphabet.eu alphabet.fr alphabet.info alphabet.jp alphabet.lt alphabet.lu alphabet.lv alphabet.mxalphabet.net.cn -cn alphabet.noalphabet.org.uk alphabet.pl alphabet.pt alphabet.uk alphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com  rrtis.comspiritofecstasy.com -8 -NPMJS npm.community  npmjs.com  npmjs.org -¯ - -VISUALARTS abow.jp angelbeats.jp -anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp -% -ZHIHU  zhihu.com  zhimg.com -Q - BANDWAGONHOSTbandwagonhost.com bwh1.net bwh8.net  bwh88.net -| -MEITUAN dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com - - W3SCHOOLS w3schools.com -/ - STARTPAGE startpage.com ixquick.com -R -UPAI  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com - -5CH 2ch.net 5ch.net -: -ESRI -arcgis.comarcgisonline.com esri.com -S -PORNHUB -phncdn.com phprcdn.com pornhub.compornhubpremium.com - -TABOOLA taboola.com -- - ACFUN-ADS apilog-web.acfun.cn +2 +INNER-ACTIVE-ADSinner-active.mobi ads +< +QUIP quip-cdn.com quip.comquipelements.com +@ +REUTERS reuters.com +reuters.tvreutersmedia.net +° + EPICGAMESbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn +' +HACPAI +hacpai.com  ld246.com +· +HANYI hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cn +Ÿ +MUCINEX +mucinex.ca +mucinex.cn mucinex.co.nz mucinex.commucinex.com.cn mucinex.net +mucinex.tvmucinexprofessional.com +ª +NIKEnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com +eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com +gonike.comhandbags-nike.comhightopnikes.com +idnike.cominikesneakers.com just-do-it.cn +cn justdoit.uskicksnike1.comkidsnikeshoes.com +mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn +cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn +cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com +nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn +cnnikebetterworld.com"nikebetterworld.com.cn +cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com +nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn +cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org +nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn +cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn +cn nikeid.com.cn +cnnikeidshoes.com nikeinc.comnikeinc.com.cn +cnnikeincchemistry.comnikeinstock.com +nikeit.comnikeitalia.com nikeitaly.com +nikekd.com nikekid.com +nikelab.cn +cnnikelab.com.cn +cn nikelink.comnikeliuxiang.cn +cnnikeliuxiang.comnikeliuxiang.com.cn +cn nikelives.comnikelunarglide.com nikemall.cn +cnnikemall.com.cn +cnnikemarketing.com nikenews.com +niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn +cnnikerunclub.com.cn +cnnikerunner.comnikerunning.com.cn +cnnikerunningshoes.com +nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn +cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh +swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e += +SIGNAL +signal.art +signal.orgsignalusers.org +ÿ +TELEGRAM contest.com  graph.orgquiz.directoryt.me tdesktop.com +telega.one +telegra.ph telegram.dog telegram.me telegram.orgtelegram.space +telesco.pe +tg.dev tx.meusercontent.dev +k +DOUYU  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com +@ + GLOBALVOICESglobalvoices.orgglobalvoicesonline.org +Í +ORIGIN dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.com +3 +PPTV  pplive.cn +pplive.com pptv.com +, +SECOM secom.co.jpsecomtrust.net +& + STEAMUNLOCKEDsteamunlocked.net +4 + ARCHLINUX archlinux.orgarchlinuxarm.org +œ +FINISH$dishwashingexpert.com.cn +cn  finish.at  finish.bg finish.co.kr finish.co.nz finish.co.uk finish.co.za finish.com.cn +cn finish.com.hr finish.com.tr  finish.de  finish.es  finish.fr  finish.gr  finish.hu  finish.lv  finish.pl  finish.pt  finish.ro  finish.si  finish.skfinisharabia.comfinishbrasil.com.brfinishdishwashing.cafinishdishwashing.com finishinfo.be finishinfo.clfinishinfo.comfinishinfo.com.arfinishinfo.com.au finishinfo.cz finishinfo.fi finishinfo.it finishinfo.jp finishinfo.nl finishinfo.no finishinfo.ru finishinfo.sefinishkilpailu.fi finishwin.beyarininsuyu.com +) +LINGUEE linguee.com  deepl.com + +EGGHEAD +egghead.io +x +FASTLY +fastly.com +fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com +zencdn.net +> +UBUNTU +ubuntu.com +ubuntu.netubuntuforums.org +E + HIIDO-ADSmlog.hiido.com +adsylog.hiido.com +ads +J +HUPUhoopchina.com.cn hupu.com hupucdn.com  shihuo.cn +) +LIANJIA lianjia.com  ljcdn.com +9 +YOUZAN +youzan.com yzcdn.cn youzanyun.com +/ + SNAPCRAFT snapcraft.io snapstore.io + +XINGRZ  xingrz.me +t + CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org + + INOREADER inoreader.com +  +ORACLE +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net +ˆ +SINA  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +M + +STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com +6 +4CHAN 4cdn.org  4chan.org 4channel.org +G +ASAHI  asahi.com asahicom.jpasahishimbun.sc.omtrdc.net +3 +ENTRUST entrust.netentrustdatacard.com + +GITV gitv.cn gitv.tv + +WINDY  windy.com +8 + +CYBERTRUSTcybertrust.co.jpcybertrust.ne.jp +* +DUOWAN +duowan.com dwstatic.com + +MIRAHEZE miraheze.org +N +THETYPE thetype.cloud +cn thetype.comtypeisbeautiful.com +( +UCLOUD  ucloud.cn ufileos.com +5 +V2RAY  v2ray.com +v2ray.cool  v2fly.org + +FARFETCHfarfetch-apps.comfarfetch-contents.com farfetch.cn +cn farfetch.comfarfetch.com.cn +cn farfetch.netfarfetch.net.cn +cn  fflnk.net +B +MITmit mit.edu mit.netmitpressjournals.org + +MEWE mewe.com +^ + APPLE-ADSiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads +f +COURSERAcoursera-for-business.orgcoursera.community coursera.help coursera.org +f + TAYLORFRANCIS tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com +E +INFOWARS banned.video infowars.cominfowarsmedia.com +ã +TESLA solarcity.comtesla.cn +cn  tesla.com tesla.com.cn +cnteslamotors.cn +cnteslamotors.comteslamotors.com.cn +cntesla-cdn.thron.cn +cntesla-cdn.thron.com +­ + +BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn +„ +DEDAO biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com +F +DEEPIN  deepin.cn +deepin.com  deepin.io +deepin.org +? +GEETEST geetest.com#geetest.datasink.sensorsdata.cn +¥ +LYSOL lizol.co.in lysol.ca lysol.cllysol.cn +cn lysol.co.cr  lysol.com lysol.com.cn +cn lysol.com.mx  lysol.net +? +BOOTCSS bootcss.com +bootcdn.cnphpcomposer.com 7 - BUYMEACOFFEE buymeacoff.eebuymeacoffee.com + BOOTSTRAPbootstrapcdn.comgetbootstrap.com +W +FLICKR +flickr flic.kr +flickr.com +flickr.netstaticflickr.com + +STAGE1ST saraba1st.com +, +BANDCAMP bandcamp.com +bcbits.com +¢ +CITIC citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com +¥ + MEADJOHNSONenfinitas.com.cn +cnmeadjohnson.commeadjohnson.com.cn +cnmeadjohnson.com.hkmeadjohnson.com.twmeadjohnson.net + +ABEMA abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net + +DOOM9  doom9.org + +TSQUARE +tsquare.tv +< + BITSQUARE bisq.io bisq.network bitsquare.io î? CATEGORY-DEV anaconda.com anaconda.org conda.io android.comandroidify.comappleswift.com  swift.org swiftui.cn @@ -5556,974 +6480,8 @@ jenkins.io openai.com openresty.org openssl.org opensuse.org packagist.org pcre.org phantomjs.org php.net  putty.orgpostgresql.org r-project.orgraspberrypi.org raspbian.org rpmfusion.orgscientificlinux.org scoop.sh shields.io sqlite.orgsublimetext.com termius.com  unpkg.com videojs.com videolan.org wireshark.org x.org xposed.info yarnpkg.com zsh.org -¯¯ -CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au9to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com afp.com afpforum.com -ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com -ap.org -apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net  bloomberg bbgevent.com bbhub.io -bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com -c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com -cbsi.video -cbsiam.com  cbsig.net -cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com -viacbs.com -viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com cnn.com -cnn.io -cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk -mol.imthisismoney.co.uk -thismon.ee economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net -etviet.comlagranepoca.com ntd.com  ntdca.com -ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz -forbes.com forbesimg.comfoxfox-corporation.com fox-news.com fox.com -fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com -fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com -fox5dc.com -fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com -foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv -foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com -foxest.com -foxfaq.com -foxfdm.com foxfiles.com -foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com -foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com -foxnews.cc foxnews.com foxnews.net foxnews.org -foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com -foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com -fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com -anidom.comcasoneexchange.comcoronavirusnow.com -fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com -my13la.com -my20dc.commy20houston.com -my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com -q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.netgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org -gclubs.com g-tvapp.comapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn -cn etnet.com.hketnetchina.com.cn -cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk hkopentv.com fantv.hkhuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com banned.video infowars.cominfowarsmedia.combusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.comes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.comfreedomplatform.tv londonreal.tv -ltn.com.tw yes123.com.twmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in -theweek.invanitaonline.com -vanitha.invanithaveedu.com matters.news matters.onemediachinese.com mysinchew.comsinchew.com.my -sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com -medium.commedium.systems -myradio.hkmyradio.com.hkdreamworks.com cnbc.com -cnbcfm.com  msnbc.com -nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com -nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com neow.in -neowin.netbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com -nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au -news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au -nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.ukandysparis.com newsmax.com -newsmax.in newsmaxtv.com -nikkei.com  nikkei.jp nikkei.co.jp now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com etvonline.hk rthk.hk scmp.com -i-scmp.comsingtaonewscorp.com -sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com -eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hksky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com theguardiandev-guardianapis.comdev-theguardian.com -gu-web.netguardianapis.comguardianapps.co.uk -guim.co.uktheguardian.comtheguardiandns.comtheinitium.com  init.shop thetype.cloud -cn thetype.comtypeisbeautiful.com reuters.com -reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs -tr.com mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com -tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn -cntvbeventpower.com.hk -tvbusa.com tvbweekly.comtvmedia.net.au udn.com -udn.com.twudnfunlife.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net -curbed.com  eater.comfunnyordie.com meridian.net polygon.com -racked.com -recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com -voxops.net watchout.tw -waa.twstartupschool.orgycombinator.com -zaobao.com zaobao.com.sg  zaobao.sg -bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com -ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com -zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com -881903.com am730.com.hkamericasvoice.newsappleinsider.com  axios.com bbgwatch.com breitbart.combusinessfocus.iocaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.com -cup.com.hk d100.net -dw.com factwire.orgfortuneinsight.comfreebeacon.com hk01.comhkcitizenmedia.com hkcnews.com hkej.com -hkgpao.comhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com macrumors.com newyorker.com on.ccpassiontimes.hk post852.com qmap.pubrealvision.com rfa.org -rfi.fr rsf.org -rt.com -rtings.comshuziyimin.orgsingpao.com.hksinoinsider.com slashdot.org -socrec.orgthegatewaypundit.comthenationalpulse.comthestandnews.com tvmost.com.hk  unwire.hkvjmedia.com.hk warroom.orgwashingtonpost.com weiyuksj.com -wenzhao.ca youlucky.com zerohedge.com zoomingin.tv -å - - MICROSOFT-DEVadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net -® -OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com -ª - 58TONGCHENG -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com -· -ROCKSTARrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.net -H -ACFUN acfun.cn aixifan.com apilog-web.acfun.cn -ads -# -QT qt.ioqt-project.org -( -TAPTAP -tapimg.com -taptap.com -" -TED ted.com -tedcdn.com -5 -V2RAY  v2ray.com -v2ray.cool  v2fly.org -g - ATLASSIAN atlassian.com bitbucket.org statuspage.io -trello.com trellocdn.com -^ -CTEXCEL -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us - -LINOTYPE linotype.com -@ -REUTERS reuters.com -reuters.tvreutersmedia.net -’ -CANON canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn -cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn -cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com -5 -COLORFULCLOUDS caiyunai.com caiyunapp.com -$ -CSDN csdn.net -csdnimg.cn -7 -DART dart.dev dartlang.org dartpad.dev -( -DEBIAN -debian.org -dotdeb.org - - -GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com -cnocsp.globalsign.com -cn ocsp2.globalsign.com -cn - -MIRAHEZE miraheze.org -Œ -DETTOLdettol-prize.com  dettol.at  dettol.be  dettol.ch  dettol.cl dettol.co.id dettol.co.in dettol.co.ke dettol.co.nz dettol.co.uk -dettol.com dettol.com.au dettol.com.bd dettol.com.br dettol.com.cn -cn dettol.com.eg dettol.com.hk dettol.com.my dettol.com.ng dettol.com.sg  dettol.cz  dettol.fr  dettol.hu  dettol.ie -dettol.net  dettol.nl  dettol.pk  dettol.pl  dettol.pt  dettol.rudettolarabia.comdettolcleannaija.comdettolsitishield.co.indettolthailand.comespadoldettol.com.ar -š -DIDI didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com -1 -JINSHUJU jinshuju.netjinshujucdn.com -9 -MOGUJIE mogu.com mogucdn.com mogujie.com -) - REBRANDLY rb.gy rebrandly.com -ê -HP -123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com -compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info -hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com -hp.com -hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net -hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com -hpfaqs.comhpfeedback.com -hpgift.com -hpgpas.comhpgraphicspartners.com  hpiie.org -hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com -hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com -hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com -hpstore.cn -cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com -hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.com -Q -NEWSMAXandysparis.com newsmax.com -newsmax.in newsmaxtv.com -í - WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org -w.wiki toolforge.orgwikimediacloud.org wmcloud.org wmflabs.org - -ARCHIVE archive.org - -SINGTAONEWSCORPsingtaonewscorp.com -sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com -eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hk -¸ -VISA visa.be visa.ca visa.clvisa.cn -cn -visa.co.ao -visa.co.cr -visa.co.id -visa.co.il -visa.co.in -visa.co.jp -visa.co.ke -visa.co.ni -visa.co.nz -visa.co.th -visa.co.uk -visa.co.ve -visa.co.za visa.com visa.com.ag visa.com.ai visa.com.ar visa.com.au visa.com.az visa.com.bo visa.com.br visa.com.bs visa.com.bz visa.com.cn -cn visa.com.co visa.com.cy visa.com.dm visa.com.do visa.com.ec visa.com.ge visa.com.gt visa.com.gy visa.com.hk visa.com.hn visa.com.hr visa.com.jm visa.com.kh visa.com.kn visa.com.kz visa.com.lc visa.com.lk visa.com.ms visa.com.mx visa.com.my visa.com.ng visa.com.pa visa.com.pe visa.com.ph visa.com.pr visa.com.py visa.com.ru visa.com.sg visa.com.sv visa.com.tr visa.com.tt visa.com.tw visa.com.ua visa.com.uy visa.com.vc visa.com.vi visa.com.vn visa.cz visa.de visa.dk visa.es visa.fi visa.fr visa.gd visa.gp visa.gr visa.hk visa.hu visa.ie visa.is visa.ky visa.lt visa.lv visa.mn visa.mq visa.nl visa.no visa.pl visa.pt visa.ro visa.se visa.sk visa.so visa.sx visa.tc -visabg.com visaeurope.at visaeurope.ch visaeurope.lu visaeurope.sivisaitalia.com visakorea.comvisamiddleeast.comvisasoutheasteurope.comfinlitsummit.orgmyvisaluxuryhotels.comvisainfinite.cavisainfiniteluxuryhotels.ca!visaluxuryhotelcollection.com$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisaluxuryhotels.comvisaluxuryhotels.com.arvisasignaturehotels.com($connaissancesfinancierespratiques.ca dnsvisa.comeubluecardvisa.comfinancialsoccer.ca"financialsoccer.com.cn -cnlightbridge.commiamifintechfestival.commhshosting.compracticalbusinessskills.compracticalmoneyskills.ca#practicalmoneyskills.cn -cn'practicalmoneyskills.com.cn -cnpracticalmoneyskills.jpsoccerfinancier.catorcidadeouro.com vaultify.com vaultify.info vaultify.net visa-atm.com visa-news.jp visabank.orgvisabusinessinsights.comvisacarddesignlab.com visacards.comvisacheckout.netvisacheckout.orgvisaconciergelac.comvisadigital.comvisadigitalconcierge.com visadns.comvisadpsonline.usvisaeverywhereshop.comvisafintechfasttrack.comvisafulfillment.comvisagiftcard.usvisaglobalfinance.comvisaicsdirect.comvisainfinite.cavisainfinite.cn -cn visanet.net -visapay.cn -cnvisapcsdirect.comvisaplatinum.cn -cnvisaplatinum.com.cn -cn visaplus.comvisasavingsedge.cavisasignature.co.kr visb.org -£ -YANDEXxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il -yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md -yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net -yandex -ž -DIGICERT digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr 1 LETSENCRYPT  lencr.orgletsencrypt.org - -TGBUS  tgbus.com -+ -TRELLO -trello.com trellocdn.com -6 -75TEAM 75.team -75team.com baomitu.com - -ADBLOCKgetadblock.com -+ -BOSLIFE boslife.biz boslife.net -— - GETTYIMAGESgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chgettyimages.co.jpgettyimages.co.nzgettyimages.co.ukgettyimages.comgettyimages.com.augettyimages.com.brgettyimages.com.mxgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.se -2 - GROWINGIO-ADS!assets.growingio.com -ads - - -XUEYUANJUNxueyuanjun.com -V - JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org - -TOR onion -- -C-SPAN -c-span.orgc-spanvideo.org -„ -MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud -Z -PICSEE pics.ee  picsee.co -picsee.pro pise.pw pros.ee -pse.is -; -WJX -sojump.com -wjx.cn wjx.com wjx.top -© -9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au -Þ - ALIBABA-ADS a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -ads -ž -CNN cnn.com -cnn.io -cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com -? -LIEPIN -liepin.com -lietou.comlietou-static.com -¡ -VOXMEDIA cstatic.net -curbed.com  eater.comfunnyordie.com meridian.net polygon.com -racked.com -recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com -voxops.net - -XDTY xdty.org -Ž -ELSEVIER els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.com -. -NETLIFY netlify.combitballoon.com -¢ -WIX editorx.comparastorage.com wix-code.com wix.comwixanswers.com wixapps.net  wixmp.com wixsite.com wixstatic.com -© -CBScbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com -cbsi.video -cbsiam.com  cbsig.net -cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com -viacbs.com -viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com -æ -DWION acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com - -PARLER -parler.com -7 -VANCL  vancl.com vanclimg.com  vcimg.com - - -CUGBONLINE cugbonline.cn - -GAMERSKY gamersky.com -Ë - KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.com - -KERNEL -kernel.org -ß -THELINUXFOUNDATION -kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.orglfai.foundationlinuxfoundation.org - -TIKTOK  amemv.com -muscdn.com -musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net -E -HCAPTCHA botstop.com hcaptcha.comhcaptchastatus.com -# -DCARD dcard.io dcard.tw - -FIGMA  figma.com -F - -TAGTIC-ADS g1.tagtic.cn -adsxy-log.tagtic.cn -ads -ì -BBCbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net - -BINANCEbinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com - -JINJIANG  jjwxc.net -å -MORTEIN -mortein.cn -cn mortein.co.in mortein.co.nz mortein.co.za mortein.commortein.com.aumortein.com.brmortein.com.ngmortein.com.pkmorteincam.compifpafarabia.com -¬ -IQIYI 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads -ô -VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com -f -COURSERAcoursera-for-business.orgcoursera.community coursera.help coursera.org -5 -YOUJIZZ youjizz.comyjcontentdelivery.com -o -IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com - -IPIP ipip.net -$ -TAOMEE -61.com -taomee.com -œ -TMTPOST tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com -­ -HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -ž -NUROFEN -nurofen.at -nurofen.bg -nurofen.cn -cn nurofen.co.il nurofen.co.nz nurofen.co.uk nurofen.co.za nurofen.comnurofen.com.aunurofen.com.cn -cnnurofen.com.sg -nurofen.cz -nurofen.de -nurofen.es -nurofen.fr -nurofen.hr -nurofen.hu -nurofen.ie -nurofen.it nurofen.net -nurofen.no -nurofen.pl -nurofen.pt -nurofen.ro -nurofen.sk -nurofen.runurofengel.com51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com - - -CRAIGSLISTcraigslist.org -Ñ -RARBG rarbg.me rarbg.toproxyrarbg.org rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com -Ž -THESUNdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie -» -VIU -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net -+ -XIMALAYA ximalaya.com  xmcdn.com -‰ -SONY playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl -sony.co.cr -sony.co.id -sony.co.in -sony.co.jp -sony.co.kr -sony.co.nz -sony.co.th -sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com -sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net - -HKGOLDEN hkgolden.com -â - HUNANTV-ADSclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -ads -d - JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net -å -NETFLIX fast.com -netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.net -³ - -BRIGHTCOVE bcove.video bcovlive.io bcvp0rtal.com boltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com videojs.com -zencdn.net zencoder.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.net -ê - SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.com -„ - TONGCHENG 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com -( -UCLOUD  ucloud.cn ufileos.com -/ -XVIDEOS xvideos.comxvideos-cdn.com -3 -QUORA  quora.com quoracdn.net qr.ae - -CUTTLY cutt.ly -) -EASYLIST easylist.to lanik.us -. -JIEMIAN jiemian.comjiemian.com.cn -( -LAGOU  lagou.com lgstatic.com -{ - CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com -E -PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net -6 -4CHAN 4cdn.org  4chan.org 4channel.org -Y -JSDELIVR jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net -cn -·2 -ALIBABA alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to -ele.me elemecdn.com eleme.cnteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net -k -DOUYU  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com -1 -TIANCITY tiancity.comtiancitycdn.com -Ç -YAHOO -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com -© -WESTERNDIGITALg-technology.com -sandisk.ae -sandisk.it -sandisk.cn -cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw -sandisk.de -sandisk.es -sandisk.fr -sandisk.hk -sandisk.id -sandisk.in -sandisk.nl -sandisk.sg -wd.com wdc.comwesterndigital.com -^ - APPLE-ADSiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads -7 - FONTAWESOMEfontawesome.comfortawesome.com -µ -HUFFPOSThuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com -b - YAHOO-ADS ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads -ô -DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com -Á: -EBAY21centuryaccess.com4ebaytraders.com adcommerce.cn -cn adcommerce.tv appforebay.cn -cnappsonebay.net -asebay.com -baazee.com -bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn -cn"connectcommerce.com.cn -cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn -cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn -cncyber-bay.com.cn -cncyber-bay.info cyber-bay.org -dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn -cn -ebay.co.nz -ebay.co.uk -ebay.co.ve -ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn -cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn -cn ebay.nl ebay.org ebay.org.cn -cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn -ebay.yn.cn -cn -ebay.zj.cn -cn -ebay25.com -ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn -cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com -ebayca.com -ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn -cnebayclassifieds.com"ebayclassifieds.com.cn -cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com -ebayde.com ebaydesc.cn -cnebaydesc.com.cn -cnebaydlassifieds.com -ebaydns.cn -cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn -cnebayenterprise.com!ebayenterprise.com.cn -cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com -ebayit.comebayjewelry.com ebayjob.com -ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn -cnebaymotors.comebaymotors.com.cn -cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com -ebayon.com -ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn -cnebaypedia.com.cn -cnebayprivacycenter.com -ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn -cnebayshopping.com.cn -cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn -cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn -cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com -ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn -cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net -myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn -cn prostores.comprostores.com.cn -cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com -svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn -cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com -gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn -cnkijijidns.com.cn -cnkijijiforbusiness.ca -kijijii.ca kijijiraps.ca kijji.ca -kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn -cn -q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn -cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com -nexcat.com nexpart.com -nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.com -É -LETV-ADS#api.game.letvstore.com -ads ark.letv.com -ads dc.letv.com -adsdev.dc.letv.com -ads fz.letv.com -ads g3.letv.com -adsletv.allyes.com -adsminisite.letv.com -adsmsg.m.letv.com -adsn.mark.letv.com -adsplog.dc.letv.com -adspro.hoye.letv.com -ads pro.letv.com -ads stat.letv.com -ads"static.app.m.letv.com -ads -0 -OPENWRT openwrt.orglede-project.org -ó -SQUAREUP cash.appcashbycashapp.com gosq.co gosq.comissquaredown.comissquareup.com mkt.comsellercommunity.comsquarecapital.com squarecdn.comsquarecloudservices.com squareup.com - - WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com -wp.com  wpvip.com -á - -AKAMAI ak1.net -aka-ai.com -aka-ai.net akacrypto.net akadeem.net -akadns.com akadns6.net -akaeai.com -akafms.net akahost.net -akaint.net akam.net -akamaa.com -akamah.com -akamak.com -akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com akamai.co.kr -akamai.com -akamai.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.net akamaihd.com akamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaized-staging.net akamaized.netakamaizercentral.com -akamci.com  akami.com  akami.net -akamii.com -akamqi.com akastream.com akastream.net -akatns.net iamakamai.com iamakamai.netsoasta-dswb.com -srtcdn.net -9 -NIKKEI -nikkei.com  nikkei.jp nikkei.co.jp -F -SOGOU -go2map.com sogo.com  sogou.com sogoucdn.com -G -TEX ctan.orglatex-project.org -miktex.org tug.org - -ANTUTU -antutu.com -) -LINGUEE linguee.com  deepl.com -h -51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -Þ - -JD3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads -• -WOOLITE -woolite.ca -woolite.cn -cn woolite.comwoolite.com.cn -cn -woolite.pl -woolite.uswoolitecarpet.com -_ -FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org - - SHARETHIS sharethis.com -Ð -VK mvk.com userapi.com  vk-cdn.me -vk-cdn.net vk-portal.net vk.cc -vk.com  vk.design vk.link vk.me vkcache.com vkgo.app -vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net -_ -CATEGORY-WIKI-CNhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn - -EGGHEAD -egghead.io -, -JAVAjava java.com java.net -“ - LIMELIGHTdelvenetworks.com limelight.com  lldns.netllnw-trials.com llnw.com llnw.net  llnwd.net  llnwi.net -3 - SEGMENTFAULTsegmentfault.com  sifou.com -™ - -EVERBRIGHT cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com € GOOGLE android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org go.dev  godoc.org @@ -6735,20 +6693,951 @@ webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comw cn-!www-googletagmanager.l.google.com cnwww.gstatic.com cn +, + +HOTJAR-ADSstatic.hotjar.com +ads + +WEBFLOW webflow.com +# +V8 +v8.dev v8project.org +Ý +VOLVO volvodynafleetonline.comescandinavia-arg.comindependentoperatorcn.com road-crew.com udfs.com vfsco.at vfsco.be vfsco.bg vfsco.ca vfsco.ch vfsco.cl vfsco.co.uk vfsco.co.za  vfsco.com vfsco.com.au vfsco.com.br vfsco.com.cn +cn vfsco.com.tr vfsco.cz vfsco.de vfsco.dk vfsco.ee vfsco.es vfsco.fi vfsco.fr vfsco.hu vfsco.ie vfsco.in vfsco.it vfsco.jp vfsco.kr vfsco.lt vfsco.lv vfsco.mx vfsco.nl vfsco.no vfsco.pe vfsco.pl vfsco.ro vfsco.ru vfsco.se vfsco.sk vfsco.us vgcareers.netvolvo-truck.nl volvo.cavolvo.cn +cn  volvo.com volvo.com.cn +cn volvo.sevolvobrandshop.com volvobuses.at volvobuses.be volvobuses.ca volvobuses.ch volvobuses.covolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zavolvobuses.comvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.tw volvobuses.de volvobuses.dk volvobuses.es volvobuses.fi volvobuses.fr volvobuses.hk volvobuses.hu volvobuses.in volvobuses.it volvobuses.jo volvobuses.kr volvobuses.ma volvobuses.mx volvobuses.my volvobuses.no volvobuses.om volvobuses.ph volvobuses.pk volvobuses.pl volvobuses.ru volvobuses.se volvobuses.sg volvobuses.tn volvobuses.us volvoce.comvolvodefense.com volvogroup.be volvogroup.cn +cnvolvogroup.comvolvogroup.com.brvolvogroup.com.cn +cn volvogroup.de volvogroup.fr volvogroup.jp volvogroup.kr volvogroup.mx volvogroup.nl volvogroup.pe volvogroup.pl volvogroup.ru volvogroup.sevolvogrouptruckcenter.nlvolvomerchandise.comvolvopenta.comvolvopenta.com.br volvopenta.de volvopenta.es volvopenta.fr volvopenta.it volvopenta.nl volvopenta.se volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.ukvolvotrucks.co.nzvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwvolvotrucks.comvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.cn +cnvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eevolvotrucks.esvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvolvotrucks.mavolvotrucks.mdvolvotrucks.mkvolvotrucks.mnvolvotrucks.myvolvotrucks.netvolvotrucks.nlvolvotrucks.novolvotrucks.pevolvotrucks.phvolvotrucks.pkvolvotrucks.plvolvotrucks.psvolvotrucks.qavolvotrucks.rovolvotrucks.rsvolvotrucks.ruvolvotrucks.sevolvotrucks.sgvolvotrucks.sivolvotrucks.skvolvotrucks.tmvolvotrucks.tnvolvotrucks.uyvolvotruckcenter.bevolvotruckcenter.dkvolvotruckcenter.esvolvotruckcenter.fivolvotruckcenter.itvolvotruckcenter.krvolvotruckcenter.kzvolvotruckcenter.nlvolvotruckcenter.novolvotruckcenter.sevolvotruckrental.beudtrucksmeena.com +É +LETV-ADS#api.game.letvstore.com +ads ark.letv.com +ads dc.letv.com +adsdev.dc.letv.com +ads fz.letv.com +ads g3.letv.com +adsletv.allyes.com +adsminisite.letv.com +adsmsg.m.letv.com +adsn.mark.letv.com +adsplog.dc.letv.com +adspro.hoye.letv.com +ads pro.letv.com +ads stat.letv.com +ads"static.app.m.letv.com +ads + +LINUX  linux.org +· +ROCKSTARrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.net +B + LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com + +NODEJS +nodejs.org +Ÿ +QIHOO360 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn +f +PHOENIX  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com +G +TEX ctan.orglatex-project.org +miktex.org tug.org +7 +AMD amd.comamdfanstore.com +radeon.com +/ +REALTYPErealtype.co.jp realtype.jp +Ü +VANISHo2action.co.krpowerofresolve.capowerofresolve.comspraynwash.com  vanish.at  vanish.be  vanish.ch  vanish.cl vanish.cn +cn vanish.co.id vanish.co.il vanish.co.in vanish.co.nz vanish.co.uk vanish.co.za vanish.com.ar vanish.com.br vanish.com.co vanish.com.hr vanish.com.mx vanish.com.my vanish.com.pe vanish.com.sg vanish.com.tr  vanish.de  vanish.dk  vanish.es  vanish.fi  vanish.fr  vanish.hu  vanish.ie  vanish.it  vanish.nl  vanish.no  vanish.pl  vanish.pt  vanish.ro  vanish.ru  vanish.se  vanish.si  vanish.skvanisharabia.comvanishbancaseulook.com.brvanishcentroamerica.com vanishinfo.czvanishstains.comvanishstains.com.au +¤ + SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads + +TENCENT dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.com +rtx.com.cnservicewechat.com smtcdns.com smtcdns.net +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com wegame.com.cn +weiyun.com alloyteam.com imweb.io ivweb.io +«X +FACEBOOKaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com +nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org +atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com +facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com +faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com +fb.careers +fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com +fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com +fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net +freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com +groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com +redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net + + +SKILLSHAREskillshare.com +¥ +YUEWEN +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +² +SAMSUNG samsung +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn +cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com +- +ASUS asus.com asus.com.cn +cn + +PARLER +parler.com +$ +GITEE  gitee.com gitee.io +µ +HUFFPOSThuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com +N +SEASUNseasungames.com xishanju.com xoyo.com testplus.cn +‰ + +APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com + + +CODECADEMYcodecademy.com +@ +HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com ++ +MONGODB mongodb.com mongodb.org +9 +ABCabc-studios.com abc.com edgedatg.com +# + MOPUB-ADS mopub.com +ads +Ð +NEWSCORPbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com +nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au +news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au +nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.uk +— +WALMART walmart wal-mart.com +wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com +wmt.co +í +CATEGORY-CRYPTOCURRENCY asproex.comasproexapi.combinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com bitflyer.com bitflyer.jp bisq.io bisq.network bitsquare.io coinone.co.krcoinonecore.comcoinonecorp.com +devcon.orgethereum.foundation ethereum.org +hbabit.com +hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.comlocalbitcoins.comlocalbitcoinschain.com +zb.app +zb.com zb.io zb.live +bitbank.cc bitcoin.org bitfinex.com +bitmex.com bitquick.co bitstamp.net bittrex.com btcbox.co.jp +cex.io coinbase.com dogecoin.com +kraken.com okex.com +paxful.com +Á + CATEGORY-PORN bongacams.com +bcicdn.com bcrncdn.com +btt804.com +btt904.com +bttzyw.com +bttzyw.net e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org heydoga.com  heyzo.com cdnlab.live jable.tv +javbus.com javbus22.com javfinder.sh findercdn.me o0-2.com +javwide.tv javwide.comlivejasmin.com dditsadn.com dditscdn.com +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net +phncdn.com phprcdn.com pornhub.compornhubpremium.com scoreland.comcdn77.scoreuniverse.com  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com +ads xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youjizz.comyjcontentdelivery.com 0plkijj.vip  114av.xyz 16fhgdty.xyz 18novel.xyz +1jjdg2.vip +1jsa22.vip  1pondo.tv  51dh.site 520aa.tv 5278.cc +52hyse.com 54647.online 69story.com 69vj.com  721av.com +7mm.tv +85tube.com 91.51rmc.com +91porn.com 920share.com +a.91gay.me a.kslive.tv aavs.xyz  agzy1.com aibaobei.me aimei133.com airav.ccanimezilla.comasianpornmovies.com av01.tv  av1688.cc av6k.com avfox.cc  avgle.com +avinin.com +avmoo.cyou avn.com +avpanda.cc +avsee01.tv avseesee.com bangbros.com beeg.combesthentaitube.com brazzers.com +buzzav.com  caime.xyz calvappd.me cam4.comchaturbate.com cslpldyb.me  dkk37.comdownload.91porn005.medownload.i91av.org +dvh30n.vip eporner.comfanhaodian.comflirt4free.com follasian.com +gaypad.net  gouri.xyz  hanime.tv +hanime1.me  hegre.com hpjav.tv hqporner.com hsxhr.ccichineseporn.com  iijav.com  immxd.com isexlove.tw isexomega.tw jable.tvjapan-whores.comjapanesebeauties.net jav.guru jav01.cc +jav101.com  jav168.cc +jav321.com javcc.cc  javcc.com +javdoe.com javdove8.xyz  javfor.me javfull.net  javhd.com  javhd.pro javhd3x.com javhdfree.netjavlibrary.com javmost.com  javqd.com javynow.com  jgg18.xyz jiayoulu.com jinnaju.com jjdong7.com +johren.net kindgirls.com kissjav.com kphimsex.net  love7.xyz lp99.pw lsnzxzy1.com lubetube.com +lululu.one manyvids.com mdlf.xyz myavfun.commydirtyhobby.commyfreecams.com nekoxxx.com netflav.com nhentai.netohyeah1080.com +onejav.comosakamotion.netp3.csgfnmdb.com papalah.com  pigav.com  popjav.tv pornbest.org +pornhd.com porntea.com  press.vin +pyhapp.com +qingse.one  r18lu.comrealitykings.com redtube.com +rule34.xxx seqingx.com seselah.com sextop1.net +sexzy4.com +soirt4.funsouth-plus.net spankbang.com stripchat.com +sub147.com  swag.live t66y.comtbr.tangbr.net theav.cctheporndude.com +thisav.com thtmod1.com +tkb008.xyztokyomotion.net  tssp.best  tube8.comtubetubetube.com upjav.ccvaginacontest.com vgg8.com vjav.comwatchjavonline.com wuso.me  wzmyg.com  x-art.com x18r.com  x99av.com  xo104.com  xtube.com  youav.com youporn.com + +GEEKPARK geekpark.net +Ì +NVIDIA +geforce.cn +cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn +cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn +cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk +nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net +J +36KR36dianping.com 36kr.com 36krcdn.com 36krcnd.com +% +CDN77  cdn77.com  cdn77.org +% +NGINX  nginx.com  nginx.org +i +ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +— + GETTYIMAGESgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chgettyimages.co.jpgettyimages.co.nzgettyimages.co.ukgettyimages.comgettyimages.com.augettyimages.com.brgettyimages.com.mxgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.se +© +GOOGLE-REGISTRYcharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4c +ß +OCULUS binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com + +0X0 +0x0.st +Z +PICSEE pics.ee  picsee.co +picsee.pro pise.pw pros.ee +pse.is +R +ARPHIC +arphic.com arphic.com.cn arphic.com.twifontcloud.com +‘ +KUAISHOU gifshow.com ksapisrv.com kuaishou.com +yximgs.com log-sdk.gifshow.com +adswlog.kuaishou.com +ads +× +OPPO coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com +Í + +CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflare.netcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.one  pages.devtrycloudflare.comvideodelivery.net  warp.plus workers.dev + + +QINGTINGFM qingting.fm +@ +JQUERY +jquery.comjquerymobile.com jqueryui.com + +PINGPE ping.pe +¡ +SHOPIFY myshopify.com shop.app shopify.com shopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com +$ +CSDN csdn.net +csdnimg.cn +* +HKOPENTV hkopentv.com fantv.hk +¶ + APPLE-UPDATEappldnld.apple.com gg.apple.comgnf-mdn.apple.comgnf-mr.apple.com gs.apple.com ig.apple.commesu.apple.comns.itunes.apple.comoscdn.apple.comosrecovery.apple.com skl.apple.comswcdn.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.com xp.apple.com +# +EDX edx.org edx-cdn.org +, +MATTERS matters.news matters.one +' + WTEAM-ADS ads.wteam.xyz +ads +ß + CANONICAL launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io +ubuntu.com +ubuntu.netubuntuforums.org canonical.com +Ì +EA dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.net +< +NGA +nga.cn 178.com +ngabbs.com ngacn.cc + +TIPDM +tipdim.org +¹ +UBI ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +cn +”$ +CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com +scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com +knovel.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com +apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com +aclweb.org acm.org acs.org altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org +nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu +zenodo.org +: +ESRI +arcgis.comarcgisonline.com esri.com +a +NOW now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +{ +OREILLY oreil.ly oreilly.comoreilly.com.cn +cnoreilly.revieworeillystatic.com +orl.ly +2 +REABBLE +reabble.cn +cn reabble.com ++ +FORBES +forbes.com forbesimg.com +~ +GITLAB +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com +7 +PGYER  pgyer.com +tracup.com frontjs.com + +WIKIHOW wikihow.com + +QUANTIL quantil.com +‘ +SUPERSONIC-ADSsupersonic.com +adssupersonicads.com +ads +ssacdn.com +ads)supersonicads-a.akamaihd.net +ads +2 +YNET ynet.cn ynet.com ynet.com.cn +k + CHEETAHMOBILE cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.com +U + CLEARASIL clearasil.cn +cnclearasil.com.cn +cn clearasil.us +b + ECONOMIST economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com +, +HITUN hitun.ioxn--90wwvt03e.com +– +NYTIMES nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com + +4399 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com +ç + FACEBOOK-DEVaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com +g + READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org +% +RUMBLE rmbl.ws +rumble.com +7 +VANCL  vancl.com vanclimg.com  vcimg.com +Ç +YAHOO +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com + +DMZJ dmzj.com +a +LE +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com + +MZED mzed.com 6 -AGORA agora.io -agoraio.cn agoralab.co -ä -CATEGORY-ANTICENSORSHIP citizenlab.cacitizenlab.org  gfw.press -gfw.reportapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.orghaveibeenpwned.compwnedpasswords.comgetlantern.org -lantern.io softether.orgsoftether-download.com  v2ray.com -v2ray.cool  v2fly.org ahmia.fi akasha.worldbrowserleaks.combypasscensorship.orgdat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org -geti2p.netguardianproject.info ipfs.io  jitsi.org  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co -uproxy.org vuvuzela.io -whonix.org wikileaks.org wireguard.com -zeronet.io -­] -CATEGORY-GAMES blizzard.cn + RUBYCHINAruby-china.orgrubyconfchina.org +k +SLING dishworld.comslinginternational.com  sling.commovenetworks.com +movetv.com +¡ + BYTEDANCE  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com + + +CUGBONLINE cugbonline.cn +Á: +EBAY21centuryaccess.com4ebaytraders.com adcommerce.cn +cn adcommerce.tv appforebay.cn +cnappsonebay.net +asebay.com +baazee.com +bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn +cn"connectcommerce.com.cn +cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn +cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn +cncyber-bay.com.cn +cncyber-bay.info cyber-bay.org +dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn +cn +ebay.co.nz +ebay.co.uk +ebay.co.ve +ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn +cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn +cn ebay.nl ebay.org ebay.org.cn +cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn +ebay.yn.cn +cn +ebay.zj.cn +cn +ebay25.com +ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn +cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com +ebayca.com +ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn +cnebayclassifieds.com"ebayclassifieds.com.cn +cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com +ebayde.com ebaydesc.cn +cnebaydesc.com.cn +cnebaydlassifieds.com +ebaydns.cn +cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn +cnebayenterprise.com!ebayenterprise.com.cn +cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com +ebayit.comebayjewelry.com ebayjob.com +ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn +cnebaymotors.comebaymotors.com.cn +cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com +ebayon.com +ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn +cnebaypedia.com.cn +cnebayprivacycenter.com +ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn +cnebayshopping.com.cn +cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn +cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn +cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com +ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn +cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net +myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn +cn prostores.comprostores.com.cn +cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com +svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn +cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com +gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn +cnkijijidns.com.cn +cnkijijiforbusiness.ca +kijijii.ca kijijiraps.ca kijji.ca +kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn +cn +q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn +cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com +nexcat.com nexpart.com +nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.com +$ +SCMP scmp.com +i-scmp.com +æ + SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch +3 + +CITIZENLAB citizenlab.cacitizenlab.org +– + SOUNDOFHOPE bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com +9 + SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net +H +BTTZYW +btt804.com +btt904.com +bttzyw.com +bttzyw.net +4 +MAILRU imgsmail.ru mail.ru mycdn.me +S + OGURY-ADS ogury.com +ads +presage.io +adsogury.co +ads +S + UNITY-ADS!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +Ÿ +PIXNET pimg.twpixanalytics.com  pixfs.netpixinsight.com.tw  pixnet.cc +pixnet.net +pixnet.pro  pixnet.tw +pixplug.in +8 +TARGET +target +target.comtargetimg1.com + +115 115.com +$ +AFP afp.com afpforum.com +£ +CATEGORY-MEDIA-CN36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.com +9 +EMBEDLY embed.ly embedly.com playerjs.io +² +MONOTYPEfontexplorerx.com  fonts.com  fonts.net fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com linotype.com myfonts.com myfonts.net monotype.commonotypeimaging.com bitstream.com itcfonts.com + +TGBUS  tgbus.com +. +KUAIKAN kkmh.comkuaikanmanhua.com +ç +BINGbing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn ++ +BOSLIFE boslife.biz boslife.net +- +C-SPAN +c-span.orgc-spanvideo.org + +FREENODE freenode.net +. +OP op.ggopgg-static.akamaized.net +é +ATTaccbusiness.com +atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn +cn att.com att.jobs att.net +att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com +attcorp.cn +cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com +attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com +attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net +budatt.com +cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com +uverse.comwebhosting.com att-idns.net +attdns.com +attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com +dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com +diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.com +r + LAUNCHPAD launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org +7 +SCP scp-wiki.net  scpdb.org scpwiki.com +Q +SSRCLOUDairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com +D +YY +duowan.com dwstatic.com +yy.com yystatic.com +H +COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net + + FASTSTONE faststone.org +: + SOFTETHER softether.orgsoftether-download.com + + BITWARDEN bitwarden.com +» + MCDONALDSmcd  mcdonalds4008-517-517.cn +cnaboutmcdonalds.comhappymeal.co.nzhappymeal.com.au mcd.commcdelivery.co.idmcdelivery.co.krmcdelivery.com.aumcdelivery.com.mymcdelivery.com.sgmcdelivery.com.twmcdindonesia.com mcdonalds.camcdonalds.co.uk mcdonalds.commcdonalds.com.hk mcdonalds.hk mcdonalds.it mcdonalds.no mcdonalds.semcdonaldsarabia.commcdonaldsparties.co.nzmcdonaldsparties.com.au!xn--qhrx81fxh2a.xn--55qx5d.hk +? +STRIPE +stripe.comstripe.network stripecdn.com +C +BOOKING +booking.cn +cn booking.com bstatic.com +0 + COWTRANSFER c-t.workcowtransfer.com +. +FLUTTER flutter.devflutterapp.com + + SITEPOINT sitepoint.com +Q +NEWSMAXandysparis.com newsmax.com +newsmax.in newsmaxtv.com +, +RENREN +renren.comrenren-inc.com +© +9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au +” +DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to + +DOI doi.org doi.info +¸ +AIRWICK +airwick.at +airwick.be +airwick.ca +airwick.ch +airwick.cl airwick.co.in airwick.co.nz airwick.co.uk airwick.co.za airwick.comairwick.com.auairwick.com.brairwick.com.cn +cnairwick.com.mxairwick.com.tr +airwick.cz +airwick.de +airwick.dk +airwick.es +airwick.fi +airwick.fr +airwick.hr +airwick.hu +airwick.ie +airwick.it +airwick.jp airwick.net +airwick.nl +airwick.no +airwick.pl +airwick.pt +airwick.ro +airwick.ru +airwick.se +airwick.si +airwick.sk +airwick.tv +airwick.usairwickarabia.com vipoo.es +. + +AMAZON-ADS amazon-adsystem.com +ads +$ + CLOUDCONVERTcloudconvert.com +1 + LIBERAPAY liberapay.com liberapay.org +© + CATEGORY-CASbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no +comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.comcybertrust.co.jpcybertrust.ne.jp digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com +thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com +cnocsp.globalsign.com +cn ocsp2.globalsign.com +cn identrust.comidentrust.co.uk identrust.net  lencr.orgletsencrypt.org secom.co.jpsecomtrust.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com +telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com +Ô +GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com +* +WIWIDE wamawama.com +wiwide.com +4 +ZB +zb.app +zb.com zb.io zb.live +, +DUYAOSS duyaoss.com duyaossr.com +j + PLAYSTATION playstationplaystation.complaystation.net sonyentertainmentnetwork.com + +SFACG  sfacg.com +4 +THEBORINGCOMPANYboringcompany.com x.com +Ó +UU-CHAT  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com +/ +ADGUARDadguard-vpn.com adguard.com +0 +MEGA +mega.co.nz mega.io mega.nz +4 +SCInewisiknowledge.comisiknowledge.com + +RSSHUB +rsshub.app +× +UMENG mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads + + LARACASTS laracasts.com +, +ACPLAY +acplay.netdandanplay.com +8 + CLUBHOUSEclubhouseapi.comjoinclubhouse.com +c + UMENG-ADSalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads + +BETHESDA +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.com +×! + +MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.cl mastercard.cn +cnmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cn +cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.iemastercard.inc mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com idservice.incinclusivegrowthscore.com findacard.com mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.com paypass.netpieceofplastic.compredictivetechnologies.com priceless.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.cacashpassport.co.zacashpassport.comcashpassport.com.brcashpassport.netcorporatecashpassport.comicashpassport.com.mxintercamcashpassport.com.mx!multicurrencycashpassport.comshinhangmc.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.com +nab.com.aunabtravellercard.com.au 53world.com53worldsweeps.comlovethiscity.commastercardmoments.compahabicilemezsurprizler.com priceless.compriceless.com.cn +cn priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.cn +cnpricelessbeijing.com#pricelessbeijing.com.cn +cnpricelesshongkong.compricelesshonolulu.compricelesspick.compricelesssantiago.compricelesssydney.compricelesssurprises.compricelesstoronto.capricelesstv.com simplify.comsimplifycommerce.comcashpassportglobe.comgwktravelex.nl travelex.be travelex.bh travelex.catravelex.co.intravelex.co.jptravelex.co.nztravelex.co.uk travelex.comtravelex.com.autravelex.com.cn +cntravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.tr travelex.de travelex.fr travelex.it travelex.qatravelexae.comtravelexch.comtravelexmoneycard.combidvestbank.co.zaworldcurrencycard.co.zanab.demdex.net&"nationalaustraliaban.tt.omtrdc.net +† +MUJI muji.com muji.com.cn +cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.net +ž +NUROFEN +nurofen.at +nurofen.bg +nurofen.cn +cn nurofen.co.il nurofen.co.nz nurofen.co.uk nurofen.co.za nurofen.comnurofen.com.aunurofen.com.cn +cnnurofen.com.sg +nurofen.cz +nurofen.de +nurofen.es +nurofen.fr +nurofen.hr +nurofen.hu +nurofen.ie +nurofen.it nurofen.net +nurofen.no +nurofen.pl +nurofen.pt +nurofen.ro +nurofen.sk +nurofen.runurofengel.com51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com +å +MORTEIN +mortein.cn +cn mortein.co.in mortein.co.nz mortein.co.za mortein.commortein.com.aumortein.com.brmortein.com.ngmortein.com.pkmorteincam.compifpafarabia.com +ê +THOMSONREUTERS reuters.com +reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs +tr.com +N +CNBC cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com + +GAB gab.com +’ +CANON canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn +cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn +cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com +o +IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com +å +MOZILLA firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net ++ +TRELLO +trello.com trellocdn.com +: +WEIPHONE feng.com fengimg.com wfdata.club +â +HKT 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com +® +OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com +. +SXL mysxl.cn +sxl.cn  sxlcdn.cn +@ + ZUOYEBANG zuoyebang.cc zuoyebang.com +zybang.com +^ +CTEXCEL +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +" +LIHKG +lih.kg  lihkg.com +> +NOTION  notion.sonotion-static.com +notion.new +" +TED ted.com +tedcdn.com +) +MEITU  meitu.com meitudata.com +¡ +VOXMEDIA cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net +Š +ZEETV +z5.app +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com +ó +REAGROUPflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com +™ +SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com +0 +SOHU sohu.com +sohucs.com +itc.cn +Ð + OPENSTREETMAP openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.org ++ +VAPTCHA vaptcha.com vaptcha.net +ý +RIOThistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net +lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com +lpl.com.cn +cn pvp.net +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.com + + +TYPOGRAPHYtypography.com + +GFYCAT +gfycat.com + +MPV +mpv.io + +BILIPLUS biliplus.com +L +IMDBboxofficemojo.com imdb.com imdb.tomedia-imdb.com + + W3SCHOOLS w3schools.com +( +LAGOU  lagou.com lgstatic.com +2 +MORISAWAmorisawa.co.jptypesquare.com + +PINCONG pincong.rocks +Æ +SOFTBANK softbank sb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.net softbank.jp softbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com +ê + SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.com +L +LANZOU baidupan.com +lanzou.com lanzous.com woozooo.com + +3DM 3dmgame.com +O +COSTCOcostco-static.com +costco.comcostcobusinessdelivery.com +: + ENTERMEDIADBentermediadb.netentermediadb.org + +ERJI erji.net +² +BLIZZARD blizzard.cn cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn cn battle.netbattlenet.com.cn @@ -6764,83 +7653,1397 @@ battle.netbattlenet.com.cn cnwow.nosdn.127.net cnblizzcon-a.akamaihd.netblz.nosdn.127.net cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn -cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net -lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com -lpl.com.cn -cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com -cn -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv fanatical.comhumblebundle.com - -DOOM9  doom9.org -¦ -JUEJIN  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com -A -MEIZU flyme.cn meizu.cn  meizu.com  mzres.com -r - LAUNCHPAD launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org -6 - RUBYCHINAruby-china.orgrubyconfchina.org -- -ASUS asus.com asus.com.cn cn +£ +MINISOloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn +cn  miniso.co miniso.co.id miniso.co.tz +miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn +cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn +cn myminiso.com +´ + CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn + +MOCHA mochajs.org +› +NAVER +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com + +ZHANQI  zhanqi.tv +. +ANDROID android.comandroidify.com +Ë{ +CATEGORY-ECOMMERCE  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk +adidas.com adidas.com.cn +cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com +bestbuy.ca +bestbuy.cn +cn bestbuy.combestbuy.com.cn +cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn +cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info +gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com +booking.cn +cn booking.com bstatic.comcostco-static.com +costco.comcostcobusinessdelivery.comcraigslist.org dmm.com  dmm.co.jpdmm-extension.com dmmapis.com21centuryaccess.com4ebaytraders.com adcommerce.cn +cn adcommerce.tv appforebay.cn +cnappsonebay.net +asebay.com +baazee.com +bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn +cn"connectcommerce.com.cn +cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn +cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn +cncyber-bay.com.cn +cncyber-bay.info cyber-bay.org +dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn +cn +ebay.co.nz +ebay.co.uk +ebay.co.ve +ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn +cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn +cn ebay.nl ebay.org ebay.org.cn +cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn +ebay.yn.cn +cn +ebay.zj.cn +cn +ebay25.com +ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn +cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com +ebayca.com +ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn +cnebayclassifieds.com"ebayclassifieds.com.cn +cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com +ebayde.com ebaydesc.cn +cnebaydesc.com.cn +cnebaydlassifieds.com +ebaydns.cn +cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn +cnebayenterprise.com!ebayenterprise.com.cn +cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com +ebayit.comebayjewelry.com ebayjob.com +ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn +cnebaymotors.comebaymotors.com.cn +cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com +ebayon.com +ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn +cnebaypedia.com.cn +cnebayprivacycenter.com +ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn +cnebayshopping.com.cn +cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn +cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn +cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com +ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn +cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net +myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn +cn prostores.comprostores.com.cn +cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com +svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn +cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com +gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn +cnkijijidns.com.cn +cnkijijiforbusiness.ca +kijijii.ca kijijiraps.ca kijji.ca +kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn +cn +q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn +cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com +nexcat.com nexpart.com +nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.comfarfetch-apps.comfarfetch-contents.com farfetch.cn +cn farfetch.comfarfetch.com.cn +cn farfetch.netfarfetch.net.cn +cn  fflnk.net gfashion.com guccichimeforchange.orggucci.cn +cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com +hm.com hm.com.cn +cnhomedepot-static.com homedepot.comikea.cn +cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.comloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn +cn  miniso.co miniso.co.id miniso.co.tz +miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn +cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn +cn myminiso.com muji.com muji.com.cn +cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.netnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com +eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com +gonike.comhandbags-nike.comhightopnikes.com +idnike.cominikesneakers.com just-do-it.cn +cn justdoit.uskicksnike1.comkidsnikeshoes.com +mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn +cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn +cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com +nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn +cnnikebetterworld.com"nikebetterworld.com.cn +cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com +nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn +cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org +nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn +cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn +cn nikeid.com.cn +cnnikeidshoes.com nikeinc.comnikeinc.com.cn +cnnikeincchemistry.comnikeinstock.com +nikeit.comnikeitalia.com nikeitaly.com +nikekd.com nikekid.com +nikelab.cn +cnnikelab.com.cn +cn nikelink.comnikeliuxiang.cn +cnnikeliuxiang.comnikeliuxiang.com.cn +cn nikelives.comnikelunarglide.com nikemall.cn +cnnikemall.com.cn +cnnikemarketing.com nikenews.com +niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn +cnnikerunclub.com.cn +cnnikerunner.comnikerunning.com.cn +cnnikerunningshoes.com +nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn +cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh +swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e nordstrom.comnordstrommedia.com shopee.cn +cn shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com +cn +shp.ee +target +target.comtargetimg1.com walmart wal-mart.com +wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com +wmt.co +- +MYRADIO +myradio.hkmyradio.com.hk +. + POCKETCASTS +pca.stpocketcasts.com +' + UBERADS-ADS uberads.com +ads + +ADBLOCKgetadblock.com + +AP +ap.org +apnews.com + +AVSFORUM avsforum.com +»¼ +CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads bootcss.com +bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com +maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com +yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com dangdang.com ddimg.cn +ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads lianjia.com  ljcdn.com manmanbuy.com dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com +pddpic.com pinduoduo.com yangkeduo.com  smzdm.com +zdmimg.com cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com  vancl.com vanclimg.com  vcimg.com +youzan.com yzcdn.cn youzanyun.com +ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn +ads +acplay.netdandanplay.com +ali213.net +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com +gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads  jjwxc.net ku6.com +ku6cdn.com +ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com +yximgs.com log-sdk.gifshow.com +adswlog.kuaishou.com +ads  kgimg.com  kugou.com +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com miaopai.com +mihoyo.com bh3.com  pplive.cn +pplive.com pptv.com qingting.fm  sfacg.com +61.com +taomee.com +tapimg.com +taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com +vgtime.com ximalaya.com  xmcdn.com +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +duowan.com dwstatic.com +yy.com yystatic.com  zhanqi.tv +heytea.com chiphell.com +douban.com  douban.fm doubanio.com erji.net +hacpai.com  ld246.com +nga.cn 178.com +ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +afdian.net afdiancdn.com agora.io +agoraio.cn agoralab.co +antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com +pg0.cn +chinaz.com +chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com +jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com +lanzou.com lanzous.com woozooo.com +liepin.com +lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net +renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com +wiwide.com +sojump.com +wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn +wf.pub speiyou.com +xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me +coding.net csdn.net +csdnimg.cn  deepin.cn +deepin.com  deepin.io +deepin.org  gitee.com gitee.iojinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com +tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn +sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com +tipdim.orgxueyuanjun.com alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads zuoyebang.cc zuoyebang.com +zybang.com baidu +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com +bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.com +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.comanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.com +rtx.com.cnservicewechat.com smtcdns.com smtcdns.net +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com wegame.com.cn +weiyun.com alloyteam.com imweb.io ivweb.io +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiflash.comxiaomiyoupin.com +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com +055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com +114chn.com 114piaowu.com 114shouji.com +119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com +310win.com +315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc +35.com 3533.com 360aiyi.com +360doc.com  360jq.com 360zhyx.com +365azw.com +365dmp.com +37.com 3733.com 3839.com +39.net 3conline.com 3d66.com +3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me +50bang.org +51.com 51.la +510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com +51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com +52miji.com 52pk.com 52z.com 53kf.com +55.com +56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com +6rooms.com 714.com 7230.com +72byte.com  7down.com 7k7k.com  7moor.com 7po.com +7x24cc.com +7xdown.com  818ps.com  84399.com 885.com +900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com +9xgame.com 9xu.com a9vg.com +aardio.com +adxvip.com +afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com +aizhan.comalittle-tea.com +allyes.com anfensi.com +anquan.org +anruan.com +aotrip.net  aoyou.com apk3.com apk8.com appchina.com +appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com +bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com +bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com +caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com +carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org +ch.com chachaba.com changba.com chashebao.comchazhengla.com +che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com +chouti.com chuangxin.com chuansong.mechuansongme.com +chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com +cnbeta.com cnbetacdn.com cnblogs.com +cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com +cofeed.com +cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com +csmjzs.com csslcloud.net +ctfile.com ctiforum.com ctoutiao.com  ctsbw.com +cubead.com  cwxzx.com +cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com +danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com +dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com +diopic.net diyiyou.com dj99.com  docin.com dockerone.com +dockone.io dogedoge.com +donews.com +dongao.comdongguantoday.com dopa.com +douxie.com +downcc.com downxia.com +downyi.com +dpfile.comdreams-travel.comdrivergenius.com +dui.ai duiopen.com duoduocdn.com duokanbox.com +duomai.com duoshuo.com  duote.com dxpmedia.com +dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com +eayyou.com  ebico.com  ebrun.com +ecitic.com ecjobhome.com +edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com +emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net +feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com +fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com +gaodun.comgaoshouyou.comgaoxiaojob.com +gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com +gezida.com gfan.com +giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com +gwdang.comgxairlines.com +gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc +heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com +hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com +houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com +ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com +iheima.com ijiandao.com +ikafan.com im2maker.com  im-cc.com +imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com +ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com +itjuzi.com  itmop.com  iyiou.com iyunxiao.com +izuche.com +jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com +job910.com  jobjm.com jsbc.com +jsrdgg.com jstv.com  jsyks.com juefeng.com +julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com +kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com +kimiss.com kingdee.com kkzj.com +kongfz.com koolearn.com +kouclo.com +koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com +kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com +liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com +likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net +longre.comlongtugame.com longzhu.com  lotpc.com +loupan.com +lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com +lvmama.comlvsexitong.com  lxway.com +magedu.com maisanqi.com +mamecn.com manhuatai.com manmankan.com +mapbar.com mayi.com +mayihr.com +mcbang.com  mdpda.com mechina.org +mediav.com meifang.com meika360.com meilishuo.commeimingteng.com +meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com +miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc +mmbang.com mmbang.info +mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com +mokahr.com moleecel.commoocollege.com mop.com msanjia.com +mscbsc.com mukewang.com +mumayi.com +muomou.com muzhiwan.com +mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com +newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com +oicq88.com  okooo.com +ol-cdn.com +ol-img.com oldboyedu.com +oneapm.com onegreen.net +oneyac.comonlinedown.netonlinesjtu.com onlylady.com +opdown.com oray.com  ottcn.com +oupeng.com +p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com +pcbeta.com +pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com +pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com +pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com +qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com +qschou.com +qtmojo.com +qudong.com +qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com +runoob.com rzrc114.com  saibo.com sanguosha.com +sanwen.net  scdng.com scoregg.com +sczsxx.com sdo.com sec-wiki.com +sencdn.com seniverse.comsenlinjimore.com +sgamer.com shanbay.com shang360.com +shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shutcm.com +simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com +snimay.com  sobot.com sofreight.com softwhy.com +sojson.com +somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com +sunrtb.com supermap.comsupermapcloud.com +sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com +tao123.com +taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com +tianqi.com tietuku.com +tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net +tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com +tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools  ucbug.com +uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com +vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com +wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  womai.com wondercv.com wonnder.com +wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com +wscdns.com  wtown.com  wumii.com +wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com +xfdown.com +xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com +xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com +xzking.com yahui.cc +yaolan.com  yaoyl.com  yaozh.com +ycgame.com +yeepay.com +yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com +yiqifa.com +yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com +yocajr.com +youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com +yslyhr.com  ysten.com +yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com +yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com +yxdown.com +yytcdn.com +zampda.net zampdsp.com zastatic.com +zbjimg.com zczj.com +zdfans.com zgjm.org +zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com +zhenai.com  zhibo8.cc  zhidx.com zhifang.com +zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com +zpb365.com +zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com +fm3838.comlarsonlimited.com runsheng.com vzuu.com +zoom3g.com +zoomyou.cn chaoxing.com chaoxing.cc +9 +MOGUJIE mogu.com mogucdn.com mogujie.com +Œ +ESPN espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +Y +JFROG  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net +? +MAFENGWO mafengwo.cn mafengwo.com mafengwo.net ++ +RUBY ruby-lang.org rubygems.org +Œ +AMAZON amazon-adsystem.com +adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws +amazonimdb +kindle xn--cckwcxetdxn--jlq480n2rg yamaxun +zappos a2z.comaboutamazon.cn +cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn +cnalexafund.com.cn +cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn +cn amazon.co.jp amazon.co.uk +amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl +amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn +cn!amazonbusiness.com.cn +cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn +cnamazonchoice.com.cn +cnamazonchoices.cn +cn amazonchoices.com.cn +cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn +cn amazoninspire.com.cn +cnamazonlaunchpad.cn +cnamazonlaunchpad.com"amazonlaunchpad.com.cn +cn amazonlending.com.cn +cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn +cnamazonnow.com.cn +cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn +cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn +cnprimeday.com.cn +cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de +yamaxun.cn +cn yamaxun.comz.cn +cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn +cnamazonworkdocs.com!amazonworkdocs.com.cn +cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn +cn kindle.co.jp kindle.co.uk +kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn +cnkindleoasis.comkindleoasis.com.cn +cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn +cn#amazonprimevideo.com.cn +cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com +cn-!images-cn-8.ssl-images-amazon.com +cn +ª +DISNEYabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com +babble.com babyzone.com +dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za +disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com +dssott.comgo-disneyworldgo.com +go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com +o +UNITY  unity.com unity3d.com!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +ô +EPOCHMEDIAGROUP dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net +etviet.comlagranepoca.com ntd.com  ntdca.com +ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz + +XUNLEI +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com +% +ZHIHU  zhihu.com  zhimg.com +k + PANASONIC  panasonic panasonic.cn +cn panasonic.com panasonic.jp technics.com +- + ACFUN-ADS apilog-web.acfun.cn +ads +Ý +BESTBUY bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com +bestbuy.ca +bestbuy.cn +cn bestbuy.combestbuy.com.cn +cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn +cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info +gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com +c +COMODO +comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com +¸ +SINA-ADS 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +û + STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com +F + +TAGTIC-ADS g1.tagtic.cn +adsxy-log.tagtic.cn +ads +·2 +ALIBABA alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to +ele.me elemecdn.com eleme.cnteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net +© +CBScbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com +cbsi.video +cbsiam.com  cbsig.net +cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com +viacbs.com +viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com +` +OAN aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com ++ +WIKIDOT wdfiles.com wikidot.com +9 + YCOMBINATORstartupschool.orgycombinator.com + +CATEGORY-VPNSERVICES 928.plus +zind.cloud boslife.biz boslife.net +cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net n3ro.lol n3ro.net n3ro.wtf nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.meshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.netairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz aaex.uk amytele.com +ark.tobaicaonetwork.com bighead.groupblinkload.zone  cloudn.me  conair.me cordcloud.org ctyun.online geph.io  maying.comocloudplus.com  mray.club muncloud.dog renzhe.cloud +ssplive.pw +ssrpass.pwstc-server.com + + +CRAIGSLISTcraigslist.org +H + NEXITALLY nexitally.comnexitallysafe.com nexitcore.com +— +LINE +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp +6 +75TEAM 75.team +75team.com baomitu.com +g + ATLASSIAN atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.com + +CODE code.org +3 +QUORA  quora.com quoracdn.net qr.ae +3 + SEGMENTFAULTsegmentfault.com  sifou.com + + +STATICFILEstaticfile.org +y +FONTSHOP fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com +r + +PURIKONEJP"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.net +C +ADDTHIS addthis.comaddthiscdn.comaddthisedge.com Š+ BAIDU a.baidu.com ads ad.duapps.com @@ -7010,125 +9213,1268 @@ hao123.com hao123img.com hao222.com haokan.com jomocdn.net jomodns.com mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -z -CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org -Q -SSRCLOUDairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com +' +CODING  coding.me +coding.net +˜ +CCTV cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn +U +TVER +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp +™ +TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com +twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.co +© +WESTERNDIGITALg-technology.com +sandisk.ae +sandisk.it +sandisk.cn +cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw +sandisk.de +sandisk.es +sandisk.fr +sandisk.hk +sandisk.id +sandisk.in +sandisk.nl +sandisk.sg +wd.com wdc.comwesterndigital.com +€ + YUANFUDAO banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com + +OPENJSFOUNDATION amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.org +0 +OPENWRT openwrt.orglede-project.org +# +QT qt.ioqt-project.org +) +TUTANOTA tuta.io tutanota.com +( +CHINAZ +chinaz.com +chinaz.net + +CUTTLY cutt.ly ++ +COWLEVEL cowlevel.net  cdncl.net +‰ +SONY playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net À ADIDAS  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk adidas.com adidas.com.cn cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se -F +, +CYLINK +cylink.procylink0122.icu + +FEEDLY +feedly.com +Ë + KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.com +D -DEVIANTARTdeviantart.comdeviantart.net da-files.com - -GITEE  gitee.com -0 -N3RO n3ro.lol n3ro.net n3ro.wtf - -ZHANQI  zhanqi.tv -d -BARRONSbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.com -œ -FINISH$dishwashingexpert.com.cn -cn  finish.at  finish.bg finish.co.kr finish.co.nz finish.co.uk finish.co.za finish.com.cn -cn finish.com.hr finish.com.tr  finish.de  finish.es  finish.fr  finish.gr  finish.hu  finish.lv  finish.pl  finish.pt  finish.ro  finish.si  finish.skfinisharabia.comfinishbrasil.com.brfinishdishwashing.cafinishdishwashing.com finishinfo.be finishinfo.clfinishinfo.comfinishinfo.com.arfinishinfo.com.au finishinfo.cz finishinfo.fi finishinfo.it finishinfo.jp finishinfo.nl finishinfo.no finishinfo.ru finishinfo.sefinishkilpailu.fi finishwin.beyarininsuyu.com -S - OGURY-ADS ogury.com -ads -presage.io -adsogury.co +LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com +Ñ +RARBG rarbg.me rarbg.toproxyrarbg.org rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com +H + ZYNGA-ADS zynga.com +ads#zyngaplayersupport.com ads +è +ALIYUNalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com +Ú + + BLOOMBERG  bloomberg bbgevent.com bbhub.io +bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video + +GUOKR  guokr.com  -PINCONG pincong.rocks -Ö - INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com +SAFECHAT safechat.com +« +XIAOMI +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiflash.comxiaomiyoupin.com +F + IDENTRUST identrust.comidentrust.co.uk identrust.net +3 + +STREAMABLE embed-cdn.comstreamable.com +* +GITBOOK gitbook.com +gitbook.io +2 +KU6 ku6.com +ku6cdn.com +ku6img.com +Š +SLACKslack-edge.comslack-imgs.com  slack.com +slackb.comslackcertified.com slackdemo.com slackhq.com + + WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com +wp.com  wpvip.com +j +BAHAMUT gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net +ö +ICBCicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn +¦ +JUEJIN  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com +b + YAHOO-ADS ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads + +KERNEL +kernel.org +š +KINGSOFT cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com +) +EASYLIST easylist.to lanik.us +ëº +GEOLOCATION-CN +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads bootcss.com +bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com +maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com +yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com dangdang.com ddimg.cn +ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads lianjia.com  ljcdn.com manmanbuy.com dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com +pddpic.com pinduoduo.com yangkeduo.com  smzdm.com +zdmimg.com cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com  vancl.com vanclimg.com  vcimg.com +youzan.com yzcdn.cn youzanyun.com +ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn +ads +acplay.netdandanplay.com +ali213.net +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com +gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads  jjwxc.net ku6.com +ku6cdn.com +ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com +yximgs.com log-sdk.gifshow.com +adswlog.kuaishou.com +ads  kgimg.com  kugou.com +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com miaopai.com +mihoyo.com bh3.com  pplive.cn +pplive.com pptv.com qingting.fm  sfacg.com +61.com +taomee.com +tapimg.com +taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com +vgtime.com ximalaya.com  xmcdn.com +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +duowan.com dwstatic.com +yy.com yystatic.com  zhanqi.tv +heytea.com chiphell.com +douban.com  douban.fm doubanio.com erji.net +hacpai.com  ld246.com +nga.cn 178.com +ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +afdian.net afdiancdn.com agora.io +agoraio.cn agoralab.co +antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com +pg0.cn +chinaz.com +chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com +jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com +lanzou.com lanzous.com woozooo.com +liepin.com +lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net +renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com +wiwide.com +sojump.com +wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn +wf.pub speiyou.com +xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me +coding.net csdn.net +csdnimg.cn  deepin.cn +deepin.com  deepin.io +deepin.org  gitee.com gitee.iojinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com +tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn +sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com +tipdim.orgxueyuanjun.com alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads zuoyebang.cc zuoyebang.com +zybang.com baidu +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com +bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.com +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.comanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.com +rtx.com.cnservicewechat.com smtcdns.com smtcdns.net +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com wegame.com.cn +weiyun.com alloyteam.com imweb.io ivweb.io +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiflash.comxiaomiyoupin.com +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com +055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com +114chn.com 114piaowu.com 114shouji.com +119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com +310win.com +315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc +35.com 3533.com 360aiyi.com +360doc.com  360jq.com 360zhyx.com +365azw.com +365dmp.com +37.com 3733.com 3839.com +39.net 3conline.com 3d66.com +3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me +50bang.org +51.com 51.la +510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com +51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com +52miji.com 52pk.com 52z.com 53kf.com +55.com +56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com +6rooms.com 714.com 7230.com +72byte.com  7down.com 7k7k.com  7moor.com 7po.com +7x24cc.com +7xdown.com  818ps.com  84399.com 885.com +900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com +9xgame.com 9xu.com a9vg.com +aardio.com +adxvip.com +afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com +aizhan.comalittle-tea.com +allyes.com anfensi.com +anquan.org +anruan.com +aotrip.net  aoyou.com apk3.com apk8.com appchina.com +appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com +bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com +bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com +caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com +carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org +ch.com chachaba.com changba.com chashebao.comchazhengla.com +che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com +chouti.com chuangxin.com chuansong.mechuansongme.com +chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com +cnbeta.com cnbetacdn.com cnblogs.com +cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com +cofeed.com +cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com +csmjzs.com csslcloud.net +ctfile.com ctiforum.com ctoutiao.com  ctsbw.com +cubead.com  cwxzx.com +cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com +danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com +dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com +diopic.net diyiyou.com dj99.com  docin.com dockerone.com +dockone.io dogedoge.com +donews.com +dongao.comdongguantoday.com dopa.com +douxie.com +downcc.com downxia.com +downyi.com +dpfile.comdreams-travel.comdrivergenius.com +dui.ai duiopen.com duoduocdn.com duokanbox.com +duomai.com duoshuo.com  duote.com dxpmedia.com +dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com +eayyou.com  ebico.com  ebrun.com +ecitic.com ecjobhome.com +edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com +emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net +feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com +fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com +gaodun.comgaoshouyou.comgaoxiaojob.com +gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com +gezida.com gfan.com +giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com +gwdang.comgxairlines.com +gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc +heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com +hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com +houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com +ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com +iheima.com ijiandao.com +ikafan.com im2maker.com  im-cc.com +imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com +ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com +itjuzi.com  itmop.com  iyiou.com iyunxiao.com +izuche.com +jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com +job910.com  jobjm.com jsbc.com +jsrdgg.com jstv.com  jsyks.com juefeng.com +julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com +kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com +kimiss.com kingdee.com kkzj.com +kongfz.com koolearn.com +kouclo.com +koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com +kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com +liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com +likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net +longre.comlongtugame.com longzhu.com  lotpc.com +loupan.com +lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com +lvmama.comlvsexitong.com  lxway.com +magedu.com maisanqi.com +mamecn.com manhuatai.com manmankan.com +mapbar.com mayi.com +mayihr.com +mcbang.com  mdpda.com mechina.org +mediav.com meifang.com meika360.com meilishuo.commeimingteng.com +meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com +miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc +mmbang.com mmbang.info +mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com +mokahr.com moleecel.commoocollege.com mop.com msanjia.com +mscbsc.com mukewang.com +mumayi.com +muomou.com muzhiwan.com +mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com +newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com +oicq88.com  okooo.com +ol-cdn.com +ol-img.com oldboyedu.com +oneapm.com onegreen.net +oneyac.comonlinedown.netonlinesjtu.com onlylady.com +opdown.com oray.com  ottcn.com +oupeng.com +p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com +pcbeta.com +pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com +pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com +pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com +qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com +qschou.com +qtmojo.com +qudong.com +qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com +runoob.com rzrc114.com  saibo.com sanguosha.com +sanwen.net  scdng.com scoregg.com +sczsxx.com sdo.com sec-wiki.com +sencdn.com seniverse.comsenlinjimore.com +sgamer.com shanbay.com shang360.com +shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shutcm.com +simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com +snimay.com  sobot.com sofreight.com softwhy.com +sojson.com +somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com +sunrtb.com supermap.comsupermapcloud.com +sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com +tao123.com +taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com +tianqi.com tietuku.com +tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net +tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com +tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools  ucbug.com +uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com +vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com +wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  womai.com wondercv.com wonnder.com +wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com +wscdns.com  wtown.com  wumii.com +wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com +xfdown.com +xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com +xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com +xzking.com yahui.cc +yaolan.com  yaoyl.com  yaozh.com +ycgame.com +yeepay.com +yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com +yiqifa.com +yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com +yocajr.com +youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com +yslyhr.com  ysten.com +yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com +yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com +yxdown.com +yytcdn.com +zampda.net zampdsp.com zastatic.com +zbjimg.com zczj.com +zdfans.com zgjm.org +zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com +zhenai.com  zhibo8.cc  zhidx.com zhifang.com +zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com +zpb365.com +zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com +fm3838.comlarsonlimited.com runsheng.com vzuu.com +zoom3g.com +zoomyou.cn chaoxing.com chaoxing.cc +ä +TLD-CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b +0 +BITLY +bit.ly  bitly.com bitly.is +- + PUBMATIC-ADSads.pubmatic.com +ads +ÿ +MANORAMAmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in +theweek.invanitaonline.com +vanitha.invanithaveedu.com + + MANMANBUY manmanbuy.com +» +VIU +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net + +HKGOLDEN hkgolden.com +± +ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com +# +DCARD dcard.io dcard.tw + +REMIREPO remirepo.net +œL +TLD-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup +olayan praxisapseek +vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci +hermesiwcjlc  lancaster lipsyloft mango  montblanc mrporter +netaporter +nextdirectnextnike oldnavy omega panerai  patagonia +piaget  piperlimepolo redstone +swatchaarp +abbott +abbvie aetna alcon +anthembms +boehringer caremore +cialis dabur  freseniusjnj merck mutuelle +sanofiaeg +airbus +alstom +aramco +blanco bosch +bostik +chesapeakechk crown +doosan +dupontflirfls flsmidth  gecompany grainger hitachi  honeywellifm ipirangajio komatsukoneksb  kuokgroup leclerclidl linde lottemanmtr reliance rexrothril rockwoolrwesandvikcoromant sandvik sapphiresca +schaeffler schmidt schwarzgroup schwarz senersewsncf statoil total +vanish +walter +warman weberweir woodsidezara zippo agakhanakdn +ansons +bharti +extraspace genting glean ikano +imamat  ladbrokes +livestrongmaif +mattel shell transformersvanawme astriumcern +emerck  hisamitsu lilly lundbeck lupin merckmsdmsdmtpc +otsuka +pfizer stadateva toray weather auspost deutschepostdhl epost fedex +pitneyaaa +abarthadac  alfaromeoaudi bentleybmw bridgestone bugatti buick cadillaccase +caseih  chevrolet chevy chrysler +datsun dodge +dunlop ferrarifiat  firestonefordgmc goodyear honda hyundai infiniti iveco +jaguarjeepkia lamborghini +lancia  landrover lexus lincoln maseratimini +mitsubishi mopar +newholland +nissanramseatsrt +suzuki +tatamotors +toyotatvs uconnect +volkswagen volvoaigo android apple bestbuy brother canondell digikey fujitsu  fujixerox  goldpointibm nikon nokia olympus  panasonic philips pioneer samsung sharpsony toshiba  yodobashi  allfinanzallfinanzberaterallfinanzberatungallyamericanexpressamexampanz banamex barclaycard barclaysbbtbbvabnl +bnpparibasbofa bradesco +capitalone cashbackbonuscbacfa chasecimb citadelciti commbank deloitte discover everbank fidelity hdfcbankhdfchsbcitaujcbjll jpmorganchase jpmorgankfhkpmg lacaixa lasalle lixil lplfinanciallplnab nadex netbanknorthwesternmutualopen +pictetpncpohl  pramerica +prudentialprupwcsaxosbiscbscor shriram softbank  statebank temasek +transunion ubankubs vanguardvisa wolterskluwerafamilycompany  aquarellediyduck +finish glade  homedepot  homegoods mrmuscleoffraid rightathome  scjohnsonaig allstateamericanfamily amfam amicaaxa chartis esurance farmers  goodhands guardian guardianlife iselect metlifemma +mutual +nationwide +nissaynorthlandinsurance +onyourside progressive redumbrella  statefarm +swiftcover thehartfordtiaatravelersinsurance  travelers travelguardtrvvig beats blockbusterbway netflix playstation showtimetab williamhillxboxasda bloomingdales +george  homesense justforulego macys  marshallsobiqvc safeway samsclub shopyourway staples +targetthd tiffany +tjmaxxtjx +tkmaxxvons walmartabb  accentureaceraco +active +airtel +amazonandaolawsaxis azure chatr +chrome cisco comcast +connectorscscdclkdish +docomodtvdwg emerson epson ericsson etisalat  fairwindsfido +flickr frogans frontierftrgbizgeaggeegle gmailgmogmx godaddygoog +googlegoogreeguge hangouthkt hotmailhtc +hughesieee iinet infosysinfy intel +intuitjavajcpjmpjprs juniperkddi +kindle +konamikpn lanxess liaison +lockermeo  microsoftmihmiimint mitekmit +mobily +mozaicmtn multichoice naspersnec neustar nexusnico +nortonntt +officeollo +oracle +orangeovh patchpayupccwqtel quest  richardli ricoh +rogers +sakurasaposassessfrshaw skolkovo skydrive skype sling smart stcgroupstc symantectatatcitdk telecity +telefonica terra translations  ultrabook unicornuol verisignvivavivo windows xfinity +xperia yahoo yamaxun +yandex yellowpages youtube +zappos +chanel clinique garnier  kerastase +kiehls lamer lancome +loreal +matrix +maybelline +natura origins +redkensvr barefoot beknown cityeatscookingchannel +cuisinella delmonte edekafage ferrero foodnetworkfood gallo heinz +kindermcd  mcdonalds pamperedchef +rocher +wilmarxn--3oq18vl8pn36axn--55qx5d8y0buji4b870uxn--5su34j936bgsgxn--b4w605ferd xn--cckwcxetd +xn--cg4bkixn--dkwm73cwpn xn--flw351exn--fzys8d69uvgmxn--hxt035cmppuelxn--hxt035czzpfflxn--j6w470d71isscxn--jlq480n2rgxn--jlq61u9w7bxn--kcrx77d1x4axn--kcrx7bb75ajk3bxn--mgba3a3ejtxn--mgba7c0bbn0axn--mgbaakc7dvfxn--mgbb9fbpob xn--ngbe9e0a xn--pgb3ceoj xn--qcka1pmcxn--w4r85el8fhu5dnra xn--w4rs40l avianca caravan changiairport cipriani clubmed delta firmdale +hilton hyatt kerryhotelskerrylogisiticskerryproperties marriott orientexpress  shangrila tradershotelstui +viking +virgin +webjetablecbre chintai  frontdoor +lefrakabc africamagicartebbc  canalpluscbncbsdstv +eurovisionfox +gallup globogotv guardianmediahbohgtvimdbitv +kyknetmnet movistar mzansimagicnhk nowtvsbs sevensky spiegel starhub +supersport theguardian travelchannelweatherchannel bauhaus latrobe +monashrmit +4 +CSIS csis.orgcsis-prod.s3.amazonaws.com +ž +DIGICERT digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com +thawte.com  thawte.de  thawte.fr +©$ +INTEL +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn +cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn +cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt +altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com +intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn +cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com +niosii.com +niosii.netomekinteractive.com +omnitek.tv openamt.comopendroneid.orgoptanedifference.com +pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com +siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net +vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn +xscale.combarefootnetworks.com +* +JAVWIDE +javwide.tv javwide.com +; +UBERuber-assets.com uber.com ubereats.com +e +METART +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net + +STEEMIT steemit.com +B + APPLOVIN-ADS applovin.com +ads +applvn.com +ads +¦ + CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +& +JABLE cdnlab.live jable.tv +u +CREATIVECOMMONS ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net +h +51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +/ +FASTLANE fastlane.cifastlane.tools & SMZDM  smzdm.com zdmimg.com - - TRUSTWAVE trustwave.com -Ò - YOUKU-ADSactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads -û - HARPERCOLLINSbookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com -™ -INSIDERbusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.com -Í -ORIGIN dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.com -µ - PINTEREST -pin.it -pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com -H -BTTZYW -btt804.com -btt904.com -bttzyw.com -bttzyw.net - -FREENODE freenode.net -Ô -GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com -7 +£ +YANDEXxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il +yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md +yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net +yandex + +GCORES +gcores.com + +OK ok.ru +F +SOGOU +go2map.com sogo.com  sogou.com sogoucdn.com +Ì + CHINATELECOM +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com +/ +MAPBOX mapbox.cn +cn +mapbox.com +% +KUGOU  kgimg.com  kugou.com +” + EASTMONEY1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn +1 +HOMEBREW brew.shhomebrew.bintray.com + +IPIP ipip.net + +CAIXIN +caixin.com +® +CATEGORY-BANK-CN +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +à +DUREXdewitwithdurex.com dotherex.com durex-shop.chdurex-shopline.comdurex-slovenia.si durex.at durex.be durex.cl durex.co.id durex.co.il durex.co.nz durex.co.th durex.co.uk durex.co.za  durex.com durex.com.au durex.com.bd durex.com.cn +cn durex.com.co durex.com.hr durex.com.my durex.com.ng durex.com.pe durex.com.ph durex.com.pk durex.com.sg durex.com.tr durex.cz durex.de durex.dk durex.ee durex.es durex.fi durex.fr durex.hu durex.ie durex.it durex.jp durex.lv durex.mx durex.nl durex.no durex.pl durex.pt durex.ro durex.ru durex.se durex.us durexcam.comdurexcanada.comdurexchina.comdurexchina.com.cn +cndurexindia.comdurexloveclub.comdurexukraine.com durexusa.comlovesexdurex.cn +cnlovesexdurex.complaybydurex.com shopdurex.com trydurex.net trydurex.tv +: +POLYMERpolymer-project.orgpolymerproject.org ++ +MYFONTS myfonts.com myfonts.net +S +PORNHUB +phncdn.com phprcdn.com pornhub.compornhubpremium.com += +LANDIAN +lancdn.comlandiannews.com  wsoso.com +D -LONDONREALfreedomplatform.tv londonreal.tv -© -VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz -– -WEBEX webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr -³” +POCOIQ-ADS cdn.pocoiq.cn +ads oct.pocoiq.cn +ads +«• CATEGORY-ADS apilog-web.acfun.cn ads adcolony.com ads @@ -7712,1607 +11058,50 @@ w.cnzz.com ads zynga.com ads#zyngaplayersupport.com ads 51y5.net a.adtng.com -aaxads.com +aaxads.comaddthisedge.com +adtrue.com ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com -exosrv.comimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.topkepler-37b.com -lqc006.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn -, -RENREN -renren.comrenren-inc.com -Á - CATEGORY-PORN bongacams.com -bcicdn.com bcrncdn.com -btt804.com -btt904.com -bttzyw.com -bttzyw.net e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org heydoga.com  heyzo.com cdnlab.live jable.tv -javbus.com javbus22.com javfinder.sh findercdn.me o0-2.com -javwide.tv javwide.comlivejasmin.com dditsadn.com dditscdn.com -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net -phncdn.com phprcdn.com pornhub.compornhubpremium.com scoreland.comcdn77.scoreuniverse.com  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com -ads xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youjizz.comyjcontentdelivery.com 0plkijj.vip  114av.xyz 16fhgdty.xyz 18novel.xyz -1jjdg2.vip -1jsa22.vip  1pondo.tv  51dh.site 520aa.tv 5278.cc -52hyse.com 54647.online 69story.com 69vj.com  721av.com -7mm.tv -85tube.com 91.51rmc.com -91porn.com 920share.com -a.91gay.me a.kslive.tv aavs.xyz  agzy1.com aibaobei.me aimei133.com airav.ccanimezilla.comasianpornmovies.com av01.tv  av1688.cc av6k.com avfox.cc  avgle.com -avinin.com -avmoo.cyou avn.com -avpanda.cc -avsee01.tv avseesee.com bangbros.com beeg.combesthentaitube.com brazzers.com -buzzav.com  caime.xyz calvappd.me cam4.comchaturbate.com cslpldyb.me  dkk37.comdownload.91porn005.medownload.i91av.org -dvh30n.vip eporner.comfanhaodian.comflirt4free.com follasian.com -gaypad.net  gouri.xyz  hanime.tv -hanime1.me  hegre.com hpjav.tv hqporner.com hsxhr.ccichineseporn.com  iijav.com  immxd.com isexlove.tw isexomega.tw jable.tvjapan-whores.comjapanesebeauties.net jav.guru jav01.cc -jav101.com  jav168.cc -jav321.com javcc.cc  javcc.com -javdoe.com javdove8.xyz  javfor.me javfull.net  javhd.com  javhd.pro javhd3x.com javhdfree.netjavlibrary.com javmost.com  javqd.com javynow.com  jgg18.xyz jiayoulu.com jinnaju.com jjdong7.com -johren.net kindgirls.com kissjav.com kphimsex.net  love7.xyz lp99.pw lsnzxzy1.com lubetube.com -lululu.one manyvids.com mdlf.xyz myavfun.commydirtyhobby.commyfreecams.com nekoxxx.com netflav.com nhentai.netohyeah1080.com -onejav.comosakamotion.netp3.csgfnmdb.com papalah.com  pigav.com  popjav.tv pornbest.org -pornhd.com porntea.com  press.vin -pyhapp.com -qingse.one  r18lu.comrealitykings.com redtube.com -rule34.xxx seqingx.com seselah.com sextop1.net -sexzy4.com -soirt4.funsouth-plus.net spankbang.com stripchat.com -sub147.com  swag.live t66y.comtbr.tangbr.net theav.cctheporndude.com -thisav.com thtmod1.com -tkb008.xyztokyomotion.net  tssp.best  tube8.comtubetubetube.com upjav.ccvaginacontest.com vgg8.com vjav.comwatchjavonline.com wuso.me  wzmyg.com  x-art.com x18r.com  x99av.com  xo104.com  xtube.com  youav.com youporn.com -y - QINGCLOUD frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.com -, -PAOFUYUN paofu.cloud paofuyun.me - -3DM 3dmgame.com - -CNKI cnki.net -ñ -WANGSU  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org -¯ - XIAOMITV-ADSad.intl.xiaomi.com -ads ad.mi.com -ads ad.xiaomi.com -adsadmob.xiaomi.com -adsad1.xiaomi.com -adsmistat.xiaomi.com -adstracking.miui.com -adsadv.sec.miui.com -ads"adv.sec.intl.miui.com -ads"misc.in.duokanbox.com -ads ad.hpplay.cn -adsadeng.hpplay.cn -ads kuyun.com -ads umeng.com -ads -š -CCBccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn -¢ -CITIC citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com -f -OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads -Í - TENCENT-ADS ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -J -36KR36dianping.com 36kr.com 36krcdn.com 36krcnd.com -œ -HUOBI -hbabit.com -hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.com -A - PINDUODUO -pddpic.com pinduoduo.com yangkeduo.com -5 -SENSORSDATA-ADS"static.sensorsdata.cn -ads -/ -ADGUARDadguard-vpn.com adguard.com - -MEWE mewe.com - -DOI doi.org doi.info -Ë -GITHUB npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com -2 -REABBLE -reabble.cn -cn reabble.com -û - STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com -¥ - MEADJOHNSONenfinitas.com.cn -cnmeadjohnson.commeadjohnson.com.cn -cnmeadjohnson.com.hkmeadjohnson.com.twmeadjohnson.net -ˆ -SINA  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -¥ -YUEWEN -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -, -GANJI  ganji.comganjistatic1.com -& -JABLE cdnlab.live jable.tv - -OPENJSFOUNDATION amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.org -™ -SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com - -UDACITY udacity.com -« -XIAOMI -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -¸ -SINA-ADS 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -/ - -THEINITIUMtheinitium.com  init.shop - -WEBTYPE webtype.com -Ѻ -GEOLOCATION-CN -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads bootcss.com -bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com -maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com -pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +exosrv.com +go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com +lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn +ª + 58TONGCHENG 58.com  58.com.cn 5858.com  58che.com 58xueche.com anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com dangdang.com ddimg.cn -ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads lianjia.com  ljcdn.com manmanbuy.com dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com -pddpic.com pinduoduo.com yangkeduo.com  smzdm.com -zdmimg.com cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com +’ +AZURE azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.com +„ + TONGCHENG 40017.cn 17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com  vancl.com vanclimg.com  vcimg.com -youzan.com yzcdn.cn youzanyun.com -ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn -ads -acplay.netdandanplay.com -ali213.net -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com -gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads  jjwxc.net ku6.com -ku6cdn.com -ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads  kgimg.com  kugou.com -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com miaopai.com -mihoyo.com bh3.com  pplive.cn -pplive.com pptv.com qingting.fm  sfacg.com -61.com -taomee.com -tapimg.com -taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com -vgtime.com ximalaya.com  xmcdn.com -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -duowan.com dwstatic.com -yy.com yystatic.com  zhanqi.tv -heytea.com chiphell.com -douban.com  douban.fm doubanio.com erji.net -hacpai.com  ld246.com -nga.cn 178.com -ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -afdian.net afdiancdn.com agora.io -agoraio.cn agoralab.co -antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com -pg0.cn -chinaz.com -chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com -jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com -lanzou.com lanzous.com woozooo.com -liepin.com -lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net -renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com -wiwide.com -sojump.com -wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn speiyou.com -xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me -coding.net csdn.net -csdnimg.cn  deepin.cn -deepin.com  deepin.io -deepin.org  gitee.comjinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com -tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn -sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com -tipdim.orgxueyuanjun.com alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads zuoyebang.cc zuoyebang.com -zybang.com baidu -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com -bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.com -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.comanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.com -rtx.com.cnservicewechat.com smtcdns.com smtcdns.net -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com wegame.com.cn -weiyun.com alloyteam.com imweb.io ivweb.io -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn -j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com -055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com -114chn.com 114piaowu.com 114shouji.com -119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com -310win.com -315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc -35.com 3533.com 360aiyi.com -360doc.com  360jq.com 360zhyx.com -365azw.com -365dmp.com -37.com 3733.com 3839.com -39.net 3conline.com 3d66.com -3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me -50bang.org -51.com 51.la -510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com -51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com -52miji.com 52pk.com 52z.com 53kf.com -55.com -56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com -6rooms.com 714.com 7230.com -72byte.com  7down.com 7k7k.com  7moor.com 7po.com -7x24cc.com -7xdown.com  818ps.com  84399.com 885.com -900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com -9xgame.com 9xu.com a9vg.com -aardio.com -adxvip.com -afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com -aizhan.comalittle-tea.com -allyes.com anfensi.com -anquan.org -anruan.com -aotrip.net  aoyou.com apk3.com apk8.com appchina.com -appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com -bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com -bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com -caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com -carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org -ch.com chachaba.com changba.com chashebao.comchazhengla.com -che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com -chouti.com chuangxin.com chuansong.mechuansongme.com -chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com -cnbeta.com cnbetacdn.com cnblogs.com -cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com -cofeed.com -cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com -csmjzs.com csslcloud.net -ctfile.com ctiforum.com ctoutiao.com  ctsbw.com -cubead.com  cwxzx.com -cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com -danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com -dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com -dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com -diopic.net diyiyou.com dj99.com  docin.com dockerone.com -dockone.io dogedoge.com -donews.com -dongao.comdongguantoday.com dopa.com -douxie.com -downcc.com downxia.com -downyi.com -dpfile.comdreams-travel.comdrivergenius.com -dui.ai duiopen.com duoduocdn.com duokanbox.com -duomai.com duoshuo.com  duote.com dxpmedia.com -dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com -eayyou.com  ebico.com  ebrun.com -ecitic.com ecjobhome.com -edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com -emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net -feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com -fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com -gaodun.comgaoshouyou.comgaoxiaojob.com -gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com -gezida.com gfan.com -giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com -gwdang.comgxairlines.com -gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc -heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com -hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com -houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com -ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com -iheima.com ijiandao.com -ikafan.com im2maker.com  im-cc.com -imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com -ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com -itjuzi.com  itmop.com  iyiou.com iyunxiao.com -izuche.com -jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com -job910.com  jobjm.com jsbc.com -jsrdgg.com jstv.com  jsyks.com juefeng.com -julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com -kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com -kimiss.com kingdee.com kkzj.com -kongfz.com koolearn.com -kouclo.com -koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com -kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com -liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com -likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net -longre.comlongtugame.com longzhu.com  lotpc.com -loupan.com -lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com -lvmama.comlvsexitong.com  lxway.com -magedu.com maisanqi.com -mamecn.com manhuatai.com manmankan.com -mapbar.com mayi.com -mayihr.com -mcbang.com  mdpda.com mechina.org -mediav.com meifang.com meika360.com meilishuo.commeimingteng.com -meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com -miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc -mmbang.com mmbang.info -mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com -mokahr.com moleecel.commoocollege.com mop.com msanjia.com -mscbsc.com mukewang.com -mumayi.com -muomou.com muzhiwan.com -mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com -newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com -oicq88.com  okooo.com -ol-cdn.com -ol-img.com oldboyedu.com -oneapm.com onegreen.net -oneyac.comonlinedown.netonlinesjtu.com onlylady.com -opdown.com oray.com  ottcn.com -oupeng.com -p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com -pcbeta.com -pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com -pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com -pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com -qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com -qschou.com -qtmojo.com -qudong.com -qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com -runoob.com rzrc114.com  saibo.com sanguosha.com -sanwen.net  scdng.com scoregg.com -sczsxx.com sdo.com sec-wiki.com -sencdn.com seniverse.comsenlinjimore.com -sgamer.com shanbay.com shang360.com -shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com -shutcm.com -simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com -snimay.com  sobot.com sofreight.com softwhy.com -sojson.com -somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com -sunrtb.com supermap.comsupermapcloud.com -sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com -tao123.com -taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com -tianqi.com tietuku.com -tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net -tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com -tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools  ucbug.com -uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com -vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com -wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com -win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  womai.com wondercv.com wonnder.com -wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com -wscdns.com  wtown.com  wumii.com -wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com -xfdown.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com -xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com -xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com -xzking.com yahui.cc -yaolan.com  yaoyl.com  yaozh.com -ycgame.com -yeepay.com -yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com -yiqifa.com -yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com -yocajr.com -youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com -yslyhr.com  ysten.com -yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com -yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com -yxdown.com -yytcdn.com -zampda.net zampdsp.com zastatic.com -zbjimg.com zczj.com -zdfans.com zgjm.org -zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com -zhenai.com  zhibo8.cc  zhidx.com zhifang.com -zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com -zpb365.com -zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com -fm3838.comlarsonlimited.com runsheng.com vzuu.com -zoom3g.com -zoomyou.cn chaoxing.com chaoxing.cc -r - -PURIKONEJP"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.net -» -PCCW 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hk -( -UDEMY  udemy.com udemycdn.com -* -BETTEREXPLAINEDbetterexplained.com -Œ -CATEGORY-SCHOLAR-CN -csdl.ac.cn  las.ac.cn cnki.netwanfangdata.com.cn  apabi.comcnthinkers.com  cqvip.com -$ - HUANGHUAGANGhuanghuagang.org -é -MINImini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com -mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl -mini.co.cr -mini.co.id -mini.co.il -mini.co.kr -mini.co.me -mini.co.th -mini.co.uk -mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua -mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com -minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com -minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com -trmini.comtroisrivieresmini.comyours-customised.mini.com -ª -NIKEnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com -eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com -gonike.comhandbags-nike.comhightopnikes.com -idnike.cominikesneakers.com just-do-it.cn -cn justdoit.uskicksnike1.comkidsnikeshoes.com -mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn -cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn -cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com -nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn -cnnikebetterworld.com"nikebetterworld.com.cn -cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com -nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn -cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org -nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn -cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn -cn nikeid.com.cn -cnnikeidshoes.com nikeinc.comnikeinc.com.cn -cnnikeincchemistry.comnikeinstock.com -nikeit.comnikeitalia.com nikeitaly.com -nikekd.com nikekid.com -nikelab.cn -cnnikelab.com.cn -cn nikelink.comnikeliuxiang.cn -cnnikeliuxiang.comnikeliuxiang.com.cn -cn nikelives.comnikelunarglide.com nikemall.cn -cnnikemall.com.cn -cnnikemarketing.com nikenews.com -niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn -cnnikerunclub.com.cn -cnnikerunner.comnikerunning.com.cn -cnnikerunningshoes.com -nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn -cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh -swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e -œL -TLD-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup -olayan praxisapseek -vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci -hermesiwcjlc  lancaster lipsyloft mango  montblanc mrporter -netaporter -nextdirectnextnike oldnavy omega panerai  patagonia -piaget  piperlimepolo redstone -swatchaarp -abbott -abbvie aetna alcon -anthembms -boehringer caremore -cialis dabur  freseniusjnj merck mutuelle -sanofiaeg -airbus -alstom -aramco -blanco bosch -bostik -chesapeakechk crown -doosan -dupontflirfls flsmidth  gecompany grainger hitachi  honeywellifm ipirangajio komatsukoneksb  kuokgroup leclerclidl linde lottemanmtr reliance rexrothril rockwoolrwesandvikcoromant sandvik sapphiresca -schaeffler schmidt schwarzgroup schwarz senersewsncf statoil total -vanish -walter -warman weberweir woodsidezara zippo agakhanakdn -ansons -bharti -extraspace genting glean ikano -imamat  ladbrokes -livestrongmaif -mattel shell transformersvanawme astriumcern -emerck  hisamitsu lilly lundbeck lupin merckmsdmsdmtpc -otsuka -pfizer stadateva toray weather auspost deutschepostdhl epost fedex -pitneyaaa -abarthadac  alfaromeoaudi bentleybmw bridgestone bugatti buick cadillaccase -caseih  chevrolet chevy chrysler -datsun dodge -dunlop ferrarifiat  firestonefordgmc goodyear honda hyundai infiniti iveco -jaguarjeepkia lamborghini -lancia  landrover lexus lincoln maseratimini -mitsubishi mopar -newholland -nissanramseatsrt -suzuki -tatamotors -toyotatvs uconnect -volkswagen volvoaigo android apple bestbuy brother canondell digikey fujitsu  fujixerox  goldpointibm nikon nokia olympus  panasonic philips pioneer samsung sharpsony toshiba  yodobashi  allfinanzallfinanzberaterallfinanzberatungallyamericanexpressamexampanz banamex barclaycard barclaysbbtbbvabnl -bnpparibasbofa bradesco -capitalone cashbackbonuscbacfa chasecimb citadelciti commbank deloitte discover everbank fidelity hdfcbankhdfchsbcitaujcbjll jpmorganchase jpmorgankfhkpmg lacaixa lasalle lixil lplfinanciallplnab nadex netbanknorthwesternmutualopen -pictetpncpohl  pramerica -prudentialprupwcsaxosbiscbscor shriram softbank  statebank temasek -transunion ubankubs vanguardvisa wolterskluwerafamilycompany  aquarellediyduck -finish glade  homedepot  homegoods mrmuscleoffraid rightathome  scjohnsonaig allstateamericanfamily amfam amicaaxa chartis esurance farmers  goodhands guardian guardianlife iselect metlifemma -mutual -nationwide -nissaynorthlandinsurance -onyourside progressive redumbrella  statefarm -swiftcover thehartfordtiaatravelersinsurance  travelers travelguardtrvvig beats blockbusterbway netflix playstation showtimetab williamhillxboxasda bloomingdales -george  homesense justforulego macys  marshallsobiqvc safeway samsclub shopyourway staples -targetthd tiffany -tjmaxxtjx -tkmaxxvons walmartabb  accentureaceraco -active -airtel -amazonandaolawsaxis azure chatr -chrome cisco comcast -connectorscscdclkdish -docomodtvdwg emerson epson ericsson etisalat  fairwindsfido -flickr frogans frontierftrgbizgeaggeegle gmailgmogmx godaddygoog -googlegoogreeguge hangouthkt hotmailhtc -hughesieee iinet infosysinfy intel -intuitjavajcpjmpjprs juniperkddi -kindle -konamikpn lanxess liaison -lockermeo  microsoftmihmiimint mitekmit -mobily -mozaicmtn multichoice naspersnec neustar nexusnico -nortonntt -officeollo -oracle -orangeovh patchpayupccwqtel quest  richardli ricoh -rogers -sakurasaposassessfrshaw skolkovo skydrive skype sling smart stcgroupstc symantectatatcitdk telecity -telefonica terra translations  ultrabook unicornuol verisignvivavivo windows xfinity -xperia yahoo yamaxun -yandex yellowpages youtube -zappos -chanel clinique garnier  kerastase -kiehls lamer lancome -loreal -matrix -maybelline -natura origins -redkensvr barefoot beknown cityeatscookingchannel -cuisinella delmonte edekafage ferrero foodnetworkfood gallo heinz -kindermcd  mcdonalds pamperedchef -rocher -wilmarxn--3oq18vl8pn36axn--55qx5d8y0buji4b870uxn--5su34j936bgsgxn--b4w605ferd xn--cckwcxetd -xn--cg4bkixn--dkwm73cwpn xn--flw351exn--fzys8d69uvgmxn--hxt035cmppuelxn--hxt035czzpfflxn--j6w470d71isscxn--jlq480n2rgxn--jlq61u9w7bxn--kcrx77d1x4axn--kcrx7bb75ajk3bxn--mgba3a3ejtxn--mgba7c0bbn0axn--mgbaakc7dvfxn--mgbb9fbpob xn--ngbe9e0a xn--pgb3ceoj xn--qcka1pmcxn--w4r85el8fhu5dnra xn--w4rs40l avianca caravan changiairport cipriani clubmed delta firmdale -hilton hyatt kerryhotelskerrylogisiticskerryproperties marriott orientexpress  shangrila tradershotelstui -viking -virgin -webjetablecbre chintai  frontdoor -lefrakabc africamagicartebbc  canalpluscbncbsdstv -eurovisionfox -gallup globogotv guardianmediahbohgtvimdbitv -kyknetmnet movistar mzansimagicnhk nowtvsbs sevensky spiegel starhub -supersport theguardian travelchannelweatherchannel bauhaus latrobe -monashrmit - - SPOTIFY-ADS'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com -ads +ly.com . -CABLETVcabletv.com.hk i-cable.com -$ -CAS -csdl.ac.cn  las.ac.cn -+ - -KUBERNETES kubernetes.io -k8s.io -m -WPS -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn -+ -COWLEVEL cowlevel.net  cdncl.net -\ -TAIKANG taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com -/ -REALTYPErealtype.co.jp realtype.jp -± -ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com - -ERJI erji.net -$ -SCMP scmp.com -i-scmp.com - -ADDTOANY addtoany.com - -LINUX  linux.org -v -NATIONALGEOGRAPHICnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.com -² -SAMSUNG samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn -cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com -7 -SCP scp-wiki.net  scpdb.org scpwiki.com -@ -HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com -) -LIANJIA lianjia.com  ljcdn.com -× -SOHU-ADSadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads -¤ - SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads - -DIDA365 dida365.com -U -DOWJONESdjreprints.com dowjones.com dowjones.iodowjoneson.com -° - EPICGAMESbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn -+ -WIKIDOT wdfiles.com wikidot.com - -GFYCAT -gfycat.com -… -AMP amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.net - -AP -ap.org -apnews.com -ž - ALJAZEERA -ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com -z -LINE -lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net -nhncorp.jp -¡¼ -CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads bootcss.com -bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com -maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com -pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com dangdang.com ddimg.cn -ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads lianjia.com  ljcdn.com manmanbuy.com dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com -pddpic.com pinduoduo.com yangkeduo.com  smzdm.com -zdmimg.com cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com  vancl.com vanclimg.com  vcimg.com -youzan.com yzcdn.cn youzanyun.com -ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn -ads -acplay.netdandanplay.com -ali213.net -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com -gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com +XDAxda-developers.com xda-cdn.com +6 +UDN udn.com +udn.com.twudnfunlife.com +¬ +DELL +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.com +¬ +IQIYI 71.am  iqiyi.com iqiyipic.com pps.tv ppsimg.com qiyi.com qiyipic.com qy.net @@ -9333,1108 +11122,14 @@ ppsimg.com qiyi.com qiyipic.com ads msg2.video.qiyi.com ads#policy.video.iqiyi.com adsyuedu.iqiyi.com -ads  jjwxc.net ku6.com -ku6cdn.com -ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads  kgimg.com  kugou.com -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com miaopai.com -mihoyo.com bh3.com  pplive.cn -pplive.com pptv.com qingting.fm  sfacg.com -61.com -taomee.com -tapimg.com -taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com -vgtime.com ximalaya.com  xmcdn.com -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -duowan.com dwstatic.com -yy.com yystatic.com  zhanqi.tv -heytea.com chiphell.com -douban.com  douban.fm doubanio.com erji.net -hacpai.com  ld246.com -nga.cn 178.com -ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -afdian.net afdiancdn.com agora.io -agoraio.cn agoralab.co -antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com -pg0.cn -chinaz.com -chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com -jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com -lanzou.com lanzous.com woozooo.com -liepin.com -lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net -renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com -wiwide.com -sojump.com -wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn speiyou.com -xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me -coding.net csdn.net -csdnimg.cn  deepin.cn -deepin.com  deepin.io -deepin.org  gitee.comjinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com -tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn -sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com -tipdim.orgxueyuanjun.com alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads zuoyebang.cc zuoyebang.com -zybang.com baidu -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com -bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.com -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.comanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.com -rtx.com.cnservicewechat.com smtcdns.com smtcdns.net -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com wegame.com.cn -weiyun.com alloyteam.com imweb.io ivweb.io -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn -j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com -055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com -114chn.com 114piaowu.com 114shouji.com -119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com -310win.com -315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc -35.com 3533.com 360aiyi.com -360doc.com  360jq.com 360zhyx.com -365azw.com -365dmp.com -37.com 3733.com 3839.com -39.net 3conline.com 3d66.com -3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me -50bang.org -51.com 51.la -510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com -51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com -52miji.com 52pk.com 52z.com 53kf.com -55.com -56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com -6rooms.com 714.com 7230.com -72byte.com  7down.com 7k7k.com  7moor.com 7po.com -7x24cc.com -7xdown.com  818ps.com  84399.com 885.com -900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com -9xgame.com 9xu.com a9vg.com -aardio.com -adxvip.com -afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com -aizhan.comalittle-tea.com -allyes.com anfensi.com -anquan.org -anruan.com -aotrip.net  aoyou.com apk3.com apk8.com appchina.com -appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com -bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com -bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com -caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com -carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org -ch.com chachaba.com changba.com chashebao.comchazhengla.com -che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com -chouti.com chuangxin.com chuansong.mechuansongme.com -chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com -cnbeta.com cnbetacdn.com cnblogs.com -cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com -cofeed.com -cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com -csmjzs.com csslcloud.net -ctfile.com ctiforum.com ctoutiao.com  ctsbw.com -cubead.com  cwxzx.com -cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com -danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com -dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com -dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com -diopic.net diyiyou.com dj99.com  docin.com dockerone.com -dockone.io dogedoge.com -donews.com -dongao.comdongguantoday.com dopa.com -douxie.com -downcc.com downxia.com -downyi.com -dpfile.comdreams-travel.comdrivergenius.com -dui.ai duiopen.com duoduocdn.com duokanbox.com -duomai.com duoshuo.com  duote.com dxpmedia.com -dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com -eayyou.com  ebico.com  ebrun.com -ecitic.com ecjobhome.com -edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com -emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net -feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com -fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com -gaodun.comgaoshouyou.comgaoxiaojob.com -gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com -gezida.com gfan.com -giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com -gwdang.comgxairlines.com -gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc -heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com -hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com -houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com -ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com -iheima.com ijiandao.com -ikafan.com im2maker.com  im-cc.com -imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com -ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com -itjuzi.com  itmop.com  iyiou.com iyunxiao.com -izuche.com -jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com -job910.com  jobjm.com jsbc.com -jsrdgg.com jstv.com  jsyks.com juefeng.com -julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com -kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com -kimiss.com kingdee.com kkzj.com -kongfz.com koolearn.com -kouclo.com -koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com -kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com -liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com -likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net -longre.comlongtugame.com longzhu.com  lotpc.com -loupan.com -lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com -lvmama.comlvsexitong.com  lxway.com -magedu.com maisanqi.com -mamecn.com manhuatai.com manmankan.com -mapbar.com mayi.com -mayihr.com -mcbang.com  mdpda.com mechina.org -mediav.com meifang.com meika360.com meilishuo.commeimingteng.com -meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com -miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc -mmbang.com mmbang.info -mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com -mokahr.com moleecel.commoocollege.com mop.com msanjia.com -mscbsc.com mukewang.com -mumayi.com -muomou.com muzhiwan.com -mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com -newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com -oicq88.com  okooo.com -ol-cdn.com -ol-img.com oldboyedu.com -oneapm.com onegreen.net -oneyac.comonlinedown.netonlinesjtu.com onlylady.com -opdown.com oray.com  ottcn.com -oupeng.com -p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com -pcbeta.com -pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com -pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com -pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com -qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com -qschou.com -qtmojo.com -qudong.com -qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com -runoob.com rzrc114.com  saibo.com sanguosha.com -sanwen.net  scdng.com scoregg.com -sczsxx.com sdo.com sec-wiki.com -sencdn.com seniverse.comsenlinjimore.com -sgamer.com shanbay.com shang360.com -shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com -shutcm.com -simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com -snimay.com  sobot.com sofreight.com softwhy.com -sojson.com -somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com -sunrtb.com supermap.comsupermapcloud.com -sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com -tao123.com -taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com -tianqi.com tietuku.com -tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net -tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com -tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools  ucbug.com -uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com -vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com -wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com -win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  womai.com wondercv.com wonnder.com -wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com -wscdns.com  wtown.com  wumii.com -wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com -xfdown.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com -xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com -xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com -xzking.com yahui.cc -yaolan.com  yaoyl.com  yaozh.com -ycgame.com -yeepay.com -yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com -yiqifa.com -yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com -yocajr.com -youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com -yslyhr.com  ysten.com -yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com -yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com -yxdown.com -yytcdn.com -zampda.net zampdsp.com zastatic.com -zbjimg.com zczj.com -zdfans.com zgjm.org -zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com -zhenai.com  zhibo8.cc  zhidx.com zhifang.com -zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com -zpb365.com -zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com -fm3838.comlarsonlimited.com runsheng.com vzuu.com -zoom3g.com -zoomyou.cn chaoxing.com chaoxing.cc - -GOFUNDME gofundme.com - -PKOPLINK pkoplink.com - -TSQUARE -tsquare.tv -" - ACCUWEATHERaccuweather.com -È -CATEGORY-COMPANIESacer-group.com acer.com acer.com.cn -cn typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com -adobedc.cn -cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com -demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com -omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com -fotolia.cc fotolia.com -fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net -marketo.tvmarketodesigner.commarketolive.com -mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.newalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon-adsystem.com -adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws -amazonimdb -kindle xn--cckwcxetdxn--jlq480n2rg yamaxun -zappos a2z.comaboutamazon.cn -cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn -cnalexafund.com.cn -cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn -cn amazon.co.jp amazon.co.uk -amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl -amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn -cn!amazonbusiness.com.cn -cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn -cnamazonchoice.com.cn -cnamazonchoices.cn -cn amazonchoices.com.cn -cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn -cn amazoninspire.com.cn -cnamazonlaunchpad.cn -cnamazonlaunchpad.com"amazonlaunchpad.com.cn -cn amazonlending.com.cn -cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn -cnamazonnow.com.cn -cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn -cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn -cnprimeday.com.cn -cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de -yamaxun.cn -cn yamaxun.comz.cn -cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn -cnamazonworkdocs.com!amazonworkdocs.com.cn -cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn -cn kindle.co.jp kindle.co.uk -kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn -cnkindleoasis.comkindleoasis.com.cn -cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn -cn#amazonprimevideo.com.cn -cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com -cn-!images-cn-8.ssl-images-amazon.com -cn amd.comamdfanstore.com -radeon.comiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com -aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com -airmay.com -ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com -beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn -cn  beats1.tv beats1.com.cn -cn beats123.com beats2.com.cn -cn beats4.cn -cn -beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com -beatsep.cn -cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com -biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net -bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com -cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com -dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com -lyzsxx.com mairbeats.com -makeeu.commallheadphone.commbeats-tech.commbheadphone.com -micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com -ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com -scnshop.cc -shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com -theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net -unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.netapple-icloud.cn -cnappleicloud.cn -cnapplemx-icloud.comicloud-apple.cn -cnicloud-content.comicloud-isupport.com  icloud.ch -icloud.com icloud.com.cn -cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn -cn  icloud.om -icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn -cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com -icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com -me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn -cn itun.es itunbes.com ituneas.comitunes-apple.cn -cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th -itunes.com  itunes.hk  itunes.mx -itunes.org -itunes.rio  itunes.usitunes12days.comitunesapple.cn -cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn -cnitunesradio.comitunesradio.com.cn -cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.netappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cn apple apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cmapple.cn -cn apple.co apple.co.cr apple.co.hu apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk  apple.com apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn -cn apple.com.co apple.com.de apple.com.do apple.com.gr apple.com.gy apple.com.jm apple.com.lk apple.com.mg apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pl apple.com.pr apple.com.pt apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.eu apple.fi apple.fr apple.hamburg apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.jp apple.kr apple.lk apple.lt apple.lv apple.me apple.my  apple.net apple.net.gr apple.nl apple.no apple.pk apple.pl apple.pt apple.ro apple.rs apple.ru apple.sa apple.se apple.sg apple.si apple.sk apple.so apple.tt apple.tw apple.uk apple.usapple.xn--czr694bapple.xn--fiqs8s  apple.xyz aplestore.comapple-store.cn -cnapple-store.netapple-store.wang applestor.com applestore.bg applestore.cc applestore.ch applestore.cm applestore.cn -cnapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.comapplestore.com.auapplestore.com.bnapplestore.com.cn -cnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.tw applestore.de applestore.hk applestore.kr applestore.meapplestore.netapplestore.net.gr applestore.ph applestore.qa applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comapple-appstore.cn -cnappleappstore.cn -cnappleappstore.netappleappstore.tv  appsto.reappstore.co.id appstore.hk appstore.my appstore.phappstoreapple.cn -cn asto.retvappstore.netapple-imac.com appleimac.comimac-apple.comimac-applecomputer.com imac.co -imac.co.nz imac.com imac.eu imac.gr imac.one imac.rs imacapple.comimacapplecomputer.comebookforipad.com euroipad.comfindmyipad.com indiaipad.com -ipad.co.kr ipad.de  ipad.host  ipad.wang  ipad3.com -ipadair.cl -ipadair.cmipadair.com.bripadair.com.es -ipadair.fr -ipadair.hk -ipadair.ie -ipadair.jp -ipadair.twipadaustralia.com ipadmini.cmipadmini.com.lk ipadmini.lk ipadpro.buzz -ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com dl-iphone.comfundaiphone5s.com hebiphone.com hf-iphone.com -iphine.comiphone-8.com.cn -cn iphone-cd.com iphone-cn.com iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.com iphone-x.tv iphone-yh.com iphone-zh.com  iphone.cm -iphone.com iphone.com.au iphone.com.gr  iphone.es iphone.host iphone.net.gr  iphone.pt  iphone.rs  iphone.ru iphone.wang iphone4.comiphone4.com.br iphone4s.com iphone5.comiphone5casescovers.comiphone5s5case.comiphoneacessorios.com.briphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comiphoneclaro.com.briphonecollcase.com iphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang iphonerip.net iphonese.tviphoneunlockimei.com iphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.com ipod.ca ipod.ch ipod.cm ipod.co -ipod.co.nz -ipod.co.uk -ipod.co.za ipod.com ipod.com.au ipod.com.cn -cn ipod.com.fr ipod.com.hk ipod.com.sg ipod.com.tw ipod.de ipod.es ipod.eu ipod.fr ipod.gr ipod.hk ipod.is ipod.net ipod.no ipod.pk ipod.rs ipod.ru ipod.tw ipodcentre.nlipodcleaner.comipoditouch.com ipodnano.com ipodnano.netipodprices.com -ipodrip.caipodrocks.com.au  ipods.comipodshop.com.au ipodtouch.co ipodtouch.com -myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wang mac.wang -macbook.co -macbook.hk -macbook.tw macbook.wang macbookair.cn -cnmacbookair.co.krmacbookair.co.ukmacbookair.commacbookair.com.aumacbookair.com.cn -cnmacbookair.com.es macbookair.es macbookair.hk macbookair.kr macbookair.jpmacbookair.net macbookpro.comacbookpro.commacbookpro.com.aumacbookpro.net macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapple-watch.com.ru applewatch.hk applewatch.tv applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin applemusic.coapplemusic.comapplemusic.com.auapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.com musickit.netwwwapplemusic.comapple.comscoreresearch.com -apple.newsappleenews.comapplenews.berlinapplenews.hamburg applenews.tvapplenewsformat.com apple-pay.com apple-pay.rsapple-pay.wangapplepay.berlinapplepay.co.rsapplepay.com.twapplepay.hamburg applepay.hk applepay.info applepay.jp applepay.rs applepay.tvapplepaycash.cn -cnapplepaycash.com.cn -cnapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.cn -cnapplepaysupplies.com#applepaysupplies.com.cn -cnapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv -i-book.com -i-book.net ibook.co.nz  ibook.com ibook.eu  ibook.netibookpartner.comibooksauthor.com  iphoto.eu  iphoto.no  iphoto.se iphoto.wang  imovie.euimoviegallery.comimoviestage.comapplecare.berlin applecare.cc applecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com appleid-uk.usappleid.berlin appleid.comappleid.hamburg -appleid.hk ids-apple.com myappleid.com appletv.com -appletv.fr appletv.wang appletv4.cn -cnappletv4.com.cn -cnappletvapp.appleappleone.audio appleone.blog appleone.chatappleone.cloud appleone.clubappleone.community appleone.filmappleone.guide appleone.hostappleone.space appleone.techappleone.website -shazam.com1to1computing.com.au1to1conference.com.au 5lml.com -a0pple.net aapl.twairport.brussels airport.com -airport.euairsupportapp.com airtunes.com airtunes.info airtunes.netalchemysynth.com  ap0le.com aple.com  apole.com -app0le.com -appl-e.com appl.com -appl4e.com  appla.comapple-darwin.comapple-darwin.netapple-darwin.org apple-dns.cn -cn apple-dns.comapple-dns.com.cn -cn apple-dns.netapple-enews.comapple-expo.com apple-expo.eu apple-hk.comapple-ibooks.cn -cn apple-inc.netapple-livephotoskit.com apple-maps.cn -cnapple-online.com apple-usa.netappleafrica.comappleantilles.comappleaustralia.comappleaustralia.com.auappleaustralia.net.au applebk.netapplecarbon.com applecard.tvapplecentar.co.rsapplecentar.rsapplecenter.cn -cnapplecenter.com.cn -cnapplecentre.com.auapplecentre.infoappleclub.com.hk applecom.comapplecomputer-imac.comapplecomputer.cn -cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com applecomputer.com.cn -cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoapplecomputers.co.nzapplecoronavirus.com appledns.cn -cnappledns.com.cn -cn appleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comapplehongkong.com.hkappleinclegal.comappleipodsettlement.comappleiservices.com applelink.comapplemagickeyboard.comapplemalaysia.com.myapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com -appleos.tvapplepencil.netapplepodcasts.comapplepremiumreseller.com.au applepremiumresellers.com.auapplereach.comapplereach.net apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoappleshop.co.uk applesiri.cn -cnapplesurveys.comappletaiwan.com appletips.net appleweb.net applexpo.net applezh.com  applf.com -applfe.com -applle.com  applw.comappmediagroup.com -appule.com  appye.com  apyle.com  beddit.tvbraeburncapital.com burstly.netburstlyrewards.com buyaapl.com buyaapl.net buyaple.com camelphat.comcamelspaceeffect.com -carbon.com catalina.hk cdn-apple.com  chomp.com -coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com -dot-mac.de  dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us -earpod.net ecgapp.com.cn -cn -ecgapp.netedu-research.org -emac.co.in emac.in  emagic.de -eworld.com faceid99.com faceid99.netfaceidglobal.com faceshift.cn -cn facetime.netfinalcutpro.comfind-apple.com firewire.cl firewire.eu geoport.com -homepod.cn -cn -hopstop.tv ichat.co.in idvd.eu  ikids.comilecture.co.nz ilife.eu ilife.gr -ilife.wang imessage.tv insidear.cn -cninsidemacintosh.comiosinthecar.comipa-iphone.net  ipple.com ischool.com itools.info  iwork.com iwork.se -iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com livephotos.cn -cnlivephotos.com.cn -cn livephotos.tvlojaiphone.com.br mac-mini.com mac.com -mac.com.au -mac.eu -mac.rs macappsto.re macboxset.com mach-os.com mach-os.net -machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com -newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us -touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn -cn xn--ruq8a011kt6y.xn--hxt814e."amp-api-search-edge.apps.apple.com -cn"amp-api.apps.apple.com -cn aod.itunes.apple.com -cn#api-edge.apps.apple.com -cn(apptrailers.itunes.apple.com -cn bag.itunes.apple.com -cn'bookkeeper.itunes.apple.com -cnbooks.apple.com -cn'client-api.itunes.apple.com -cn cma.itunes.apple.com -cn!communities.apple.com -cn(discussionschinese.apple.com -cnfides-pol.apple.com -cn(gspe11-2-cn-ssl.ls.apple.com -cn&gspe12-cn-ssl.ls.apple.com -cn&gspe85-cn-ssl.ls.apple.com -cn!init.itunes.apple.com -cn$iosapps.itunes.apple.com -cn"js-cdn.music.apple.com -cn km.support.apple.com -cnmaps.apple.com -cn$osxapps.itunes.apple.com -cnpd.itunes.apple.com -cn!play.itunes.apple.com -cn$se-edge.itunes.apple.com -cn se2.itunes.apple.com -cn#search.itunes.apple.com -cn1%sf-api-token-service.itunes.apple.com -cnsp.itunes.apple.com -cn&stocks-sparkline.apple.com -cn+streamingaudio.itunes.apple.com -cnsu.itunes.apple.com -cn!sync.itunes.apple.com -cn upp.itunes.apple.com -cn"weather-data.apple.com -cn#^a[1-5]\.mzstatic\.com$ -cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$ -cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$ -cn!^cl[1-5]\.apple\.com$ -cn+^is[1-5](-ssl)?\.mzstatic\.com$ -cn$^s[1-5]?\.mzstatic\.com$ -cna1.mzstatic.com -cna2.mzstatic.com -cna3.mzstatic.com -cna4.mzstatic.com -cna5.mzstatic.com -cn, adcdownload.apple.com.akadns.net -cn!adcdownload.apple.com -cnappldnld.apple.com -cn"appldnld.g.aaplimg.com -cnapps.apple.com -cnapps.mzstatic.com -cn$cdn-cn1.apple-mapkit.com -cn$cdn-cn2.apple-mapkit.com -cn$cdn-cn3.apple-mapkit.com -cn$cdn-cn4.apple-mapkit.com -cn cdn.apple-mapkit.com -cn!cdn1.apple-mapkit.com -cn!cdn2.apple-mapkit.com -cn!cdn3.apple-mapkit.com -cn!cdn4.apple-mapkit.com -cn!cds-cdn.v.aaplimg.com -cn$cds.apple.com.akadns.net -cn cds.apple.com -cn/#cl1-cdn.origin-apple.com.akadns.net -cn cl1.apple.com -cncl2-cn.apple.com -cn<0cl2.apple.com.edgekey.net.globalredir.akadns.net -cn cl2.apple.com -cn/#cl3-cdn.origin-apple.com.akadns.net -cn cl3.apple.com -cn/#cl4-cdn.origin-apple.com.akadns.net -cncl4-cn.apple.com -cn cl4.apple.com -cn/#cl5-cdn.origin-apple.com.akadns.net -cn cl5.apple.com -cn+clientflow.apple.com.akadns.net -cn clientflow.apple.com -cn."configuration.apple.com.akadns.net -cn#configuration.apple.com -cncstat.apple.com -cn."dd-cdn.origin-apple.com.akadns.net -cn(download.developer.apple.com -cngs-loc-cn.apple.com -cngs-loc.apple.com -cn%gsp10-ssl-cn.ls.apple.com -cn!gsp11-cn.ls.apple.com -cn!gsp12-cn.ls.apple.com -cn!gsp13-cn.ls.apple.com -cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net -cn, gsp4-cn.ls.apple.com.edgekey.net -cn gsp4-cn.ls.apple.com -cn gsp5-cn.ls.apple.com -cn&gspe19-cn-ssl.ls.apple.com -cn-!gspe19-cn.ls-apple.com.akadns.net -cn"gspe19-cn.ls.apple.com -cn#gspe21-ssl.ls.apple.com -cngspe21.ls.apple.com -cn#gspe35-ssl.ls.apple.com -cniadsdk.apple.com -cn, icloud-cdn.icloud.com.akadns.net -cn icloud.cdn-apple.com -cn'images.apple.com.akadns.net -cn?3images.apple.com.edgekey.net.globalredir.akadns.net -cnimages.apple.com -cn3'init-p01md-lb.push-apple.com.akadns.net -cn init-p01md.apple.com -cn3'init-p01st-lb.push-apple.com.akadns.net -cn%init-p01st.push.apple.com -cn3'init-s01st-lb.push-apple.com.akadns.net -cn%init-s01st.push.apple.com -cn(iosapps.itunes.g.aaplimg.com -cniphone-ld.apple.com -cn is1-ssl.mzstatic.com -cnis1.mzstatic.com -cn is2-ssl.mzstatic.com -cnis2.mzstatic.com -cn is3-ssl.mzstatic.com -cnis3.mzstatic.com -cn is4-ssl.mzstatic.com -cnis4.mzstatic.com -cn is5-ssl.mzstatic.com -cnis5.mzstatic.com -cn'itunes-apple.com.akadns.net -cnitunes.apple.com -cn#itunesconnect.apple.com -cn)mesu-cdn.apple.com.akadns.net -cn+mesu-china.apple.com.akadns.net -cnmesu.apple.com -cnmusic.apple.com -cn(ocsp-lb.apple.com.akadns.net -cnocsp.apple.com -cnoscdn.apple.com -cn-!oscdn.origin-apple.com.akadns.net -cnpancake.apple.com -cn, pancake.cdn-apple.com.akadns.net -cnphobos.apple.com -cn1%prod-support.apple-support.akadns.net -cn#reserve-prime.apple.com -cns.mzstatic.com -cn4(stocks-sparkline-lb.apple.com.akadns.net -cn>2store.apple.com.edgekey.net.globalredir.akadns.net -cn'store.apple.com.edgekey.net -cnstore.apple.com -cn2&store.storeimages.apple.com.akadns.net -cn+store.storeimages.cdn-apple.com -cn2&support-china.apple-support.akadns.net -cnsupport.apple.com -cn."swcatalog-cdn.apple.com.akadns.net -cnswcatalog.apple.com -cnswcdn.apple.com -cnswcdn.g.aaplimg.com -cn'swdist.apple.com.akadns.net -cnswdist.apple.com -cn+swscan-cdn.apple.com.akadns.net -cnswscan.apple.com -cn1%updates-http.cdn-apple.com.akadns.net -cn&updates-http.cdn-apple.com -cnvalid.apple.com -cn-!valid.origin-apple.com.akadns.net -cn<0www.apple.com.edgekey.net.globalredir.akadns.net -cn%www.apple.com.edgekey.net -cn www.apple.com -cnapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net asus.com asus.com.cn -cn atlassian.com bitbucket.org statuspage.io -trello.com trellocdn.comaccbusiness.com -atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn -cn att.com att.jobs att.net -att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com -attcorp.cn -cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com -attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com -attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net -budatt.com -cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com -uverse.comwebhosting.com att-idns.net -attdns.com -attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com -dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com -diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.combandwagonhost.com bwh1.net bwh8.net  bwh88.net canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn -cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn -cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +ads +1 +TIANCITY tiancity.comtiancitycdn.com +ì +BBCbbc  bbc.co.uk bbc.com +bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net +ý +CISCO webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn cn  cisco.com cisco.com.cn cn @@ -10445,514 +11140,107 @@ mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org mearki.com meraki-go.com  meraki.hk merakigo.com -tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net clco.cc -cloudc.one cloudcone.com cloudcone.net -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.comaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com -nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org -atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com -facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com -faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com -fb.careers -fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com -fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com -fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net -freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com -groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com -redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net  aorus.com aoruszone.cn -cn gigabyte.cn -cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net godaddy.comx.co godaddy android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org -v8.dev v8project.org youtubeggpht.cn -cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com -youtube.ae -youtube.al -youtube.am -youtube.at -youtube.az -youtube.ba -youtube.be -youtube.bg -youtube.bh -youtube.bo -youtube.by -youtube.ca youtube.cat -youtube.ch -youtube.cl -youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve -youtube.cr -youtube.cz -youtube.de -youtube.dk -youtube.ee -youtube.es -youtube.fi -youtube.fr -youtube.ge -youtube.gr -youtube.gt -youtube.hk -youtube.hr -youtube.hu -youtube.ie -youtube.in -youtube.iq -youtube.is -youtube.it -youtube.jo -youtube.jp -youtube.kr -youtube.kz -youtube.la -youtube.lk -youtube.lt -youtube.lu -youtube.lv -youtube.ly -youtube.ma -youtube.md -youtube.me -youtube.mk -youtube.mn -youtube.mx -youtube.my -youtube.ng -youtube.ni -youtube.nl -youtube.no -youtube.pa -youtube.pe -youtube.ph -youtube.pk -youtube.pl -youtube.pr -youtube.pt -youtube.qa -youtube.ro -youtube.rs -youtube.ru -youtube.sa -youtube.se -youtube.sg -youtube.si -youtube.sk -youtube.sn youtube.soy -youtube.sv -youtube.tn -youtube.tv -youtube.ua -youtube.ug -youtube.uy -youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand -chromedclkgbizgle gmailgoogoog -googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca -google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn -cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw -google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com -466453.com abc.xyz adgoogle.net -admeld.comangulardart.org -api.ai -apigee.com appbridge.ca appbridge.io appbridge.it appspot.com -apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com -brotli.org bumpshare.com -bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org -chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com -foofle.com froogle.com fuchsia.dev  g-tun.comg.cn -cng.co g.dev -g.page gateway.dev -gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn -cn globaledu.org  gmail.com gmodules.com  gogle.com -gogole.comgonglchuangl.net -goo.gl -googel.com -googil.com  googl.comgoogle-syndication.com google.berlin -google.dev -google.net -google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn -cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn -cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com -googlr.com -goolge.com gooogle.com gridaware.app gsrc.io -gstatic.cn -cn gstatic.comgstaticcnapps.cn -cn -gsuite.com -gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo -oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org -picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.com -pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com -revolv.comridepenguin.com run.appsavethedate.foo -saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com -verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org -wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com -webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company -x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com -cnwww.recaptcha.net -cn265.com -cn2mdn.net -cn adservice.google.com -cnapp-measurement.com -cn beacons.gcp.gvt2.com -cnbeacons.gvt2.com -cnbeacons3.gvt2.com -cn c.admob.com -cn(c.android.clients.google.com -cn!cache.pack.google.com -cncheckin.gstatic.com -cn%clickserve.dartsearch.net -cn)clientservices.googleapis.com -cn)connectivitycheck.gstatic.com -cncorp.google.com -cn crl.pki.goog -cncsi.gstatic.com -cn dl.google.com -cndl.l.google.com -cndoubleclick.net -cn-!firebase-settings.crashlytics.com -cn fonts.googleapis.com -cnfonts.gstatic.com -cn google-analytics.com -cn googleadservices.com -cngoogleanalytics.com -cn!googlesyndication.com -cn googletagmanager.com -cn!googletagservices.com -cngtm.oasisfeng.com -cn!imasdk.googleapis.com -cn ocsp.pki.goog -cn, pagead-googlehosted.l.google.com -cn!pki-goog.l.google.com -cn recaptcha.net -cnredirector.gvt1.com -cn)safebrowsing-cache.google.com -cn'safebrowsing.googleapis.com -cn$settings.crashlytics.com -cn-!ssl-google-analytics.l.google.com -cnssl.gstatic.com -cn%toolbarqueries.google.com -cntools.google.com -cntools.l.google.com -cn$translate.googleapis.com -cn!update.googleapis.com -cn-!www-googletagmanager.l.google.com -cnwww.gstatic.com -cn  hinet.net csifund.org hkbn.com.hk hkbn.net -hkbnes.net jos.comspeedtest.com.hk -123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com -compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info -hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com -hp.com -hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net -hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com -hpfaqs.comhpfeedback.com -hpgift.com -hpgpas.comhpgraphicspartners.com  hpiie.org -hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com -hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com -hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com -hpstore.cn -cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com -hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.comibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn -cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn -cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt -altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com -intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn -cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com -niosii.com -niosii.netomekinteractive.com -omnitek.tv openamt.comopendroneid.orgoptanedifference.com -pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com -siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net -vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn -xscale.combarefootnetworks.com -lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com -lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net linkedin.com  licdn.com logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net imgsmail.ru mail.ru mycdn.me azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv  microsoft azure hotmail -office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com -m12.vc -aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com -binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com -ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com -gears5.com gearspop.comgearstactics.com -gfx.ms -gigjam.com hololens.com -hotmail.co hotmail.com -hotmail.eu hotmail.net hotmail.orghummingbird.ms -ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl -ingads.comintunewiki.comiotinactionevents.com -kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn -cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn -cn -msauth.netmschallenge2018.com -msecnd.net -msedge.net  msft.info msft.net msftauth.cn -cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com -msocdn.com -msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com -office.com -office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net -pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com -pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net -sfx.ms sharepoint.cn -cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com -techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com -userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net -wbd.ms what-fan.netwindows-int.net windows.com windows.net -windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com -winhec.com -winhec.net -yammer.com(dl.delivery.mp.microsoft.com -cn&download.windowsupdate.com -cn'bg.v4.a.dl.ws.microsoft.com -cn(bg4.v4.a.dl.ws.microsoft.com -cn2&cdn.marketplaceimages.windowsphone.com -cn cn.windowssearch.com -cn#ctldl.windowsupdate.com -cn#developer.microsoft.com -cndocs.microsoft.com -cn"download.microsoft.com -cn/#download.visualstudio.microsoft.com -cnfs.microsoft.com -cn(msgr.dlservice.microsoft.com -cn, msgruser.dlservice.microsoft.com -cn#officecdn.microsoft.com -cn&qh.dlservice.microsoft.com -cnsdx.microsoft.com -cn/#silverlight.dlservice.microsoft.com -cn, slupdate.dlservice.microsoft.com -cn, storeedgefd.dsx.mp.microsoft.com -cn&wl.dlservice.microsoft.com -cn&wscont1.apps.microsoft.com -cn&wscont2.apps.microsoft.com -cnwww.microsoft.com -cn&xb.dlservice.microsoft.com -cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net -lin.ee line.me line.naver.jp line-apps.com line-cdn.net line-scdn.net -nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net neuralink.com -geforce.cn -cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn -cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn -cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk -nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net  panasonic panasonic.cn -cn panasonic.com panasonic.jp technics.com 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hkairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org -iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com -qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com -uplinq.com wipower.comwirelessreach.com -brewmp.comqualcomm.sc.omtrdc.net  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn -cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.combarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com -sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com -snapkit.co playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl -sony.co.cr -sony.co.id -sony.co.in -sony.co.jp -sony.co.kr -sony.co.nz -sony.co.th -sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com -sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net -spacex.comboringcompany.com x.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com -twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.couber-assets.com uber.com ubereats.com -oath.cloud oath.com ouroath.comstatic-verizon.com -uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com -xo.com mvk.com userapi.com  vk-cdn.me -vk-cdn.net vk-portal.net vk.cc -vk.com  vk.design vk.link vk.me vkcache.com vkgo.app -vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netg-technology.com -sandisk.ae -sandisk.it -sandisk.cn -cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw -sandisk.de -sandisk.es -sandisk.fr -sandisk.hk -sandisk.id -sandisk.in -sandisk.nl -sandisk.sg -wd.com wdc.comwesterndigital.com -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.comxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il -yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md -yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net -yandex -" -LIHKG -lih.kg  lihkg.com -ƒ -MSNmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com +tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net +< +DOCKERcompose-spec.io +docker.com  docker.io +ô +DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com +n +TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +z +CMB cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.com +Ü + DAILYMAIL  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk +mol.imthisismoney.co.uk +thismon.ee +æ +DWION acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com  - FASTSTONE faststone.org -: -WEIPHONE feng.com fengimg.com wfdata.club - -DGTLE  dgtle.com -Ë -HULU -112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com -huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com -hulugo.com -huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com -huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com -hulutv.com huluusa.comjoinmaidez.com mushymush.tv -myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com -š -KINGSOFT cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com -+ -LINKEDIN linkedin.com  licdn.com -‡ -WHOLEFOODSMARKETwholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.org -. -SCALAscala-lang.org scala-sbt.org -ñ -SHOPEE shopee.cn -cn shopee.co.id shopee.co.th -shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com -cn -shp.ee -, -BANDCAMP bandcamp.com -bcbits.com -¦ - BRIDGESTONE bridgestone  bandag.cc -bandag.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpbridgestone-korea.co.krbridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clbridgestone.cn -cnbridgestone.co.crbridgestone.co.idbridgestone.co.inbridgestone.co.jpbridgestone.co.thbridgestone.combridgestone.com.arbridgestone.com.brbridgestone.com.cn -cnbridgestone.com.cobridgestone.com.mxbridgestone.com.sgbridgestone.com.twbridgestone.com.vnbridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.clbridgestonecomercial.co.crbridgestonecomercial.com.arbridgestonecomercial.com.brbridgestonecomercial.com.cobridgestonecomercial.com.mxbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.combridgestonetyre.com.mybridgestonevan.combridgestonewx.combs-adreview.com bs-awh.ne.jp  bsw.co.jp -bsw.jpcarcare-and-tireshop.jpdaytontrucktires.com ecoforme.jp gcrtires.comjsbridgestone.commenshin-channel.com monitrix.net mr-tireman.jpmybridgestoneeducation.com playz.jp -potenza.jpprodrive-japan.comstore-bridgestonesports.com thetread.com tiresplus.com cfna.combastropfirestone.comcrossfitfirestone.com firestone.clfirestone.co.crfirestone.com.arfirestone.com.brfirestone.com.cofirestone.com.mxfirestonebpco.comfirestonecomercial.clfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mx!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comhibdontire.comwheelworks.netnokiantyres.cn -cnnokiantyres.com -P - KUAISHOU-ADS log-sdk.gifshow.com -adswlog.kuaishou.com +ELECTRONelectronjs.org +$ +GFW  gfw.press +gfw.report +f +OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ ads -W -MOJANGcallersbane.com minecraft.netminecraftshop.com -mojang.com -( -OPENCOLLECTIVEopencollective.com -( -REDIS redis.io redislabs.com -œ - STREPSILS -cepacol.ca cepacol.com dobendan.degraneodin.com.mx -repsils.no strepsils.at strepsils.ch strepsils.cn -cnstrepsils.co.krstrepsils.co.nzstrepsils.co.zastrepsils.com.arstrepsils.com.brstrepsils.com.cn -cnstrepsils.com.costrepsils.com.austrepsils.com.hkstrepsils.com.phstrepsils.com.tw strepsils.es strepsils.fi strepsils.fr strepsils.hr strepsils.hu strepsils.ie strepsils.net strepsils.pl strepsils.pt strepsils.ro strepsils.ru strepsils.si strepsils.usstrepsilsarabia.com +D +RUST rust-lang.org  rustup.rs  crates.io docs.rs +- +BITFLYER bitflyer.com bitflyer.jp +. +NETLIFY netlify.combitballoon.com +¡ + +FAMILYMARTfamifun.com.tw family.co.jp family.com.twfamilymart.com.cn +cnfamilymart.com.myfamilymart.com.ph  famima.vn +K +PINGAN +pingan.com pingan.com.cn pingan.com.hk yqb.com +* +TELEKOM telekom.com +telekom.de +ô +VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com +” + HELLOFONT hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com +^ +SWIFTappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cn ++ + TAPPX-ADSssp.api.tappx.com +ads +7 + BUYMEACOFFEE buymeacoff.eebuymeacoffee.com  -WIKIHOW wikihow.com - -WINDY  windy.com +DIDA365 dida365.com + +FIREFOX firefox.com +ß +THETIMES driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.com +3 + XHAMSTER-ADS#collector.xhamster.com +ads +Ô +CATEGORY-MOOC-CNchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com +­ +HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com +hbonow.com  maxgo.com +e + ATOM-DATA-ADS atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads + +CHIPHELL chiphell.com +¼ +GOG gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn +_ +FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org + +SOLIDOT solidot.org +' +928PLUS 928.plus +zind.cloud +A +NYPOST +nypost.com nypost.helpnypostreprints.com +E +PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net ¯ JD-ADSads.union.jd.com ads c-nfa.jd.com @@ -10962,281 +11250,14 @@ jzt.jd.com ads stat.m.jd.com ads img-x.jd.com ads -L -LANZOU baidupan.com -lanzou.com lanzous.com woozooo.com -F -DEEPIN  deepin.cn -deepin.com  deepin.io -deepin.org -p -KKBOX -kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me -— -WALMART walmart wal-mart.com -wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com -wmt.co -# -EDX edx.org edx-cdn.org -ç -PEARSONactivelearnprimary.co.ukactivelearnprimary.com.auactiveteachonline.comaddison-wesley.ch adobepress.ch -btec.co.uk ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comdombosco.com.br ecpa.frescapestudios.co.uk ilongman.com integral7.com'#internationalconnectionsacademy.com -longman.ch -mut.chmyhelpinglab.commylogiclab.com mypearson.commypearsonenglish.chmypearsonshop.com.mxmypearsonshop.mxmysocialworklab.comnetname.com.brpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch -pearson.ch -pearson.cl pearson.co.in pearson.co.jp pearson.compearson.com.arpearson.com.aupearson.com.cn -cnpearson.com.hkpearson.com.uy -pearson.es -pearson.fr -pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonclinical.co.ukpearsonclinical.com.aupearsonclinical.com.brpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoned.co.nz pearsoned.compearsoneducacion.netpearsoneducationbooks.com pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.compearsoninstitute.ac.zapearsonlongman.chpearsononlineacademy.compearsonperu.pepearsonplaces.com.au%!pearsonschoolsandfecolleges.co.ukpearsonvue.compearsonvue.netpobl-content.com  pvue1.com  pvue2.comquatrum.com.brstark-verlag.chtalentlens.comthemathsfactor.comxn--pearsonenespaol-brb.com -- - PUBMATIC-ADSads.pubmatic.com -ads -0 - COWTRANSFER c-t.workcowtransfer.com -ë -CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com -< -NGA -nga.cn 178.com -ngabbs.com ngacn.cc -Š -ZEETV -z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com -s -SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -. -XDAxda-developers.com xda-cdn.com -A -ACERacer-group.com acer.com acer.com.cn -cn -e - ATOM-DATA-ADS atom-data.io -adsanalytics-data.io -ads ironbeast.io -ads -* -DANGDANG dangdang.com ddimg.cn -_ -GUO  guo.media  gnews.org gtv.org gtv1.org -gclubs.com g-tvapp.com -ÿ -MANORAMAmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in -theweek.invanitaonline.com -vanitha.invanithaveedu.com -6 -PROQUESTserialssolutions.com proquest.com -& -XNXX xnxx.com xnxx-cdn.com -Ý -BESTBUY bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com -bestbuy.ca -bestbuy.cn -cn bestbuy.combestbuy.com.cn -cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn -cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info -gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com -N -THETYPE thetype.cloud -cn thetype.comtypeisbeautiful.com -9 -YOUZAN -youzan.com yzcdn.cn youzanyun.com -. - -AMAZON-ADS amazon-adsystem.com -ads -C -BOOKING -booking.cn -cn booking.com bstatic.com -2 -KU6 ku6.com -ku6cdn.com -ku6img.com -+ - SEGMENT-ADScdn.segment.com -ads -m -SUNING cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com -D -YY -duowan.com dwstatic.com -yy.com yystatic.com -* -PAGECDN pagecdn.com -pagecdn.io -' -WATCHOUT watchout.tw -waa.tw -y -GANNETTgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.com -ñ -VMWARE -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.net - -4399 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com -+ -AFDIAN -afdian.net afdiancdn.com -N - CLOUDCONE clco.cc -cloudc.one cloudcone.com cloudcone.net -â -NINTENDO100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com -- -MYRADIO -myradio.hkmyradio.com.hk - -VGTIME -vgtime.com -ý -ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com -? -BOOTCSS bootcss.com -bootcdn.cnphpcomposer.com -Ç - CATEGORY-ORGS archive.org ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net csis.orgcsis-prod.s3.amazonaws.comemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org -ieeer5.org -ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org -comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org nist.gov time.gov openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgrolfoundation.orgrolsociety.org aomedia.org  atypi.org -change.orgglobalsecurity.org ietf.org itu.int  smpte.org -un.org -w3.org who.int wto.org -8 - HOMEDEPOThomedepot-static.com homedepot.com - -ISGD is.gdv.gd -4 -PERL perl.org cpan.org metacpan.org -È - REALCLEAR realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com -* -HKOPENTV hkopentv.com fantv.hk -< - BITSQUARE bisq.io bisq.network bitsquare.io -Ì - CHINATELECOM -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com +µ + PINTEREST +pin.it +pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com , -MEDIUM -medium.commedium.systems - -HEYTEA -heytea.com - -STAGE1ST saraba1st.com -b - -EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la - -RSSHUB -rsshub.app -< -SHOWTIMEANYTIMEshowtimeanytime.com showtime.com -3 - -CITIZENLAB citizenlab.cacitizenlab.org -O -COSTCOcostco-static.com -costco.comcostcobusinessdelivery.com -¡ - -FAMILYMARTfamifun.com.tw family.co.jp family.com.twfamilymart.com.cn -cnfamilymart.com.myfamilymart.com.ph  famima.vn -k - PANASONIC  panasonic panasonic.cn -cn panasonic.com panasonic.jp technics.com -ô* -PAYPALaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.org anfutong.cn -cn anfutong.comanfutong.com.cn -cn beibao.cn -cn -beibao.com beibao.com.cn -cn bill-safe.combillmelater.combillmelater.infobillmelater.net bml.infobuyfast-paysmart.net cashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com -gmoney.org -i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net -pa9pal.com paaypal.com  paily.net  paily.org -paipal.com -pavpal.com paydiant.com paylike.com -paypa1.com -paypa1.org paypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net  paypal.ca -paypal.com paypal.com.cn -cn paypal.com.hk paypal.com.sg  paypal.hk paypal.info  paypal.jp  paypal.me paypal.net.cn -cn paypal.org.cn -cn  paypal.so  paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.cn -cnpaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.org paypalhere.cn -cnpaypalhere.compaypalhere.com.cn -cnpaypalhere.infopaypalhere.netpaypalhere.org paypalhere.tv paypali.net paypalinc.compaypalindia.compaypalinsuranceservices.org paypall.compaypallabs.com paypalme.com paypalnet.net paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.com paypalx.com paypaly.com payppal.com payypal.compdncommunity.com -pp-soc.com ppaypal.com  pppds.com pypl.com  pypl.info pypl.net pypl.tvsecure-paypal.infosecurepaypal.info sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info www-paypal.usxn--bnq297cix3a.cn -cnbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tv card.iogetbraintree.com krakenjs.comloanbuilder.comswiftcapital.com simility.com cashify.netswiftbank.info swiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com  venmo.com -venmo.info  venmo.net  venmo.org  cash2.comfilipino-music.net -s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.com wwwxoom.comxoom-experience.com xoom.com xoom.io xoom.net.cn -cn xoom.us xoomcom.comvenmo.s3.amazonaws.com -ª -DISNEYabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com -babble.com babyzone.com -dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za -disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com -dssott.comgo-disneyworldgo.com -go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com -£ -MINISOloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn -cn  miniso.co miniso.co.id miniso.co.tz -miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn -cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn -cn myminiso.com - - -QINGTINGFM qingting.fm -‘ -SUPERSONIC-ADSsupersonic.com -adssupersonicads.com -ads -ssacdn.com -ads)supersonicads-a.akamaihd.net + BYTEDANCE-ADSmcs.snssdk.com ads -f -PHOENIX  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com - -HINET  hinet.net \ No newline at end of file +q +CATEGORY-HOSPITAL-CN  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn +@ + DIGITALOCEANdigitalocean.comdigitaloceanspaces.com \ No newline at end of file From f0c5eded7d5648e632a79d3c968fea5530b9e5d0 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Fri, 19 Mar 2021 12:35:02 +0800 Subject: [PATCH 10/60] Chore: change Git user (#803) --- .github/workflows/updateGeofile.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/updateGeofile.yml b/.github/workflows/updateGeofile.yml index 64d6e32c1..1a4ef1a5b 100644 --- a/.github/workflows/updateGeofile.yml +++ b/.github/workflows/updateGeofile.yml @@ -19,7 +19,7 @@ jobs: - name: push run: | - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" git commit -am "update geoip, geosite" git push -v --progress From e6aaa57def2b357a7b4dc13acdbd6aeaae3905b2 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Fri, 19 Mar 2021 15:55:18 +0800 Subject: [PATCH 11/60] Feat: add queryStrategy option for DNS (#794) --- app/dns/config.pb.go | 179 ++++++++++++++++++++++---------- app/dns/config.proto | 8 ++ app/dns/dns.go | 68 +++++++++++- app/dns/dns_test.go | 135 +++++------------------- app/dns/nameserver_local.go | 18 +++- app/router/router_test.go | 13 +-- features/dns/client.go | 30 +++++- features/dns/localdns/client.go | 51 ++++++--- features/routing/dns/context.go | 30 +++++- infra/conf/dns.go | 21 +++- infra/conf/dns_test.go | 8 +- infra/conf/freedom.go | 6 +- proxy/dns/dns.go | 34 ++++-- proxy/freedom/freedom.go | 24 ++--- testing/mocks/dns.go | 9 +- 15 files changed, 394 insertions(+), 240 deletions(-) diff --git a/app/dns/config.pb.go b/app/dns/config.pb.go index c2a5fb705..948d21f77 100644 --- a/app/dns/config.pb.go +++ b/app/dns/config.pb.go @@ -74,6 +74,55 @@ func (DomainMatchingType) EnumDescriptor() ([]byte, []int) { return file_app_dns_config_proto_rawDescGZIP(), []int{0} } +type QueryStrategy int32 + +const ( + QueryStrategy_USE_IP QueryStrategy = 0 + QueryStrategy_USE_IP4 QueryStrategy = 1 + QueryStrategy_USE_IP6 QueryStrategy = 2 +) + +// Enum value maps for QueryStrategy. +var ( + QueryStrategy_name = map[int32]string{ + 0: "USE_IP", + 1: "USE_IP4", + 2: "USE_IP6", + } + QueryStrategy_value = map[string]int32{ + "USE_IP": 0, + "USE_IP4": 1, + "USE_IP6": 2, + } +) + +func (x QueryStrategy) Enum() *QueryStrategy { + p := new(QueryStrategy) + *p = x + return p +} + +func (x QueryStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QueryStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_app_dns_config_proto_enumTypes[1].Descriptor() +} + +func (QueryStrategy) Type() protoreflect.EnumType { + return &file_app_dns_config_proto_enumTypes[1] +} + +func (x QueryStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QueryStrategy.Descriptor instead. +func (QueryStrategy) EnumDescriptor() ([]byte, []int) { + return file_app_dns_config_proto_rawDescGZIP(), []int{1} +} + type NameServer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -178,7 +227,8 @@ type Config struct { // Tag is the inbound tag of DNS client. Tag string `protobuf:"bytes,6,opt,name=tag,proto3" json:"tag,omitempty"` // DisableCache Disable DNS cache - DisableCache bool `protobuf:"varint,8,opt,name=disableCache,proto3" json:"disableCache,omitempty"` + DisableCache bool `protobuf:"varint,8,opt,name=disableCache,proto3" json:"disableCache,omitempty"` + QueryStrategy QueryStrategy `protobuf:"varint,9,opt,name=query_strategy,json=queryStrategy,proto3,enum=v2ray.core.app.dns.QueryStrategy" json:"query_strategy,omitempty"` } func (x *Config) Reset() { @@ -264,6 +314,13 @@ func (x *Config) GetDisableCache() bool { return false } +func (x *Config) GetQueryStrategy() QueryStrategy { + if x != nil { + return x.QueryStrategy + } + return QueryStrategy_USE_IP +} + type NameServer_PriorityDomain struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -489,7 +546,7 @@ var file_app_dns_config_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xed, 0x04, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xb7, 0x05, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x45, @@ -512,33 +569,41 @@ var file_app_dns_config_proto_rawDesc = []byte{ 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x1a, 0x5b, 0x0a, 0x0a, 0x48, 0x6f, 0x73, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, - 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x98, 0x01, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, - 0x78, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x2a, 0x45, 0x0a, 0x12, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, - 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, - 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x10, 0x03, 0x42, 0x57, 0x0a, - 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x50, 0x01, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x64, 0x6e, - 0x73, 0xaa, 0x02, 0x12, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x41, - 0x70, 0x70, 0x2e, 0x44, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x79, 0x1a, 0x5b, 0x0a, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x98, 0x01, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, + 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, + 0x6e, 0x73, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x02, 0x69, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x5f, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, + 0x78, 0x69, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, + 0x2a, 0x45, 0x0a, 0x12, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x00, + 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x10, 0x03, 0x2a, 0x35, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x53, 0x45, 0x5f, + 0x49, 0x50, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, + 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x10, 0x02, 0x42, 0x57, + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x50, 0x01, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, + 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x64, + 0x6e, 0x73, 0xaa, 0x02, 0x12, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, + 0x41, 0x70, 0x70, 0x2e, 0x44, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -553,37 +618,39 @@ func file_app_dns_config_proto_rawDescGZIP() []byte { return file_app_dns_config_proto_rawDescData } -var file_app_dns_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_app_dns_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_app_dns_config_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_app_dns_config_proto_goTypes = []interface{}{ (DomainMatchingType)(0), // 0: v2ray.core.app.dns.DomainMatchingType - (*NameServer)(nil), // 1: v2ray.core.app.dns.NameServer - (*Config)(nil), // 2: v2ray.core.app.dns.Config - (*NameServer_PriorityDomain)(nil), // 3: v2ray.core.app.dns.NameServer.PriorityDomain - (*NameServer_OriginalRule)(nil), // 4: v2ray.core.app.dns.NameServer.OriginalRule - nil, // 5: v2ray.core.app.dns.Config.HostsEntry - (*Config_HostMapping)(nil), // 6: v2ray.core.app.dns.Config.HostMapping - (*net.Endpoint)(nil), // 7: v2ray.core.common.net.Endpoint - (*router.GeoIP)(nil), // 8: v2ray.core.app.router.GeoIP - (*net.IPOrDomain)(nil), // 9: v2ray.core.common.net.IPOrDomain + (QueryStrategy)(0), // 1: v2ray.core.app.dns.QueryStrategy + (*NameServer)(nil), // 2: v2ray.core.app.dns.NameServer + (*Config)(nil), // 3: v2ray.core.app.dns.Config + (*NameServer_PriorityDomain)(nil), // 4: v2ray.core.app.dns.NameServer.PriorityDomain + (*NameServer_OriginalRule)(nil), // 5: v2ray.core.app.dns.NameServer.OriginalRule + nil, // 6: v2ray.core.app.dns.Config.HostsEntry + (*Config_HostMapping)(nil), // 7: v2ray.core.app.dns.Config.HostMapping + (*net.Endpoint)(nil), // 8: v2ray.core.common.net.Endpoint + (*router.GeoIP)(nil), // 9: v2ray.core.app.router.GeoIP + (*net.IPOrDomain)(nil), // 10: v2ray.core.common.net.IPOrDomain } var file_app_dns_config_proto_depIdxs = []int32{ - 7, // 0: v2ray.core.app.dns.NameServer.address:type_name -> v2ray.core.common.net.Endpoint - 3, // 1: v2ray.core.app.dns.NameServer.prioritized_domain:type_name -> v2ray.core.app.dns.NameServer.PriorityDomain - 8, // 2: v2ray.core.app.dns.NameServer.geoip:type_name -> v2ray.core.app.router.GeoIP - 4, // 3: v2ray.core.app.dns.NameServer.original_rules:type_name -> v2ray.core.app.dns.NameServer.OriginalRule - 7, // 4: v2ray.core.app.dns.Config.NameServers:type_name -> v2ray.core.common.net.Endpoint - 1, // 5: v2ray.core.app.dns.Config.name_server:type_name -> v2ray.core.app.dns.NameServer - 5, // 6: v2ray.core.app.dns.Config.Hosts:type_name -> v2ray.core.app.dns.Config.HostsEntry - 6, // 7: v2ray.core.app.dns.Config.static_hosts:type_name -> v2ray.core.app.dns.Config.HostMapping - 0, // 8: v2ray.core.app.dns.NameServer.PriorityDomain.type:type_name -> v2ray.core.app.dns.DomainMatchingType - 9, // 9: v2ray.core.app.dns.Config.HostsEntry.value:type_name -> v2ray.core.common.net.IPOrDomain - 0, // 10: v2ray.core.app.dns.Config.HostMapping.type:type_name -> v2ray.core.app.dns.DomainMatchingType - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 8, // 0: v2ray.core.app.dns.NameServer.address:type_name -> v2ray.core.common.net.Endpoint + 4, // 1: v2ray.core.app.dns.NameServer.prioritized_domain:type_name -> v2ray.core.app.dns.NameServer.PriorityDomain + 9, // 2: v2ray.core.app.dns.NameServer.geoip:type_name -> v2ray.core.app.router.GeoIP + 5, // 3: v2ray.core.app.dns.NameServer.original_rules:type_name -> v2ray.core.app.dns.NameServer.OriginalRule + 8, // 4: v2ray.core.app.dns.Config.NameServers:type_name -> v2ray.core.common.net.Endpoint + 2, // 5: v2ray.core.app.dns.Config.name_server:type_name -> v2ray.core.app.dns.NameServer + 6, // 6: v2ray.core.app.dns.Config.Hosts:type_name -> v2ray.core.app.dns.Config.HostsEntry + 7, // 7: v2ray.core.app.dns.Config.static_hosts:type_name -> v2ray.core.app.dns.Config.HostMapping + 1, // 8: v2ray.core.app.dns.Config.query_strategy:type_name -> v2ray.core.app.dns.QueryStrategy + 0, // 9: v2ray.core.app.dns.NameServer.PriorityDomain.type:type_name -> v2ray.core.app.dns.DomainMatchingType + 10, // 10: v2ray.core.app.dns.Config.HostsEntry.value:type_name -> v2ray.core.common.net.IPOrDomain + 0, // 11: v2ray.core.app.dns.Config.HostMapping.type:type_name -> v2ray.core.app.dns.DomainMatchingType + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_app_dns_config_proto_init() } @@ -658,7 +725,7 @@ func file_app_dns_config_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_app_dns_config_proto_rawDesc, - NumEnums: 1, + NumEnums: 2, NumMessages: 6, NumExtensions: 0, NumServices: 0, diff --git a/app/dns/config.proto b/app/dns/config.proto index e8d39d4e2..f92588341 100644 --- a/app/dns/config.proto +++ b/app/dns/config.proto @@ -36,6 +36,12 @@ enum DomainMatchingType { Regex = 3; } +enum QueryStrategy { + USE_IP = 0; + USE_IP4 = 1; + USE_IP6 = 2; +} + message Config { // Nameservers used by this DNS. Only traditional UDP servers are support at // the moment. A special value 'localhost' as a domain address can be set to @@ -74,4 +80,6 @@ message Config { // DisableCache Disable DNS cache bool disableCache = 8; + + QueryStrategy query_strategy = 9; } diff --git a/app/dns/dns.go b/app/dns/dns.go index b5bc49704..2966b1397 100644 --- a/app/dns/dns.go +++ b/app/dns/dns.go @@ -26,6 +26,7 @@ type DNS struct { sync.Mutex tag string disableCache bool + ipOption *dns.IPOption hosts *StaticHosts clients []*Client ctx context.Context @@ -56,6 +57,28 @@ func New(ctx context.Context, config *Config) (*DNS, error) { return nil, newError("unexpected client IP length ", len(config.ClientIp)) } + var ipOption *dns.IPOption + switch config.QueryStrategy { + case QueryStrategy_USE_IP: + ipOption = &dns.IPOption{ + IPv4Enable: true, + IPv6Enable: true, + FakeEnable: false, + } + case QueryStrategy_USE_IP4: + ipOption = &dns.IPOption{ + IPv4Enable: true, + IPv6Enable: false, + FakeEnable: false, + } + case QueryStrategy_USE_IP6: + ipOption = &dns.IPOption{ + IPv4Enable: false, + IPv6Enable: true, + FakeEnable: false, + } + } + hosts, err := NewStaticHosts(config.StaticHosts, config.Hosts) if err != nil { return nil, newError("failed to create hosts").Base(err) @@ -112,6 +135,7 @@ func New(ctx context.Context, config *Config) (*DNS, error) { return &DNS{ tag: tag, hosts: hosts, + ipOption: ipOption, clients: clients, ctx: ctx, domainMatcher: domainMatcher, @@ -142,7 +166,33 @@ func (s *DNS) IsOwnLink(ctx context.Context) bool { } // LookupIP implements dns.Client. -func (s *DNS) LookupIP(domain string, option dns.IPOption) ([]net.IP, error) { +func (s *DNS) LookupIP(domain string) ([]net.IP, error) { + return s.lookupIPInternal(domain, dns.IPOption{ + IPv4Enable: true, + IPv6Enable: true, + FakeEnable: false, + }) +} + +// LookupIPv4 implements dns.IPv4Lookup. +func (s *DNS) LookupIPv4(domain string) ([]net.IP, error) { + return s.lookupIPInternal(domain, dns.IPOption{ + IPv4Enable: true, + IPv6Enable: false, + FakeEnable: false, + }) +} + +// LookupIPv6 implements dns.IPv6Lookup. +func (s *DNS) LookupIPv6(domain string) ([]net.IP, error) { + return s.lookupIPInternal(domain, dns.IPOption{ + IPv4Enable: false, + IPv6Enable: true, + FakeEnable: false, + }) +} + +func (s *DNS) lookupIPInternal(domain string, option dns.IPOption) ([]net.IP, error) { if domain == "" { return nil, newError("empty domain name") } @@ -190,6 +240,22 @@ func (s *DNS) LookupIP(domain string, option dns.IPOption) ([]net.IP, error) { return nil, newError("returning nil for domain ", domain).Base(errors.Combine(errs...)) } +// GetIPOption implements ClientWithIPOption. +func (s *DNS) GetIPOption() *dns.IPOption { + return s.ipOption +} + +// SetQueryOption implements ClientWithIPOption. +func (s *DNS) SetQueryOption(isIPv4Enable, isIPv6Enable bool) { + s.ipOption.IPv4Enable = isIPv4Enable + s.ipOption.IPv6Enable = isIPv6Enable +} + +// SetFakeDNSOption implements ClientWithIPOption. +func (s *DNS) SetFakeDNSOption(isFakeEnable bool) { + s.ipOption.FakeEnable = isFakeEnable +} + func (s *DNS) sortClients(domain string) []*Client { clients := make([]*Client, 0, len(s.clients)) clientUsed := make([]bool, len(s.clients)) diff --git a/app/dns/dns_test.go b/app/dns/dns_test.go index 6bfde1075..e0fe494eb 100644 --- a/app/dns/dns_test.go +++ b/app/dns/dns_test.go @@ -154,11 +154,7 @@ func TestUDPServerSubnet(t *testing.T) { client := v.GetFeature(feature_dns.ClientType()).(feature_dns.Client) - ips, err := client.LookupIP("google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -213,11 +209,7 @@ func TestUDPServer(t *testing.T) { client := v.GetFeature(feature_dns.ClientType()).(feature_dns.Client) { - ips, err := client.LookupIP("google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -228,11 +220,7 @@ func TestUDPServer(t *testing.T) { } { - ips, err := client.LookupIP("facebook.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("facebook.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -243,11 +231,7 @@ func TestUDPServer(t *testing.T) { } { - _, err := client.LookupIP("notexist.google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + _, err := client.LookupIP("notexist.google.com") if err == nil { t.Fatal("nil error") } @@ -257,11 +241,8 @@ func TestUDPServer(t *testing.T) { } { - ips, err := client.LookupIP("ipv4only.google.com", feature_dns.IPOption{ - IPv4Enable: false, - IPv6Enable: true, - FakeEnable: false, - }) + clientv6 := client.(feature_dns.IPv6Lookup) + ips, err := clientv6.LookupIPv6("ipv4only.google.com") if err != feature_dns.ErrEmptyResponse { t.Fatal("error: ", err) } @@ -273,11 +254,7 @@ func TestUDPServer(t *testing.T) { dnsServer.Shutdown() { - ips, err := client.LookupIP("google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -354,11 +331,7 @@ func TestPrioritizedDomain(t *testing.T) { startTime := time.Now() { - ips, err := client.LookupIP("google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -417,12 +390,9 @@ func TestUDPServerIPv6(t *testing.T) { common.Must(err) client := v.GetFeature(feature_dns.ClientType()).(feature_dns.Client) + client6 := client.(feature_dns.IPv6Lookup) { - ips, err := client.LookupIP("ipv6.google.com", feature_dns.IPOption{ - IPv4Enable: false, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client6.LookupIPv6("ipv6.google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -485,11 +455,7 @@ func TestStaticHostDomain(t *testing.T) { client := v.GetFeature(feature_dns.ClientType()).(feature_dns.Client) { - ips, err := client.LookupIP("example.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("example.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -596,11 +562,7 @@ func TestIPMatch(t *testing.T) { startTime := time.Now() { - ips, err := client.LookupIP("google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -719,11 +681,7 @@ func TestLocalDomain(t *testing.T) { startTime := time.Now() { // Will match dotless: - ips, err := client.LookupIP("hostname", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("hostname") if err != nil { t.Fatal("unexpected error: ", err) } @@ -734,11 +692,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match domain:local - ips, err := client.LookupIP("hostname.local", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("hostname.local") if err != nil { t.Fatal("unexpected error: ", err) } @@ -749,11 +703,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match static ip - ips, err := client.LookupIP("hostnamestatic", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("hostnamestatic") if err != nil { t.Fatal("unexpected error: ", err) } @@ -764,11 +714,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match domain replacing - ips, err := client.LookupIP("hostnamealias", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("hostnamealias") if err != nil { t.Fatal("unexpected error: ", err) } @@ -779,11 +725,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match dotless:localhost, but not expectIPs: 127.0.0.2, 127.0.0.3, then matches at dotless: - ips, err := client.LookupIP("localhost", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("localhost") if err != nil { t.Fatal("unexpected error: ", err) } @@ -794,11 +736,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match dotless:localhost, and expectIPs: 127.0.0.2, 127.0.0.3 - ips, err := client.LookupIP("localhost-a", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("localhost-a") if err != nil { t.Fatal("unexpected error: ", err) } @@ -809,11 +747,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match dotless:localhost, and expectIPs: 127.0.0.2, 127.0.0.3 - ips, err := client.LookupIP("localhost-b", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("localhost-b") if err != nil { t.Fatal("unexpected error: ", err) } @@ -824,11 +758,7 @@ func TestLocalDomain(t *testing.T) { } { // Will match dotless: - ips, err := client.LookupIP("Mijia Cloud", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("Mijia Cloud") if err != nil { t.Fatal("unexpected error: ", err) } @@ -990,11 +920,7 @@ func TestMultiMatchPrioritizedDomain(t *testing.T) { startTime := time.Now() { // Will match server 1,2 and server 1 returns expected ip - ips, err := client.LookupIP("google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -1005,11 +931,8 @@ func TestMultiMatchPrioritizedDomain(t *testing.T) { } { // Will match server 1,2 and server 1 returns unexpected ip, then server 2 returns expected one - ips, err := client.LookupIP("ipv6.google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: false, - FakeEnable: false, - }) + clientv4 := client.(feature_dns.IPv4Lookup) + ips, err := clientv4.LookupIPv4("ipv6.google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -1020,11 +943,7 @@ func TestMultiMatchPrioritizedDomain(t *testing.T) { } { // Will match server 3,1,2 and server 3 returns expected one - ips, err := client.LookupIP("api.google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("api.google.com") if err != nil { t.Fatal("unexpected error: ", err) } @@ -1035,11 +954,7 @@ func TestMultiMatchPrioritizedDomain(t *testing.T) { } { // Will match server 4,3,1,2 and server 4 returns expected one - ips, err := client.LookupIP("v2.api.google.com", feature_dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }) + ips, err := client.LookupIP("v2.api.google.com") if err != nil { t.Fatal("unexpected error: ", err) } diff --git a/app/dns/nameserver_local.go b/app/dns/nameserver_local.go index 3621fd73d..6d1e33fd3 100644 --- a/app/dns/nameserver_local.go +++ b/app/dns/nameserver_local.go @@ -17,11 +17,23 @@ type LocalNameServer struct { // QueryIP implements Server. func (s *LocalNameServer) QueryIP(_ context.Context, domain string, _ net.IP, option dns.IPOption, _ bool) ([]net.IP, error) { - if option.IPv4Enable || option.IPv6Enable { - return s.client.LookupIP(domain, option) + var ips []net.IP + var err error + + switch { + case option.IPv4Enable && option.IPv6Enable: + ips, err = s.client.LookupIP(domain) + case option.IPv4Enable: + ips, err = s.client.LookupIPv4(domain) + case option.IPv6Enable: + ips, err = s.client.LookupIPv6(domain) } - return nil, newError("neither IPv4 nor IPv6 is enabled") + if len(ips) > 0 { + newError("Localhost got answer: ", domain, " -> ", ips).AtInfo().WriteToLog() + } + + return ips, err } // Name implements Server. diff --git a/app/router/router_test.go b/app/router/router_test.go index 2276c8b65..e78f94b99 100644 --- a/app/router/router_test.go +++ b/app/router/router_test.go @@ -10,7 +10,6 @@ import ( "github.com/v2fly/v2ray-core/v4/common" "github.com/v2fly/v2ray-core/v4/common/net" "github.com/v2fly/v2ray-core/v4/common/session" - "github.com/v2fly/v2ray-core/v4/features/dns" "github.com/v2fly/v2ray-core/v4/features/outbound" routing_session "github.com/v2fly/v2ray-core/v4/features/routing/session" "github.com/v2fly/v2ray-core/v4/testing/mocks" @@ -117,11 +116,7 @@ func TestIPOnDemand(t *testing.T) { defer mockCtl.Finish() mockDNS := mocks.NewDNSClient(mockCtl) - mockDNS.EXPECT().LookupIP(gomock.Eq("v2fly.org"), dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }).Return([]net.IP{{192, 168, 0, 1}}, nil).AnyTimes() + mockDNS.EXPECT().LookupIP(gomock.Eq("v2fly.org")).Return([]net.IP{{192, 168, 0, 1}}, nil).AnyTimes() r := new(Router) common.Must(r.Init(config, mockDNS, nil)) @@ -156,11 +151,7 @@ func TestIPIfNonMatchDomain(t *testing.T) { defer mockCtl.Finish() mockDNS := mocks.NewDNSClient(mockCtl) - mockDNS.EXPECT().LookupIP(gomock.Eq("v2fly.org"), dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, - }).Return([]net.IP{{192, 168, 0, 1}}, nil).AnyTimes() + mockDNS.EXPECT().LookupIP(gomock.Eq("v2fly.org")).Return([]net.IP{{192, 168, 0, 1}}, nil).AnyTimes() r := new(Router) common.Must(r.Init(config, mockDNS, nil)) diff --git a/features/dns/client.go b/features/dns/client.go index 67b314a0a..8822233ce 100644 --- a/features/dns/client.go +++ b/features/dns/client.go @@ -21,7 +21,35 @@ type Client interface { features.Feature // LookupIP returns IP address for the given domain. IPs may contain IPv4 and/or IPv6 addresses. - LookupIP(domain string, option IPOption) ([]net.IP, error) + LookupIP(domain string) ([]net.IP, error) +} + +// IPv4Lookup is an optional feature for querying IPv4 addresses only. +// +// v2ray:api:beta +type IPv4Lookup interface { + LookupIPv4(domain string) ([]net.IP, error) +} + +// IPv6Lookup is an optional feature for querying IPv6 addresses only. +// +// v2ray:api:beta +type IPv6Lookup interface { + LookupIPv6(domain string) ([]net.IP, error) +} + +// ClientWithIPOption is an optional feature for querying DNS information. +// +// v2ray:api:beta +type ClientWithIPOption interface { + // GetIPOption returns IPOption for the DNS client. + GetIPOption() *IPOption + + // SetQueryOption sets IPv4Enable and IPv6Enable for the DNS client. + SetQueryOption(isIPv4Enable, isIPv6Enable bool) + + // SetFakeDNSOption sets FakeEnable option for DNS client. + SetFakeDNSOption(isFakeEnable bool) } // ClientType returns the type of Client interface. Can be used for implementing common.HasType. diff --git a/features/dns/localdns/client.go b/features/dns/localdns/client.go index 963d1104d..36ab66a65 100644 --- a/features/dns/localdns/client.go +++ b/features/dns/localdns/client.go @@ -20,41 +20,58 @@ func (*Client) Start() error { return nil } func (*Client) Close() error { return nil } // LookupIP implements Client. -func (*Client) LookupIP(host string, option dns.IPOption) ([]net.IP, error) { +func (*Client) LookupIP(host string) ([]net.IP, error) { ips, err := net.LookupIP(host) if err != nil { return nil, err } parsedIPs := make([]net.IP, 0, len(ips)) - ipv4 := make([]net.IP, 0, len(ips)) - ipv6 := make([]net.IP, 0, len(ips)) for _, ip := range ips { parsed := net.IPAddress(ip) if parsed != nil { parsedIPs = append(parsedIPs, parsed.IP()) } + } + if len(parsedIPs) == 0 { + return nil, dns.ErrEmptyResponse + } + return parsedIPs, nil +} + +// LookupIPv4 implements IPv4Lookup. +func (c *Client) LookupIPv4(host string) ([]net.IP, error) { + ips, err := c.LookupIP(host) + if err != nil { + return nil, err + } + ipv4 := make([]net.IP, 0, len(ips)) + for _, ip := range ips { if len(ip) == net.IPv4len { ipv4 = append(ipv4, ip) } + } + if len(ipv4) == 0 { + return nil, dns.ErrEmptyResponse + } + return ipv4, nil +} + +// LookupIPv6 implements IPv6Lookup. +func (c *Client) LookupIPv6(host string) ([]net.IP, error) { + ips, err := c.LookupIP(host) + if err != nil { + return nil, err + } + ipv6 := make([]net.IP, 0, len(ips)) + for _, ip := range ips { if len(ip) == net.IPv6len { ipv6 = append(ipv6, ip) } } - switch { - case option.IPv4Enable && option.IPv6Enable: - if len(parsedIPs) > 0 { - return parsedIPs, nil - } - case option.IPv4Enable: - if len(ipv4) > 0 { - return ipv4, nil - } - case option.IPv6Enable: - if len(ipv6) > 0 { - return ipv6, nil - } + if len(ipv6) == 0 { + return nil, dns.ErrEmptyResponse } - return nil, dns.ErrEmptyResponse + return ipv6, nil } // New create a new dns.Client that queries localhost for DNS. diff --git a/features/routing/dns/context.go b/features/routing/dns/context.go index 13f9faa06..8dcfe4945 100644 --- a/features/routing/dns/context.go +++ b/features/routing/dns/context.go @@ -26,11 +26,35 @@ func (ctx *ResolvableContext) GetTargetIPs() []net.IP { } if domain := ctx.GetTargetDomain(); len(domain) != 0 { - ips, err := ctx.dnsClient.LookupIP(domain, dns.IPOption{ + var lookupFunc func(string) ([]net.IP, error) = ctx.dnsClient.LookupIP + ipOption := &dns.IPOption{ IPv4Enable: true, IPv6Enable: true, - FakeEnable: false, - }) + } + + if c, ok := ctx.dnsClient.(dns.ClientWithIPOption); ok { + ipOption = c.GetIPOption() + c.SetFakeDNSOption(false) // Skip FakeDNS. + } else { + newError("ctx.dnsClient doesn't implement ClientWithIPOption").AtDebug().WriteToLog() + } + + switch { + case ipOption.IPv4Enable && !ipOption.IPv6Enable: + if lookupIPv4, ok := ctx.dnsClient.(dns.IPv4Lookup); ok { + lookupFunc = lookupIPv4.LookupIPv4 + } else { + newError("ctx.dnsClient doesn't implement IPv4Lookup. Use LookupIP instead.").AtDebug().WriteToLog() + } + case !ipOption.IPv4Enable && ipOption.IPv6Enable: + if lookupIPv6, ok := ctx.dnsClient.(dns.IPv6Lookup); ok { + lookupFunc = lookupIPv6.LookupIPv6 + } else { + newError("ctx.dnsClient doesn't implement IPv6Lookup. Use LookupIP instead.").AtDebug().WriteToLog() + } + } + + ips, err := lookupFunc(domain) if err == nil { ctx.resolvedIPs = ips return ips diff --git a/infra/conf/dns.go b/infra/conf/dns.go index bcf31a4c0..6aff189a0 100644 --- a/infra/conf/dns.go +++ b/infra/conf/dns.go @@ -120,11 +120,12 @@ var typeMap = map[router.Domain_Type]dns.DomainMatchingType{ // DNSConfig is a JSON serializable object for dns.Config. type DNSConfig struct { - Servers []*NameServerConfig `json:"servers"` - Hosts map[string]*Address `json:"hosts"` - ClientIP *Address `json:"clientIp"` - Tag string `json:"tag"` - DisableCache bool `json:"disableCache"` + Servers []*NameServerConfig `json:"servers"` + Hosts map[string]*Address `json:"hosts"` + ClientIP *Address `json:"clientIp"` + Tag string `json:"tag"` + QueryStrategy string `json:"queryStrategy"` + DisableCache bool `json:"disableCache"` } func getHostMapping(addr *Address) *dns.Config_HostMapping { @@ -152,6 +153,16 @@ func (c *DNSConfig) Build() (*dns.Config, error) { config.ClientIp = []byte(c.ClientIP.IP()) } + config.QueryStrategy = dns.QueryStrategy_USE_IP + switch strings.ToLower(c.QueryStrategy) { + case "useip", "use_ip", "use-ip": + config.QueryStrategy = dns.QueryStrategy_USE_IP + case "useip4", "useipv4", "use_ip4", "use_ipv4", "use_ip_v4", "use-ip4", "use-ipv4", "use-ip-v4": + config.QueryStrategy = dns.QueryStrategy_USE_IP4 + case "useip6", "useipv6", "use_ip6", "use_ipv6", "use_ip_v6", "use-ip6", "use-ipv6", "use-ip-v6": + config.QueryStrategy = dns.QueryStrategy_USE_IP6 + } + for _, server := range c.Servers { ns, err := server.Build() if err != nil { diff --git a/infra/conf/dns_test.go b/infra/conf/dns_test.go index 187a79e33..bed6d1273 100644 --- a/infra/conf/dns_test.go +++ b/infra/conf/dns_test.go @@ -80,7 +80,9 @@ func TestDNSConfigParsing(t *testing.T) { "keyword:google": "8.8.8.8", "regexp:.*\\.com": "8.8.4.4" }, - "clientIp": "10.0.0.1" + "clientIp": "10.0.0.1", + "queryStrategy": "UseIPv4", + "disableCache": true }`, Parser: parserCreator(), Output: &dns.Config{ @@ -137,7 +139,9 @@ func TestDNSConfigParsing(t *testing.T) { Ip: [][]byte{{127, 0, 0, 1}}, }, }, - ClientIp: []byte{10, 0, 0, 1}, + ClientIp: []byte{10, 0, 0, 1}, + QueryStrategy: dns.QueryStrategy_USE_IP4, + DisableCache: true, }, }, }) diff --git a/infra/conf/freedom.go b/infra/conf/freedom.go index d23254799..87f31857a 100644 --- a/infra/conf/freedom.go +++ b/infra/conf/freedom.go @@ -23,11 +23,11 @@ func (c *FreedomConfig) Build() (proto.Message, error) { config := new(freedom.Config) config.DomainStrategy = freedom.Config_AS_IS switch strings.ToLower(c.DomainStrategy) { - case "useip", "use_ip": + case "useip", "use_ip", "use-ip": config.DomainStrategy = freedom.Config_USE_IP - case "useip4", "useipv4", "use_ipv4", "use_ip_v4", "use_ip4": + case "useip4", "useipv4", "use_ip4", "use_ipv4", "use_ip_v4", "use-ip4", "use-ipv4", "use-ip-v4": config.DomainStrategy = freedom.Config_USE_IP4 - case "useip6", "useipv6", "use_ipv6", "use_ip_v6", "use_ip6": + case "useip6", "useipv6", "use_ip6", "use_ipv6", "use_ip_v6", "use-ip6", "use-ipv6", "use-ip-v6": config.DomainStrategy = freedom.Config_USE_IP6 } diff --git a/proxy/dns/dns.go b/proxy/dns/dns.go index 3412e1322..05f406bde 100644 --- a/proxy/dns/dns.go +++ b/proxy/dns/dns.go @@ -39,12 +39,27 @@ type ownLinkVerifier interface { type Handler struct { client dns.Client + ipv4Lookup dns.IPv4Lookup + ipv6Lookup dns.IPv6Lookup ownLinkVerifier ownLinkVerifier server net.Destination } func (h *Handler) Init(config *Config, dnsClient dns.Client) error { h.client = dnsClient + + if ipv4lookup, ok := dnsClient.(dns.IPv4Lookup); ok { + h.ipv4Lookup = ipv4lookup + } else { + return newError("dns.Client doesn't implement IPv4Lookup") + } + + if ipv6lookup, ok := dnsClient.(dns.IPv6Lookup); ok { + h.ipv6Lookup = ipv6lookup + } else { + return newError("dns.Client doesn't implement IPv6Lookup") + } + if v, ok := dnsClient.(ownLinkVerifier); ok { h.ownLinkVerifier = v } @@ -201,19 +216,18 @@ func (h *Handler) handleIPQuery(id uint16, qType dnsmessage.Type, domain string, var ttl uint32 = 600 + // Do NOT skip FakeDNS + if c, ok := h.client.(dns.ClientWithIPOption); ok { + c.SetFakeDNSOption(true) + } else { + newError("dns.Client doesn't implement ClientWithIPOption") + } + switch qType { case dnsmessage.TypeA: - ips, err = h.client.LookupIP(domain, dns.IPOption{ - IPv4Enable: true, - IPv6Enable: false, - FakeEnable: true, - }) + ips, err = h.ipv4Lookup.LookupIPv4(domain) case dnsmessage.TypeAAAA: - ips, err = h.client.LookupIP(domain, dns.IPOption{ - IPv4Enable: false, - IPv6Enable: true, - FakeEnable: true, - }) + ips, err = h.ipv6Lookup.LookupIPv6(domain) } rcode := dns.RCodeFromError(err) diff --git a/proxy/freedom/freedom.go b/proxy/freedom/freedom.go index ca0d8ad48..ffbfeb4e1 100644 --- a/proxy/freedom/freedom.go +++ b/proxy/freedom/freedom.go @@ -60,26 +60,24 @@ func (h *Handler) policy() policy.Session { } func (h *Handler) resolveIP(ctx context.Context, domain string, localAddr net.Address) net.Address { - var option dns.IPOption = dns.IPOption{ - IPv4Enable: true, - IPv6Enable: true, - FakeEnable: false, + if c, ok := h.dns.(dns.ClientWithIPOption); ok { + c.SetFakeDNSOption(false) // Skip FakeDNS + } else { + newError("DNS client doesn't implement ClientWithIPOption") } + + var lookupFunc func(string) ([]net.IP, error) = h.dns.LookupIP if h.config.DomainStrategy == Config_USE_IP4 || (localAddr != nil && localAddr.Family().IsIPv4()) { - option = dns.IPOption{ - IPv4Enable: true, - IPv6Enable: false, - FakeEnable: false, + if lookupIPv4, ok := h.dns.(dns.IPv4Lookup); ok { + lookupFunc = lookupIPv4.LookupIPv4 } } else if h.config.DomainStrategy == Config_USE_IP6 || (localAddr != nil && localAddr.Family().IsIPv6()) { - option = dns.IPOption{ - IPv4Enable: false, - IPv6Enable: true, - FakeEnable: false, + if lookupIPv6, ok := h.dns.(dns.IPv6Lookup); ok { + lookupFunc = lookupIPv6.LookupIPv6 } } - ips, err := h.dns.LookupIP(domain, option) + ips, err := lookupFunc(domain) if err != nil { newError("failed to get IP address for domain ", domain).Base(err).WriteToLog(session.ExportIDToError(ctx)) } diff --git a/testing/mocks/dns.go b/testing/mocks/dns.go index 1961578c4..0e05f1125 100644 --- a/testing/mocks/dns.go +++ b/testing/mocks/dns.go @@ -9,7 +9,6 @@ import ( reflect "reflect" gomock "github.com/golang/mock/gomock" - dns "github.com/v2fly/v2ray-core/v4/features/dns" ) // DNSClient is a mock of Client interface. @@ -50,18 +49,18 @@ func (mr *DNSClientMockRecorder) Close() *gomock.Call { } // LookupIP mocks base method. -func (m *DNSClient) LookupIP(arg0 string, arg1 dns.IPOption) ([]net.IP, error) { +func (m *DNSClient) LookupIP(arg0 string) ([]net.IP, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "LookupIP", arg0, arg1) + ret := m.ctrl.Call(m, "LookupIP", arg0) ret0, _ := ret[0].([]net.IP) ret1, _ := ret[1].(error) return ret0, ret1 } // LookupIP indicates an expected call of LookupIP. -func (mr *DNSClientMockRecorder) LookupIP(arg0, arg1 interface{}) *gomock.Call { +func (mr *DNSClientMockRecorder) LookupIP(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LookupIP", reflect.TypeOf((*DNSClient)(nil).LookupIP), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LookupIP", reflect.TypeOf((*DNSClient)(nil).LookupIP), arg0) } // Start mocks base method. From 86a6d150287a63434025f871a74beba3b7b5f78e Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Sat, 20 Mar 2021 19:27:09 +0800 Subject: [PATCH 12/60] Fix: DNS tests timeout due to network instability (#805) --- app/dns/nameserver_doh_test.go | 2 +- app/dns/nameserver_local_test.go | 2 +- app/dns/nameserver_quic_test.go | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/dns/nameserver_doh_test.go b/app/dns/nameserver_doh_test.go index 62204fbf0..535d150f4 100644 --- a/app/dns/nameserver_doh_test.go +++ b/app/dns/nameserver_doh_test.go @@ -47,7 +47,7 @@ func TestDoHLocalNameServerWithCache(t *testing.T) { t.Error("expect some ips, but got 0") } - ctx2, cancel := context.WithTimeout(context.Background(), time.Second*2) + ctx2, cancel := context.WithTimeout(context.Background(), time.Second*5) ips2, err := s.QueryIP(ctx2, "google.com", net.IP(nil), dns_feature.IPOption{ IPv4Enable: true, IPv6Enable: true, diff --git a/app/dns/nameserver_local_test.go b/app/dns/nameserver_local_test.go index 2e94203cb..b7c6e266d 100644 --- a/app/dns/nameserver_local_test.go +++ b/app/dns/nameserver_local_test.go @@ -13,7 +13,7 @@ import ( func TestLocalNameServer(t *testing.T) { s := NewLocalNameServer() - ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) ips, err := s.QueryIP(ctx, "google.com", net.IP{}, dns.IPOption{ IPv4Enable: true, IPv6Enable: true, diff --git a/app/dns/nameserver_quic_test.go b/app/dns/nameserver_quic_test.go index b5d8ca4e4..880e626d0 100644 --- a/app/dns/nameserver_quic_test.go +++ b/app/dns/nameserver_quic_test.go @@ -19,7 +19,7 @@ func TestQUICNameServer(t *testing.T) { common.Must(err) s, err := NewQUICNameServer(url) common.Must(err) - ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) ips, err := s.QueryIP(ctx, "google.com", net.IP(nil), dns_feature.IPOption{ IPv4Enable: true, IPv6Enable: true, @@ -36,7 +36,7 @@ func TestQUICNameServerWithCache(t *testing.T) { common.Must(err) s, err := NewQUICNameServer(url) common.Must(err) - ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) ips, err := s.QueryIP(ctx, "google.com", net.IP(nil), dns_feature.IPOption{ IPv4Enable: true, IPv6Enable: true, @@ -47,7 +47,7 @@ func TestQUICNameServerWithCache(t *testing.T) { t.Error("expect some ips, but got 0") } - ctx2, cancel := context.WithTimeout(context.Background(), time.Second*2) + ctx2, cancel := context.WithTimeout(context.Background(), time.Second*5) ips2, err := s.QueryIP(ctx2, "google.com", net.IP(nil), dns_feature.IPOption{ IPv4Enable: true, IPv6Enable: true, From 57b4214284dd5c1036345fdf2ffef7f6c21c3592 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Tue, 16 Mar 2021 22:04:08 +0000 Subject: [PATCH 13/60] added definition for websocket browser forwarder --- features/ext/browser.go | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 features/ext/browser.go diff --git a/features/ext/browser.go b/features/ext/browser.go new file mode 100644 index 000000000..bdf287045 --- /dev/null +++ b/features/ext/browser.go @@ -0,0 +1,10 @@ +package ext + +import ( + "io" + "net/http" +) + +type BrowserForwarder interface { + DialWebsocket(url string, header http.Header) (io.ReadWriteCloser, error) +} From 2d778239a331b031b93da9f2018e46f07c6a735d Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Tue, 16 Mar 2021 22:05:01 +0000 Subject: [PATCH 14/60] added necessary infrastructure --- .github/workflows/release.yml | 20 ++++++++ common/platform/securedload/embedded.go | 6 +++ common/platform/securedload/embeddedhash.go | 47 +++++++++++++++++++ .../platform/securedload/errors.generated.go | 9 ++++ common/platform/securedload/file.go | 13 +++++ common/platform/securedload/securedload.go | 3 ++ common/platform/securedload/verify.go | 14 ++++++ 7 files changed, 112 insertions(+) create mode 100644 common/platform/securedload/embedded.go create mode 100644 common/platform/securedload/embeddedhash.go create mode 100644 common/platform/securedload/errors.generated.go create mode 100644 common/platform/securedload/file.go create mode 100644 common/platform/securedload/securedload.go create mode 100644 common/platform/securedload/verify.go diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dee41439e..33c36e2ec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -170,6 +170,12 @@ jobs: with: path: build_artifacts + - name: Create extra package + run: | + pushd ./release/extra/ + zip -9vr ../../build_artifacts/v2ray-extra.zip . + popd + - name: Generate shasum run: | go get -v github.com/v2fly/V2BuildAssist/v2buildutil @@ -205,6 +211,11 @@ jobs: name: Release.unsigned.dgst path: build_artifacts/Release.unsigned.dgst + - uses: actions/upload-artifact@v2 + with: + name: v2ray-extra.zip + path: build_artifacts/v2ray-extra.zip + - name: Upload Release.unsigned related files uses: svenstaro/upload-release-action@v2 if: github.event_name == 'release' @@ -213,3 +224,12 @@ jobs: file_glob: true file: build_artifacts/Release.unsigned* tag: ${{ github.ref }} + + - name: Upload extra package + uses: svenstaro/upload-release-action@v2 + if: github.event_name == 'release' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: build_artifacts/v2ray-extra.zip + tag: ${{ github.ref }} diff --git a/common/platform/securedload/embedded.go b/common/platform/securedload/embedded.go new file mode 100644 index 000000000..bb29d8d85 --- /dev/null +++ b/common/platform/securedload/embedded.go @@ -0,0 +1,6 @@ +package securedload + +const allowedHashes = `SHA256 (!#project==v2fly) = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +SHA256 (!#version==embedded) = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +SHA256 (subscriptions/subscriptionsDefinition.v2flyTemplate) = 3f165dba7de0d7c506fbdff3275ea64b76f307df435316a3ea0914ee957793ab +` diff --git a/common/platform/securedload/embeddedhash.go b/common/platform/securedload/embeddedhash.go new file mode 100644 index 000000000..620bb4aa6 --- /dev/null +++ b/common/platform/securedload/embeddedhash.go @@ -0,0 +1,47 @@ +package securedload + +import ( + "bytes" + "crypto/sha256" + "encoding/hex" + "github.com/v2fly/VSign/insmgr" + "github.com/v2fly/VSign/signerVerify" + "github.com/v2fly/v2ray-core/v4/common/platform" + "github.com/v2fly/v2ray-core/v4/common/platform/filesystem" + "strings" +) + +type EmbeddedHashProtectedLoader struct { + checkedFile map[string]string +} + +func (e EmbeddedHashProtectedLoader) VerifyAndLoad(filename string) ([]byte, error) { + filecontent, err := filesystem.ReadFile(platform.GetAssetLocation(filename)) + if err != nil { + return nil, newError("Cannot find file", filename).Base(err) + } + fileHash := sha256.Sum256(filecontent) + fileHashAsString := hex.EncodeToString(fileHash[:]) + if filenameverified, ok := e.checkedFile[fileHashAsString]; ok { + for _, filenameVerifiedIndividual := range strings.Split(filenameverified, ";") { + if strings.HasSuffix(filenameVerifiedIndividual, filename) { + return filecontent, nil + } + } + + } + return nil, newError("Unrecognized file at ", filename, " can not be loaded for execution") +} + +func NewEmbeddedHashProtectedLoader() *EmbeddedHashProtectedLoader { + instructions := insmgr.ReadAllIns(bytes.NewReader([]byte(allowedHashes))) + checkedFile, _, ok := signerVerify.CheckAsClient(instructions, "v2fly", true) + if !ok { + panic("Embedded Hash data is invalid") + } + return &EmbeddedHashProtectedLoader{checkedFile: checkedFile} +} + +func init() { + RegisterProtectedLoader("embedded", NewEmbeddedHashProtectedLoader()) +} diff --git a/common/platform/securedload/errors.generated.go b/common/platform/securedload/errors.generated.go new file mode 100644 index 000000000..83d7c7cbb --- /dev/null +++ b/common/platform/securedload/errors.generated.go @@ -0,0 +1,9 @@ +package securedload + +import "github.com/v2fly/v2ray-core/v4/common/errors" + +type errPathObjHolder struct{} + +func newError(values ...interface{}) *errors.Error { + return errors.New(values...).WithPathObj(errPathObjHolder{}) +} diff --git a/common/platform/securedload/file.go b/common/platform/securedload/file.go new file mode 100644 index 000000000..8b87ec517 --- /dev/null +++ b/common/platform/securedload/file.go @@ -0,0 +1,13 @@ +package securedload + +func GetAssetSecured(name string) ([]byte, error) { + var err error + for k, v := range knownProtectedLoader { + if loadedData, errLoad := v.VerifyAndLoad(name); errLoad == nil { + return loadedData, nil + } else { + err = newError(k, " is not loading executable file").Base(errLoad) + } + } + return nil, err +} diff --git a/common/platform/securedload/securedload.go b/common/platform/securedload/securedload.go new file mode 100644 index 000000000..af4e95758 --- /dev/null +++ b/common/platform/securedload/securedload.go @@ -0,0 +1,3 @@ +package securedload + +//go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen diff --git a/common/platform/securedload/verify.go b/common/platform/securedload/verify.go new file mode 100644 index 000000000..0220d07c1 --- /dev/null +++ b/common/platform/securedload/verify.go @@ -0,0 +1,14 @@ +package securedload + +type ProtectedLoader interface { + VerifyAndLoad(filename string) ([]byte, error) +} + +var knownProtectedLoader map[string]ProtectedLoader + +func RegisterProtectedLoader(name string, sv ProtectedLoader) { + if knownProtectedLoader == nil { + knownProtectedLoader = map[string]ProtectedLoader{} + } + knownProtectedLoader[name] = sv +} From f63ee69fcf379cab19e19fe1e87f02bccd41c46d Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Tue, 16 Mar 2021 23:19:00 +0000 Subject: [PATCH 15/60] added forwarder service --- app/browserforwarder/config.proto | 14 +++++ app/browserforwarder/forwarder.go | 94 +++++++++++++++++++++++++++++ common/platform/securedload/file.go | 5 ++ features/ext/browser.go | 4 ++ go.mod | 1 + 5 files changed, 118 insertions(+) create mode 100644 app/browserforwarder/config.proto create mode 100644 app/browserforwarder/forwarder.go diff --git a/app/browserforwarder/config.proto b/app/browserforwarder/config.proto new file mode 100644 index 000000000..876914549 --- /dev/null +++ b/app/browserforwarder/config.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +package v2ray.core.app.browserforwarder; + +option csharp_namespace = "V2Ray.Core.App.Browserforwarder"; +option go_package = "github.com/v2fly/v2ray-core/v4/app/browserforwarder"; +option java_package = "com.v2ray.core.app.browserforwarder"; +option java_multiple_files = true; + +// Config is the settings for BrowserForwarder. +message Config { + string listen_addr = 1; + int32 listen_port = 2; +} \ No newline at end of file diff --git a/app/browserforwarder/forwarder.go b/app/browserforwarder/forwarder.go new file mode 100644 index 000000000..41e5a40e7 --- /dev/null +++ b/app/browserforwarder/forwarder.go @@ -0,0 +1,94 @@ +package browserforwarder + +import ( + "bytes" + "context" + "github.com/v2fly/BrowserBridge/handler" + "github.com/v2fly/v2ray-core/v4/common" + "github.com/v2fly/v2ray-core/v4/common/net" + "github.com/v2fly/v2ray-core/v4/common/platform/securedload" + "github.com/v2fly/v2ray-core/v4/features/ext" + "github.com/v2fly/v2ray-core/v4/transport/internet" + "io" + "net/http" + "time" +) + +//go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen + +type Forwarder struct { + ctx context.Context + + forwarder *handler.HTTPHandle + httpserver *http.Server + + config *Config +} + +func (f *Forwarder) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + requestPath := request.URL.Path[1:] + + switch requestPath { + case "": + fallthrough + case "index.js": + BridgeResource(writer, request, requestPath) + break + case "link": + f.forwarder.ServeBridge(writer, request) + } +} + +func (f *Forwarder) DialWebsocket(url string, header http.Header) (io.ReadWriteCloser, error) { + return f.forwarder.Dial(url) +} + +func (f *Forwarder) Type() interface{} { + return ext.BrowserForwarderType() +} + +func (f *Forwarder) Start() error { + f.forwarder = handler.NewHttpHandle() + f.httpserver = &http.Server{Handler: f} + address := net.ParseAddress(f.config.ListenAddr) + listener, err := internet.ListenSystem(f.ctx, &net.TCPAddr{IP: address.IP(), Port: int(f.config.ListenPort)}, nil) + if err != nil { + return newError("forwarder cannot listen on the port").Base(err) + } + go func() { + err = f.httpserver.Serve(listener) + if err != nil { + newError("cannot serve http forward server").Base(err).WriteToLog() + } + }() + return nil +} + +func (f *Forwarder) Close() error { + if f.httpserver != nil { + return f.httpserver.Close() + } + return nil +} + +func BridgeResource(rw http.ResponseWriter, r *http.Request, path string) { + content := path + data, err := securedload.GetAssetSecured("browserforwarder/" + content) + if err != nil { + err = newError("cannot load necessary resources").Base(err) + http.Error(rw, err.Error(), 403) + return + } + + http.ServeContent(rw, r, path, time.Now(), bytes.NewReader(data)) +} + +func NewForwarder(ctx context.Context, cfg *Config) *Forwarder { + return &Forwarder{config: cfg, ctx: ctx} +} + +func init() { + common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, cfg interface{}) (interface{}, error) { + return NewForwarder(ctx, cfg.(*Config)), nil + })) +} diff --git a/common/platform/securedload/file.go b/common/platform/securedload/file.go index 8b87ec517..2a5b64e6f 100644 --- a/common/platform/securedload/file.go +++ b/common/platform/securedload/file.go @@ -1,6 +1,11 @@ package securedload +import "path/filepath" + func GetAssetSecured(name string) ([]byte, error) { + + name = filepath.FromSlash(name) + var err error for k, v := range knownProtectedLoader { if loadedData, errLoad := v.VerifyAndLoad(name); errLoad == nil { diff --git a/features/ext/browser.go b/features/ext/browser.go index bdf287045..d9ce8f79e 100644 --- a/features/ext/browser.go +++ b/features/ext/browser.go @@ -8,3 +8,7 @@ import ( type BrowserForwarder interface { DialWebsocket(url string, header http.Header) (io.ReadWriteCloser, error) } + +func BrowserForwarderType() interface{} { + return (*BrowserForwarder)(nil) +} diff --git a/go.mod b/go.mod index 84236bd02..c223861f7 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/pires/go-proxyproto v0.5.0 github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c github.com/stretchr/testify v1.7.0 + github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc // indirect github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 From af641f3219769037e38bfa82d000ce4af95b314a Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 19 Mar 2021 22:36:11 +0000 Subject: [PATCH 16/60] added browser forwarder early data --- transport/internet/websocket/config.pb.go | 54 ++++++--- transport/internet/websocket/config.proto | 4 + transport/internet/websocket/connection.go | 92 +++++++++++++++ transport/internet/websocket/connforwarder.go | 81 +++++++++++++ transport/internet/websocket/dialer.go | 106 ++++++++++++++++++ 5 files changed, 321 insertions(+), 16 deletions(-) create mode 100644 transport/internet/websocket/connforwarder.go diff --git a/transport/internet/websocket/config.pb.go b/transport/internet/websocket/config.pb.go index a14cd3bf8..20aaa6466 100644 --- a/transport/internet/websocket/config.pb.go +++ b/transport/internet/websocket/config.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.15.5 +// protoc v3.13.0 // source: transport/internet/websocket/config.proto package websocket @@ -86,9 +86,11 @@ type Config struct { unknownFields protoimpl.UnknownFields // URL path to the WebSocket service. Empty value means root(/). - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Header []*Header `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty"` - AcceptProxyProtocol bool `protobuf:"varint,4,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3" json:"accept_proxy_protocol,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Header []*Header `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty"` + AcceptProxyProtocol bool `protobuf:"varint,4,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3" json:"accept_proxy_protocol,omitempty"` + MaxEarlyData int32 `protobuf:"varint,5,opt,name=max_early_data,json=maxEarlyData,proto3" json:"max_early_data,omitempty"` + UseBrowserForwarding bool `protobuf:"varint,6,opt,name=use_browser_forwarding,json=useBrowserForwarding,proto3" json:"use_browser_forwarding,omitempty"` } func (x *Config) Reset() { @@ -144,6 +146,20 @@ func (x *Config) GetAcceptProxyProtocol() bool { return false } +func (x *Config) GetMaxEarlyData() int32 { + if x != nil { + return x.MaxEarlyData + } + return 0 +} + +func (x *Config) GetUseBrowserForwarding() bool { + if x != nil { + return x.UseBrowserForwarding + } + return false +} + var File_transport_internet_websocket_config_proto protoreflect.FileDescriptor var file_transport_internet_websocket_config_proto_rawDesc = []byte{ @@ -155,7 +171,7 @@ var file_transport_internet_websocket_config_proto_rawDesc = []byte{ 0x63, 0x6b, 0x65, 0x74, 0x22, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x47, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, @@ -165,17 +181,23 @@ var file_transport_internet_websocket_config_proto_rawDesc = []byte{ 0x0a, 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x42, 0x96, 0x01, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, - 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x77, - 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, - 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x77, 0x65, - 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0xaa, 0x02, 0x27, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, - 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, - 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x45, + 0x61, 0x72, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x73, 0x65, 0x5f, + 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x75, 0x73, 0x65, 0x42, 0x72, 0x6f, + 0x77, 0x73, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x42, 0x96, 0x01, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, + 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, 0x63, + 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0xaa, 0x02, 0x27, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/transport/internet/websocket/config.proto b/transport/internet/websocket/config.proto index fa376f494..3eb49c584 100644 --- a/transport/internet/websocket/config.proto +++ b/transport/internet/websocket/config.proto @@ -20,4 +20,8 @@ message Config { repeated Header header = 3; bool accept_proxy_protocol = 4; + + int32 max_early_data = 5; + + bool use_browser_forwarding = 6; } diff --git a/transport/internet/websocket/connection.go b/transport/internet/websocket/connection.go index 2f45e3130..d150c8d52 100644 --- a/transport/internet/websocket/connection.go +++ b/transport/internet/websocket/connection.go @@ -3,6 +3,7 @@ package websocket import ( + "context" "io" "net" "time" @@ -23,6 +24,15 @@ type connection struct { conn *websocket.Conn reader io.Reader remoteAddr net.Addr + + shouldWait bool + delayedDialFinish context.Context + finishedDial context.CancelFunc + dialer DelayedDialer +} + +type DelayedDialer interface { + Dial(earlyData []byte) (*websocket.Conn, error) } func newConnection(conn *websocket.Conn, remoteAddr net.Addr) *connection { @@ -32,6 +42,41 @@ func newConnection(conn *websocket.Conn, remoteAddr net.Addr) *connection { } } +func newConnectionWithEarlyData(conn *websocket.Conn, remoteAddr net.Addr, earlyData io.Reader) *connection { + return &connection{ + conn: conn, + remoteAddr: remoteAddr, + reader: earlyData, + } +} + +func newConnectionWithDelayedDial(dialer DelayedDialer) *connection { + delayedDialContext, CancellFunc := context.WithCancel(context.Background()) + return &connection{ + shouldWait: true, + delayedDialFinish: delayedDialContext, + finishedDial: CancellFunc, + dialer: dialer, + } +} + +func newRelayedConnectionWithDelayedDial(dialer DelayedDialerForwarded) *connectionForwarder { + delayedDialContext, CancellFunc := context.WithCancel(context.Background()) + return &connectionForwarder{ + shouldWait: true, + delayedDialFinish: delayedDialContext, + finishedDial: CancellFunc, + dialer: dialer, + } +} + +func newRelayedConnection(conn io.ReadWriteCloser) *connectionForwarder { + return &connectionForwarder{ + ReadWriteCloser: conn, + shouldWait: false, + } +} + // Read implements net.Conn.Read() func (c *connection) Read(b []byte) (int, error) { for { @@ -50,6 +95,12 @@ func (c *connection) Read(b []byte) (int, error) { } func (c *connection) getReader() (io.Reader, error) { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.conn == nil { + return nil, newError("unable to read delayed dial websocket connection as it do not exist") + } + } if c.reader != nil { return c.reader, nil } @@ -64,6 +115,17 @@ func (c *connection) getReader() (io.Reader, error) { // Write implements io.Writer. func (c *connection) Write(b []byte) (int, error) { + if c.shouldWait { + var err error + c.conn, err = c.dialer.Dial(b) + c.finishedDial() + if err != nil { + return 0, newError("Unable to proceed with delayed write").Base(err) + } + c.remoteAddr = c.conn.RemoteAddr() + c.shouldWait = false + return len(b), nil + } if err := c.conn.WriteMessage(websocket.BinaryMessage, b); err != nil { return 0, err } @@ -78,6 +140,12 @@ func (c *connection) WriteMultiBuffer(mb buf.MultiBuffer) error { } func (c *connection) Close() error { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.conn == nil { + return newError("unable to close delayed dial websocket connection as it do not exist") + } + } var errors []interface{} if err := c.conn.WriteControl(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""), time.Now().Add(time.Second*5)); err != nil { errors = append(errors, err) @@ -92,6 +160,16 @@ func (c *connection) Close() error { } func (c *connection) LocalAddr() net.Addr { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.conn == nil { + newError("websocket transport is not materialized when LocalAddr() is called").AtWarning().WriteToLog() + return &net.UnixAddr{ + Name: "@placeholder", + Net: "unix", + } + } + } return c.conn.LocalAddr() } @@ -107,9 +185,23 @@ func (c *connection) SetDeadline(t time.Time) error { } func (c *connection) SetReadDeadline(t time.Time) error { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.conn == nil { + newError("websocket transport is not materialized when SetReadDeadline() is called").AtWarning().WriteToLog() + return nil + } + } return c.conn.SetReadDeadline(t) } func (c *connection) SetWriteDeadline(t time.Time) error { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.conn == nil { + newError("websocket transport is not materialized when SetWriteDeadline() is called").AtWarning().WriteToLog() + return nil + } + } return c.conn.SetWriteDeadline(t) } diff --git a/transport/internet/websocket/connforwarder.go b/transport/internet/websocket/connforwarder.go new file mode 100644 index 000000000..1455f4282 --- /dev/null +++ b/transport/internet/websocket/connforwarder.go @@ -0,0 +1,81 @@ +package websocket + +import ( + "context" + "io" + "net" + "time" +) + +type connectionForwarder struct { + io.ReadWriteCloser + + shouldWait bool + delayedDialFinish context.Context + finishedDial context.CancelFunc + dialer DelayedDialerForwarded +} + +func (c *connectionForwarder) Read(p []byte) (n int, err error) { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.ReadWriteCloser == nil { + return 0, newError("unable to read delayed dial websocket connection as it do not exist") + } + } + return c.ReadWriteCloser.Read(p) +} + +func (c *connectionForwarder) Write(p []byte) (n int, err error) { + if c.shouldWait { + var err error + c.ReadWriteCloser, err = c.dialer.Dial(p) + c.finishedDial() + if err != nil { + return 0, newError("Unable to proceed with delayed write").Base(err) + } + c.shouldWait = false + return len(p), nil + } + return c.ReadWriteCloser.Write(p) +} + +func (c *connectionForwarder) Close() error { + if c.shouldWait { + <-c.delayedDialFinish.Done() + if c.ReadWriteCloser == nil { + return newError("unable to close delayed dial websocket connection as it do not exist") + } + } + return c.ReadWriteCloser.Close() +} + +func (c connectionForwarder) LocalAddr() net.Addr { + return &net.UnixAddr{ + Name: "not available", + Net: "", + } +} + +func (c connectionForwarder) RemoteAddr() net.Addr { + return &net.UnixAddr{ + Name: "not available", + Net: "", + } +} + +func (c connectionForwarder) SetDeadline(t time.Time) error { + return nil +} + +func (c connectionForwarder) SetReadDeadline(t time.Time) error { + return nil +} + +func (c connectionForwarder) SetWriteDeadline(t time.Time) error { + return nil +} + +type DelayedDialerForwarded interface { + Dial(earlyData []byte) (io.ReadWriteCloser, error) +} diff --git a/transport/internet/websocket/dialer.go b/transport/internet/websocket/dialer.go index e3b782596..23c6c70c0 100644 --- a/transport/internet/websocket/dialer.go +++ b/transport/internet/websocket/dialer.go @@ -3,7 +3,12 @@ package websocket import ( + "bytes" "context" + "encoding/base64" + core "github.com/v2fly/v2ray-core/v4" + "github.com/v2fly/v2ray-core/v4/features/ext" + "io" "time" "github.com/gorilla/websocket" @@ -55,6 +60,36 @@ func dialWebsocket(ctx context.Context, dest net.Destination, streamSettings *in } uri := protocol + "://" + host + wsSettings.GetNormalizedPath() + if wsSettings.UseBrowserForwarding { + var forwarder ext.BrowserForwarder + err := core.RequireFeatures(ctx, func(Forwarder ext.BrowserForwarder) { + forwarder = Forwarder + }) + if err != nil { + return nil, newError("cannot find browser forwarder service").Base(err) + } + if wsSettings.MaxEarlyData != 0 { + return newRelayedConnectionWithDelayedDial(&dialerWithEarlyDataRelayed{ + forwarder: forwarder, + uriBase: uri, + config: wsSettings, + }), nil + } + conn, err := forwarder.DialWebsocket(uri, nil) + if err != nil { + return nil, newError("cannot dial with browser forwarder service").Base(err) + } + return newRelayedConnection(conn), nil + } + + if wsSettings.MaxEarlyData != 0 { + return newConnectionWithDelayedDial(&dialerWithEarlyData{ + dialer: dialer, + uriBase: uri, + config: wsSettings, + }), nil + } + conn, resp, err := dialer.Dial(uri, wsSettings.GetRequestHeader()) if err != nil { var reason string @@ -66,3 +101,74 @@ func dialWebsocket(ctx context.Context, dest net.Destination, streamSettings *in return newConnection(conn, conn.RemoteAddr()), nil } + +type dialerWithEarlyData struct { + dialer *websocket.Dialer + uriBase string + config *Config +} + +func (d dialerWithEarlyData) Dial(earlyData []byte) (*websocket.Conn, error) { + earlyDataBuf := bytes.NewBuffer(nil) + base64EarlyDataEncoder := base64.NewEncoder(base64.RawURLEncoding, earlyDataBuf) + + earlydata := bytes.NewReader(earlyData) + limitedEarlyDatareader := io.LimitReader(earlydata, int64(d.config.MaxEarlyData)) + n, encerr := io.Copy(base64EarlyDataEncoder, limitedEarlyDatareader) + if encerr != nil { + return nil, newError("websocket delayed dialer cannot encode early data").Base(encerr) + } + + if errc := base64EarlyDataEncoder.Close(); errc != nil { + return nil, newError("websocket delayed dialer cannot encode early data tail").Base(errc) + } + + conn, resp, err := d.dialer.Dial(d.uriBase+string(earlyDataBuf.Bytes()), d.config.GetRequestHeader()) + if err != nil { + var reason string + if resp != nil { + reason = resp.Status + } + return nil, newError("failed to dial to (", d.uriBase, ") with early data: ", reason).Base(err) + } + if n != int64(len(earlyData)) { + if errWrite := conn.WriteMessage(websocket.BinaryMessage, earlyData[n:]); errWrite != nil { + return nil, newError("failed to dial to (", d.uriBase, ") with early data as write of remainder early data failed: ").Base(err) + } + } + return conn, nil +} + +type dialerWithEarlyDataRelayed struct { + forwarder ext.BrowserForwarder + uriBase string + config *Config +} + +func (d dialerWithEarlyDataRelayed) Dial(earlyData []byte) (io.ReadWriteCloser, error) { + earlyDataBuf := bytes.NewBuffer(nil) + base64EarlyDataEncoder := base64.NewEncoder(base64.RawURLEncoding, earlyDataBuf) + + earlydata := bytes.NewReader(earlyData) + limitedEarlyDatareader := io.LimitReader(earlydata, int64(d.config.MaxEarlyData)) + n, encerr := io.Copy(base64EarlyDataEncoder, limitedEarlyDatareader) + if encerr != nil { + return nil, newError("websocket delayed dialer cannot encode early data").Base(encerr) + } + + if errc := base64EarlyDataEncoder.Close(); errc != nil { + return nil, newError("websocket delayed dialer cannot encode early data tail").Base(errc) + } + + conn, err := d.forwarder.DialWebsocket(d.uriBase+string(earlyDataBuf.Bytes()), d.config.GetRequestHeader()) + if err != nil { + var reason string + return nil, newError("failed to dial to (", d.uriBase, ") with early data: ", reason).Base(err) + } + if n != int64(len(earlyData)) { + if _, errWrite := conn.Write(earlyData[n:]); errWrite != nil { + return nil, newError("failed to dial to (", d.uriBase, ") with early data as write of remainder early data failed: ").Base(err) + } + } + return conn, nil +} From e161d6cc1fa85d7fa9cfa5cea5d69f703cced330 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 15:10:17 +0000 Subject: [PATCH 17/60] added parsing of browser forwarder config --- infra/conf/browser_forwarder.go | 18 ++++++++++++++++++ infra/conf/v2ray.go | 31 ++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 infra/conf/browser_forwarder.go diff --git a/infra/conf/browser_forwarder.go b/infra/conf/browser_forwarder.go new file mode 100644 index 000000000..ca3c138de --- /dev/null +++ b/infra/conf/browser_forwarder.go @@ -0,0 +1,18 @@ +package conf + +import ( + "github.com/golang/protobuf/proto" + "github.com/v2fly/v2ray-core/v4/app/browserforwarder" +) + +type BrowserForwarderConfig struct { + ListenAddr string `json:"listenAddr"` + ListenPort int32 `json:"listenPort"` +} + +func (b BrowserForwarderConfig) Build() (proto.Message, error) { + return &browserforwarder.Config{ + ListenAddr: b.ListenAddr, + ListenPort: b.ListenPort, + }, nil +} diff --git a/infra/conf/v2ray.go b/infra/conf/v2ray.go index 55bda336d..9a6f2e0c7 100644 --- a/infra/conf/v2ray.go +++ b/infra/conf/v2ray.go @@ -341,17 +341,18 @@ type Config struct { // and should not be used. OutboundDetours []OutboundDetourConfig `json:"outboundDetour"` - LogConfig *LogConfig `json:"log"` - RouterConfig *RouterConfig `json:"routing"` - DNSConfig *DNSConfig `json:"dns"` - InboundConfigs []InboundDetourConfig `json:"inbounds"` - OutboundConfigs []OutboundDetourConfig `json:"outbounds"` - Transport *TransportConfig `json:"transport"` - Policy *PolicyConfig `json:"policy"` - API *APIConfig `json:"api"` - Stats *StatsConfig `json:"stats"` - Reverse *ReverseConfig `json:"reverse"` - FakeDNS *FakeDNSConfig `json:"fakeDns"` + LogConfig *LogConfig `json:"log"` + RouterConfig *RouterConfig `json:"routing"` + DNSConfig *DNSConfig `json:"dns"` + InboundConfigs []InboundDetourConfig `json:"inbounds"` + OutboundConfigs []OutboundDetourConfig `json:"outbounds"` + Transport *TransportConfig `json:"transport"` + Policy *PolicyConfig `json:"policy"` + API *APIConfig `json:"api"` + Stats *StatsConfig `json:"stats"` + Reverse *ReverseConfig `json:"reverse"` + FakeDNS *FakeDNSConfig `json:"fakeDns"` + BrowserForwarder *BrowserForwarderConfig `json:"browserForwarder"` } func (c *Config) findInboundTag(tag string) int { @@ -558,6 +559,14 @@ func (c *Config) Build() (*core.Config, error) { config.App = append(config.App, serial.ToTypedMessage(r)) } + if c.BrowserForwarder != nil { + r, err := c.BrowserForwarder.Build() + if err != nil { + return nil, err + } + config.App = append(config.App, serial.ToTypedMessage(r)) + } + var inbounds []InboundDetourConfig if c.InboundConfig != nil { From fd0844934c28f68cfb67a520ff04cbbe715646f5 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 15:11:07 +0000 Subject: [PATCH 18/60] added auto generated file --- app/browserforwarder/config.pb.go | 168 +++++++++++++++++++++++ app/browserforwarder/errors.generated.go | 9 ++ 2 files changed, 177 insertions(+) create mode 100644 app/browserforwarder/config.pb.go create mode 100644 app/browserforwarder/errors.generated.go diff --git a/app/browserforwarder/config.pb.go b/app/browserforwarder/config.pb.go new file mode 100644 index 000000000..97f82a53d --- /dev/null +++ b/app/browserforwarder/config.pb.go @@ -0,0 +1,168 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.13.0 +// source: app/browserforwarder/config.proto + +package browserforwarder + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// Config is the settings for BrowserForwarder. +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ListenAddr string `protobuf:"bytes,1,opt,name=listen_addr,json=listenAddr,proto3" json:"listen_addr,omitempty"` + ListenPort int32 `protobuf:"varint,2,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_app_browserforwarder_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_app_browserforwarder_config_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_app_browserforwarder_config_proto_rawDescGZIP(), []int{0} +} + +func (x *Config) GetListenAddr() string { + if x != nil { + return x.ListenAddr + } + return "" +} + +func (x *Config) GetListenPort() int32 { + if x != nil { + return x.ListenPort + } + return 0 +} + +var File_app_browserforwarder_config_proto protoreflect.FileDescriptor + +var file_app_browserforwarder_config_proto_rawDesc = []byte{ + 0x0a, 0x21, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x65, 0x72, 0x22, 0x4a, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, + 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, + 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, + 0x42, 0x7e, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, + 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x72, + 0x6f, 0x77, 0x73, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0xaa, 0x02, + 0x1f, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, + 0x42, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_app_browserforwarder_config_proto_rawDescOnce sync.Once + file_app_browserforwarder_config_proto_rawDescData = file_app_browserforwarder_config_proto_rawDesc +) + +func file_app_browserforwarder_config_proto_rawDescGZIP() []byte { + file_app_browserforwarder_config_proto_rawDescOnce.Do(func() { + file_app_browserforwarder_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_browserforwarder_config_proto_rawDescData) + }) + return file_app_browserforwarder_config_proto_rawDescData +} + +var file_app_browserforwarder_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_app_browserforwarder_config_proto_goTypes = []interface{}{ + (*Config)(nil), // 0: v2ray.core.app.browserforwarder.Config +} +var file_app_browserforwarder_config_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_app_browserforwarder_config_proto_init() } +func file_app_browserforwarder_config_proto_init() { + if File_app_browserforwarder_config_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_app_browserforwarder_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_app_browserforwarder_config_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_app_browserforwarder_config_proto_goTypes, + DependencyIndexes: file_app_browserforwarder_config_proto_depIdxs, + MessageInfos: file_app_browserforwarder_config_proto_msgTypes, + }.Build() + File_app_browserforwarder_config_proto = out.File + file_app_browserforwarder_config_proto_rawDesc = nil + file_app_browserforwarder_config_proto_goTypes = nil + file_app_browserforwarder_config_proto_depIdxs = nil +} diff --git a/app/browserforwarder/errors.generated.go b/app/browserforwarder/errors.generated.go new file mode 100644 index 000000000..3cb13350a --- /dev/null +++ b/app/browserforwarder/errors.generated.go @@ -0,0 +1,9 @@ +package browserforwarder + +import "github.com/v2fly/v2ray-core/v4/common/errors" + +type errPathObjHolder struct{} + +func newError(values ...interface{}) *errors.Error { + return errors.New(values...).WithPathObj(errPathObjHolder{}) +} From 3bc040e3ab41e09ded2a7bf67d9bdf863f6eae8c Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 21:35:21 +0000 Subject: [PATCH 19/60] added browser forwarder firmware to the package --- release/extra/browserforwarder/index.html | 11 + release/extra/browserforwarder/index.js | 39538 ++++++++++++++++++++ 2 files changed, 39549 insertions(+) create mode 100644 release/extra/browserforwarder/index.html create mode 100644 release/extra/browserforwarder/index.js diff --git a/release/extra/browserforwarder/index.html b/release/extra/browserforwarder/index.html new file mode 100644 index 000000000..5e0eb2f79 --- /dev/null +++ b/release/extra/browserforwarder/index.html @@ -0,0 +1,11 @@ + + + + + Bridge + + +See debug console for detail + + + \ No newline at end of file diff --git a/release/extra/browserforwarder/index.js b/release/extra/browserforwarder/index.js new file mode 100644 index 000000000..46e41ea4a --- /dev/null +++ b/release/extra/browserforwarder/index.js @@ -0,0 +1,39538 @@ +"use strict"; +(function() { + +Error.stackTraceLimit = Infinity; + +var $global, $module; +if (typeof window !== "undefined") { /* web page */ + $global = window; +} else if (typeof self !== "undefined") { /* web worker */ + $global = self; +} else if (typeof global !== "undefined") { /* Node.js */ + $global = global; + $global.require = require; +} else { /* others (e.g. Nashorn) */ + $global = this; +} + +if ($global === undefined || $global.Array === undefined) { + throw new Error("no global object found"); +} +if (typeof module !== "undefined") { + $module = module; +} + +var $packages = {}, $idCounter = 0; +var $keys = function(m) { return m ? Object.keys(m) : []; }; +var $flushConsole = function() {}; +var $throwRuntimeError; /* set by package "runtime" */ +var $throwNilPointerError = function() { $throwRuntimeError("invalid memory address or nil pointer dereference"); }; +var $call = function(fn, rcvr, args) { return fn.apply(rcvr, args); }; +var $makeFunc = function(fn) { return function() { return $externalize(fn(this, new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments, []))), $emptyInterface); }; }; +var $unused = function(v) {}; + +var $mapArray = function(array, f) { + var newArray = new array.constructor(array.length); + for (var i = 0; i < array.length; i++) { + newArray[i] = f(array[i]); + } + return newArray; +}; + +var $methodVal = function(recv, name) { + var vals = recv.$methodVals || {}; + recv.$methodVals = vals; /* noop for primitives */ + var f = vals[name]; + if (f !== undefined) { + return f; + } + var method = recv[name]; + f = function() { + $stackDepthOffset--; + try { + return method.apply(recv, arguments); + } finally { + $stackDepthOffset++; + } + }; + vals[name] = f; + return f; +}; + +var $methodExpr = function(typ, name) { + var method = typ.prototype[name]; + if (method.$expr === undefined) { + method.$expr = function() { + $stackDepthOffset--; + try { + if (typ.wrapped) { + arguments[0] = new typ(arguments[0]); + } + return Function.call.apply(method, arguments); + } finally { + $stackDepthOffset++; + } + }; + } + return method.$expr; +}; + +var $ifaceMethodExprs = {}; +var $ifaceMethodExpr = function(name) { + var expr = $ifaceMethodExprs["$" + name]; + if (expr === undefined) { + expr = $ifaceMethodExprs["$" + name] = function() { + $stackDepthOffset--; + try { + return Function.call.apply(arguments[0][name], arguments); + } finally { + $stackDepthOffset++; + } + }; + } + return expr; +}; + +var $subslice = function(slice, low, high, max) { + if (high === undefined) { + high = slice.$length; + } + if (max === undefined) { + max = slice.$capacity; + } + if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) { + $throwRuntimeError("slice bounds out of range"); + } + if (slice === slice.constructor.nil) { + return slice; + } + var s = new slice.constructor(slice.$array); + s.$offset = slice.$offset + low; + s.$length = high - low; + s.$capacity = max - low; + return s; +}; + +var $substring = function(str, low, high) { + if (low < 0 || high < low || high > str.length) { + $throwRuntimeError("slice bounds out of range"); + } + return str.substring(low, high); +}; + +var $sliceToArray = function(slice) { + if (slice.$array.constructor !== Array) { + return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length); + } + return slice.$array.slice(slice.$offset, slice.$offset + slice.$length); +}; + +var $decodeRune = function(str, pos) { + var c0 = str.charCodeAt(pos); + + if (c0 < 0x80) { + return [c0, 1]; + } + + if (c0 !== c0 || c0 < 0xC0) { + return [0xFFFD, 1]; + } + + var c1 = str.charCodeAt(pos + 1); + if (c1 !== c1 || c1 < 0x80 || 0xC0 <= c1) { + return [0xFFFD, 1]; + } + + if (c0 < 0xE0) { + var r = (c0 & 0x1F) << 6 | (c1 & 0x3F); + if (r <= 0x7F) { + return [0xFFFD, 1]; + } + return [r, 2]; + } + + var c2 = str.charCodeAt(pos + 2); + if (c2 !== c2 || c2 < 0x80 || 0xC0 <= c2) { + return [0xFFFD, 1]; + } + + if (c0 < 0xF0) { + var r = (c0 & 0x0F) << 12 | (c1 & 0x3F) << 6 | (c2 & 0x3F); + if (r <= 0x7FF) { + return [0xFFFD, 1]; + } + if (0xD800 <= r && r <= 0xDFFF) { + return [0xFFFD, 1]; + } + return [r, 3]; + } + + var c3 = str.charCodeAt(pos + 3); + if (c3 !== c3 || c3 < 0x80 || 0xC0 <= c3) { + return [0xFFFD, 1]; + } + + if (c0 < 0xF8) { + var r = (c0 & 0x07) << 18 | (c1 & 0x3F) << 12 | (c2 & 0x3F) << 6 | (c3 & 0x3F); + if (r <= 0xFFFF || 0x10FFFF < r) { + return [0xFFFD, 1]; + } + return [r, 4]; + } + + return [0xFFFD, 1]; +}; + +var $encodeRune = function(r) { + if (r < 0 || r > 0x10FFFF || (0xD800 <= r && r <= 0xDFFF)) { + r = 0xFFFD; + } + if (r <= 0x7F) { + return String.fromCharCode(r); + } + if (r <= 0x7FF) { + return String.fromCharCode(0xC0 | r >> 6, 0x80 | (r & 0x3F)); + } + if (r <= 0xFFFF) { + return String.fromCharCode(0xE0 | r >> 12, 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F)); + } + return String.fromCharCode(0xF0 | r >> 18, 0x80 | (r >> 12 & 0x3F), 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F)); +}; + +var $stringToBytes = function(str) { + var array = new Uint8Array(str.length); + for (var i = 0; i < str.length; i++) { + array[i] = str.charCodeAt(i); + } + return array; +}; + +var $bytesToString = function(slice) { + if (slice.$length === 0) { + return ""; + } + var str = ""; + for (var i = 0; i < slice.$length; i += 10000) { + str += String.fromCharCode.apply(undefined, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 10000))); + } + return str; +}; + +var $stringToRunes = function(str) { + var array = new Int32Array(str.length); + var rune, j = 0; + for (var i = 0; i < str.length; i += rune[1], j++) { + rune = $decodeRune(str, i); + array[j] = rune[0]; + } + return array.subarray(0, j); +}; + +var $runesToString = function(slice) { + if (slice.$length === 0) { + return ""; + } + var str = ""; + for (var i = 0; i < slice.$length; i++) { + str += $encodeRune(slice.$array[slice.$offset + i]); + } + return str; +}; + +var $copyString = function(dst, src) { + var n = Math.min(src.length, dst.$length); + for (var i = 0; i < n; i++) { + dst.$array[dst.$offset + i] = src.charCodeAt(i); + } + return n; +}; + +var $copySlice = function(dst, src) { + var n = Math.min(src.$length, dst.$length); + $copyArray(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem); + return n; +}; + +var $copyArray = function(dst, src, dstOffset, srcOffset, n, elem) { + if (n === 0 || (dst === src && dstOffset === srcOffset)) { + return; + } + + if (src.subarray) { + dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset); + return; + } + + switch (elem.kind) { + case $kindArray: + case $kindStruct: + if (dst === src && dstOffset > srcOffset) { + for (var i = n - 1; i >= 0; i--) { + elem.copy(dst[dstOffset + i], src[srcOffset + i]); + } + return; + } + for (var i = 0; i < n; i++) { + elem.copy(dst[dstOffset + i], src[srcOffset + i]); + } + return; + } + + if (dst === src && dstOffset > srcOffset) { + for (var i = n - 1; i >= 0; i--) { + dst[dstOffset + i] = src[srcOffset + i]; + } + return; + } + for (var i = 0; i < n; i++) { + dst[dstOffset + i] = src[srcOffset + i]; + } +}; + +var $clone = function(src, type) { + var clone = type.zero(); + type.copy(clone, src); + return clone; +}; + +var $pointerOfStructConversion = function(obj, type) { + if(obj.$proxies === undefined) { + obj.$proxies = {}; + obj.$proxies[obj.constructor.string] = obj; + } + var proxy = obj.$proxies[type.string]; + if (proxy === undefined) { + var properties = {}; + for (var i = 0; i < type.elem.fields.length; i++) { + (function(fieldProp) { + properties[fieldProp] = { + get: function() { return obj[fieldProp]; }, + set: function(value) { obj[fieldProp] = value; } + }; + })(type.elem.fields[i].prop); + } + proxy = Object.create(type.prototype, properties); + proxy.$val = proxy; + obj.$proxies[type.string] = proxy; + proxy.$proxies = obj.$proxies; + } + return proxy; +}; + +var $append = function(slice) { + return $internalAppend(slice, arguments, 1, arguments.length - 1); +}; + +var $appendSlice = function(slice, toAppend) { + if (toAppend.constructor === String) { + var bytes = $stringToBytes(toAppend); + return $internalAppend(slice, bytes, 0, bytes.length); + } + return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length); +}; + +var $internalAppend = function(slice, array, offset, length) { + if (length === 0) { + return slice; + } + + var newArray = slice.$array; + var newOffset = slice.$offset; + var newLength = slice.$length + length; + var newCapacity = slice.$capacity; + + if (newLength > newCapacity) { + newOffset = 0; + newCapacity = Math.max(newLength, slice.$capacity < 1024 ? slice.$capacity * 2 : Math.floor(slice.$capacity * 5 / 4)); + + if (slice.$array.constructor === Array) { + newArray = slice.$array.slice(slice.$offset, slice.$offset + slice.$length); + newArray.length = newCapacity; + var zero = slice.constructor.elem.zero; + for (var i = slice.$length; i < newCapacity; i++) { + newArray[i] = zero(); + } + } else { + newArray = new slice.$array.constructor(newCapacity); + newArray.set(slice.$array.subarray(slice.$offset, slice.$offset + slice.$length)); + } + } + + $copyArray(newArray, array, newOffset + slice.$length, offset, length, slice.constructor.elem); + + var newSlice = new slice.constructor(newArray); + newSlice.$offset = newOffset; + newSlice.$length = newLength; + newSlice.$capacity = newCapacity; + return newSlice; +}; + +var $equal = function(a, b, type) { + if (type === $jsObjectPtr) { + return a === b; + } + switch (type.kind) { + case $kindComplex64: + case $kindComplex128: + return a.$real === b.$real && a.$imag === b.$imag; + case $kindInt64: + case $kindUint64: + return a.$high === b.$high && a.$low === b.$low; + case $kindArray: + if (a.length !== b.length) { + return false; + } + for (var i = 0; i < a.length; i++) { + if (!$equal(a[i], b[i], type.elem)) { + return false; + } + } + return true; + case $kindStruct: + for (var i = 0; i < type.fields.length; i++) { + var f = type.fields[i]; + if (!$equal(a[f.prop], b[f.prop], f.typ)) { + return false; + } + } + return true; + case $kindInterface: + return $interfaceIsEqual(a, b); + default: + return a === b; + } +}; + +var $interfaceIsEqual = function(a, b) { + if (a === $ifaceNil || b === $ifaceNil) { + return a === b; + } + if (a.constructor !== b.constructor) { + return false; + } + if (a.constructor === $jsObjectPtr) { + return a.object === b.object; + } + if (!a.constructor.comparable) { + $throwRuntimeError("comparing uncomparable type " + a.constructor.string); + } + return $equal(a.$val, b.$val, a.constructor); +}; + +var $min = Math.min; +var $mod = function(x, y) { return x % y; }; +var $parseInt = parseInt; +var $parseFloat = function(f) { + if (f !== undefined && f !== null && f.constructor === Number) { + return f; + } + return parseFloat(f); +}; + +var $froundBuf = new Float32Array(1); +var $fround = Math.fround || function(f) { + $froundBuf[0] = f; + return $froundBuf[0]; +}; + +var $imul = Math.imul || function(a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) >> 0); +}; + +var $floatKey = function(f) { + if (f !== f) { + $idCounter++; + return "NaN$" + $idCounter; + } + return String(f); +}; + +var $flatten64 = function(x) { + return x.$high * 4294967296 + x.$low; +}; + +var $shiftLeft64 = function(x, y) { + if (y === 0) { + return x; + } + if (y < 32) { + return new x.constructor(x.$high << y | x.$low >>> (32 - y), (x.$low << y) >>> 0); + } + if (y < 64) { + return new x.constructor(x.$low << (y - 32), 0); + } + return new x.constructor(0, 0); +}; + +var $shiftRightInt64 = function(x, y) { + if (y === 0) { + return x; + } + if (y < 32) { + return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0); + } + if (y < 64) { + return new x.constructor(x.$high >> 31, (x.$high >> (y - 32)) >>> 0); + } + if (x.$high < 0) { + return new x.constructor(-1, 4294967295); + } + return new x.constructor(0, 0); +}; + +var $shiftRightUint64 = function(x, y) { + if (y === 0) { + return x; + } + if (y < 32) { + return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0); + } + if (y < 64) { + return new x.constructor(0, x.$high >>> (y - 32)); + } + return new x.constructor(0, 0); +}; + +var $mul64 = function(x, y) { + var high = 0, low = 0; + if ((y.$low & 1) !== 0) { + high = x.$high; + low = x.$low; + } + for (var i = 1; i < 32; i++) { + if ((y.$low & 1<>> (32 - i); + low += (x.$low << i) >>> 0; + } + } + for (var i = 0; i < 32; i++) { + if ((y.$high & 1< yHigh) || (xHigh === yHigh && xLow > yLow))) { + yHigh = (yHigh << 1 | yLow >>> 31) >>> 0; + yLow = (yLow << 1) >>> 0; + n++; + } + for (var i = 0; i <= n; i++) { + high = high << 1 | low >>> 31; + low = (low << 1) >>> 0; + if ((xHigh > yHigh) || (xHigh === yHigh && xLow >= yLow)) { + xHigh = xHigh - yHigh; + xLow = xLow - yLow; + if (xLow < 0) { + xHigh--; + xLow += 4294967296; + } + low++; + if (low === 4294967296) { + high++; + low = 0; + } + } + yLow = (yLow >>> 1 | yHigh << (32 - 1)) >>> 0; + yHigh = yHigh >>> 1; + } + + if (returnRemainder) { + return new x.constructor(xHigh * rs, xLow * rs); + } + return new x.constructor(high * s, low * s); +}; + +var $divComplex = function(n, d) { + var ninf = n.$real === Infinity || n.$real === -Infinity || n.$imag === Infinity || n.$imag === -Infinity; + var dinf = d.$real === Infinity || d.$real === -Infinity || d.$imag === Infinity || d.$imag === -Infinity; + var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag); + var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag); + if(nnan || dnan) { + return new n.constructor(NaN, NaN); + } + if (ninf && !dinf) { + return new n.constructor(Infinity, Infinity); + } + if (!ninf && dinf) { + return new n.constructor(0, 0); + } + if (d.$real === 0 && d.$imag === 0) { + if (n.$real === 0 && n.$imag === 0) { + return new n.constructor(NaN, NaN); + } + return new n.constructor(Infinity, Infinity); + } + var a = Math.abs(d.$real); + var b = Math.abs(d.$imag); + if (a <= b) { + var ratio = d.$real / d.$imag; + var denom = d.$real * ratio + d.$imag; + return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom); + } + var ratio = d.$imag / d.$real; + var denom = d.$imag * ratio + d.$real; + return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom); +}; + +var $kindBool = 1; +var $kindInt = 2; +var $kindInt8 = 3; +var $kindInt16 = 4; +var $kindInt32 = 5; +var $kindInt64 = 6; +var $kindUint = 7; +var $kindUint8 = 8; +var $kindUint16 = 9; +var $kindUint32 = 10; +var $kindUint64 = 11; +var $kindUintptr = 12; +var $kindFloat32 = 13; +var $kindFloat64 = 14; +var $kindComplex64 = 15; +var $kindComplex128 = 16; +var $kindArray = 17; +var $kindChan = 18; +var $kindFunc = 19; +var $kindInterface = 20; +var $kindMap = 21; +var $kindPtr = 22; +var $kindSlice = 23; +var $kindString = 24; +var $kindStruct = 25; +var $kindUnsafePointer = 26; + +var $methodSynthesizers = []; +var $addMethodSynthesizer = function(f) { + if ($methodSynthesizers === null) { + f(); + return; + } + $methodSynthesizers.push(f); +}; +var $synthesizeMethods = function() { + $methodSynthesizers.forEach(function(f) { f(); }); + $methodSynthesizers = null; +}; + +var $ifaceKeyFor = function(x) { + if (x === $ifaceNil) { + return 'nil'; + } + var c = x.constructor; + return c.string + '$' + c.keyFor(x.$val); +}; + +var $identity = function(x) { return x; }; + +var $typeIDCounter = 0; + +var $idKey = function(x) { + if (x.$id === undefined) { + $idCounter++; + x.$id = $idCounter; + } + return String(x.$id); +}; + +var $newType = function(size, kind, string, named, pkg, exported, constructor) { + var typ; + switch(kind) { + case $kindBool: + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindUnsafePointer: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.keyFor = $identity; + break; + + case $kindString: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.keyFor = function(x) { return "$" + x; }; + break; + + case $kindFloat32: + case $kindFloat64: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.keyFor = function(x) { return $floatKey(x); }; + break; + + case $kindInt64: + typ = function(high, low) { + this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >> 0; + this.$low = low >>> 0; + this.$val = this; + }; + typ.keyFor = function(x) { return x.$high + "$" + x.$low; }; + break; + + case $kindUint64: + typ = function(high, low) { + this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >>> 0; + this.$low = low >>> 0; + this.$val = this; + }; + typ.keyFor = function(x) { return x.$high + "$" + x.$low; }; + break; + + case $kindComplex64: + typ = function(real, imag) { + this.$real = $fround(real); + this.$imag = $fround(imag); + this.$val = this; + }; + typ.keyFor = function(x) { return x.$real + "$" + x.$imag; }; + break; + + case $kindComplex128: + typ = function(real, imag) { + this.$real = real; + this.$imag = imag; + this.$val = this; + }; + typ.keyFor = function(x) { return x.$real + "$" + x.$imag; }; + break; + + case $kindArray: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.ptr = $newType(4, $kindPtr, "*" + string, false, "", false, function(array) { + this.$get = function() { return array; }; + this.$set = function(v) { typ.copy(this, v); }; + this.$val = array; + }); + typ.init = function(elem, len) { + typ.elem = elem; + typ.len = len; + typ.comparable = elem.comparable; + typ.keyFor = function(x) { + return Array.prototype.join.call($mapArray(x, function(e) { + return String(elem.keyFor(e)).replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); + }), "$"); + }; + typ.copy = function(dst, src) { + $copyArray(dst, src, 0, 0, src.length, elem); + }; + typ.ptr.init(typ); + Object.defineProperty(typ.ptr.nil, "nilCheck", { get: $throwNilPointerError }); + }; + break; + + case $kindChan: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.keyFor = $idKey; + typ.init = function(elem, sendOnly, recvOnly) { + typ.elem = elem; + typ.sendOnly = sendOnly; + typ.recvOnly = recvOnly; + }; + break; + + case $kindFunc: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.init = function(params, results, variadic) { + typ.params = params; + typ.results = results; + typ.variadic = variadic; + typ.comparable = false; + }; + break; + + case $kindInterface: + typ = { implementedBy: {}, missingMethodFor: {} }; + typ.keyFor = $ifaceKeyFor; + typ.init = function(methods) { + typ.methods = methods; + methods.forEach(function(m) { + $ifaceNil[m.prop] = $throwNilPointerError; + }); + }; + break; + + case $kindMap: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.init = function(key, elem) { + typ.key = key; + typ.elem = elem; + typ.comparable = false; + }; + break; + + case $kindPtr: + typ = constructor || function(getter, setter, target) { + this.$get = getter; + this.$set = setter; + this.$target = target; + this.$val = this; + }; + typ.keyFor = $idKey; + typ.init = function(elem) { + typ.elem = elem; + typ.wrapped = (elem.kind === $kindArray); + typ.nil = new typ($throwNilPointerError, $throwNilPointerError); + }; + break; + + case $kindSlice: + typ = function(array) { + if (array.constructor !== typ.nativeArray) { + array = new typ.nativeArray(array); + } + this.$array = array; + this.$offset = 0; + this.$length = array.length; + this.$capacity = array.length; + this.$val = this; + }; + typ.init = function(elem) { + typ.elem = elem; + typ.comparable = false; + typ.nativeArray = $nativeArray(elem.kind); + typ.nil = new typ([]); + }; + break; + + case $kindStruct: + typ = function(v) { this.$val = v; }; + typ.wrapped = true; + typ.ptr = $newType(4, $kindPtr, "*" + string, false, pkg, exported, constructor); + typ.ptr.elem = typ; + typ.ptr.prototype.$get = function() { return this; }; + typ.ptr.prototype.$set = function(v) { typ.copy(this, v); }; + typ.init = function(pkgPath, fields) { + typ.pkgPath = pkgPath; + typ.fields = fields; + fields.forEach(function(f) { + if (!f.typ.comparable) { + typ.comparable = false; + } + }); + typ.keyFor = function(x) { + var val = x.$val; + return $mapArray(fields, function(f) { + return String(f.typ.keyFor(val[f.prop])).replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); + }).join("$"); + }; + typ.copy = function(dst, src) { + for (var i = 0; i < fields.length; i++) { + var f = fields[i]; + switch (f.typ.kind) { + case $kindArray: + case $kindStruct: + f.typ.copy(dst[f.prop], src[f.prop]); + continue; + default: + dst[f.prop] = src[f.prop]; + continue; + } + } + }; + /* nil value */ + var properties = {}; + fields.forEach(function(f) { + properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError }; + }); + typ.ptr.nil = Object.create(constructor.prototype, properties); + typ.ptr.nil.$val = typ.ptr.nil; + /* methods for embedded fields */ + $addMethodSynthesizer(function() { + var synthesizeMethod = function(target, m, f) { + if (target.prototype[m.prop] !== undefined) { return; } + target.prototype[m.prop] = function() { + var v = this.$val[f.prop]; + if (f.typ === $jsObjectPtr) { + v = new $jsObjectPtr(v); + } + if (v.$val === undefined) { + v = new f.typ(v); + } + return v[m.prop].apply(v, arguments); + }; + }; + fields.forEach(function(f) { + if (f.embedded) { + $methodSet(f.typ).forEach(function(m) { + synthesizeMethod(typ, m, f); + synthesizeMethod(typ.ptr, m, f); + }); + $methodSet($ptrType(f.typ)).forEach(function(m) { + synthesizeMethod(typ.ptr, m, f); + }); + } + }); + }); + }; + break; + + default: + $panic(new $String("invalid kind: " + kind)); + } + + switch (kind) { + case $kindBool: + case $kindMap: + typ.zero = function() { return false; }; + break; + + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8 : + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindUnsafePointer: + case $kindFloat32: + case $kindFloat64: + typ.zero = function() { return 0; }; + break; + + case $kindString: + typ.zero = function() { return ""; }; + break; + + case $kindInt64: + case $kindUint64: + case $kindComplex64: + case $kindComplex128: + var zero = new typ(0, 0); + typ.zero = function() { return zero; }; + break; + + case $kindPtr: + case $kindSlice: + typ.zero = function() { return typ.nil; }; + break; + + case $kindChan: + typ.zero = function() { return $chanNil; }; + break; + + case $kindFunc: + typ.zero = function() { return $throwNilPointerError; }; + break; + + case $kindInterface: + typ.zero = function() { return $ifaceNil; }; + break; + + case $kindArray: + typ.zero = function() { + var arrayClass = $nativeArray(typ.elem.kind); + if (arrayClass !== Array) { + return new arrayClass(typ.len); + } + var array = new Array(typ.len); + for (var i = 0; i < typ.len; i++) { + array[i] = typ.elem.zero(); + } + return array; + }; + break; + + case $kindStruct: + typ.zero = function() { return new typ.ptr(); }; + break; + + default: + $panic(new $String("invalid kind: " + kind)); + } + + typ.id = $typeIDCounter; + $typeIDCounter++; + typ.size = size; + typ.kind = kind; + typ.string = string; + typ.named = named; + typ.pkg = pkg; + typ.exported = exported; + typ.methods = []; + typ.methodSetCache = null; + typ.comparable = true; + return typ; +}; + +var $methodSet = function(typ) { + if (typ.methodSetCache !== null) { + return typ.methodSetCache; + } + var base = {}; + + var isPtr = (typ.kind === $kindPtr); + if (isPtr && typ.elem.kind === $kindInterface) { + typ.methodSetCache = []; + return []; + } + + var current = [{typ: isPtr ? typ.elem : typ, indirect: isPtr}]; + + var seen = {}; + + while (current.length > 0) { + var next = []; + var mset = []; + + current.forEach(function(e) { + if (seen[e.typ.string]) { + return; + } + seen[e.typ.string] = true; + + if (e.typ.named) { + mset = mset.concat(e.typ.methods); + if (e.indirect) { + mset = mset.concat($ptrType(e.typ).methods); + } + } + + switch (e.typ.kind) { + case $kindStruct: + e.typ.fields.forEach(function(f) { + if (f.embedded) { + var fTyp = f.typ; + var fIsPtr = (fTyp.kind === $kindPtr); + next.push({typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr}); + } + }); + break; + + case $kindInterface: + mset = mset.concat(e.typ.methods); + break; + } + }); + + mset.forEach(function(m) { + if (base[m.name] === undefined) { + base[m.name] = m; + } + }); + + current = next; + } + + typ.methodSetCache = []; + Object.keys(base).sort().forEach(function(name) { + typ.methodSetCache.push(base[name]); + }); + return typ.methodSetCache; +}; + +var $Bool = $newType( 1, $kindBool, "bool", true, "", false, null); +var $Int = $newType( 4, $kindInt, "int", true, "", false, null); +var $Int8 = $newType( 1, $kindInt8, "int8", true, "", false, null); +var $Int16 = $newType( 2, $kindInt16, "int16", true, "", false, null); +var $Int32 = $newType( 4, $kindInt32, "int32", true, "", false, null); +var $Int64 = $newType( 8, $kindInt64, "int64", true, "", false, null); +var $Uint = $newType( 4, $kindUint, "uint", true, "", false, null); +var $Uint8 = $newType( 1, $kindUint8, "uint8", true, "", false, null); +var $Uint16 = $newType( 2, $kindUint16, "uint16", true, "", false, null); +var $Uint32 = $newType( 4, $kindUint32, "uint32", true, "", false, null); +var $Uint64 = $newType( 8, $kindUint64, "uint64", true, "", false, null); +var $Uintptr = $newType( 4, $kindUintptr, "uintptr", true, "", false, null); +var $Float32 = $newType( 4, $kindFloat32, "float32", true, "", false, null); +var $Float64 = $newType( 8, $kindFloat64, "float64", true, "", false, null); +var $Complex64 = $newType( 8, $kindComplex64, "complex64", true, "", false, null); +var $Complex128 = $newType(16, $kindComplex128, "complex128", true, "", false, null); +var $String = $newType( 8, $kindString, "string", true, "", false, null); +var $UnsafePointer = $newType( 4, $kindUnsafePointer, "unsafe.Pointer", true, "", false, null); + +var $nativeArray = function(elemKind) { + switch (elemKind) { + case $kindInt: + return Int32Array; + case $kindInt8: + return Int8Array; + case $kindInt16: + return Int16Array; + case $kindInt32: + return Int32Array; + case $kindUint: + return Uint32Array; + case $kindUint8: + return Uint8Array; + case $kindUint16: + return Uint16Array; + case $kindUint32: + return Uint32Array; + case $kindUintptr: + return Uint32Array; + case $kindFloat32: + return Float32Array; + case $kindFloat64: + return Float64Array; + default: + return Array; + } +}; +var $toNativeArray = function(elemKind, array) { + var nativeArray = $nativeArray(elemKind); + if (nativeArray === Array) { + return array; + } + return new nativeArray(array); +}; +var $arrayTypes = {}; +var $arrayType = function(elem, len) { + var typeKey = elem.id + "$" + len; + var typ = $arrayTypes[typeKey]; + if (typ === undefined) { + typ = $newType(12, $kindArray, "[" + len + "]" + elem.string, false, "", false, null); + $arrayTypes[typeKey] = typ; + typ.init(elem, len); + } + return typ; +}; + +var $chanType = function(elem, sendOnly, recvOnly) { + var string = (recvOnly ? "<-" : "") + "chan" + (sendOnly ? "<- " : " ") + elem.string; + var field = sendOnly ? "SendChan" : (recvOnly ? "RecvChan" : "Chan"); + var typ = elem[field]; + if (typ === undefined) { + typ = $newType(4, $kindChan, string, false, "", false, null); + elem[field] = typ; + typ.init(elem, sendOnly, recvOnly); + } + return typ; +}; +var $Chan = function(elem, capacity) { + if (capacity < 0 || capacity > 2147483647) { + $throwRuntimeError("makechan: size out of range"); + } + this.$elem = elem; + this.$capacity = capacity; + this.$buffer = []; + this.$sendQueue = []; + this.$recvQueue = []; + this.$closed = false; +}; +var $chanNil = new $Chan(null, 0); +$chanNil.$sendQueue = $chanNil.$recvQueue = { length: 0, push: function() {}, shift: function() { return undefined; }, indexOf: function() { return -1; } }; + +var $funcTypes = {}; +var $funcType = function(params, results, variadic) { + var typeKey = $mapArray(params, function(p) { return p.id; }).join(",") + "$" + $mapArray(results, function(r) { return r.id; }).join(",") + "$" + variadic; + var typ = $funcTypes[typeKey]; + if (typ === undefined) { + var paramTypes = $mapArray(params, function(p) { return p.string; }); + if (variadic) { + paramTypes[paramTypes.length - 1] = "..." + paramTypes[paramTypes.length - 1].substr(2); + } + var string = "func(" + paramTypes.join(", ") + ")"; + if (results.length === 1) { + string += " " + results[0].string; + } else if (results.length > 1) { + string += " (" + $mapArray(results, function(r) { return r.string; }).join(", ") + ")"; + } + typ = $newType(4, $kindFunc, string, false, "", false, null); + $funcTypes[typeKey] = typ; + typ.init(params, results, variadic); + } + return typ; +}; + +var $interfaceTypes = {}; +var $interfaceType = function(methods) { + var typeKey = $mapArray(methods, function(m) { return m.pkg + "," + m.name + "," + m.typ.id; }).join("$"); + var typ = $interfaceTypes[typeKey]; + if (typ === undefined) { + var string = "interface {}"; + if (methods.length !== 0) { + string = "interface { " + $mapArray(methods, function(m) { + return (m.pkg !== "" ? m.pkg + "." : "") + m.name + m.typ.string.substr(4); + }).join("; ") + " }"; + } + typ = $newType(8, $kindInterface, string, false, "", false, null); + $interfaceTypes[typeKey] = typ; + typ.init(methods); + } + return typ; +}; +var $emptyInterface = $interfaceType([]); +var $ifaceNil = {}; +var $error = $newType(8, $kindInterface, "error", true, "", false, null); +$error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]); + +var $mapTypes = {}; +var $mapType = function(key, elem) { + var typeKey = key.id + "$" + elem.id; + var typ = $mapTypes[typeKey]; + if (typ === undefined) { + typ = $newType(4, $kindMap, "map[" + key.string + "]" + elem.string, false, "", false, null); + $mapTypes[typeKey] = typ; + typ.init(key, elem); + } + return typ; +}; +var $makeMap = function(keyForFunc, entries) { + var m = {}; + for (var i = 0; i < entries.length; i++) { + var e = entries[i]; + m[keyForFunc(e.k)] = e; + } + return m; +}; + +var $ptrType = function(elem) { + var typ = elem.ptr; + if (typ === undefined) { + typ = $newType(4, $kindPtr, "*" + elem.string, false, "", elem.exported, null); + elem.ptr = typ; + typ.init(elem); + } + return typ; +}; + +var $newDataPointer = function(data, constructor) { + if (constructor.elem.kind === $kindStruct) { + return data; + } + return new constructor(function() { return data; }, function(v) { data = v; }); +}; + +var $indexPtr = function(array, index, constructor) { + array.$ptr = array.$ptr || {}; + return array.$ptr[index] || (array.$ptr[index] = new constructor(function() { return array[index]; }, function(v) { array[index] = v; })); +}; + +var $sliceType = function(elem) { + var typ = elem.slice; + if (typ === undefined) { + typ = $newType(12, $kindSlice, "[]" + elem.string, false, "", false, null); + elem.slice = typ; + typ.init(elem); + } + return typ; +}; +var $makeSlice = function(typ, length, capacity) { + capacity = capacity || length; + if (length < 0 || length > 2147483647) { + $throwRuntimeError("makeslice: len out of range"); + } + if (capacity < 0 || capacity < length || capacity > 2147483647) { + $throwRuntimeError("makeslice: cap out of range"); + } + var array = new typ.nativeArray(capacity); + if (typ.nativeArray === Array) { + for (var i = 0; i < capacity; i++) { + array[i] = typ.elem.zero(); + } + } + var slice = new typ(array); + slice.$length = length; + return slice; +}; + +var $structTypes = {}; +var $structType = function(pkgPath, fields) { + var typeKey = $mapArray(fields, function(f) { return f.name + "," + f.typ.id + "," + f.tag; }).join("$"); + var typ = $structTypes[typeKey]; + if (typ === undefined) { + var string = "struct { " + $mapArray(fields, function(f) { + return f.name + " " + f.typ.string + (f.tag !== "" ? (" \"" + f.tag.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\"") : ""); + }).join("; ") + " }"; + if (fields.length === 0) { + string = "struct {}"; + } + typ = $newType(0, $kindStruct, string, false, "", false, function() { + this.$val = this; + for (var i = 0; i < fields.length; i++) { + var f = fields[i]; + var arg = arguments[i]; + this[f.prop] = arg !== undefined ? arg : f.typ.zero(); + } + }); + $structTypes[typeKey] = typ; + typ.init(pkgPath, fields); + } + return typ; +}; + +var $assertType = function(value, type, returnTuple) { + var isInterface = (type.kind === $kindInterface), ok, missingMethod = ""; + if (value === $ifaceNil) { + ok = false; + } else if (!isInterface) { + ok = value.constructor === type; + } else { + var valueTypeString = value.constructor.string; + ok = type.implementedBy[valueTypeString]; + if (ok === undefined) { + ok = true; + var valueMethodSet = $methodSet(value.constructor); + var interfaceMethods = type.methods; + for (var i = 0; i < interfaceMethods.length; i++) { + var tm = interfaceMethods[i]; + var found = false; + for (var j = 0; j < valueMethodSet.length; j++) { + var vm = valueMethodSet[j]; + if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) { + found = true; + break; + } + } + if (!found) { + ok = false; + type.missingMethodFor[valueTypeString] = tm.name; + break; + } + } + type.implementedBy[valueTypeString] = ok; + } + if (!ok) { + missingMethod = type.missingMethodFor[valueTypeString]; + } + } + + if (!ok) { + if (returnTuple) { + return [type.zero(), false]; + } + $panic(new $packages["runtime"].TypeAssertionError.ptr( + $packages["runtime"]._type.ptr.nil, + (value === $ifaceNil ? $packages["runtime"]._type.ptr.nil : new $packages["runtime"]._type.ptr(value.constructor.string)), + new $packages["runtime"]._type.ptr(type.string), + missingMethod)); + } + + if (!isInterface) { + value = value.$val; + } + if (type === $jsObjectPtr) { + value = value.object; + } + return returnTuple ? [value, true] : value; +}; + +var $stackDepthOffset = 0; +var $getStackDepth = function() { + var err = new Error(); + if (err.stack === undefined) { + return undefined; + } + return $stackDepthOffset + err.stack.split("\n").length; +}; + +var $panicStackDepth = null, $panicValue; +var $callDeferred = function(deferred, jsErr, fromPanic) { + if (!fromPanic && deferred !== null && deferred.index >= $curGoroutine.deferStack.length) { + throw jsErr; + } + if (jsErr !== null) { + var newErr = null; + try { + $curGoroutine.deferStack.push(deferred); + $panic(new $jsErrorPtr(jsErr)); + } catch (err) { + newErr = err; + } + $curGoroutine.deferStack.pop(); + $callDeferred(deferred, newErr); + return; + } + if ($curGoroutine.asleep) { + return; + } + + $stackDepthOffset--; + var outerPanicStackDepth = $panicStackDepth; + var outerPanicValue = $panicValue; + + var localPanicValue = $curGoroutine.panicStack.pop(); + if (localPanicValue !== undefined) { + $panicStackDepth = $getStackDepth(); + $panicValue = localPanicValue; + } + + try { + while (true) { + if (deferred === null) { + deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1]; + if (deferred === undefined) { + /* The panic reached the top of the stack. Clear it and throw it as a JavaScript error. */ + $panicStackDepth = null; + if (localPanicValue.Object instanceof Error) { + throw localPanicValue.Object; + } + var msg; + if (localPanicValue.constructor === $String) { + msg = localPanicValue.$val; + } else if (localPanicValue.Error !== undefined) { + msg = localPanicValue.Error(); + } else if (localPanicValue.String !== undefined) { + msg = localPanicValue.String(); + } else { + msg = localPanicValue; + } + throw new Error(msg); + } + } + var call = deferred.pop(); + if (call === undefined) { + $curGoroutine.deferStack.pop(); + if (localPanicValue !== undefined) { + deferred = null; + continue; + } + return; + } + var r = call[0].apply(call[2], call[1]); + if (r && r.$blk !== undefined) { + deferred.push([r.$blk, [], r]); + if (fromPanic) { + throw null; + } + return; + } + + if (localPanicValue !== undefined && $panicStackDepth === null) { + throw null; /* error was recovered */ + } + } + } finally { + if (localPanicValue !== undefined) { + if ($panicStackDepth !== null) { + $curGoroutine.panicStack.push(localPanicValue); + } + $panicStackDepth = outerPanicStackDepth; + $panicValue = outerPanicValue; + } + $stackDepthOffset++; + } +}; + +var $panic = function(value) { + $curGoroutine.panicStack.push(value); + $callDeferred(null, null, true); +}; +var $recover = function() { + if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) { + return $ifaceNil; + } + $panicStackDepth = null; + return $panicValue; +}; +var $throw = function(err) { throw err; }; + +var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] }; +var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true; +var $mainFinished = false; +var $go = function(fun, args) { + $totalGoroutines++; + $awakeGoroutines++; + var $goroutine = function() { + try { + $curGoroutine = $goroutine; + var r = fun.apply(undefined, args); + if (r && r.$blk !== undefined) { + fun = function() { return r.$blk(); }; + args = []; + return; + } + $goroutine.exit = true; + } catch (err) { + if (!$goroutine.exit) { + throw err; + } + } finally { + $curGoroutine = $noGoroutine; + if ($goroutine.exit) { /* also set by runtime.Goexit() */ + $totalGoroutines--; + $goroutine.asleep = true; + } + if ($goroutine.asleep) { + $awakeGoroutines--; + if (!$mainFinished && $awakeGoroutines === 0 && $checkForDeadlock) { + console.error("fatal error: all goroutines are asleep - deadlock!"); + if ($global.process !== undefined) { + $global.process.exit(2); + } + } + } + } + }; + $goroutine.asleep = false; + $goroutine.exit = false; + $goroutine.deferStack = []; + $goroutine.panicStack = []; + $schedule($goroutine); +}; + +var $scheduled = []; +var $runScheduled = function() { + try { + var r; + while ((r = $scheduled.shift()) !== undefined) { + r(); + } + } finally { + if ($scheduled.length > 0) { + setTimeout($runScheduled, 0); + } + } +}; + +var $schedule = function(goroutine) { + if (goroutine.asleep) { + goroutine.asleep = false; + $awakeGoroutines++; + } + $scheduled.push(goroutine); + if ($curGoroutine === $noGoroutine) { + $runScheduled(); + } +}; + +var $setTimeout = function(f, t) { + $awakeGoroutines++; + return setTimeout(function() { + $awakeGoroutines--; + f(); + }, t); +}; + +var $block = function() { + if ($curGoroutine === $noGoroutine) { + $throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine"); + } + $curGoroutine.asleep = true; +}; + +var $send = function(chan, value) { + if (chan.$closed) { + $throwRuntimeError("send on closed channel"); + } + var queuedRecv = chan.$recvQueue.shift(); + if (queuedRecv !== undefined) { + queuedRecv([value, true]); + return; + } + if (chan.$buffer.length < chan.$capacity) { + chan.$buffer.push(value); + return; + } + + var thisGoroutine = $curGoroutine; + var closedDuringSend; + chan.$sendQueue.push(function(closed) { + closedDuringSend = closed; + $schedule(thisGoroutine); + return value; + }); + $block(); + return { + $blk: function() { + if (closedDuringSend) { + $throwRuntimeError("send on closed channel"); + } + } + }; +}; +var $recv = function(chan) { + var queuedSend = chan.$sendQueue.shift(); + if (queuedSend !== undefined) { + chan.$buffer.push(queuedSend(false)); + } + var bufferedValue = chan.$buffer.shift(); + if (bufferedValue !== undefined) { + return [bufferedValue, true]; + } + if (chan.$closed) { + return [chan.$elem.zero(), false]; + } + + var thisGoroutine = $curGoroutine; + var f = { $blk: function() { return this.value; } }; + var queueEntry = function(v) { + f.value = v; + $schedule(thisGoroutine); + }; + chan.$recvQueue.push(queueEntry); + $block(); + return f; +}; +var $close = function(chan) { + if (chan.$closed) { + $throwRuntimeError("close of closed channel"); + } + chan.$closed = true; + while (true) { + var queuedSend = chan.$sendQueue.shift(); + if (queuedSend === undefined) { + break; + } + queuedSend(true); /* will panic */ + } + while (true) { + var queuedRecv = chan.$recvQueue.shift(); + if (queuedRecv === undefined) { + break; + } + queuedRecv([chan.$elem.zero(), false]); + } +}; +var $select = function(comms) { + var ready = []; + var selection = -1; + for (var i = 0; i < comms.length; i++) { + var comm = comms[i]; + var chan = comm[0]; + switch (comm.length) { + case 0: /* default */ + selection = i; + break; + case 1: /* recv */ + if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) { + ready.push(i); + } + break; + case 2: /* send */ + if (chan.$closed) { + $throwRuntimeError("send on closed channel"); + } + if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) { + ready.push(i); + } + break; + } + } + + if (ready.length !== 0) { + selection = ready[Math.floor(Math.random() * ready.length)]; + } + if (selection !== -1) { + var comm = comms[selection]; + switch (comm.length) { + case 0: /* default */ + return [selection]; + case 1: /* recv */ + return [selection, $recv(comm[0])]; + case 2: /* send */ + $send(comm[0], comm[1]); + return [selection]; + } + } + + var entries = []; + var thisGoroutine = $curGoroutine; + var f = { $blk: function() { return this.selection; } }; + var removeFromQueues = function() { + for (var i = 0; i < entries.length; i++) { + var entry = entries[i]; + var queue = entry[0]; + var index = queue.indexOf(entry[1]); + if (index !== -1) { + queue.splice(index, 1); + } + } + }; + for (var i = 0; i < comms.length; i++) { + (function(i) { + var comm = comms[i]; + switch (comm.length) { + case 1: /* recv */ + var queueEntry = function(value) { + f.selection = [i, value]; + removeFromQueues(); + $schedule(thisGoroutine); + }; + entries.push([comm[0].$recvQueue, queueEntry]); + comm[0].$recvQueue.push(queueEntry); + break; + case 2: /* send */ + var queueEntry = function() { + if (comm[0].$closed) { + $throwRuntimeError("send on closed channel"); + } + f.selection = [i]; + removeFromQueues(); + $schedule(thisGoroutine); + return comm[1]; + }; + entries.push([comm[0].$sendQueue, queueEntry]); + comm[0].$sendQueue.push(queueEntry); + break; + } + })(i); + } + $block(); + return f; +}; + +var $jsObjectPtr, $jsErrorPtr; + +var $needsExternalization = function(t) { + switch (t.kind) { + case $kindBool: + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindFloat32: + case $kindFloat64: + return false; + default: + return t !== $jsObjectPtr; + } +}; + +var $externalize = function(v, t) { + if (t === $jsObjectPtr) { + return v; + } + switch (t.kind) { + case $kindBool: + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindFloat32: + case $kindFloat64: + return v; + case $kindInt64: + case $kindUint64: + return $flatten64(v); + case $kindArray: + if ($needsExternalization(t.elem)) { + return $mapArray(v, function(e) { return $externalize(e, t.elem); }); + } + return v; + case $kindFunc: + return $externalizeFunction(v, t, false); + case $kindInterface: + if (v === $ifaceNil) { + return null; + } + if (v.constructor === $jsObjectPtr) { + return v.$val.object; + } + return $externalize(v.$val, v.constructor); + case $kindMap: + var m = {}; + var keys = $keys(v); + for (var i = 0; i < keys.length; i++) { + var entry = v[keys[i]]; + m[$externalize(entry.k, t.key)] = $externalize(entry.v, t.elem); + } + return m; + case $kindPtr: + if (v === t.nil) { + return null; + } + return $externalize(v.$get(), t.elem); + case $kindSlice: + if ($needsExternalization(t.elem)) { + return $mapArray($sliceToArray(v), function(e) { return $externalize(e, t.elem); }); + } + return $sliceToArray(v); + case $kindString: + if ($isASCII(v)) { + return v; + } + var s = "", r; + for (var i = 0; i < v.length; i += r[1]) { + r = $decodeRune(v, i); + var c = r[0]; + if (c > 0xFFFF) { + var h = Math.floor((c - 0x10000) / 0x400) + 0xD800; + var l = (c - 0x10000) % 0x400 + 0xDC00; + s += String.fromCharCode(h, l); + continue; + } + s += String.fromCharCode(c); + } + return s; + case $kindStruct: + var timePkg = $packages["time"]; + if (timePkg !== undefined && v.constructor === timePkg.Time.ptr) { + var milli = $div64(v.UnixNano(), new $Int64(0, 1000000)); + return new Date($flatten64(milli)); + } + + var noJsObject = {}; + var searchJsObject = function(v, t) { + if (t === $jsObjectPtr) { + return v; + } + switch (t.kind) { + case $kindPtr: + if (v === t.nil) { + return noJsObject; + } + return searchJsObject(v.$get(), t.elem); + case $kindStruct: + var f = t.fields[0]; + return searchJsObject(v[f.prop], f.typ); + case $kindInterface: + return searchJsObject(v.$val, v.constructor); + default: + return noJsObject; + } + }; + var o = searchJsObject(v, t); + if (o !== noJsObject) { + return o; + } + + o = {}; + for (var i = 0; i < t.fields.length; i++) { + var f = t.fields[i]; + if (!f.exported) { + continue; + } + o[f.name] = $externalize(v[f.prop], f.typ); + } + return o; + } + $throwRuntimeError("cannot externalize " + t.string); +}; + +var $externalizeFunction = function(v, t, passThis) { + if (v === $throwNilPointerError) { + return null; + } + if (v.$externalizeWrapper === undefined) { + $checkForDeadlock = false; + v.$externalizeWrapper = function() { + var args = []; + for (var i = 0; i < t.params.length; i++) { + if (t.variadic && i === t.params.length - 1) { + var vt = t.params[i].elem, varargs = []; + for (var j = i; j < arguments.length; j++) { + varargs.push($internalize(arguments[j], vt)); + } + args.push(new (t.params[i])(varargs)); + break; + } + args.push($internalize(arguments[i], t.params[i])); + } + var result = v.apply(passThis ? this : undefined, args); + switch (t.results.length) { + case 0: + return; + case 1: + return $externalize(result, t.results[0]); + default: + for (var i = 0; i < t.results.length; i++) { + result[i] = $externalize(result[i], t.results[i]); + } + return result; + } + }; + } + return v.$externalizeWrapper; +}; + +var $internalize = function(v, t, recv) { + if (t === $jsObjectPtr) { + return v; + } + if (t === $jsObjectPtr.elem) { + $throwRuntimeError("cannot internalize js.Object, use *js.Object instead"); + } + if (v && v.__internal_object__ !== undefined) { + return $assertType(v.__internal_object__, t, false); + } + var timePkg = $packages["time"]; + if (timePkg !== undefined && t === timePkg.Time) { + if (!(v !== null && v !== undefined && v.constructor === Date)) { + $throwRuntimeError("cannot internalize time.Time from " + typeof v + ", must be Date"); + } + return timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000)); + } + switch (t.kind) { + case $kindBool: + return !!v; + case $kindInt: + return parseInt(v); + case $kindInt8: + return parseInt(v) << 24 >> 24; + case $kindInt16: + return parseInt(v) << 16 >> 16; + case $kindInt32: + return parseInt(v) >> 0; + case $kindUint: + return parseInt(v); + case $kindUint8: + return parseInt(v) << 24 >>> 24; + case $kindUint16: + return parseInt(v) << 16 >>> 16; + case $kindUint32: + case $kindUintptr: + return parseInt(v) >>> 0; + case $kindInt64: + case $kindUint64: + return new t(0, v); + case $kindFloat32: + case $kindFloat64: + return parseFloat(v); + case $kindArray: + if (v.length !== t.len) { + $throwRuntimeError("got array with wrong size from JavaScript native"); + } + return $mapArray(v, function(e) { return $internalize(e, t.elem); }); + case $kindFunc: + return function() { + var args = []; + for (var i = 0; i < t.params.length; i++) { + if (t.variadic && i === t.params.length - 1) { + var vt = t.params[i].elem, varargs = arguments[i]; + for (var j = 0; j < varargs.$length; j++) { + args.push($externalize(varargs.$array[varargs.$offset + j], vt)); + } + break; + } + args.push($externalize(arguments[i], t.params[i])); + } + var result = v.apply(recv, args); + switch (t.results.length) { + case 0: + return; + case 1: + return $internalize(result, t.results[0]); + default: + for (var i = 0; i < t.results.length; i++) { + result[i] = $internalize(result[i], t.results[i]); + } + return result; + } + }; + case $kindInterface: + if (t.methods.length !== 0) { + $throwRuntimeError("cannot internalize " + t.string); + } + if (v === null) { + return $ifaceNil; + } + if (v === undefined) { + return new $jsObjectPtr(undefined); + } + switch (v.constructor) { + case Int8Array: + return new ($sliceType($Int8))(v); + case Int16Array: + return new ($sliceType($Int16))(v); + case Int32Array: + return new ($sliceType($Int))(v); + case Uint8Array: + return new ($sliceType($Uint8))(v); + case Uint16Array: + return new ($sliceType($Uint16))(v); + case Uint32Array: + return new ($sliceType($Uint))(v); + case Float32Array: + return new ($sliceType($Float32))(v); + case Float64Array: + return new ($sliceType($Float64))(v); + case Array: + return $internalize(v, $sliceType($emptyInterface)); + case Boolean: + return new $Bool(!!v); + case Date: + if (timePkg === undefined) { + /* time package is not present, internalize as &js.Object{Date} so it can be externalized into original Date. */ + return new $jsObjectPtr(v); + } + return new timePkg.Time($internalize(v, timePkg.Time)); + case Function: + var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true); + return new funcType($internalize(v, funcType)); + case Number: + return new $Float64(parseFloat(v)); + case String: + return new $String($internalize(v, $String)); + default: + if ($global.Node && v instanceof $global.Node) { + return new $jsObjectPtr(v); + } + var mapType = $mapType($String, $emptyInterface); + return new mapType($internalize(v, mapType)); + } + case $kindMap: + var m = {}; + var keys = $keys(v); + for (var i = 0; i < keys.length; i++) { + var k = $internalize(keys[i], t.key); + m[t.key.keyFor(k)] = { k: k, v: $internalize(v[keys[i]], t.elem) }; + } + return m; + case $kindPtr: + if (t.elem.kind === $kindStruct) { + return $internalize(v, t.elem); + } + case $kindSlice: + return new t($mapArray(v, function(e) { return $internalize(e, t.elem); })); + case $kindString: + v = String(v); + if ($isASCII(v)) { + return v; + } + var s = ""; + var i = 0; + while (i < v.length) { + var h = v.charCodeAt(i); + if (0xD800 <= h && h <= 0xDBFF) { + var l = v.charCodeAt(i + 1); + var c = (h - 0xD800) * 0x400 + l - 0xDC00 + 0x10000; + s += $encodeRune(c); + i += 2; + continue; + } + s += $encodeRune(h); + i++; + } + return s; + case $kindStruct: + var noJsObject = {}; + var searchJsObject = function(t) { + if (t === $jsObjectPtr) { + return v; + } + if (t === $jsObjectPtr.elem) { + $throwRuntimeError("cannot internalize js.Object, use *js.Object instead"); + } + switch (t.kind) { + case $kindPtr: + return searchJsObject(t.elem); + case $kindStruct: + var f = t.fields[0]; + var o = searchJsObject(f.typ); + if (o !== noJsObject) { + var n = new t.ptr(); + n[f.prop] = o; + return n; + } + return noJsObject; + default: + return noJsObject; + } + }; + var o = searchJsObject(t); + if (o !== noJsObject) { + return o; + } + } + $throwRuntimeError("cannot internalize " + t.string); +}; + +/* $isASCII reports whether string s contains only ASCII characters. */ +var $isASCII = function(s) { + for (var i = 0; i < s.length; i++) { + if (s.charCodeAt(i) >= 128) { + return false; + } + } + return true; +}; + +$packages["github.com/gopherjs/gopherjs/js"] = (function() { + var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, MakeFunc, init; + Object = $pkg.Object = $newType(0, $kindStruct, "js.Object", true, "github.com/gopherjs/gopherjs/js", true, function(object_) { + this.$val = this; + if (arguments.length === 0) { + this.object = null; + return; + } + this.object = object_; + }); + Error = $pkg.Error = $newType(0, $kindStruct, "js.Error", true, "github.com/gopherjs/gopherjs/js", true, function(Object_) { + this.$val = this; + if (arguments.length === 0) { + this.Object = null; + return; + } + this.Object = Object_; + }); + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(Object); + ptrType$1 = $ptrType(Error); + Object.ptr.prototype.Get = function(key) { + var key, o; + o = this; + return o.object[$externalize(key, $String)]; + }; + Object.prototype.Get = function(key) { return this.$val.Get(key); }; + Object.ptr.prototype.Set = function(key, value) { + var key, o, value; + o = this; + o.object[$externalize(key, $String)] = $externalize(value, $emptyInterface); + }; + Object.prototype.Set = function(key, value) { return this.$val.Set(key, value); }; + Object.ptr.prototype.Delete = function(key) { + var key, o; + o = this; + delete o.object[$externalize(key, $String)]; + }; + Object.prototype.Delete = function(key) { return this.$val.Delete(key); }; + Object.ptr.prototype.Length = function() { + var o; + o = this; + return $parseInt(o.object.length); + }; + Object.prototype.Length = function() { return this.$val.Length(); }; + Object.ptr.prototype.Index = function(i) { + var i, o; + o = this; + return o.object[i]; + }; + Object.prototype.Index = function(i) { return this.$val.Index(i); }; + Object.ptr.prototype.SetIndex = function(i, value) { + var i, o, value; + o = this; + o.object[i] = $externalize(value, $emptyInterface); + }; + Object.prototype.SetIndex = function(i, value) { return this.$val.SetIndex(i, value); }; + Object.ptr.prototype.Call = function(name, args) { + var args, name, o, obj; + o = this; + return (obj = o.object, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType))); + }; + Object.prototype.Call = function(name, args) { return this.$val.Call(name, args); }; + Object.ptr.prototype.Invoke = function(args) { + var args, o; + o = this; + return o.object.apply(undefined, $externalize(args, sliceType)); + }; + Object.prototype.Invoke = function(args) { return this.$val.Invoke(args); }; + Object.ptr.prototype.New = function(args) { + var args, o; + o = this; + return new ($global.Function.prototype.bind.apply(o.object, [undefined].concat($externalize(args, sliceType)))); + }; + Object.prototype.New = function(args) { return this.$val.New(args); }; + Object.ptr.prototype.Bool = function() { + var o; + o = this; + return !!(o.object); + }; + Object.prototype.Bool = function() { return this.$val.Bool(); }; + Object.ptr.prototype.String = function() { + var o; + o = this; + return $internalize(o.object, $String); + }; + Object.prototype.String = function() { return this.$val.String(); }; + Object.ptr.prototype.Int = function() { + var o; + o = this; + return $parseInt(o.object) >> 0; + }; + Object.prototype.Int = function() { return this.$val.Int(); }; + Object.ptr.prototype.Int64 = function() { + var o; + o = this; + return $internalize(o.object, $Int64); + }; + Object.prototype.Int64 = function() { return this.$val.Int64(); }; + Object.ptr.prototype.Uint64 = function() { + var o; + o = this; + return $internalize(o.object, $Uint64); + }; + Object.prototype.Uint64 = function() { return this.$val.Uint64(); }; + Object.ptr.prototype.Float = function() { + var o; + o = this; + return $parseFloat(o.object); + }; + Object.prototype.Float = function() { return this.$val.Float(); }; + Object.ptr.prototype.Interface = function() { + var o; + o = this; + return $internalize(o.object, $emptyInterface); + }; + Object.prototype.Interface = function() { return this.$val.Interface(); }; + Object.ptr.prototype.Unsafe = function() { + var o; + o = this; + return o.object; + }; + Object.prototype.Unsafe = function() { return this.$val.Unsafe(); }; + Error.ptr.prototype.Error = function() { + var err; + err = this; + return "JavaScript error: " + $internalize(err.Object.message, $String); + }; + Error.prototype.Error = function() { return this.$val.Error(); }; + Error.ptr.prototype.Stack = function() { + var err; + err = this; + return $internalize(err.Object.stack, $String); + }; + Error.prototype.Stack = function() { return this.$val.Stack(); }; + MakeFunc = function(fn) { + var fn; + return $makeFunc(fn); + }; + $pkg.MakeFunc = MakeFunc; + init = function() { + var e; + e = new Error.ptr(null); + $unused(e); + }; + ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $emptyInterface], [], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [ptrType], false)}, {prop: "SetIndex", name: "SetIndex", pkg: "", typ: $funcType([$Int, $emptyInterface], [], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType], [ptrType], true)}, {prop: "Invoke", name: "Invoke", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "New", name: "New", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Unsafe", name: "Unsafe", pkg: "", typ: $funcType([], [$Uintptr], false)}]; + ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Stack", name: "Stack", pkg: "", typ: $funcType([], [$String], false)}]; + Object.init("github.com/gopherjs/gopherjs/js", [{prop: "object", name: "object", embedded: false, exported: false, typ: ptrType, tag: ""}]); + Error.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/cpu"] = (function() { + var $pkg = {}, $init; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/bytealg"] = (function() { + var $pkg = {}, $init, cpu, Equal, Index, Cutover, IndexByteString; + cpu = $packages["internal/cpu"]; + Equal = function(a, b) { + var _i, _ref, a, b, c, i; + if (!((a.$length === b.$length))) { + return false; + } + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { + return false; + } + _i++; + } + return true; + }; + $pkg.Equal = Equal; + Index = function(a, b) { + var a, b; + $panic(new $String("unimplemented")); + }; + $pkg.Index = Index; + Cutover = function(n) { + var n; + $panic(new $String("unimplemented")); + }; + $pkg.Cutover = Cutover; + IndexByteString = function(s, c) { + var c, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (s.charCodeAt(i) === c) { + return i; + } + i = i + (1) >> 0; + } + return -1; + }; + $pkg.IndexByteString = IndexByteString; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = cpu.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.MaxLen = 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["runtime/internal/sys"] = (function() { + var $pkg = {}, $init; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["runtime"] = (function() { + var $pkg = {}, $init, js, bytealg, sys, _type, TypeAssertionError, errorString, ptrType, ptrType$4, init, GOROOT, Caller, Goexit, SetFinalizer, KeepAlive, throw$1; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bytealg = $packages["internal/bytealg"]; + sys = $packages["runtime/internal/sys"]; + _type = $pkg._type = $newType(0, $kindStruct, "runtime._type", true, "runtime", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = ""; + return; + } + this.str = str_; + }); + TypeAssertionError = $pkg.TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", true, "runtime", true, function(_interface_, concrete_, asserted_, missingMethod_) { + this.$val = this; + if (arguments.length === 0) { + this._interface = ptrType.nil; + this.concrete = ptrType.nil; + this.asserted = ptrType.nil; + this.missingMethod = ""; + return; + } + this._interface = _interface_; + this.concrete = concrete_; + this.asserted = asserted_; + this.missingMethod = missingMethod_; + }); + errorString = $pkg.errorString = $newType(8, $kindString, "runtime.errorString", true, "runtime", false, null); + ptrType = $ptrType(_type); + ptrType$4 = $ptrType(TypeAssertionError); + _type.ptr.prototype.string = function() { + var t; + t = this; + return t.str; + }; + _type.prototype.string = function() { return this.$val.string(); }; + _type.ptr.prototype.pkgpath = function() { + var t; + t = this; + return ""; + }; + _type.prototype.pkgpath = function() { return this.$val.pkgpath(); }; + init = function() { + var e, jsPkg; + jsPkg = $packages[$externalize("github.com/gopherjs/gopherjs/js", $String)]; + $jsObjectPtr = jsPkg.Object.ptr; + $jsErrorPtr = jsPkg.Error.ptr; + $throwRuntimeError = throw$1; + e = $ifaceNil; + e = new TypeAssertionError.ptr(ptrType.nil, ptrType.nil, ptrType.nil, ""); + $unused(e); + }; + GOROOT = function() { + var process, v, v$1; + process = $global.process; + if (process === undefined) { + return "/"; + } + v = process.env.GOPHERJS_GOROOT; + if (!(v === undefined)) { + return $internalize(v, $String); + } else { + v$1 = process.env.GOROOT; + if (!(v$1 === undefined)) { + return $internalize(v$1, $String); + } + } + return "/usr/local/go"; + }; + $pkg.GOROOT = GOROOT; + Caller = function(skip) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, file, info, line, ok, parts, pc, skip; + pc = 0; + file = ""; + line = 0; + ok = false; + info = new ($global.Error)().stack.split($externalize("\n", $String))[(skip + 2 >> 0)]; + if (info === undefined) { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = 0; + _tmp$3 = false; + pc = _tmp; + file = _tmp$1; + line = _tmp$2; + ok = _tmp$3; + return [pc, file, line, ok]; + } + parts = info.substring(($parseInt(info.indexOf($externalize("(", $String))) >> 0) + 1 >> 0, $parseInt(info.indexOf($externalize(")", $String))) >> 0).split($externalize(":", $String)); + _tmp$4 = 0; + _tmp$5 = $internalize(parts[0], $String); + _tmp$6 = $parseInt(parts[1]) >> 0; + _tmp$7 = true; + pc = _tmp$4; + file = _tmp$5; + line = _tmp$6; + ok = _tmp$7; + return [pc, file, line, ok]; + }; + $pkg.Caller = Caller; + Goexit = function() { + $curGoroutine.exit = $externalize(true, $Bool); + $throw(null); + }; + $pkg.Goexit = Goexit; + SetFinalizer = function(x, f) { + var f, x; + }; + $pkg.SetFinalizer = SetFinalizer; + KeepAlive = function(param) { + var param; + }; + $pkg.KeepAlive = KeepAlive; + throw$1 = function(s) { + var s; + $panic(new errorString((s))); + }; + TypeAssertionError.ptr.prototype.RuntimeError = function() { + }; + TypeAssertionError.prototype.RuntimeError = function() { return this.$val.RuntimeError(); }; + TypeAssertionError.ptr.prototype.Error = function() { + var as, cs, e, inter, msg; + e = this; + inter = "interface"; + if (!(e._interface === ptrType.nil)) { + inter = e._interface.string(); + } + as = e.asserted.string(); + if (e.concrete === ptrType.nil) { + return "interface conversion: " + inter + " is nil, not " + as; + } + cs = e.concrete.string(); + if (e.missingMethod === "") { + msg = "interface conversion: " + inter + " is " + cs + ", not " + as; + if (cs === as) { + if (!(e.concrete.pkgpath() === e.asserted.pkgpath())) { + msg = msg + (" (types from different packages)"); + } else { + msg = msg + (" (types from different scopes)"); + } + } + return msg; + } + return "interface conversion: " + cs + " is not " + as + ": missing method " + e.missingMethod; + }; + TypeAssertionError.prototype.Error = function() { return this.$val.Error(); }; + errorString.prototype.RuntimeError = function() { + var e; + e = this.$val; + }; + $ptrType(errorString).prototype.RuntimeError = function() { return new errorString(this.$get()).RuntimeError(); }; + errorString.prototype.Error = function() { + var e; + e = this.$val; + return "runtime error: " + (e); + }; + $ptrType(errorString).prototype.Error = function() { return new errorString(this.$get()).Error(); }; + ptrType.methods = [{prop: "string", name: "string", pkg: "runtime", typ: $funcType([], [$String], false)}, {prop: "pkgpath", name: "pkgpath", pkg: "runtime", typ: $funcType([], [$String], false)}]; + ptrType$4.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + errorString.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + _type.init("runtime", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + TypeAssertionError.init("runtime", [{prop: "_interface", name: "_interface", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "concrete", name: "concrete", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "asserted", name: "asserted", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "missingMethod", name: "missingMethod", embedded: false, exported: false, typ: $String, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sys.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["errors"] = (function() { + var $pkg = {}, $init, errorString, ptrType, New; + errorString = $pkg.errorString = $newType(0, $kindStruct, "errors.errorString", true, "errors", false, function(s_) { + this.$val = this; + if (arguments.length === 0) { + this.s = ""; + return; + } + this.s = s_; + }); + ptrType = $ptrType(errorString); + New = function(text) { + var text; + return new errorString.ptr(text); + }; + $pkg.New = New; + errorString.ptr.prototype.Error = function() { + var e; + e = this; + return e.s; + }; + errorString.prototype.Error = function() { return this.$val.Error(); }; + ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + errorString.init("errors", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math/bits"] = (function() { + var $pkg = {}, $init, deBruijn32tab, deBruijn64tab, len8tab, LeadingZeros64, TrailingZeros, TrailingZeros32, TrailingZeros64, Len64; + LeadingZeros64 = function(x) { + var x; + return 64 - Len64(x) >> 0; + }; + $pkg.LeadingZeros64 = LeadingZeros64; + TrailingZeros = function(x) { + var x; + if (true) { + return TrailingZeros32(((x >>> 0))); + } + return TrailingZeros64((new $Uint64(0, x))); + }; + $pkg.TrailingZeros = TrailingZeros; + TrailingZeros32 = function(x) { + var x, x$1; + if (x === 0) { + return 32; + } + return (((x$1 = ($imul((((x & (-x >>> 0)) >>> 0)), 125613361) >>> 0) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn32tab[x$1])) >> 0)); + }; + $pkg.TrailingZeros32 = TrailingZeros32; + TrailingZeros64 = function(x) { + var x, x$1, x$2; + if ((x.$high === 0 && x.$low === 0)) { + return 64; + } + return (((x$1 = $shiftRightUint64($mul64(((x$2 = new $Uint64(-x.$high, -x.$low), new $Uint64(x.$high & x$2.$high, (x.$low & x$2.$low) >>> 0))), new $Uint64(66559345, 3033172745)), 58), (($flatten64(x$1) < 0 || $flatten64(x$1) >= deBruijn64tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn64tab[$flatten64(x$1)])) >> 0)); + }; + $pkg.TrailingZeros64 = TrailingZeros64; + Len64 = function(x) { + var n, x; + n = 0; + if ((x.$high > 1 || (x.$high === 1 && x.$low >= 0))) { + x = $shiftRightUint64(x, (32)); + n = 32; + } + if ((x.$high > 0 || (x.$high === 0 && x.$low >= 65536))) { + x = $shiftRightUint64(x, (16)); + n = n + (16) >> 0; + } + if ((x.$high > 0 || (x.$high === 0 && x.$low >= 256))) { + x = $shiftRightUint64(x, (8)); + n = n + (8) >> 0; + } + n = n + (((($flatten64(x) < 0 || $flatten64(x) >= len8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : len8tab[$flatten64(x)]) >> 0)) >> 0; + return n; + }; + $pkg.Len64 = Len64; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + deBruijn32tab = $toNativeArray($kindUint8, [0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9]); + deBruijn64tab = $toNativeArray($kindUint8, [0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4, 62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5, 63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11, 54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6]); + len8tab = $toNativeArray($kindUint8, [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math"] = (function() { + var $pkg = {}, $init, js, bits, arrayType, arrayType$1, arrayType$2, structType, math, zero, nan, buf, Exp, Log, init, Float32bits, Float32frombits, Float64bits, Float64frombits; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bits = $packages["math/bits"]; + arrayType = $arrayType($Uint32, 2); + arrayType$1 = $arrayType($Float32, 2); + arrayType$2 = $arrayType($Float64, 1); + structType = $structType("math", [{prop: "uint32array", name: "uint32array", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", embedded: false, exported: false, typ: arrayType$2, tag: ""}]); + Exp = function(x) { + var x; + return $parseFloat(math.exp(x)); + }; + $pkg.Exp = Exp; + Log = function(x) { + var x; + if (!((x === x))) { + return nan; + } + return $parseFloat(math.log(x)); + }; + $pkg.Log = Log; + init = function() { + var ab; + ab = new ($global.ArrayBuffer)(8); + buf.uint32array = new ($global.Uint32Array)(ab); + buf.float32array = new ($global.Float32Array)(ab); + buf.float64array = new ($global.Float64Array)(ab); + }; + Float32bits = function(f) { + var f; + buf.float32array[0] = f; + return buf.uint32array[0]; + }; + $pkg.Float32bits = Float32bits; + Float32frombits = function(b) { + var b; + buf.uint32array[0] = b; + return buf.float32array[0]; + }; + $pkg.Float32frombits = Float32frombits; + Float64bits = function(f) { + var f, x, x$1; + buf.float64array[0] = f; + return (x = $shiftLeft64((new $Uint64(0, buf.uint32array[1])), 32), x$1 = (new $Uint64(0, buf.uint32array[0])), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); + }; + $pkg.Float64bits = Float64bits; + Float64frombits = function(b) { + var b; + buf.uint32array[0] = ((b.$low >>> 0)); + buf.uint32array[1] = (($shiftRightUint64(b, 32).$low >>> 0)); + return buf.float64array[0]; + }; + $pkg.Float64frombits = Float64frombits; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf = new structType.ptr(arrayType.zero(), arrayType$1.zero(), arrayType$2.zero()); + math = $global.Math; + zero = 0; + nan = 0 / zero; + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["unicode/utf8"] = (function() { + var $pkg = {}, $init, acceptRange, first, acceptRanges, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, RuneCount, RuneCountInString, RuneStart, ValidString, ValidRune; + acceptRange = $pkg.acceptRange = $newType(0, $kindStruct, "utf8.acceptRange", true, "unicode/utf8", false, function(lo_, hi_) { + this.$val = this; + if (arguments.length === 0) { + this.lo = 0; + this.hi = 0; + return; + } + this.lo = lo_; + this.hi = hi_; + }); + DecodeRune = function(p) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, b1, b2, b3, mask, n, p, p0, r, size, sz, x, x$1; + r = 0; + size = 0; + n = p.$length; + if (n < 1) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + p0 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]); + x = ((p0 < 0 || p0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[p0]); + if (x >= 240) { + mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0; + _tmp$2 = (((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >> 0)) & ~mask) >> 0) | (65533 & mask); + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + sz = (x & 7) >>> 0; + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + if (n < ((sz >> 0))) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + b1 = (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]); + if (b1 < accept.lo || accept.hi < b1) { + _tmp$6 = 65533; + _tmp$7 = 1; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + } + if (sz === 2) { + _tmp$8 = (((((p0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((b1 & 63) >>> 0) >> 0)); + _tmp$9 = 2; + r = _tmp$8; + size = _tmp$9; + return [r, size]; + } + b2 = (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]); + if (b2 < 128 || 191 < b2) { + _tmp$10 = 65533; + _tmp$11 = 1; + r = _tmp$10; + size = _tmp$11; + return [r, size]; + } + if (sz === 3) { + _tmp$12 = ((((((p0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b2 & 63) >>> 0) >> 0)); + _tmp$13 = 3; + r = _tmp$12; + size = _tmp$13; + return [r, size]; + } + b3 = (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]); + if (b3 < 128 || 191 < b3) { + _tmp$14 = 65533; + _tmp$15 = 1; + r = _tmp$14; + size = _tmp$15; + return [r, size]; + } + _tmp$16 = (((((((p0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((b2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b3 & 63) >>> 0) >> 0)); + _tmp$17 = 4; + r = _tmp$16; + size = _tmp$17; + return [r, size]; + }; + $pkg.DecodeRune = DecodeRune; + DecodeRuneInString = function(s) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, mask, n, r, s, s0, s1, s2, s3, size, sz, x, x$1; + r = 0; + size = 0; + n = s.length; + if (n < 1) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + s0 = s.charCodeAt(0); + x = ((s0 < 0 || s0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[s0]); + if (x >= 240) { + mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0; + _tmp$2 = ((((s.charCodeAt(0) >> 0)) & ~mask) >> 0) | (65533 & mask); + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + sz = (x & 7) >>> 0; + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + if (n < ((sz >> 0))) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + s1 = s.charCodeAt(1); + if (s1 < accept.lo || accept.hi < s1) { + _tmp$6 = 65533; + _tmp$7 = 1; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + } + if (sz === 2) { + _tmp$8 = (((((s0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((s1 & 63) >>> 0) >> 0)); + _tmp$9 = 2; + r = _tmp$8; + size = _tmp$9; + return [r, size]; + } + s2 = s.charCodeAt(2); + if (s2 < 128 || 191 < s2) { + _tmp$10 = 65533; + _tmp$11 = 1; + r = _tmp$10; + size = _tmp$11; + return [r, size]; + } + if (sz === 3) { + _tmp$12 = ((((((s0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s2 & 63) >>> 0) >> 0)); + _tmp$13 = 3; + r = _tmp$12; + size = _tmp$13; + return [r, size]; + } + s3 = s.charCodeAt(3); + if (s3 < 128 || 191 < s3) { + _tmp$14 = 65533; + _tmp$15 = 1; + r = _tmp$14; + size = _tmp$15; + return [r, size]; + } + _tmp$16 = (((((((s0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((s2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s3 & 63) >>> 0) >> 0)); + _tmp$17 = 4; + r = _tmp$16; + size = _tmp$17; + return [r, size]; + }; + $pkg.DecodeRuneInString = DecodeRuneInString; + DecodeLastRune = function(p) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, p, r, size, start; + r = 0; + size = 0; + end = p.$length; + if (end === 0) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + start = end - 1 >> 0; + r = ((((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]) >> 0)); + if (r < 128) { + _tmp$2 = r; + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + lim = end - 4 >> 0; + if (lim < 0) { + lim = 0; + } + start = start - (1) >> 0; + while (true) { + if (!(start >= lim)) { break; } + if (RuneStart(((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]))) { + break; + } + start = start - (1) >> 0; + } + if (start < 0) { + start = 0; + } + _tuple = DecodeRune($subslice(p, start, end)); + r = _tuple[0]; + size = _tuple[1]; + if (!(((start + size >> 0) === end))) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + _tmp$6 = r; + _tmp$7 = size; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + }; + $pkg.DecodeLastRune = DecodeLastRune; + DecodeLastRuneInString = function(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, r, s, size, start; + r = 0; + size = 0; + end = s.length; + if (end === 0) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + start = end - 1 >> 0; + r = ((s.charCodeAt(start) >> 0)); + if (r < 128) { + _tmp$2 = r; + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + lim = end - 4 >> 0; + if (lim < 0) { + lim = 0; + } + start = start - (1) >> 0; + while (true) { + if (!(start >= lim)) { break; } + if (RuneStart(s.charCodeAt(start))) { + break; + } + start = start - (1) >> 0; + } + if (start < 0) { + start = 0; + } + _tuple = DecodeRuneInString($substring(s, start, end)); + r = _tuple[0]; + size = _tuple[1]; + if (!(((start + size >> 0) === end))) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + _tmp$6 = r; + _tmp$7 = size; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + }; + $pkg.DecodeLastRuneInString = DecodeLastRuneInString; + RuneLen = function(r) { + var r; + if (r < 0) { + return -1; + } else if (r <= 127) { + return 1; + } else if (r <= 2047) { + return 2; + } else if (55296 <= r && r <= 57343) { + return -1; + } else if (r <= 65535) { + return 3; + } else if (r <= 1114111) { + return 4; + } + return -1; + }; + $pkg.RuneLen = RuneLen; + EncodeRune = function(p, r) { + var i, p, r; + i = ((r >>> 0)); + if (i <= 127) { + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((r << 24 >>> 24))); + return 1; + } else if (i <= 2047) { + $unused((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 2; + } else if ((i > 1114111) || (55296 <= i && i <= 57343)) { + r = 65533; + $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 3; + } else if (i <= 65535) { + $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 3; + } else { + $unused((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 4; + } + }; + $pkg.EncodeRune = EncodeRune; + RuneCount = function(p) { + var accept, c, c$1, c$2, c$3, i, n, np, p, size, x, x$1, x$2, x$3, x$4; + np = p.$length; + n = 0; + i = 0; + while (true) { + if (!(i < np)) { break; } + n = n + (1) >> 0; + c = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + if (c < 128) { + i = i + (1) >> 0; + continue; + } + x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]); + if (x === 241) { + i = i + (1) >> 0; + continue; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > np) { + i = i + (1) >> 0; + continue; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c$1 = (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])); + if (c$1 < accept.lo || accept.hi < c$1) { + size = 1; + } else if (size === 2) { + } else { + c$2 = (x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3])); + if (c$2 < 128 || 191 < c$2) { + size = 1; + } else if (size === 3) { + } else { + c$3 = (x$4 = i + 3 >> 0, ((x$4 < 0 || x$4 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$4])); + if (c$3 < 128 || 191 < c$3) { + size = 1; + } + } + } + i = i + (size) >> 0; + } + return n; + }; + $pkg.RuneCount = RuneCount; + RuneCountInString = function(s) { + var accept, c, c$1, c$2, c$3, i, n, ns, s, size, x, x$1; + n = 0; + ns = s.length; + i = 0; + while (true) { + if (!(i < ns)) { break; } + c = s.charCodeAt(i); + if (c < 128) { + i = i + (1) >> 0; + n = n + (1) >> 0; + continue; + } + x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]); + if (x === 241) { + i = i + (1) >> 0; + n = n + (1) >> 0; + continue; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > ns) { + i = i + (1) >> 0; + n = n + (1) >> 0; + continue; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c$1 = s.charCodeAt((i + 1 >> 0)); + if (c$1 < accept.lo || accept.hi < c$1) { + size = 1; + } else if (size === 2) { + } else { + c$2 = s.charCodeAt((i + 2 >> 0)); + if (c$2 < 128 || 191 < c$2) { + size = 1; + } else if (size === 3) { + } else { + c$3 = s.charCodeAt((i + 3 >> 0)); + if (c$3 < 128 || 191 < c$3) { + size = 1; + } + } + } + i = i + (size) >> 0; + n = n + (1) >> 0; + } + n = n; + return n; + }; + $pkg.RuneCountInString = RuneCountInString; + RuneStart = function(b) { + var b; + return !((((b & 192) >>> 0) === 128)); + }; + $pkg.RuneStart = RuneStart; + ValidString = function(s) { + var accept, c, c$1, c$2, i, n, s, si, size, x, x$1; + n = s.length; + i = 0; + while (true) { + if (!(i < n)) { break; } + si = s.charCodeAt(i); + if (si < 128) { + i = i + (1) >> 0; + continue; + } + x = ((si < 0 || si >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[si]); + if (x === 241) { + return false; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > n) { + return false; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c = s.charCodeAt((i + 1 >> 0)); + if (c < accept.lo || accept.hi < c) { + return false; + } else if (size === 2) { + } else { + c$1 = s.charCodeAt((i + 2 >> 0)); + if (c$1 < 128 || 191 < c$1) { + return false; + } else if (size === 3) { + } else { + c$2 = s.charCodeAt((i + 3 >> 0)); + if (c$2 < 128 || 191 < c$2) { + return false; + } + } + } + i = i + (size) >> 0; + } + return true; + }; + $pkg.ValidString = ValidString; + ValidRune = function(r) { + var r; + if (0 <= r && r < 55296) { + return true; + } else if (57343 < r && r <= 1114111) { + return true; + } + return false; + }; + $pkg.ValidRune = ValidRune; + acceptRange.init("unicode/utf8", [{prop: "lo", name: "lo", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", embedded: false, exported: false, typ: $Uint8, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + first = $toNativeArray($kindUint8, [240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 35, 3, 3, 52, 4, 4, 4, 68, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241]); + acceptRanges = $toNativeArray($kindStruct, [new acceptRange.ptr(128, 191), new acceptRange.ptr(160, 191), new acceptRange.ptr(128, 159), new acceptRange.ptr(144, 191), new acceptRange.ptr(128, 143)]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["strconv"] = (function() { + var $pkg = {}, $init, errors, bytealg, math, bits, utf8, NumError, decimal, leftCheat, extFloat, floatInfo, decimalSlice, sliceType$3, sliceType$4, sliceType$5, arrayType, sliceType$6, ptrType, arrayType$1, arrayType$2, ptrType$1, arrayType$3, arrayType$4, ptrType$2, ptrType$3, ptrType$4, optimize, leftcheats, smallPowersOfTen, powersOfTen, uint64pow10, float32info, float32info$24ptr, float64info, float64info$24ptr, isPrint16, isNotPrint16, isPrint32, isNotPrint32, isGraphic, syntaxError, rangeError, baseError, bitSizeError, ParseUint, ParseInt, Atoi, digitZero, trim, rightShift, prefixIsLessThan, leftShift, shouldRoundUp, frexp10Many, adjustLastDigitFixed, adjustLastDigit, AppendFloat, genericFtoa, bigFtoa, formatDigits, roundShortest, fmtE, fmtF, fmtB, min, max, FormatUint, FormatInt, Itoa, small, formatBits, isPowerOfTwo, quoteWith, appendQuotedWith, appendQuotedRuneWith, appendEscapedRune, Quote, AppendQuote, QuoteToASCII, AppendQuoteToASCII, AppendQuoteRune, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, contains, bsearch16, bsearch32, IsPrint, isInGraphicList; + errors = $packages["errors"]; + bytealg = $packages["internal/bytealg"]; + math = $packages["math"]; + bits = $packages["math/bits"]; + utf8 = $packages["unicode/utf8"]; + NumError = $pkg.NumError = $newType(0, $kindStruct, "strconv.NumError", true, "strconv", true, function(Func_, Num_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Func = ""; + this.Num = ""; + this.Err = $ifaceNil; + return; + } + this.Func = Func_; + this.Num = Num_; + this.Err = Err_; + }); + decimal = $pkg.decimal = $newType(0, $kindStruct, "strconv.decimal", true, "strconv", false, function(d_, nd_, dp_, neg_, trunc_) { + this.$val = this; + if (arguments.length === 0) { + this.d = arrayType.zero(); + this.nd = 0; + this.dp = 0; + this.neg = false; + this.trunc = false; + return; + } + this.d = d_; + this.nd = nd_; + this.dp = dp_; + this.neg = neg_; + this.trunc = trunc_; + }); + leftCheat = $pkg.leftCheat = $newType(0, $kindStruct, "strconv.leftCheat", true, "strconv", false, function(delta_, cutoff_) { + this.$val = this; + if (arguments.length === 0) { + this.delta = 0; + this.cutoff = ""; + return; + } + this.delta = delta_; + this.cutoff = cutoff_; + }); + extFloat = $pkg.extFloat = $newType(0, $kindStruct, "strconv.extFloat", true, "strconv", false, function(mant_, exp_, neg_) { + this.$val = this; + if (arguments.length === 0) { + this.mant = new $Uint64(0, 0); + this.exp = 0; + this.neg = false; + return; + } + this.mant = mant_; + this.exp = exp_; + this.neg = neg_; + }); + floatInfo = $pkg.floatInfo = $newType(0, $kindStruct, "strconv.floatInfo", true, "strconv", false, function(mantbits_, expbits_, bias_) { + this.$val = this; + if (arguments.length === 0) { + this.mantbits = 0; + this.expbits = 0; + this.bias = 0; + return; + } + this.mantbits = mantbits_; + this.expbits = expbits_; + this.bias = bias_; + }); + decimalSlice = $pkg.decimalSlice = $newType(0, $kindStruct, "strconv.decimalSlice", true, "strconv", false, function(d_, nd_, dp_, neg_) { + this.$val = this; + if (arguments.length === 0) { + this.d = sliceType$6.nil; + this.nd = 0; + this.dp = 0; + this.neg = false; + return; + } + this.d = d_; + this.nd = nd_; + this.dp = dp_; + this.neg = neg_; + }); + sliceType$3 = $sliceType(leftCheat); + sliceType$4 = $sliceType($Uint16); + sliceType$5 = $sliceType($Uint32); + arrayType = $arrayType($Uint8, 800); + sliceType$6 = $sliceType($Uint8); + ptrType = $ptrType(NumError); + arrayType$1 = $arrayType($Uint8, 24); + arrayType$2 = $arrayType($Uint8, 32); + ptrType$1 = $ptrType(floatInfo); + arrayType$3 = $arrayType($Uint8, 65); + arrayType$4 = $arrayType($Uint8, 4); + ptrType$2 = $ptrType(decimal); + ptrType$3 = $ptrType(decimalSlice); + ptrType$4 = $ptrType(extFloat); + NumError.ptr.prototype.Error = function() { + var _r, e, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: NumError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; + }; + NumError.prototype.Error = function() { return this.$val.Error(); }; + syntaxError = function(fn, str) { + var fn, str; + return new NumError.ptr(fn, str, $pkg.ErrSyntax); + }; + rangeError = function(fn, str) { + var fn, str; + return new NumError.ptr(fn, str, $pkg.ErrRange); + }; + baseError = function(fn, str, base) { + var base, fn, str; + return new NumError.ptr(fn, str, errors.New("invalid base " + Itoa(base))); + }; + bitSizeError = function(fn, str, bitSize) { + var bitSize, fn, str; + return new NumError.ptr(fn, str, errors.New("invalid bit size " + Itoa(bitSize))); + }; + ParseUint = function(s, base, bitSize) { + var _1, _i, _ref, base, bitSize, c, cutoff, d, maxVal, n, n1, s, s0, x, x$1, x$2; + if (s.length === 0) { + return [new $Uint64(0, 0), syntaxError("ParseUint", s)]; + } + s0 = s; + if (2 <= base && base <= 36) { + } else if ((base === 0)) { + if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { + if (s.length < 3) { + return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; + } + base = 16; + s = $substring(s, 2); + } else if ((s.charCodeAt(0) === 48)) { + base = 8; + s = $substring(s, 1); + } else { + base = 10; + } + } else { + return [new $Uint64(0, 0), baseError("ParseUint", s0, base)]; + } + if (bitSize === 0) { + bitSize = 32; + } else if (bitSize < 0 || bitSize > 64) { + return [new $Uint64(0, 0), bitSizeError("ParseUint", s0, bitSize)]; + } + cutoff = new $Uint64(0, 0); + _1 = base; + if (_1 === (10)) { + cutoff = new $Uint64(429496729, 2576980378); + } else if (_1 === (16)) { + cutoff = new $Uint64(268435456, 0); + } else { + cutoff = (x = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x.$high + 0, x.$low + 1)); + } + maxVal = (x$1 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$1.$high - 0, x$1.$low - 1)); + n = new $Uint64(0, 0); + _ref = (new sliceType$6($stringToBytes(s))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + d = 0; + if (48 <= c && c <= 57) { + d = c - 48 << 24 >>> 24; + } else if (97 <= c && c <= 122) { + d = (c - 97 << 24 >>> 24) + 10 << 24 >>> 24; + } else if (65 <= c && c <= 90) { + d = (c - 65 << 24 >>> 24) + 10 << 24 >>> 24; + } else { + return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; + } + if (d >= ((base << 24 >>> 24))) { + return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; + } + if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { + return [maxVal, rangeError("ParseUint", s0)]; + } + n = $mul64(n, ((new $Uint64(0, base)))); + n1 = (x$2 = (new $Uint64(0, d)), new $Uint64(n.$high + x$2.$high, n.$low + x$2.$low)); + if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { + return [maxVal, rangeError("ParseUint", s0)]; + } + n = n1; + _i++; + } + return [n, $ifaceNil]; + }; + $pkg.ParseUint = ParseUint; + ParseInt = function(s, base, bitSize) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, base, bitSize, cutoff, err, i, n, neg, s, s0, un, x, x$1; + i = new $Int64(0, 0); + err = $ifaceNil; + if (s.length === 0) { + _tmp = new $Int64(0, 0); + _tmp$1 = syntaxError("ParseInt", s); + i = _tmp; + err = _tmp$1; + return [i, err]; + } + s0 = s; + neg = false; + if (s.charCodeAt(0) === 43) { + s = $substring(s, 1); + } else if (s.charCodeAt(0) === 45) { + neg = true; + s = $substring(s, 1); + } + un = new $Uint64(0, 0); + _tuple = ParseUint(s, base, bitSize); + un = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual($assertType(err, ptrType).Err, $pkg.ErrRange))) { + $assertType(err, ptrType).Func = "ParseInt"; + $assertType(err, ptrType).Num = s0; + _tmp$2 = new $Int64(0, 0); + _tmp$3 = err; + i = _tmp$2; + err = _tmp$3; + return [i, err]; + } + if (bitSize === 0) { + bitSize = 32; + } + cutoff = ($shiftLeft64(new $Uint64(0, 1), (((bitSize - 1 >> 0) >>> 0)))); + if (!neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low >= cutoff.$low))) { + _tmp$4 = ((x = new $Uint64(cutoff.$high - 0, cutoff.$low - 1), new $Int64(x.$high, x.$low))); + _tmp$5 = rangeError("ParseInt", s0); + i = _tmp$4; + err = _tmp$5; + return [i, err]; + } + if (neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low > cutoff.$low))) { + _tmp$6 = (x$1 = (new $Int64(cutoff.$high, cutoff.$low)), new $Int64(-x$1.$high, -x$1.$low)); + _tmp$7 = rangeError("ParseInt", s0); + i = _tmp$6; + err = _tmp$7; + return [i, err]; + } + n = (new $Int64(un.$high, un.$low)); + if (neg) { + n = new $Int64(-n.$high, -n.$low); + } + _tmp$8 = n; + _tmp$9 = $ifaceNil; + i = _tmp$8; + err = _tmp$9; + return [i, err]; + }; + $pkg.ParseInt = ParseInt; + Atoi = function(s) { + var _i, _ref, _tuple, _tuple$1, ch, err, i64, n, nerr, ok, s, s0, sLen; + sLen = s.length; + if (true && (0 < sLen && sLen < 10) || false && (0 < sLen && sLen < 19)) { + s0 = s; + if ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43)) { + s = $substring(s, 1); + if (s.length < 1) { + return [0, new NumError.ptr("Atoi", s0, $pkg.ErrSyntax)]; + } + } + n = 0; + _ref = (new sliceType$6($stringToBytes(s))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ch = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ch = ch - (48) << 24 >>> 24; + if (ch > 9) { + return [0, new NumError.ptr("Atoi", s0, $pkg.ErrSyntax)]; + } + n = ($imul(n, 10)) + ((ch >> 0)) >> 0; + _i++; + } + if (s0.charCodeAt(0) === 45) { + n = -n; + } + return [n, $ifaceNil]; + } + _tuple = ParseInt(s, 10, 0); + i64 = _tuple[0]; + err = _tuple[1]; + _tuple$1 = $assertType(err, ptrType, true); + nerr = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + nerr.Func = "Atoi"; + } + return [(((i64.$low + ((i64.$high >> 31) * 4294967296)) >> 0)), err]; + }; + $pkg.Atoi = Atoi; + decimal.ptr.prototype.String = function() { + var a, buf, n, w; + a = this; + n = 10 + a.nd >> 0; + if (a.dp > 0) { + n = n + (a.dp) >> 0; + } + if (a.dp < 0) { + n = n + (-a.dp) >> 0; + } + buf = $makeSlice(sliceType$6, n); + w = 0; + if ((a.nd === 0)) { + return "0"; + } else if (a.dp <= 0) { + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48); + w = w + (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); + w = w + (1) >> 0; + w = w + (digitZero($subslice(buf, w, (w + -a.dp >> 0)))) >> 0; + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0; + } else if (a.dp < a.nd) { + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.dp))) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); + w = w + (1) >> 0; + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), a.dp, a.nd))) >> 0; + } else { + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0; + w = w + (digitZero($subslice(buf, w, ((w + a.dp >> 0) - a.nd >> 0)))) >> 0; + } + return ($bytesToString($subslice(buf, 0, w))); + }; + decimal.prototype.String = function() { return this.$val.String(); }; + digitZero = function(dst) { + var _i, _ref, dst, i; + _ref = dst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 48); + _i++; + } + return dst.$length; + }; + trim = function(a) { + var a, x, x$1; + while (true) { + if (!(a.nd > 0 && ((x = a.d, x$1 = a.nd - 1 >> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) === 48))) { break; } + a.nd = a.nd - (1) >> 0; + } + if (a.nd === 0) { + a.dp = 0; + } + }; + decimal.ptr.prototype.Assign = function(v) { + var a, buf, n, v, v1, x, x$1, x$2; + a = this; + buf = arrayType$1.zero(); + n = 0; + while (true) { + if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } + v1 = $div64(v, new $Uint64(0, 10), false); + v = (x = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x.$high, v.$low - x.$low)); + ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24))); + n = n + (1) >> 0; + v = v1; + } + a.nd = 0; + n = n - (1) >> 0; + while (true) { + if (!(n >= 0)) { break; } + (x$1 = a.d, x$2 = a.nd, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n]))); + a.nd = a.nd + (1) >> 0; + n = n - (1) >> 0; + } + a.dp = a.nd; + trim(a); + }; + decimal.prototype.Assign = function(v) { return this.$val.Assign(v); }; + rightShift = function(a, k) { + var a, c, c$1, dig, dig$1, k, mask, n, r, w, x, x$1, x$2, x$3, y, y$1, y$2, y$3, y$4; + r = 0; + w = 0; + n = 0; + while (true) { + if (!(((y = k, y < 32 ? (n >>> y) : 0) >>> 0) === 0)) { break; } + if (r >= a.nd) { + if (n === 0) { + a.nd = 0; + return; + } + while (true) { + if (!(((y$1 = k, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; } + n = n * 10 >>> 0; + r = r + (1) >> 0; + } + break; + } + c = (((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)); + n = ((n * 10 >>> 0) + c >>> 0) - 48 >>> 0; + r = r + (1) >> 0; + } + a.dp = a.dp - ((r - 1 >> 0)) >> 0; + mask = (((y$2 = k, y$2 < 32 ? (1 << y$2) : 0) >>> 0)) - 1 >>> 0; + while (true) { + if (!(r < a.nd)) { break; } + c$1 = (((x$1 = a.d, ((r < 0 || r >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[r])) >>> 0)); + dig = (y$3 = k, y$3 < 32 ? (n >>> y$3) : 0) >>> 0; + n = (n & (mask)) >>> 0; + (x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((dig + 48 >>> 0) << 24 >>> 24)))); + w = w + (1) >> 0; + n = ((n * 10 >>> 0) + c$1 >>> 0) - 48 >>> 0; + r = r + (1) >> 0; + } + while (true) { + if (!(n > 0)) { break; } + dig$1 = (y$4 = k, y$4 < 32 ? (n >>> y$4) : 0) >>> 0; + n = (n & (mask)) >>> 0; + if (w < 800) { + (x$3 = a.d, ((w < 0 || w >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[w] = (((dig$1 + 48 >>> 0) << 24 >>> 24)))); + w = w + (1) >> 0; + } else if (dig$1 > 0) { + a.trunc = true; + } + n = n * 10 >>> 0; + } + a.nd = w; + trim(a); + }; + prefixIsLessThan = function(b, s) { + var b, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (i >= b.$length) { + return true; + } + if (!((((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) === s.charCodeAt(i)))) { + return ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) < s.charCodeAt(i); + } + i = i + (1) >> 0; + } + return false; + }; + leftShift = function(a, k) { + var _q, _q$1, a, delta, k, n, quo, quo$1, r, rem, rem$1, w, x, x$1, x$2, y; + delta = ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).delta; + if (prefixIsLessThan($subslice(new sliceType$6(a.d), 0, a.nd), ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).cutoff)) { + delta = delta - (1) >> 0; + } + r = a.nd; + w = a.nd + delta >> 0; + n = 0; + r = r - (1) >> 0; + while (true) { + if (!(r >= 0)) { break; } + n = n + (((y = k, y < 32 ? ((((((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)) - 48 >>> 0)) << y) : 0) >>> 0)) >>> 0; + quo = (_q = n / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + rem = n - (10 * quo >>> 0) >>> 0; + w = w - (1) >> 0; + if (w < 800) { + (x$1 = a.d, ((w < 0 || w >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[w] = (((rem + 48 >>> 0) << 24 >>> 24)))); + } else if (!((rem === 0))) { + a.trunc = true; + } + n = quo; + r = r - (1) >> 0; + } + while (true) { + if (!(n > 0)) { break; } + quo$1 = (_q$1 = n / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + rem$1 = n - (10 * quo$1 >>> 0) >>> 0; + w = w - (1) >> 0; + if (w < 800) { + (x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((rem$1 + 48 >>> 0) << 24 >>> 24)))); + } else if (!((rem$1 === 0))) { + a.trunc = true; + } + n = quo$1; + } + a.nd = a.nd + (delta) >> 0; + if (a.nd >= 800) { + a.nd = 800; + } + a.dp = a.dp + (delta) >> 0; + trim(a); + }; + decimal.ptr.prototype.Shift = function(k) { + var a, k; + a = this; + if ((a.nd === 0)) { + } else if (k > 0) { + while (true) { + if (!(k > 28)) { break; } + leftShift(a, 28); + k = k - (28) >> 0; + } + leftShift(a, ((k >>> 0))); + } else if (k < 0) { + while (true) { + if (!(k < -28)) { break; } + rightShift(a, 28); + k = k + (28) >> 0; + } + rightShift(a, ((-k >>> 0))); + } + }; + decimal.prototype.Shift = function(k) { return this.$val.Shift(k); }; + shouldRoundUp = function(a, nd) { + var _r, a, nd, x, x$1, x$2, x$3; + if (nd < 0 || nd >= a.nd) { + return false; + } + if (((x = a.d, ((nd < 0 || nd >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[nd])) === 53) && ((nd + 1 >> 0) === a.nd)) { + if (a.trunc) { + return true; + } + return nd > 0 && !(((_r = (((x$1 = a.d, x$2 = nd - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])) - 48 << 24 >>> 24)) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0)); + } + return (x$3 = a.d, ((nd < 0 || nd >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[nd])) >= 53; + }; + decimal.ptr.prototype.Round = function(nd) { + var a, nd; + a = this; + if (nd < 0 || nd >= a.nd) { + return; + } + if (shouldRoundUp(a, nd)) { + a.RoundUp(nd); + } else { + a.RoundDown(nd); + } + }; + decimal.prototype.Round = function(nd) { return this.$val.Round(nd); }; + decimal.ptr.prototype.RoundDown = function(nd) { + var a, nd; + a = this; + if (nd < 0 || nd >= a.nd) { + return; + } + a.nd = nd; + trim(a); + }; + decimal.prototype.RoundDown = function(nd) { return this.$val.RoundDown(nd); }; + decimal.ptr.prototype.RoundUp = function(nd) { + var a, c, i, nd, x, x$1, x$2; + a = this; + if (nd < 0 || nd >= a.nd) { + return; + } + i = nd - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + c = (x = a.d, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])); + if (c < 57) { + (x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = ((x$1 = a.d, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) + (1) << 24 >>> 24))); + a.nd = i + 1 >> 0; + return; + } + i = i - (1) >> 0; + } + a.d[0] = 49; + a.nd = 1; + a.dp = a.dp + (1) >> 0; + }; + decimal.prototype.RoundUp = function(nd) { return this.$val.RoundUp(nd); }; + decimal.ptr.prototype.RoundedInteger = function() { + var a, i, n, x, x$1, x$2, x$3; + a = this; + if (a.dp > 20) { + return new $Uint64(4294967295, 4294967295); + } + i = 0; + n = new $Uint64(0, 0); + i = 0; + while (true) { + if (!(i < a.dp && i < a.nd)) { break; } + n = (x = $mul64(n, new $Uint64(0, 10)), x$1 = (new $Uint64(0, ((x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) - 48 << 24 >>> 24))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); + i = i + (1) >> 0; + } + while (true) { + if (!(i < a.dp)) { break; } + n = $mul64(n, (new $Uint64(0, 10))); + i = i + (1) >> 0; + } + if (shouldRoundUp(a, a.dp)) { + n = (x$3 = new $Uint64(0, 1), new $Uint64(n.$high + x$3.$high, n.$low + x$3.$low)); + } + return n; + }; + decimal.prototype.RoundedInteger = function() { return this.$val.RoundedInteger(); }; + extFloat.ptr.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { + var _tmp, _tmp$1, exp, expBiased, f, flt, lower, mant, neg, upper, x, x$1, x$2, x$3, x$4; + lower = new extFloat.ptr(new $Uint64(0, 0), 0, false); + upper = new extFloat.ptr(new $Uint64(0, 0), 0, false); + f = this; + f.mant = mant; + f.exp = exp - ((flt.mantbits >> 0)) >> 0; + f.neg = neg; + if (f.exp <= 0 && (x = $shiftLeft64(($shiftRightUint64(mant, ((-f.exp >>> 0)))), ((-f.exp >>> 0))), (mant.$high === x.$high && mant.$low === x.$low))) { + f.mant = $shiftRightUint64(f.mant, (((-f.exp >>> 0)))); + f.exp = 0; + _tmp = $clone(f, extFloat); + _tmp$1 = $clone(f, extFloat); + extFloat.copy(lower, _tmp); + extFloat.copy(upper, _tmp$1); + return [lower, upper]; + } + expBiased = exp - flt.bias >> 0; + extFloat.copy(upper, new extFloat.ptr((x$1 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$1.$high + 0, x$1.$low + 1)), f.exp - 1 >> 0, f.neg)); + if (!((x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) || (expBiased === 1)) { + extFloat.copy(lower, new extFloat.ptr((x$3 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$3.$high - 0, x$3.$low - 1)), f.exp - 1 >> 0, f.neg)); + } else { + extFloat.copy(lower, new extFloat.ptr((x$4 = $mul64(new $Uint64(0, 4), f.mant), new $Uint64(x$4.$high - 0, x$4.$low - 1)), f.exp - 2 >> 0, f.neg)); + } + return [lower, upper]; + }; + extFloat.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { return this.$val.AssignComputeBounds(mant, exp, neg, flt); }; + extFloat.ptr.prototype.Normalize = function() { + var f, shift, x; + f = this; + if ((x = f.mant, (x.$high === 0 && x.$low === 0))) { + return 0; + } + shift = bits.LeadingZeros64(f.mant); + f.mant = $shiftLeft64(f.mant, (((shift >>> 0)))); + f.exp = f.exp - (shift) >> 0; + return ((shift >>> 0)); + }; + extFloat.prototype.Normalize = function() { return this.$val.Normalize(); }; + extFloat.ptr.prototype.Multiply = function(g) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, cross1, cross2, f, fhi, flo, g, ghi, glo, rem, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + f = this; + _tmp = $shiftRightUint64(f.mant, 32); + _tmp$1 = (new $Uint64(0, ((f.mant.$low >>> 0)))); + fhi = _tmp; + flo = _tmp$1; + _tmp$2 = $shiftRightUint64(g.mant, 32); + _tmp$3 = (new $Uint64(0, ((g.mant.$low >>> 0)))); + ghi = _tmp$2; + glo = _tmp$3; + cross1 = $mul64(fhi, glo); + cross2 = $mul64(flo, ghi); + f.mant = (x = (x$1 = $mul64(fhi, ghi), x$2 = $shiftRightUint64(cross1, 32), new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)), x$3 = $shiftRightUint64(cross2, 32), new $Uint64(x.$high + x$3.$high, x.$low + x$3.$low)); + rem = (x$4 = (x$5 = (new $Uint64(0, ((cross1.$low >>> 0)))), x$6 = (new $Uint64(0, ((cross2.$low >>> 0)))), new $Uint64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), x$7 = $shiftRightUint64(($mul64(flo, glo)), 32), new $Uint64(x$4.$high + x$7.$high, x$4.$low + x$7.$low)); + rem = (x$8 = new $Uint64(0, 2147483648), new $Uint64(rem.$high + x$8.$high, rem.$low + x$8.$low)); + f.mant = (x$9 = f.mant, x$10 = ($shiftRightUint64(rem, 32)), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low)); + f.exp = (f.exp + g.exp >> 0) + 64 >> 0; + }; + extFloat.prototype.Multiply = function(g) { return this.$val.Multiply(g); }; + extFloat.ptr.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { + var _q, _r, adjExp, denormalExp, errors$1, exp10, extrabits, f, flt, halfway, i, mant_extra, mantissa, neg, ok, shift, trunc, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y; + ok = false; + f = this; + errors$1 = 0; + if (trunc) { + errors$1 = errors$1 + (4) >> 0; + } + f.mant = mantissa; + f.exp = 0; + f.neg = neg; + i = (_q = ((exp10 - -348 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (exp10 < -348 || i >= 87) { + ok = false; + return ok; + } + adjExp = (_r = ((exp10 - -348 >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + if (adjExp < 19 && (x = (x$1 = 19 - adjExp >> 0, ((x$1 < 0 || x$1 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$1])), (mantissa.$high < x.$high || (mantissa.$high === x.$high && mantissa.$low < x.$low)))) { + f.mant = $mul64(f.mant, (((adjExp < 0 || adjExp >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[adjExp]))); + f.Normalize(); + } else { + f.Normalize(); + f.Multiply($clone(((adjExp < 0 || adjExp >= smallPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : smallPowersOfTen[adjExp]), extFloat)); + errors$1 = errors$1 + (4) >> 0; + } + f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); + if (errors$1 > 0) { + errors$1 = errors$1 + (1) >> 0; + } + errors$1 = errors$1 + (4) >> 0; + shift = f.Normalize(); + errors$1 = (y = (shift), y < 32 ? (errors$1 << y) : 0) >> 0; + denormalExp = flt.bias - 63 >> 0; + extrabits = 0; + if (f.exp <= denormalExp) { + extrabits = ((63 - flt.mantbits >>> 0) + 1 >>> 0) + (((denormalExp - f.exp >> 0) >>> 0)) >>> 0; + } else { + extrabits = 63 - flt.mantbits >>> 0; + } + halfway = $shiftLeft64(new $Uint64(0, 1), ((extrabits - 1 >>> 0))); + mant_extra = (x$2 = f.mant, x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), extrabits), new $Uint64(x$4.$high - 0, x$4.$low - 1)), new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)); + if ((x$5 = (x$6 = (new $Int64(halfway.$high, halfway.$low)), x$7 = (new $Int64(0, errors$1)), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low)), x$8 = (new $Int64(mant_extra.$high, mant_extra.$low)), (x$5.$high < x$8.$high || (x$5.$high === x$8.$high && x$5.$low < x$8.$low))) && (x$9 = (new $Int64(mant_extra.$high, mant_extra.$low)), x$10 = (x$11 = (new $Int64(halfway.$high, halfway.$low)), x$12 = (new $Int64(0, errors$1)), new $Int64(x$11.$high + x$12.$high, x$11.$low + x$12.$low)), (x$9.$high < x$10.$high || (x$9.$high === x$10.$high && x$9.$low < x$10.$low)))) { + ok = false; + return ok; + } + ok = true; + return ok; + }; + extFloat.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { return this.$val.AssignDecimal(mantissa, exp10, neg, trunc, flt); }; + extFloat.ptr.prototype.frexp10 = function() { + var _q, _q$1, _tmp, _tmp$1, approxExp10, exp, exp10, f, i, index; + exp10 = 0; + index = 0; + f = this; + approxExp10 = (_q = ($imul(((-46 - f.exp >> 0)), 28)) / 93, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + i = (_q$1 = ((approxExp10 - -348 >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + Loop: + while (true) { + exp = (f.exp + ((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]).exp >> 0) + 64 >> 0; + if (exp < -60) { + i = i + (1) >> 0; + } else if (exp > -32) { + i = i - (1) >> 0; + } else { + break Loop; + } + } + f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); + _tmp = -((-348 + ($imul(i, 8)) >> 0)); + _tmp$1 = i; + exp10 = _tmp; + index = _tmp$1; + return [exp10, index]; + }; + extFloat.prototype.frexp10 = function() { return this.$val.frexp10(); }; + frexp10Many = function(a, b, c) { + var _tuple, a, b, c, exp10, i; + exp10 = 0; + _tuple = c.frexp10(); + exp10 = _tuple[0]; + i = _tuple[1]; + a.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); + b.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); + return exp10; + }; + extFloat.ptr.prototype.FixedDecimal = function(d, n) { + var $CE$B5, _q, _q$1, _tmp, _tmp$1, _tuple, buf, d, digit, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, n, nd, needed, ok, pos, pow, pow10, rest, shift, v, v1, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + f = this; + if ((x = f.mant, (x.$high === 0 && x.$low === 0))) { + d.nd = 0; + d.dp = 0; + d.neg = f.neg; + return true; + } + if (n === 0) { + $panic(new $String("strconv: internal error: extFloat.FixedDecimal called with n == 0")); + } + f.Normalize(); + _tuple = f.frexp10(); + exp10 = _tuple[0]; + shift = ((-f.exp >>> 0)); + integer = (($shiftRightUint64(f.mant, shift).$low >>> 0)); + fraction = (x$1 = f.mant, x$2 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + $CE$B5 = new $Uint64(0, 1); + needed = n; + integerDigits = 0; + pow10 = new $Uint64(0, 1); + _tmp = 0; + _tmp$1 = new $Uint64(0, 1); + i = _tmp; + pow = _tmp$1; + while (true) { + if (!(i < 20)) { break; } + if ((x$3 = (new $Uint64(0, integer)), (pow.$high > x$3.$high || (pow.$high === x$3.$high && pow.$low > x$3.$low)))) { + integerDigits = i; + break; + } + pow = $mul64(pow, (new $Uint64(0, 10))); + i = i + (1) >> 0; + } + rest = integer; + if (integerDigits > needed) { + pow10 = (x$4 = integerDigits - needed >> 0, ((x$4 < 0 || x$4 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$4])); + integer = (_q = integer / (((pow10.$low >>> 0))), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + rest = rest - (($imul(integer, ((pow10.$low >>> 0))) >>> 0)) >>> 0; + } else { + rest = 0; + } + buf = arrayType$2.zero(); + pos = 32; + v = integer; + while (true) { + if (!(v > 0)) { break; } + v1 = (_q$1 = v / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + v = v - (($imul(10, v1) >>> 0)) >>> 0; + pos = pos - (1) >> 0; + ((pos < 0 || pos >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[pos] = (((v + 48 >>> 0) << 24 >>> 24))); + v = v1; + } + i$1 = pos; + while (true) { + if (!(i$1 < 32)) { break; } + (x$5 = d.d, x$6 = i$1 - pos >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6] = ((i$1 < 0 || i$1 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i$1]))); + i$1 = i$1 + (1) >> 0; + } + nd = 32 - pos >> 0; + d.nd = nd; + d.dp = integerDigits + exp10 >> 0; + needed = needed - (nd) >> 0; + if (needed > 0) { + if (!((rest === 0)) || !((pow10.$high === 0 && pow10.$low === 1))) { + $panic(new $String("strconv: internal error, rest != 0 but needed > 0")); + } + while (true) { + if (!(needed > 0)) { break; } + fraction = $mul64(fraction, (new $Uint64(0, 10))); + $CE$B5 = $mul64($CE$B5, (new $Uint64(0, 10))); + if ((x$7 = $mul64(new $Uint64(0, 2), $CE$B5), x$8 = $shiftLeft64(new $Uint64(0, 1), shift), (x$7.$high > x$8.$high || (x$7.$high === x$8.$high && x$7.$low > x$8.$low)))) { + return false; + } + digit = $shiftRightUint64(fraction, shift); + (x$9 = d.d, ((nd < 0 || nd >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + nd] = ((new $Uint64(digit.$high + 0, digit.$low + 48).$low << 24 >>> 24)))); + fraction = (x$10 = $shiftLeft64(digit, shift), new $Uint64(fraction.$high - x$10.$high, fraction.$low - x$10.$low)); + nd = nd + (1) >> 0; + needed = needed - (1) >> 0; + } + d.nd = nd; + } + ok = adjustLastDigitFixed(d, (x$11 = $shiftLeft64((new $Uint64(0, rest)), shift), new $Uint64(x$11.$high | fraction.$high, (x$11.$low | fraction.$low) >>> 0)), pow10, shift, $CE$B5); + if (!ok) { + return false; + } + i$2 = d.nd - 1 >> 0; + while (true) { + if (!(i$2 >= 0)) { break; } + if (!(((x$12 = d.d, ((i$2 < 0 || i$2 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + i$2])) === 48))) { + d.nd = i$2 + 1 >> 0; + break; + } + i$2 = i$2 - (1) >> 0; + } + return true; + }; + extFloat.prototype.FixedDecimal = function(d, n) { return this.$val.FixedDecimal(d, n); }; + adjustLastDigitFixed = function(d, num, den, shift, $CE$B5) { + var $CE$B5, d, den, i, num, shift, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + if ((x = $shiftLeft64(den, shift), (num.$high > x.$high || (num.$high === x.$high && num.$low > x.$low)))) { + $panic(new $String("strconv: num > den< x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { + $panic(new $String("strconv: \xCE\xB5 > (den< x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) { + i = d.nd - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if ((x$7 = d.d, ((i < 0 || i >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + i])) === 57) { + d.nd = d.nd - (1) >> 0; + } else { + break; + } + i = i - (1) >> 0; + } + if (i < 0) { + (x$8 = d.d, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0] = 49)); + d.nd = 1; + d.dp = d.dp + (1) >> 0; + } else { + (x$10 = d.d, ((i < 0 || i >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + i] = ((x$9 = d.d, ((i < 0 || i >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i])) + (1) << 24 >>> 24))); + } + return true; + } + return false; + }; + extFloat.ptr.prototype.ShortestDecimal = function(d, lower, upper) { + var _q, _tmp, _tmp$1, _tmp$2, _tmp$3, allowance, buf, currentDiff, d, digit, digit$1, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, lower, multiplier, n, nd, pow, pow$1, shift, targetDiff, upper, v, v1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + f = this; + if ((x = f.mant, (x.$high === 0 && x.$low === 0))) { + d.nd = 0; + d.dp = 0; + d.neg = f.neg; + return true; + } + if ((f.exp === 0) && $equal(lower, f, extFloat) && $equal(lower, upper, extFloat)) { + buf = arrayType$1.zero(); + n = 23; + v = f.mant; + while (true) { + if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } + v1 = $div64(v, new $Uint64(0, 10), false); + v = (x$1 = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x$1.$high, v.$low - x$1.$low)); + ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24))); + n = n - (1) >> 0; + v = v1; + } + nd = (24 - n >> 0) - 1 >> 0; + i = 0; + while (true) { + if (!(i < nd)) { break; } + (x$3 = d.d, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i] = (x$2 = (n + 1 >> 0) + i >> 0, ((x$2 < 0 || x$2 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x$2])))); + i = i + (1) >> 0; + } + _tmp = nd; + _tmp$1 = nd; + d.nd = _tmp; + d.dp = _tmp$1; + while (true) { + if (!(d.nd > 0 && ((x$4 = d.d, x$5 = d.nd - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) === 48))) { break; } + d.nd = d.nd - (1) >> 0; + } + if (d.nd === 0) { + d.dp = 0; + } + d.neg = f.neg; + return true; + } + upper.Normalize(); + if (f.exp > upper.exp) { + f.mant = $shiftLeft64(f.mant, ((((f.exp - upper.exp >> 0) >>> 0)))); + f.exp = upper.exp; + } + if (lower.exp > upper.exp) { + lower.mant = $shiftLeft64(lower.mant, ((((lower.exp - upper.exp >> 0) >>> 0)))); + lower.exp = upper.exp; + } + exp10 = frexp10Many(lower, f, upper); + upper.mant = (x$6 = upper.mant, x$7 = new $Uint64(0, 1), new $Uint64(x$6.$high + x$7.$high, x$6.$low + x$7.$low)); + lower.mant = (x$8 = lower.mant, x$9 = new $Uint64(0, 1), new $Uint64(x$8.$high - x$9.$high, x$8.$low - x$9.$low)); + shift = ((-upper.exp >>> 0)); + integer = (($shiftRightUint64(upper.mant, shift).$low >>> 0)); + fraction = (x$10 = upper.mant, x$11 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$10.$high - x$11.$high, x$10.$low - x$11.$low)); + allowance = (x$12 = upper.mant, x$13 = lower.mant, new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low)); + targetDiff = (x$14 = upper.mant, x$15 = f.mant, new $Uint64(x$14.$high - x$15.$high, x$14.$low - x$15.$low)); + integerDigits = 0; + _tmp$2 = 0; + _tmp$3 = new $Uint64(0, 1); + i$1 = _tmp$2; + pow = _tmp$3; + while (true) { + if (!(i$1 < 20)) { break; } + if ((x$16 = (new $Uint64(0, integer)), (pow.$high > x$16.$high || (pow.$high === x$16.$high && pow.$low > x$16.$low)))) { + integerDigits = i$1; + break; + } + pow = $mul64(pow, (new $Uint64(0, 10))); + i$1 = i$1 + (1) >> 0; + } + i$2 = 0; + while (true) { + if (!(i$2 < integerDigits)) { break; } + pow$1 = (x$17 = (integerDigits - i$2 >> 0) - 1 >> 0, ((x$17 < 0 || x$17 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$17])); + digit = (_q = integer / ((pow$1.$low >>> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + (x$18 = d.d, ((i$2 < 0 || i$2 >= x$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + i$2] = (((digit + 48 >>> 0) << 24 >>> 24)))); + integer = integer - (($imul(digit, ((pow$1.$low >>> 0))) >>> 0)) >>> 0; + currentDiff = (x$19 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$19.$high + fraction.$high, x$19.$low + fraction.$low)); + if ((currentDiff.$high < allowance.$high || (currentDiff.$high === allowance.$high && currentDiff.$low < allowance.$low))) { + d.nd = i$2 + 1 >> 0; + d.dp = integerDigits + exp10 >> 0; + d.neg = f.neg; + return adjustLastDigit(d, currentDiff, targetDiff, allowance, $shiftLeft64(pow$1, shift), new $Uint64(0, 2)); + } + i$2 = i$2 + (1) >> 0; + } + d.nd = integerDigits; + d.dp = d.nd + exp10 >> 0; + d.neg = f.neg; + digit$1 = 0; + multiplier = new $Uint64(0, 1); + while (true) { + fraction = $mul64(fraction, (new $Uint64(0, 10))); + multiplier = $mul64(multiplier, (new $Uint64(0, 10))); + digit$1 = (($shiftRightUint64(fraction, shift).$low >> 0)); + (x$20 = d.d, x$21 = d.nd, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21] = (((digit$1 + 48 >> 0) << 24 >>> 24)))); + d.nd = d.nd + (1) >> 0; + fraction = (x$22 = $shiftLeft64((new $Uint64(0, digit$1)), shift), new $Uint64(fraction.$high - x$22.$high, fraction.$low - x$22.$low)); + if ((x$23 = $mul64(allowance, multiplier), (fraction.$high < x$23.$high || (fraction.$high === x$23.$high && fraction.$low < x$23.$low)))) { + return adjustLastDigit(d, fraction, $mul64(targetDiff, multiplier), $mul64(allowance, multiplier), $shiftLeft64(new $Uint64(0, 1), shift), $mul64(multiplier, new $Uint64(0, 2))); + } + } + }; + extFloat.prototype.ShortestDecimal = function(d, lower, upper) { return this.$val.ShortestDecimal(d, lower, upper); }; + adjustLastDigit = function(d, currentDiff, targetDiff, maxDiff, ulpDecimal, ulpBinary) { + var _index, currentDiff, d, maxDiff, targetDiff, ulpBinary, ulpDecimal, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + if ((x = $mul64(new $Uint64(0, 2), ulpBinary), (ulpDecimal.$high < x.$high || (ulpDecimal.$high === x.$high && ulpDecimal.$low < x.$low)))) { + return false; + } + while (true) { + if (!((x$1 = (x$2 = (x$3 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(currentDiff.$high + x$3.$high, currentDiff.$low + x$3.$low)), new $Uint64(x$2.$high + ulpBinary.$high, x$2.$low + ulpBinary.$low)), (x$1.$high < targetDiff.$high || (x$1.$high === targetDiff.$high && x$1.$low < targetDiff.$low))))) { break; } + _index = d.nd - 1 >> 0; + (x$5 = d.d, ((_index < 0 || _index >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index] = ((x$4 = d.d, ((_index < 0 || _index >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + _index])) - (1) << 24 >>> 24))); + currentDiff = (x$6 = ulpDecimal, new $Uint64(currentDiff.$high + x$6.$high, currentDiff.$low + x$6.$low)); + } + if ((x$7 = new $Uint64(currentDiff.$high + ulpDecimal.$high, currentDiff.$low + ulpDecimal.$low), x$8 = (x$9 = (x$10 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(targetDiff.$high + x$10.$high, targetDiff.$low + x$10.$low)), new $Uint64(x$9.$high + ulpBinary.$high, x$9.$low + ulpBinary.$low)), (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low <= x$8.$low)))) { + return false; + } + if ((currentDiff.$high < ulpBinary.$high || (currentDiff.$high === ulpBinary.$high && currentDiff.$low < ulpBinary.$low)) || (x$11 = new $Uint64(maxDiff.$high - ulpBinary.$high, maxDiff.$low - ulpBinary.$low), (currentDiff.$high > x$11.$high || (currentDiff.$high === x$11.$high && currentDiff.$low > x$11.$low)))) { + return false; + } + if ((d.nd === 1) && ((x$12 = d.d, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0])) === 48)) { + d.nd = 0; + d.dp = 0; + } + return true; + }; + AppendFloat = function(dst, f, fmt, prec, bitSize) { + var bitSize, dst, f, fmt, prec; + return genericFtoa(dst, f, fmt, prec, bitSize); + }; + $pkg.AppendFloat = AppendFloat; + genericFtoa = function(dst, val, fmt, prec, bitSize) { + var _1, _2, _3, _4, _tuple, bitSize, bits$1, buf, buf$1, digits, digs, dst, exp, f, f$1, flt, fmt, lower, mant, neg, ok, prec, s, shortest, upper, val, x, x$1, x$2, x$3, y, y$1; + bits$1 = new $Uint64(0, 0); + flt = ptrType$1.nil; + _1 = bitSize; + if (_1 === (32)) { + bits$1 = (new $Uint64(0, math.Float32bits(($fround(val))))); + flt = float32info; + } else if (_1 === (64)) { + bits$1 = math.Float64bits(val); + flt = float64info; + } else { + $panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize")); + } + neg = !((x = $shiftRightUint64(bits$1, ((flt.expbits + flt.mantbits >>> 0))), (x.$high === 0 && x.$low === 0))); + exp = (($shiftRightUint64(bits$1, flt.mantbits).$low >> 0)) & ((((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)); + mant = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$2.$high - 0, x$2.$low - 1)), new $Uint64(bits$1.$high & x$1.$high, (bits$1.$low & x$1.$low) >>> 0)); + _2 = exp; + if (_2 === ((((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0))) { + s = ""; + if (!((mant.$high === 0 && mant.$low === 0))) { + s = "NaN"; + } else if (neg) { + s = "-Inf"; + } else { + s = "+Inf"; + } + return $appendSlice(dst, s); + } else if (_2 === (0)) { + exp = exp + (1) >> 0; + } else { + mant = (x$3 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high | x$3.$high, (mant.$low | x$3.$low) >>> 0)); + } + exp = exp + (flt.bias) >> 0; + if (fmt === 98) { + return fmtB(dst, neg, mant, exp, flt); + } + if (!optimize) { + return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); + } + digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false); + ok = false; + shortest = prec < 0; + if (shortest) { + f = new extFloat.ptr(new $Uint64(0, 0), 0, false); + _tuple = f.AssignComputeBounds(mant, exp, neg, flt); + lower = $clone(_tuple[0], extFloat); + upper = $clone(_tuple[1], extFloat); + buf = arrayType$2.zero(); + digs.d = new sliceType$6(buf); + ok = f.ShortestDecimal(digs, lower, upper); + if (!ok) { + return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); + } + _3 = fmt; + if ((_3 === (101)) || (_3 === (69))) { + prec = max(digs.nd - 1 >> 0, 0); + } else if (_3 === (102)) { + prec = max(digs.nd - digs.dp >> 0, 0); + } else if ((_3 === (103)) || (_3 === (71))) { + prec = digs.nd; + } + } else if (!((fmt === 102))) { + digits = prec; + _4 = fmt; + if ((_4 === (101)) || (_4 === (69))) { + digits = digits + (1) >> 0; + } else if ((_4 === (103)) || (_4 === (71))) { + if (prec === 0) { + prec = 1; + } + digits = prec; + } + if (digits <= 15) { + buf$1 = arrayType$1.zero(); + digs.d = new sliceType$6(buf$1); + f$1 = new extFloat.ptr(mant, exp - ((flt.mantbits >> 0)) >> 0, neg); + ok = f$1.FixedDecimal(digs, digits); + } + } + if (!ok) { + return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); + } + return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt); + }; + bigFtoa = function(dst, prec, fmt, neg, mant, exp, flt) { + var _1, _2, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest; + d = new decimal.ptr(arrayType.zero(), 0, 0, false, false); + d.Assign(mant); + d.Shift(exp - ((flt.mantbits >> 0)) >> 0); + digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false); + shortest = prec < 0; + if (shortest) { + roundShortest(d, mant, exp, flt); + decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false)); + _1 = fmt; + if ((_1 === (101)) || (_1 === (69))) { + prec = digs.nd - 1 >> 0; + } else if (_1 === (102)) { + prec = max(digs.nd - digs.dp >> 0, 0); + } else if ((_1 === (103)) || (_1 === (71))) { + prec = digs.nd; + } + } else { + _2 = fmt; + if ((_2 === (101)) || (_2 === (69))) { + d.Round(prec + 1 >> 0); + } else if (_2 === (102)) { + d.Round(d.dp + prec >> 0); + } else if ((_2 === (103)) || (_2 === (71))) { + if (prec === 0) { + prec = 1; + } + d.Round(prec); + } + decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false)); + } + return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt); + }; + formatDigits = function(dst, shortest, neg, digs, prec, fmt) { + var _1, digs, dst, eprec, exp, fmt, neg, prec, shortest; + _1 = fmt; + if ((_1 === (101)) || (_1 === (69))) { + return fmtE(dst, neg, $clone(digs, decimalSlice), prec, fmt); + } else if (_1 === (102)) { + return fmtF(dst, neg, $clone(digs, decimalSlice), prec); + } else if ((_1 === (103)) || (_1 === (71))) { + eprec = prec; + if (eprec > digs.nd && digs.nd >= digs.dp) { + eprec = digs.nd; + } + if (shortest) { + eprec = 6; + } + exp = digs.dp - 1 >> 0; + if (exp < -4 || exp >= eprec) { + if (prec > digs.nd) { + prec = digs.nd; + } + return fmtE(dst, neg, $clone(digs, decimalSlice), prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24); + } + if (prec > digs.dp) { + prec = digs.nd; + } + return fmtF(dst, neg, $clone(digs, decimalSlice), max(prec - digs.dp >> 0, 0)); + } + return $append(dst, 37, fmt); + }; + roundShortest = function(d, mant, exp, flt) { + var d, exp, explo, flt, i, inclusive, l, lower, m, mant, mantlo, minexp, okdown, okup, u, upper, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; + if ((mant.$high === 0 && mant.$low === 0)) { + d.nd = 0; + return; + } + minexp = flt.bias + 1 >> 0; + if (exp > minexp && ($imul(332, ((d.dp - d.nd >> 0)))) >= ($imul(100, ((exp - ((flt.mantbits >> 0)) >> 0))))) { + return; + } + upper = new decimal.ptr(arrayType.zero(), 0, 0, false, false); + upper.Assign((x = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x.$high + 0, x.$low + 1))); + upper.Shift((exp - ((flt.mantbits >> 0)) >> 0) - 1 >> 0); + mantlo = new $Uint64(0, 0); + explo = 0; + if ((x$1 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high > x$1.$high || (mant.$high === x$1.$high && mant.$low > x$1.$low))) || (exp === minexp)) { + mantlo = new $Uint64(mant.$high - 0, mant.$low - 1); + explo = exp; + } else { + mantlo = (x$2 = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x$2.$high - 0, x$2.$low - 1)); + explo = exp - 1 >> 0; + } + lower = new decimal.ptr(arrayType.zero(), 0, 0, false, false); + lower.Assign((x$3 = $mul64(mantlo, new $Uint64(0, 2)), new $Uint64(x$3.$high + 0, x$3.$low + 1))); + lower.Shift((explo - ((flt.mantbits >> 0)) >> 0) - 1 >> 0); + inclusive = (x$4 = $div64(mant, new $Uint64(0, 2), true), (x$4.$high === 0 && x$4.$low === 0)); + i = 0; + while (true) { + if (!(i < d.nd)) { break; } + l = 48; + if (i < lower.nd) { + l = (x$5 = lower.d, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i])); + } + m = (x$6 = d.d, ((i < 0 || i >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i])); + u = 48; + if (i < upper.nd) { + u = (x$7 = upper.d, ((i < 0 || i >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[i])); + } + okdown = !((l === m)) || inclusive && ((i + 1 >> 0) === lower.nd); + okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.nd); + if (okdown && okup) { + d.Round(i + 1 >> 0); + return; + } else if (okdown) { + d.RoundDown(i + 1 >> 0); + return; + } else if (okup) { + d.RoundUp(i + 1 >> 0); + return; + } + i = i + (1) >> 0; + } + }; + fmtE = function(dst, neg, d, prec, fmt) { + var _q, _q$1, _q$2, _r, _r$1, _r$2, ch, d, dst, exp, fmt, i, m, neg, prec, x; + if (neg) { + dst = $append(dst, 45); + } + ch = 48; + if (!((d.nd === 0))) { + ch = (x = d.d, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + } + dst = $append(dst, ch); + if (prec > 0) { + dst = $append(dst, 46); + i = 1; + m = min(d.nd, prec + 1 >> 0); + if (i < m) { + dst = $appendSlice(dst, $subslice(d.d, i, m)); + i = m; + } + while (true) { + if (!(i <= prec)) { break; } + dst = $append(dst, 48); + i = i + (1) >> 0; + } + } + dst = $append(dst, fmt); + exp = d.dp - 1 >> 0; + if (d.nd === 0) { + exp = 0; + } + if (exp < 0) { + ch = 45; + exp = -exp; + } else { + ch = 43; + } + dst = $append(dst, ch); + if (exp < 10) { + dst = $append(dst, 48, ((exp << 24 >>> 24)) + 48 << 24 >>> 24); + } else if (exp < 100) { + dst = $append(dst, (((_q = exp / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } else { + dst = $append(dst, (((_q$1 = exp / 100, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (_r$1 = (((_q$2 = exp / 10, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24, (((_r$2 = exp % 10, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } + return dst; + }; + fmtF = function(dst, neg, d, prec) { + var ch, d, dst, i, j, m, neg, prec, x; + if (neg) { + dst = $append(dst, 45); + } + if (d.dp > 0) { + m = min(d.nd, d.dp); + dst = $appendSlice(dst, $subslice(d.d, 0, m)); + while (true) { + if (!(m < d.dp)) { break; } + dst = $append(dst, 48); + m = m + (1) >> 0; + } + } else { + dst = $append(dst, 48); + } + if (prec > 0) { + dst = $append(dst, 46); + i = 0; + while (true) { + if (!(i < prec)) { break; } + ch = 48; + j = d.dp + i >> 0; + if (0 <= j && j < d.nd) { + ch = (x = d.d, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + } + dst = $append(dst, ch); + i = i + (1) >> 0; + } + } + return dst; + }; + fmtB = function(dst, neg, mant, exp, flt) { + var _tuple, _tuple$1, dst, exp, flt, mant, neg; + if (neg) { + dst = $append(dst, 45); + } + _tuple = formatBits(dst, mant, 10, false, true); + dst = _tuple[0]; + dst = $append(dst, 112); + exp = exp - (((flt.mantbits >> 0))) >> 0; + if (exp >= 0) { + dst = $append(dst, 43); + } + _tuple$1 = formatBits(dst, (new $Uint64(0, exp)), 10, exp < 0, true); + dst = _tuple$1[0]; + return dst; + }; + min = function(a, b) { + var a, b; + if (a < b) { + return a; + } + return b; + }; + max = function(a, b) { + var a, b; + if (a > b) { + return a; + } + return b; + }; + FormatUint = function(i, base) { + var _tuple, base, i, s; + if (true && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { + return small(((i.$low >> 0))); + } + _tuple = formatBits(sliceType$6.nil, i, base, false, false); + s = _tuple[1]; + return s; + }; + $pkg.FormatUint = FormatUint; + FormatInt = function(i, base) { + var _tuple, base, i, s; + if (true && (0 < i.$high || (0 === i.$high && 0 <= i.$low)) && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { + return small((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0))); + } + _tuple = formatBits(sliceType$6.nil, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), false); + s = _tuple[1]; + return s; + }; + $pkg.FormatInt = FormatInt; + Itoa = function(i) { + var i; + return FormatInt((new $Int64(0, i)), 10); + }; + $pkg.Itoa = Itoa; + small = function(i) { + var i; + if (i < 10) { + return $substring("0123456789abcdefghijklmnopqrstuvwxyz", i, (i + 1 >> 0)); + } + return $substring("00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899", ($imul(i, 2)), (($imul(i, 2)) + 2 >> 0)); + }; + formatBits = function(dst, u, base, neg, append_) { + var _q, _q$1, _r, _r$1, a, append_, b, b$1, base, d, dst, i, is, is$1, is$2, j, m, neg, q, q$1, s, shift, u, us, us$1, x, x$1, x$2, x$3, x$4, x$5; + d = sliceType$6.nil; + s = ""; + if (base < 2 || base > 36) { + $panic(new $String("strconv: illegal AppendInt/FormatInt base")); + } + a = arrayType$3.zero(); + i = 65; + if (neg) { + u = new $Uint64(-u.$high, -u.$low); + } + if (base === 10) { + if (true) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 1000000000)))) { break; } + q = $div64(u, new $Uint64(0, 1000000000), false); + us = (((x = $mul64(q, new $Uint64(0, 1000000000)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0)); + j = 4; + while (true) { + if (!(j > 0)) { break; } + is = (_r = us % 100, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) * 2 >>> 0; + us = (_q = us / (100), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + i = i - (2) >> 0; + (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$1] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 1 >>> 0)))); + (x$2 = i + 0 >> 0, ((x$2 < 0 || x$2 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$2] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 0 >>> 0)))); + j = j - (1) >> 0; + } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(((us * 2 >>> 0) + 1 >>> 0))); + u = q; + } + } + us$1 = ((u.$low >>> 0)); + while (true) { + if (!(us$1 >= 100)) { break; } + is$1 = (_r$1 = us$1 % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) * 2 >>> 0; + us$1 = (_q$1 = us$1 / (100), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + i = i - (2) >> 0; + (x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$3] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 1 >>> 0)))); + (x$4 = i + 0 >> 0, ((x$4 < 0 || x$4 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$4] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 0 >>> 0)))); + } + is$2 = us$1 * 2 >>> 0; + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$2 + 1 >>> 0))); + if (us$1 >= 10) { + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(is$2)); + } + } else if (isPowerOfTwo(base)) { + shift = (((bits.TrailingZeros(((base >>> 0))) >>> 0)) & 7) >>> 0; + b = (new $Uint64(0, base)); + m = ((base >>> 0)) - 1 >>> 0; + while (true) { + if (!((u.$high > b.$high || (u.$high === b.$high && u.$low >= b.$low)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((((u.$low >>> 0)) & m) >>> 0))); + u = $shiftRightUint64(u, (shift)); + } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0)))); + } else { + b$1 = (new $Uint64(0, base)); + while (true) { + if (!((u.$high > b$1.$high || (u.$high === b$1.$high && u.$low >= b$1.$low)))) { break; } + i = i - (1) >> 0; + q$1 = $div64(u, b$1, false); + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((x$5 = $mul64(q$1, b$1), new $Uint64(u.$high - x$5.$high, u.$low - x$5.$low)).$low >>> 0)))); + u = q$1; + } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0)))); + } + if (neg) { + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = 45); + } + if (append_) { + d = $appendSlice(dst, $subslice(new sliceType$6(a), i)); + return [d, s]; + } + s = ($bytesToString($subslice(new sliceType$6(a), i))); + return [d, s]; + }; + isPowerOfTwo = function(x) { + var x; + return (x & ((x - 1 >> 0))) === 0; + }; + quoteWith = function(s, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, _q, graphicOnly, quote, s; + return ($bytesToString(appendQuotedWith($makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), s, quote, ASCIIonly, graphicOnly))); + }; + appendQuotedWith = function(buf, s, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, _tuple, buf, graphicOnly, quote, r, s, width; + buf = $append(buf, quote); + width = 0; + while (true) { + if (!(s.length > 0)) { break; } + r = ((s.charCodeAt(0) >> 0)); + width = 1; + if (r >= 128) { + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + width = _tuple[1]; + } + if ((width === 1) && (r === 65533)) { + buf = $appendSlice(buf, "\\x"); + buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24))); + buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0))); + s = $substring(s, width); + continue; + } + buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly); + s = $substring(s, width); + } + buf = $append(buf, quote); + return buf; + }; + appendQuotedRuneWith = function(buf, r, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, buf, graphicOnly, quote, r; + buf = $append(buf, quote); + if (!utf8.ValidRune(r)) { + r = 65533; + } + buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly); + buf = $append(buf, quote); + return buf; + }; + appendEscapedRune = function(buf, r, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, _1, buf, graphicOnly, n, quote, r, runeTmp, s, s$1; + runeTmp = arrayType$4.zero(); + if ((r === ((quote >> 0))) || (r === 92)) { + buf = $append(buf, 92); + buf = $append(buf, ((r << 24 >>> 24))); + return buf; + } + if (ASCIIonly) { + if (r < 128 && IsPrint(r)) { + buf = $append(buf, ((r << 24 >>> 24))); + return buf; + } + } else if (IsPrint(r) || graphicOnly && isInGraphicList(r)) { + n = utf8.EncodeRune(new sliceType$6(runeTmp), r); + buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n)); + return buf; + } + _1 = r; + if (_1 === (7)) { + buf = $appendSlice(buf, "\\a"); + } else if (_1 === (8)) { + buf = $appendSlice(buf, "\\b"); + } else if (_1 === (12)) { + buf = $appendSlice(buf, "\\f"); + } else if (_1 === (10)) { + buf = $appendSlice(buf, "\\n"); + } else if (_1 === (13)) { + buf = $appendSlice(buf, "\\r"); + } else if (_1 === (9)) { + buf = $appendSlice(buf, "\\t"); + } else if (_1 === (11)) { + buf = $appendSlice(buf, "\\v"); + } else { + if (r < 32) { + buf = $appendSlice(buf, "\\x"); + buf = $append(buf, "0123456789abcdef".charCodeAt((((r << 24 >>> 24)) >>> 4 << 24 >>> 24))); + buf = $append(buf, "0123456789abcdef".charCodeAt(((((r << 24 >>> 24)) & 15) >>> 0))); + } else if (r > 1114111) { + r = 65533; + buf = $appendSlice(buf, "\\u"); + s = 12; + while (true) { + if (!(s >= 0)) { break; } + buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15))); + s = s - (4) >> 0; + } + } else if (r < 65536) { + buf = $appendSlice(buf, "\\u"); + s = 12; + while (true) { + if (!(s >= 0)) { break; } + buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15))); + s = s - (4) >> 0; + } + } else { + buf = $appendSlice(buf, "\\U"); + s$1 = 28; + while (true) { + if (!(s$1 >= 0)) { break; } + buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s$1 >>> 0)), 31)) >> 0) & 15))); + s$1 = s$1 - (4) >> 0; + } + } + } + return buf; + }; + Quote = function(s) { + var s; + return quoteWith(s, 34, false, false); + }; + $pkg.Quote = Quote; + AppendQuote = function(dst, s) { + var dst, s; + return appendQuotedWith(dst, s, 34, false, false); + }; + $pkg.AppendQuote = AppendQuote; + QuoteToASCII = function(s) { + var s; + return quoteWith(s, 34, true, false); + }; + $pkg.QuoteToASCII = QuoteToASCII; + AppendQuoteToASCII = function(dst, s) { + var dst, s; + return appendQuotedWith(dst, s, 34, true, false); + }; + $pkg.AppendQuoteToASCII = AppendQuoteToASCII; + AppendQuoteRune = function(dst, r) { + var dst, r; + return appendQuotedRuneWith(dst, r, 39, false, false); + }; + $pkg.AppendQuoteRune = AppendQuoteRune; + AppendQuoteRuneToASCII = function(dst, r) { + var dst, r; + return appendQuotedRuneWith(dst, r, 39, true, false); + }; + $pkg.AppendQuoteRuneToASCII = AppendQuoteRuneToASCII; + CanBackquote = function(s) { + var _tuple, r, s, wid; + while (true) { + if (!(s.length > 0)) { break; } + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + wid = _tuple[1]; + s = $substring(s, wid); + if (wid > 1) { + if (r === 65279) { + return false; + } + continue; + } + if (r === 65533) { + return false; + } + if ((r < 32 && !((r === 9))) || (r === 96) || (r === 127)) { + return false; + } + } + return true; + }; + $pkg.CanBackquote = CanBackquote; + unhex = function(b) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, c, ok, v; + v = 0; + ok = false; + c = ((b >> 0)); + if (48 <= c && c <= 57) { + _tmp = c - 48 >> 0; + _tmp$1 = true; + v = _tmp; + ok = _tmp$1; + return [v, ok]; + } else if (97 <= c && c <= 102) { + _tmp$2 = (c - 97 >> 0) + 10 >> 0; + _tmp$3 = true; + v = _tmp$2; + ok = _tmp$3; + return [v, ok]; + } else if (65 <= c && c <= 70) { + _tmp$4 = (c - 65 >> 0) + 10 >> 0; + _tmp$5 = true; + v = _tmp$4; + ok = _tmp$5; + return [v, ok]; + } + return [v, ok]; + }; + UnquoteChar = function(s, quote) { + var _1, _2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, c, c$1, err, j, j$1, multibyte, n, ok, quote, r, s, size, tail, v, v$1, value, x, x$1; + value = 0; + multibyte = false; + tail = ""; + err = $ifaceNil; + if (s.length === 0) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + c = s.charCodeAt(0); + if ((c === quote) && ((quote === 39) || (quote === 34))) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } else if (c >= 128) { + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + size = _tuple[1]; + _tmp = r; + _tmp$1 = true; + _tmp$2 = $substring(s, size); + _tmp$3 = $ifaceNil; + value = _tmp; + multibyte = _tmp$1; + tail = _tmp$2; + err = _tmp$3; + return [value, multibyte, tail, err]; + } else if (!((c === 92))) { + _tmp$4 = ((s.charCodeAt(0) >> 0)); + _tmp$5 = false; + _tmp$6 = $substring(s, 1); + _tmp$7 = $ifaceNil; + value = _tmp$4; + multibyte = _tmp$5; + tail = _tmp$6; + err = _tmp$7; + return [value, multibyte, tail, err]; + } + if (s.length <= 1) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + c$1 = s.charCodeAt(1); + s = $substring(s, 2); + switch (0) { default: + _1 = c$1; + if (_1 === (97)) { + value = 7; + } else if (_1 === (98)) { + value = 8; + } else if (_1 === (102)) { + value = 12; + } else if (_1 === (110)) { + value = 10; + } else if (_1 === (114)) { + value = 13; + } else if (_1 === (116)) { + value = 9; + } else if (_1 === (118)) { + value = 11; + } else if ((_1 === (120)) || (_1 === (117)) || (_1 === (85))) { + n = 0; + _2 = c$1; + if (_2 === (120)) { + n = 2; + } else if (_2 === (117)) { + n = 4; + } else if (_2 === (85)) { + n = 8; + } + v = 0; + if (s.length < n) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + j = 0; + while (true) { + if (!(j < n)) { break; } + _tuple$1 = unhex(s.charCodeAt(j)); + x = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + v = (v << 4 >> 0) | x; + j = j + (1) >> 0; + } + s = $substring(s, n); + if (c$1 === 120) { + value = v; + break; + } + if (v > 1114111) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + value = v; + multibyte = true; + } else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { + v$1 = ((c$1 >> 0)) - 48 >> 0; + if (s.length < 2) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + j$1 = 0; + while (true) { + if (!(j$1 < 2)) { break; } + x$1 = ((s.charCodeAt(j$1) >> 0)) - 48 >> 0; + if (x$1 < 0 || x$1 > 7) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + v$1 = ((v$1 << 3 >> 0)) | x$1; + j$1 = j$1 + (1) >> 0; + } + s = $substring(s, 2); + if (v$1 > 255) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + value = v$1; + } else if (_1 === (92)) { + value = 92; + } else if ((_1 === (39)) || (_1 === (34))) { + if (!((c$1 === quote))) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + value = ((c$1 >> 0)); + } else { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + } + tail = s; + return [value, multibyte, tail, err]; + }; + $pkg.UnquoteChar = UnquoteChar; + Unquote = function(s) { + var _1, _q, _tuple, _tuple$1, buf, buf$1, c, err, i, multibyte, n, n$1, quote, r, runeTmp, s, size, ss; + n = s.length; + if (n < 2) { + return ["", $pkg.ErrSyntax]; + } + quote = s.charCodeAt(0); + if (!((quote === s.charCodeAt((n - 1 >> 0))))) { + return ["", $pkg.ErrSyntax]; + } + s = $substring(s, 1, (n - 1 >> 0)); + if (quote === 96) { + if (contains(s, 96)) { + return ["", $pkg.ErrSyntax]; + } + if (contains(s, 13)) { + buf = $makeSlice(sliceType$6, 0, (s.length - 1 >> 0)); + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (!((s.charCodeAt(i) === 13))) { + buf = $append(buf, s.charCodeAt(i)); + } + i = i + (1) >> 0; + } + return [($bytesToString(buf)), $ifaceNil]; + } + return [s, $ifaceNil]; + } + if (!((quote === 34)) && !((quote === 39))) { + return ["", $pkg.ErrSyntax]; + } + if (contains(s, 10)) { + return ["", $pkg.ErrSyntax]; + } + if (!contains(s, 92) && !contains(s, quote)) { + _1 = quote; + if (_1 === (34)) { + if (utf8.ValidString(s)) { + return [s, $ifaceNil]; + } + } else if (_1 === (39)) { + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + size = _tuple[1]; + if ((size === s.length) && (!((r === 65533)) || !((size === 1)))) { + return [s, $ifaceNil]; + } + } + } + runeTmp = arrayType$4.zero(); + buf$1 = $makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + while (true) { + if (!(s.length > 0)) { break; } + _tuple$1 = UnquoteChar(s, quote); + c = _tuple$1[0]; + multibyte = _tuple$1[1]; + ss = _tuple$1[2]; + err = _tuple$1[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return ["", err]; + } + s = ss; + if (c < 128 || !multibyte) { + buf$1 = $append(buf$1, ((c << 24 >>> 24))); + } else { + n$1 = utf8.EncodeRune(new sliceType$6(runeTmp), c); + buf$1 = $appendSlice(buf$1, $subslice(new sliceType$6(runeTmp), 0, n$1)); + } + if ((quote === 39) && !((s.length === 0))) { + return ["", $pkg.ErrSyntax]; + } + } + return [($bytesToString(buf$1)), $ifaceNil]; + }; + $pkg.Unquote = Unquote; + contains = function(s, c) { + var c, s; + return !((bytealg.IndexByteString(s, c) === -1)); + }; + bsearch16 = function(a, x) { + var _q, _tmp, _tmp$1, a, h, i, j, x; + _tmp = 0; + _tmp$1 = a.$length; + i = _tmp; + j = _tmp$1; + while (true) { + if (!(i < j)) { break; } + h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) { + i = h + 1 >> 0; + } else { + j = h; + } + } + return i; + }; + bsearch32 = function(a, x) { + var _q, _tmp, _tmp$1, a, h, i, j, x; + _tmp = 0; + _tmp$1 = a.$length; + i = _tmp; + j = _tmp$1; + while (true) { + if (!(i < j)) { break; } + h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) { + i = h + 1 >> 0; + } else { + j = h; + } + } + return i; + }; + IsPrint = function(r) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, i, i$1, isNotPrint, isNotPrint$1, isPrint, isPrint$1, j, j$1, r, rr, rr$1, x, x$1, x$2, x$3; + if (r <= 255) { + if (32 <= r && r <= 126) { + return true; + } + if (161 <= r && r <= 255) { + return !((r === 173)); + } + return false; + } + if (0 <= r && r < 65536) { + _tmp = ((r << 16 >>> 16)); + _tmp$1 = isPrint16; + _tmp$2 = isNotPrint16; + rr = _tmp; + isPrint = _tmp$1; + isNotPrint = _tmp$2; + i = bsearch16(isPrint, rr); + if (i >= isPrint.$length || rr < (x = (i & ~1) >> 0, ((x < 0 || x >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x])) || (x$1 = i | 1, ((x$1 < 0 || x$1 >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x$1])) < rr) { + return false; + } + j = bsearch16(isNotPrint, rr); + return j >= isNotPrint.$length || !((((j < 0 || j >= isNotPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint.$array[isNotPrint.$offset + j]) === rr)); + } + _tmp$3 = ((r >>> 0)); + _tmp$4 = isPrint32; + _tmp$5 = isNotPrint32; + rr$1 = _tmp$3; + isPrint$1 = _tmp$4; + isNotPrint$1 = _tmp$5; + i$1 = bsearch32(isPrint$1, rr$1); + if (i$1 >= isPrint$1.$length || rr$1 < (x$2 = (i$1 & ~1) >> 0, ((x$2 < 0 || x$2 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$2])) || (x$3 = i$1 | 1, ((x$3 < 0 || x$3 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$3])) < rr$1) { + return false; + } + if (r >= 131072) { + return true; + } + r = r - (65536) >> 0; + j$1 = bsearch16(isNotPrint$1, ((r << 16 >>> 16))); + return j$1 >= isNotPrint$1.$length || !((((j$1 < 0 || j$1 >= isNotPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint$1.$array[isNotPrint$1.$offset + j$1]) === ((r << 16 >>> 16)))); + }; + $pkg.IsPrint = IsPrint; + isInGraphicList = function(r) { + var i, r, rr; + if (r > 65535) { + return false; + } + rr = ((r << 16 >>> 16)); + i = bsearch16(isGraphic, rr); + return i < isGraphic.$length && (rr === ((i < 0 || i >= isGraphic.$length) ? ($throwRuntimeError("index out of range"), undefined) : isGraphic.$array[isGraphic.$offset + i])); + }; + ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "set", name: "set", pkg: "strconv", typ: $funcType([$String], [$Bool], false)}, {prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Assign", name: "Assign", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "Shift", name: "Shift", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundDown", name: "RoundDown", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundUp", name: "RoundUp", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundedInteger", name: "RoundedInteger", pkg: "", typ: $funcType([], [$Uint64], false)}]; + ptrType$4.methods = [{prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "AssignComputeBounds", name: "AssignComputeBounds", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, ptrType$1], [extFloat, extFloat], false)}, {prop: "Normalize", name: "Normalize", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Multiply", name: "Multiply", pkg: "", typ: $funcType([extFloat], [], false)}, {prop: "AssignDecimal", name: "AssignDecimal", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, $Bool, ptrType$1], [$Bool], false)}, {prop: "frexp10", name: "frexp10", pkg: "strconv", typ: $funcType([], [$Int, $Int], false)}, {prop: "FixedDecimal", name: "FixedDecimal", pkg: "", typ: $funcType([ptrType$3, $Int], [$Bool], false)}, {prop: "ShortestDecimal", name: "ShortestDecimal", pkg: "", typ: $funcType([ptrType$3, ptrType$4, ptrType$4], [$Bool], false)}]; + NumError.init("", [{prop: "Func", name: "Func", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Num", name: "Num", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + decimal.init("strconv", [{prop: "d", name: "d", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "nd", name: "nd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", embedded: false, exported: false, typ: $Bool, tag: ""}]); + leftCheat.init("strconv", [{prop: "delta", name: "delta", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", embedded: false, exported: false, typ: $String, tag: ""}]); + extFloat.init("strconv", [{prop: "mant", name: "mant", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "exp", name: "exp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}]); + floatInfo.init("strconv", [{prop: "mantbits", name: "mantbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "bias", name: "bias", embedded: false, exported: false, typ: $Int, tag: ""}]); + decimalSlice.init("strconv", [{prop: "d", name: "d", embedded: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + optimize = true; + $pkg.ErrRange = errors.New("value out of range"); + $pkg.ErrSyntax = errors.New("invalid syntax"); + leftcheats = new sliceType$3([new leftCheat.ptr(0, ""), new leftCheat.ptr(1, "5"), new leftCheat.ptr(1, "25"), new leftCheat.ptr(1, "125"), new leftCheat.ptr(2, "625"), new leftCheat.ptr(2, "3125"), new leftCheat.ptr(2, "15625"), new leftCheat.ptr(3, "78125"), new leftCheat.ptr(3, "390625"), new leftCheat.ptr(3, "1953125"), new leftCheat.ptr(4, "9765625"), new leftCheat.ptr(4, "48828125"), new leftCheat.ptr(4, "244140625"), new leftCheat.ptr(4, "1220703125"), new leftCheat.ptr(5, "6103515625"), new leftCheat.ptr(5, "30517578125"), new leftCheat.ptr(5, "152587890625"), new leftCheat.ptr(6, "762939453125"), new leftCheat.ptr(6, "3814697265625"), new leftCheat.ptr(6, "19073486328125"), new leftCheat.ptr(7, "95367431640625"), new leftCheat.ptr(7, "476837158203125"), new leftCheat.ptr(7, "2384185791015625"), new leftCheat.ptr(7, "11920928955078125"), new leftCheat.ptr(8, "59604644775390625"), new leftCheat.ptr(8, "298023223876953125"), new leftCheat.ptr(8, "1490116119384765625"), new leftCheat.ptr(9, "7450580596923828125"), new leftCheat.ptr(9, "37252902984619140625"), new leftCheat.ptr(9, "186264514923095703125"), new leftCheat.ptr(10, "931322574615478515625"), new leftCheat.ptr(10, "4656612873077392578125"), new leftCheat.ptr(10, "23283064365386962890625"), new leftCheat.ptr(10, "116415321826934814453125"), new leftCheat.ptr(11, "582076609134674072265625"), new leftCheat.ptr(11, "2910383045673370361328125"), new leftCheat.ptr(11, "14551915228366851806640625"), new leftCheat.ptr(12, "72759576141834259033203125"), new leftCheat.ptr(12, "363797880709171295166015625"), new leftCheat.ptr(12, "1818989403545856475830078125"), new leftCheat.ptr(13, "9094947017729282379150390625"), new leftCheat.ptr(13, "45474735088646411895751953125"), new leftCheat.ptr(13, "227373675443232059478759765625"), new leftCheat.ptr(13, "1136868377216160297393798828125"), new leftCheat.ptr(14, "5684341886080801486968994140625"), new leftCheat.ptr(14, "28421709430404007434844970703125"), new leftCheat.ptr(14, "142108547152020037174224853515625"), new leftCheat.ptr(15, "710542735760100185871124267578125"), new leftCheat.ptr(15, "3552713678800500929355621337890625"), new leftCheat.ptr(15, "17763568394002504646778106689453125"), new leftCheat.ptr(16, "88817841970012523233890533447265625"), new leftCheat.ptr(16, "444089209850062616169452667236328125"), new leftCheat.ptr(16, "2220446049250313080847263336181640625"), new leftCheat.ptr(16, "11102230246251565404236316680908203125"), new leftCheat.ptr(17, "55511151231257827021181583404541015625"), new leftCheat.ptr(17, "277555756156289135105907917022705078125"), new leftCheat.ptr(17, "1387778780781445675529539585113525390625"), new leftCheat.ptr(18, "6938893903907228377647697925567626953125"), new leftCheat.ptr(18, "34694469519536141888238489627838134765625"), new leftCheat.ptr(18, "173472347597680709441192448139190673828125"), new leftCheat.ptr(19, "867361737988403547205962240695953369140625")]); + smallPowersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(2147483648, 0), -63, false), new extFloat.ptr(new $Uint64(2684354560, 0), -60, false), new extFloat.ptr(new $Uint64(3355443200, 0), -57, false), new extFloat.ptr(new $Uint64(4194304000, 0), -54, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3276800000, 0), -47, false), new extFloat.ptr(new $Uint64(4096000000, 0), -44, false), new extFloat.ptr(new $Uint64(2560000000, 0), -40, false)]); + powersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(4203730336, 136053384), -1220, false), new extFloat.ptr(new $Uint64(3132023167, 2722021238), -1193, false), new extFloat.ptr(new $Uint64(2333539104, 810921078), -1166, false), new extFloat.ptr(new $Uint64(3477244234, 1573795306), -1140, false), new extFloat.ptr(new $Uint64(2590748842, 1432697645), -1113, false), new extFloat.ptr(new $Uint64(3860516611, 1025131999), -1087, false), new extFloat.ptr(new $Uint64(2876309015, 3348809418), -1060, false), new extFloat.ptr(new $Uint64(4286034428, 3200048207), -1034, false), new extFloat.ptr(new $Uint64(3193344495, 1097586188), -1007, false), new extFloat.ptr(new $Uint64(2379227053, 2424306748), -980, false), new extFloat.ptr(new $Uint64(3545324584, 827693699), -954, false), new extFloat.ptr(new $Uint64(2641472655, 2913388981), -927, false), new extFloat.ptr(new $Uint64(3936100983, 602835915), -901, false), new extFloat.ptr(new $Uint64(2932623761, 1081627501), -874, false), new extFloat.ptr(new $Uint64(2184974969, 1572261463), -847, false), new extFloat.ptr(new $Uint64(3255866422, 1308317239), -821, false), new extFloat.ptr(new $Uint64(2425809519, 944281679), -794, false), new extFloat.ptr(new $Uint64(3614737867, 629291719), -768, false), new extFloat.ptr(new $Uint64(2693189581, 2545915892), -741, false), new extFloat.ptr(new $Uint64(4013165208, 388672741), -715, false), new extFloat.ptr(new $Uint64(2990041083, 708162190), -688, false), new extFloat.ptr(new $Uint64(2227754207, 3536207675), -661, false), new extFloat.ptr(new $Uint64(3319612455, 450088378), -635, false), new extFloat.ptr(new $Uint64(2473304014, 3139815830), -608, false), new extFloat.ptr(new $Uint64(3685510180, 2103616900), -582, false), new extFloat.ptr(new $Uint64(2745919064, 224385782), -555, false), new extFloat.ptr(new $Uint64(4091738259, 3737383206), -529, false), new extFloat.ptr(new $Uint64(3048582568, 2868871352), -502, false), new extFloat.ptr(new $Uint64(2271371013, 1820084875), -475, false), new extFloat.ptr(new $Uint64(3384606560, 885076051), -449, false), new extFloat.ptr(new $Uint64(2521728396, 2444895829), -422, false), new extFloat.ptr(new $Uint64(3757668132, 1881767613), -396, false), new extFloat.ptr(new $Uint64(2799680927, 3102062735), -369, false), new extFloat.ptr(new $Uint64(4171849679, 2289335700), -343, false), new extFloat.ptr(new $Uint64(3108270227, 2410191823), -316, false), new extFloat.ptr(new $Uint64(2315841784, 3205436779), -289, false), new extFloat.ptr(new $Uint64(3450873173, 1697722806), -263, false), new extFloat.ptr(new $Uint64(2571100870, 3497754540), -236, false), new extFloat.ptr(new $Uint64(3831238852, 707476230), -210, false), new extFloat.ptr(new $Uint64(2854495385, 1769181907), -183, false), new extFloat.ptr(new $Uint64(4253529586, 2197867022), -157, false), new extFloat.ptr(new $Uint64(3169126500, 2450594539), -130, false), new extFloat.ptr(new $Uint64(2361183241, 1867548876), -103, false), new extFloat.ptr(new $Uint64(3518437208, 3793315116), -77, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3906250000, 0), -24, false), new extFloat.ptr(new $Uint64(2910383045, 2892103680), 3, false), new extFloat.ptr(new $Uint64(2168404344, 4170451332), 30, false), new extFloat.ptr(new $Uint64(3231174267, 3372684723), 56, false), new extFloat.ptr(new $Uint64(2407412430, 2078956656), 83, false), new extFloat.ptr(new $Uint64(3587324068, 2884206696), 109, false), new extFloat.ptr(new $Uint64(2672764710, 395977285), 136, false), new extFloat.ptr(new $Uint64(3982729777, 3569679143), 162, false), new extFloat.ptr(new $Uint64(2967364920, 2361961896), 189, false), new extFloat.ptr(new $Uint64(2210859150, 447440347), 216, false), new extFloat.ptr(new $Uint64(3294436857, 1114709402), 242, false), new extFloat.ptr(new $Uint64(2454546732, 2786846552), 269, false), new extFloat.ptr(new $Uint64(3657559652, 443583978), 295, false), new extFloat.ptr(new $Uint64(2725094297, 2599384906), 322, false), new extFloat.ptr(new $Uint64(4060706939, 3028118405), 348, false), new extFloat.ptr(new $Uint64(3025462433, 2044532855), 375, false), new extFloat.ptr(new $Uint64(2254145170, 1536935362), 402, false), new extFloat.ptr(new $Uint64(3358938053, 3365297469), 428, false), new extFloat.ptr(new $Uint64(2502603868, 4204241075), 455, false), new extFloat.ptr(new $Uint64(3729170365, 2577424355), 481, false), new extFloat.ptr(new $Uint64(2778448436, 3677981733), 508, false), new extFloat.ptr(new $Uint64(4140210802, 2744688476), 534, false), new extFloat.ptr(new $Uint64(3084697427, 1424604878), 561, false), new extFloat.ptr(new $Uint64(2298278679, 4062331362), 588, false), new extFloat.ptr(new $Uint64(3424702107, 3546052773), 614, false), new extFloat.ptr(new $Uint64(2551601907, 2065781727), 641, false), new extFloat.ptr(new $Uint64(3802183132, 2535403578), 667, false), new extFloat.ptr(new $Uint64(2832847187, 1558426518), 694, false), new extFloat.ptr(new $Uint64(4221271257, 2762425404), 720, false), new extFloat.ptr(new $Uint64(3145092172, 2812560400), 747, false), new extFloat.ptr(new $Uint64(2343276271, 3057687578), 774, false), new extFloat.ptr(new $Uint64(3491753744, 2790753324), 800, false), new extFloat.ptr(new $Uint64(2601559269, 3918606633), 827, false), new extFloat.ptr(new $Uint64(3876625403, 2711358621), 853, false), new extFloat.ptr(new $Uint64(2888311001, 1648096297), 880, false), new extFloat.ptr(new $Uint64(2151959390, 2057817989), 907, false), new extFloat.ptr(new $Uint64(3206669376, 61660461), 933, false), new extFloat.ptr(new $Uint64(2389154863, 1581580175), 960, false), new extFloat.ptr(new $Uint64(3560118173, 2626467905), 986, false), new extFloat.ptr(new $Uint64(2652494738, 3034782633), 1013, false), new extFloat.ptr(new $Uint64(3952525166, 3135207385), 1039, false), new extFloat.ptr(new $Uint64(2944860731, 2616258155), 1066, false)]); + uint64pow10 = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 10), new $Uint64(0, 100), new $Uint64(0, 1000), new $Uint64(0, 10000), new $Uint64(0, 100000), new $Uint64(0, 1000000), new $Uint64(0, 10000000), new $Uint64(0, 100000000), new $Uint64(0, 1000000000), new $Uint64(2, 1410065408), new $Uint64(23, 1215752192), new $Uint64(232, 3567587328), new $Uint64(2328, 1316134912), new $Uint64(23283, 276447232), new $Uint64(232830, 2764472320), new $Uint64(2328306, 1874919424), new $Uint64(23283064, 1569325056), new $Uint64(232830643, 2808348672), new $Uint64(2328306436, 2313682944)]); + float32info = new floatInfo.ptr(23, 8, -127); + float64info = new floatInfo.ptr(52, 11, -1023); + isPrint16 = new sliceType$4([32, 126, 161, 887, 890, 895, 900, 1366, 1369, 1418, 1421, 1479, 1488, 1514, 1520, 1524, 1542, 1563, 1566, 1805, 1808, 1866, 1869, 1969, 1984, 2042, 2048, 2093, 2096, 2139, 2142, 2154, 2208, 2237, 2260, 2444, 2447, 2448, 2451, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2531, 2534, 2557, 2561, 2570, 2575, 2576, 2579, 2617, 2620, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2654, 2662, 2677, 2689, 2745, 2748, 2765, 2768, 2768, 2784, 2787, 2790, 2801, 2809, 2828, 2831, 2832, 2835, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2915, 2918, 2935, 2946, 2954, 2958, 2965, 2969, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3021, 3024, 3024, 3031, 3031, 3046, 3066, 3072, 3129, 3133, 3149, 3157, 3162, 3168, 3171, 3174, 3183, 3192, 3257, 3260, 3277, 3285, 3286, 3294, 3299, 3302, 3314, 3328, 3407, 3412, 3427, 3430, 3455, 3458, 3478, 3482, 3517, 3520, 3526, 3530, 3530, 3535, 3551, 3558, 3567, 3570, 3572, 3585, 3642, 3647, 3675, 3713, 3716, 3719, 3722, 3725, 3725, 3732, 3751, 3754, 3773, 3776, 3789, 3792, 3801, 3804, 3807, 3840, 3948, 3953, 4058, 4096, 4295, 4301, 4301, 4304, 4685, 4688, 4701, 4704, 4749, 4752, 4789, 4792, 4805, 4808, 4885, 4888, 4954, 4957, 4988, 4992, 5017, 5024, 5109, 5112, 5117, 5120, 5788, 5792, 5880, 5888, 5908, 5920, 5942, 5952, 5971, 5984, 6003, 6016, 6109, 6112, 6121, 6128, 6137, 6144, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6443, 6448, 6459, 6464, 6464, 6468, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6622, 6683, 6686, 6780, 6783, 6793, 6800, 6809, 6816, 6829, 6832, 6846, 6912, 6987, 6992, 7036, 7040, 7155, 7164, 7223, 7227, 7241, 7245, 7304, 7360, 7367, 7376, 7417, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8383, 8400, 8432, 8448, 8587, 8592, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11160, 11193, 11197, 11218, 11244, 11247, 11264, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11849, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12590, 12593, 12730, 12736, 12771, 12784, 19893, 19904, 40938, 40960, 42124, 42128, 42182, 42192, 42539, 42560, 42743, 42752, 42935, 42999, 43051, 43056, 43065, 43072, 43127, 43136, 43205, 43214, 43225, 43232, 43261, 43264, 43347, 43359, 43388, 43392, 43481, 43486, 43574, 43584, 43597, 43600, 43609, 43612, 43714, 43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43877, 43888, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64449, 64467, 64831, 64848, 64911, 64914, 64967, 65008, 65021, 65024, 65049, 65056, 65131, 65136, 65276, 65281, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65518, 65532, 65533]); + isNotPrint16 = new sliceType$4([173, 907, 909, 930, 1328, 1376, 1416, 1424, 1757, 2111, 2143, 2229, 2274, 2436, 2473, 2481, 2526, 2564, 2601, 2609, 2612, 2615, 2621, 2653, 2692, 2702, 2706, 2729, 2737, 2740, 2758, 2762, 2816, 2820, 2857, 2865, 2868, 2910, 2948, 2961, 2971, 2973, 3017, 3076, 3085, 3089, 3113, 3141, 3145, 3159, 3204, 3213, 3217, 3241, 3252, 3269, 3273, 3295, 3312, 3332, 3341, 3345, 3397, 3401, 3460, 3506, 3516, 3541, 3543, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3770, 3781, 3783, 3912, 3992, 4029, 4045, 4294, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, 4881, 5760, 5901, 5997, 6001, 6431, 6751, 7674, 8024, 8026, 8028, 8030, 8117, 8133, 8156, 8181, 8335, 11209, 11311, 11359, 11558, 11687, 11695, 11703, 11711, 11719, 11727, 11735, 11743, 11930, 12352, 12687, 12831, 13055, 42927, 43470, 43519, 43815, 43823, 64311, 64317, 64319, 64322, 64325, 65107, 65127, 65141, 65511]); + isPrint32 = new sliceType$5([65536, 65613, 65616, 65629, 65664, 65786, 65792, 65794, 65799, 65843, 65847, 65947, 65952, 65952, 66000, 66045, 66176, 66204, 66208, 66256, 66272, 66299, 66304, 66339, 66349, 66378, 66384, 66426, 66432, 66499, 66504, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66927, 66927, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67640, 67644, 67644, 67647, 67742, 67751, 67759, 67808, 67829, 67835, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68028, 68047, 68050, 68102, 68108, 68147, 68152, 68154, 68159, 68167, 68176, 68184, 68192, 68255, 68288, 68326, 68331, 68342, 68352, 68405, 68409, 68437, 68440, 68466, 68472, 68497, 68505, 68508, 68521, 68527, 68608, 68680, 68736, 68786, 68800, 68850, 68858, 68863, 69216, 69246, 69632, 69709, 69714, 69743, 69759, 69825, 69840, 69864, 69872, 69881, 69888, 69955, 69968, 70006, 70016, 70093, 70096, 70132, 70144, 70206, 70272, 70313, 70320, 70378, 70384, 70393, 70400, 70412, 70415, 70416, 70419, 70457, 70460, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70749, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71133, 71168, 71236, 71248, 71257, 71264, 71276, 71296, 71351, 71360, 71369, 71424, 71449, 71453, 71467, 71472, 71487, 71840, 71922, 71935, 71935, 72192, 72263, 72272, 72323, 72326, 72354, 72384, 72440, 72704, 72773, 72784, 72812, 72816, 72847, 72850, 72886, 72960, 73014, 73018, 73031, 73040, 73049, 73728, 74649, 74752, 74868, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92777, 92782, 92783, 92880, 92909, 92912, 92917, 92928, 92997, 93008, 93047, 93053, 93071, 93952, 94020, 94032, 94078, 94095, 94111, 94176, 94177, 94208, 100332, 100352, 101106, 110592, 110878, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119272, 119296, 119365, 119552, 119638, 119648, 119665, 119808, 119967, 119970, 119970, 119973, 119974, 119977, 120074, 120077, 120134, 120138, 120485, 120488, 120779, 120782, 121483, 121499, 121519, 122880, 122904, 122907, 122922, 124928, 125124, 125127, 125142, 125184, 125258, 125264, 125273, 125278, 125279, 126464, 126500, 126503, 126523, 126530, 126530, 126535, 126548, 126551, 126564, 126567, 126619, 126625, 126651, 126704, 126705, 126976, 127019, 127024, 127123, 127136, 127150, 127153, 127221, 127232, 127244, 127248, 127339, 127344, 127404, 127462, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 128724, 128736, 128748, 128752, 128760, 128768, 128883, 128896, 128980, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 129280, 129291, 129296, 129356, 129360, 129387, 129408, 129431, 129472, 129472, 129488, 129510, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 917760, 917999]); + isNotPrint32 = new sliceType$4([12, 39, 59, 62, 399, 926, 2057, 2102, 2134, 2291, 2564, 2580, 2584, 4285, 4405, 4576, 4626, 4743, 4745, 4750, 4766, 4868, 4905, 4913, 4916, 5210, 5212, 6813, 7177, 7223, 7336, 7431, 7434, 7483, 7486, 9327, 27231, 27482, 27490, 54357, 54429, 54445, 54458, 54460, 54468, 54534, 54549, 54557, 54586, 54591, 54597, 54609, 55968, 57351, 57378, 57381, 60932, 60960, 60963, 60968, 60979, 60984, 60986, 61000, 61002, 61004, 61008, 61011, 61016, 61018, 61020, 61022, 61024, 61027, 61035, 61043, 61048, 61053, 61055, 61066, 61092, 61098, 61632, 61648, 61743, 63807]); + isGraphic = new sliceType$4([160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/race"] = (function() { + var $pkg = {}, $init, Acquire, Release, ReleaseMerge, Disable, Enable, ReadRange, WriteRange; + Acquire = function(addr) { + var addr; + }; + $pkg.Acquire = Acquire; + Release = function(addr) { + var addr; + }; + $pkg.Release = Release; + ReleaseMerge = function(addr) { + var addr; + }; + $pkg.ReleaseMerge = ReleaseMerge; + Disable = function() { + }; + $pkg.Disable = Disable; + Enable = function() { + }; + $pkg.Enable = Enable; + ReadRange = function(addr, len) { + var addr, len; + }; + $pkg.ReadRange = ReadRange; + WriteRange = function(addr, len) { + var addr, len; + }; + $pkg.WriteRange = WriteRange; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["sync/atomic"] = (function() { + var $pkg = {}, $init, js, Value, ptrType, CompareAndSwapInt32, CompareAndSwapUint64, AddInt32, AddUint32, LoadInt32, LoadUint32, LoadUint64, StoreInt32, StoreUint32; + js = $packages["github.com/gopherjs/gopherjs/js"]; + Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = $ifaceNil; + return; + } + this.v = v_; + }); + ptrType = $ptrType(Value); + CompareAndSwapInt32 = function(addr, old, new$1) { + var addr, new$1, old; + if (addr.$get() === old) { + addr.$set(new$1); + return true; + } + return false; + }; + $pkg.CompareAndSwapInt32 = CompareAndSwapInt32; + CompareAndSwapUint64 = function(addr, old, new$1) { + var addr, new$1, old, x; + if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) { + addr.$set(new$1); + return true; + } + return false; + }; + $pkg.CompareAndSwapUint64 = CompareAndSwapUint64; + AddInt32 = function(addr, delta) { + var addr, delta, new$1; + new$1 = addr.$get() + delta >> 0; + addr.$set(new$1); + return new$1; + }; + $pkg.AddInt32 = AddInt32; + AddUint32 = function(addr, delta) { + var addr, delta, new$1; + new$1 = addr.$get() + delta >>> 0; + addr.$set(new$1); + return new$1; + }; + $pkg.AddUint32 = AddUint32; + LoadInt32 = function(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadInt32 = LoadInt32; + LoadUint32 = function(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadUint32 = LoadUint32; + LoadUint64 = function(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadUint64 = LoadUint64; + StoreInt32 = function(addr, val) { + var addr, val; + addr.$set(val); + }; + $pkg.StoreInt32 = StoreInt32; + StoreUint32 = function(addr, val) { + var addr, val; + addr.$set(val); + }; + $pkg.StoreUint32 = StoreUint32; + Value.ptr.prototype.Load = function() { + var v, x; + x = $ifaceNil; + v = this; + x = v.v; + return x; + }; + Value.prototype.Load = function() { return this.$val.Load(); }; + Value.ptr.prototype.Store = function(x) { + var v, x; + v = this; + if ($interfaceIsEqual(x, $ifaceNil)) { + $panic(new $String("sync/atomic: store of nil value into Value")); + } + if (!($interfaceIsEqual(v.v, $ifaceNil)) && !(x.constructor === v.v.constructor)) { + $panic(new $String("sync/atomic: store of inconsistently typed value into Value")); + } + v.v = x; + }; + Value.prototype.Store = function(x) { return this.$val.Store(x); }; + ptrType.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}]; + Value.init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["sync"] = (function() { + var $pkg = {}, $init, js, race, runtime, atomic, Pool, Mutex, Locker, Once, poolLocalInternal, poolLocal, notifyList, RWMutex, rlocker, ptrType, sliceType, ptrType$1, chanType, sliceType$1, ptrType$6, ptrType$7, sliceType$4, ptrType$8, ptrType$9, funcType, ptrType$16, funcType$2, ptrType$17, arrayType$2, semWaiters, semAwoken, expunged, allPools, runtime_registerPoolCleanup, runtime_SemacquireMutex, runtime_Semrelease, runtime_notifyListCheck, runtime_canSpin, runtime_nanotime, throw$1, poolCleanup, init, indexLocal, init$1, runtime_doSpin; + js = $packages["github.com/gopherjs/gopherjs/js"]; + race = $packages["internal/race"]; + runtime = $packages["runtime"]; + atomic = $packages["sync/atomic"]; + Pool = $pkg.Pool = $newType(0, $kindStruct, "sync.Pool", true, "sync", true, function(local_, localSize_, store_, New_) { + this.$val = this; + if (arguments.length === 0) { + this.local = 0; + this.localSize = 0; + this.store = sliceType$4.nil; + this.New = $throwNilPointerError; + return; + } + this.local = local_; + this.localSize = localSize_; + this.store = store_; + this.New = New_; + }); + Mutex = $pkg.Mutex = $newType(0, $kindStruct, "sync.Mutex", true, "sync", true, function(state_, sema_) { + this.$val = this; + if (arguments.length === 0) { + this.state = 0; + this.sema = 0; + return; + } + this.state = state_; + this.sema = sema_; + }); + Locker = $pkg.Locker = $newType(8, $kindInterface, "sync.Locker", true, "sync", true, null); + Once = $pkg.Once = $newType(0, $kindStruct, "sync.Once", true, "sync", true, function(m_, done_) { + this.$val = this; + if (arguments.length === 0) { + this.m = new Mutex.ptr(0, 0); + this.done = 0; + return; + } + this.m = m_; + this.done = done_; + }); + poolLocalInternal = $pkg.poolLocalInternal = $newType(0, $kindStruct, "sync.poolLocalInternal", true, "sync", false, function(private$0_, shared_, Mutex_) { + this.$val = this; + if (arguments.length === 0) { + this.private$0 = $ifaceNil; + this.shared = sliceType$4.nil; + this.Mutex = new Mutex.ptr(0, 0); + return; + } + this.private$0 = private$0_; + this.shared = shared_; + this.Mutex = Mutex_; + }); + poolLocal = $pkg.poolLocal = $newType(0, $kindStruct, "sync.poolLocal", true, "sync", false, function(poolLocalInternal_, pad_) { + this.$val = this; + if (arguments.length === 0) { + this.poolLocalInternal = new poolLocalInternal.ptr($ifaceNil, sliceType$4.nil, new Mutex.ptr(0, 0)); + this.pad = arrayType$2.zero(); + return; + } + this.poolLocalInternal = poolLocalInternal_; + this.pad = pad_; + }); + notifyList = $pkg.notifyList = $newType(0, $kindStruct, "sync.notifyList", true, "sync", false, function(wait_, notify_, lock_, head_, tail_) { + this.$val = this; + if (arguments.length === 0) { + this.wait = 0; + this.notify = 0; + this.lock = 0; + this.head = 0; + this.tail = 0; + return; + } + this.wait = wait_; + this.notify = notify_; + this.lock = lock_; + this.head = head_; + this.tail = tail_; + }); + RWMutex = $pkg.RWMutex = $newType(0, $kindStruct, "sync.RWMutex", true, "sync", true, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { + this.$val = this; + if (arguments.length === 0) { + this.w = new Mutex.ptr(0, 0); + this.writerSem = 0; + this.readerSem = 0; + this.readerCount = 0; + this.readerWait = 0; + return; + } + this.w = w_; + this.writerSem = writerSem_; + this.readerSem = readerSem_; + this.readerCount = readerCount_; + this.readerWait = readerWait_; + }); + rlocker = $pkg.rlocker = $newType(0, $kindStruct, "sync.rlocker", true, "sync", false, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { + this.$val = this; + if (arguments.length === 0) { + this.w = new Mutex.ptr(0, 0); + this.writerSem = 0; + this.readerSem = 0; + this.readerCount = 0; + this.readerWait = 0; + return; + } + this.w = w_; + this.writerSem = writerSem_; + this.readerSem = readerSem_; + this.readerCount = readerCount_; + this.readerWait = readerWait_; + }); + ptrType = $ptrType(Pool); + sliceType = $sliceType(ptrType); + ptrType$1 = $ptrType($Uint32); + chanType = $chanType($Bool, false, false); + sliceType$1 = $sliceType(chanType); + ptrType$6 = $ptrType($Int32); + ptrType$7 = $ptrType(poolLocal); + sliceType$4 = $sliceType($emptyInterface); + ptrType$8 = $ptrType(rlocker); + ptrType$9 = $ptrType(RWMutex); + funcType = $funcType([], [$emptyInterface], false); + ptrType$16 = $ptrType(Mutex); + funcType$2 = $funcType([], [], false); + ptrType$17 = $ptrType(Once); + arrayType$2 = $arrayType($Uint8, 100); + Pool.ptr.prototype.Get = function() { + var _r, p, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (p.store.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.store.$length === 0) { */ case 1: + /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(p.New === $throwNilPointerError)) { */ case 3: + _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 2: + x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); + $s = -1; return x$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + Pool.prototype.Get = function() { return this.$val.Get(); }; + Pool.ptr.prototype.Put = function(x) { + var p, x; + p = this; + if ($interfaceIsEqual(x, $ifaceNil)) { + return; + } + p.store = $append(p.store, x); + }; + Pool.prototype.Put = function(x) { return this.$val.Put(x); }; + runtime_registerPoolCleanup = function(cleanup) { + var cleanup; + }; + runtime_SemacquireMutex = function(s, lifo) { + var _entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _key$1, _key$2, _r, ch, lifo, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _r = $f._r; ch = $f.ch; lifo = $f.lifo; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ if (((s.$get() - (_entry = semAwoken[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((s.$get() - (_entry = semAwoken[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { */ case 1: + ch = new $Chan($Bool, 0); + if (lifo) { + _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: $appendSlice(new sliceType$1([ch]), (_entry$1 = semWaiters[ptrType$1.keyFor(s)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil)) }; + } else { + _key$1 = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$2 = semWaiters[ptrType$1.keyFor(s)], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), ch) }; + } + _r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r[0]; + _key$2 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$2)] = { k: _key$2, v: (_entry$3 = semAwoken[ptrType$1.keyFor(s)], _entry$3 !== undefined ? _entry$3.v : 0) - (1) >>> 0 }; + if ((_entry$4 = semAwoken[ptrType$1.keyFor(s)], _entry$4 !== undefined ? _entry$4.v : 0) === 0) { + delete semAwoken[ptrType$1.keyFor(s)]; + } + /* } */ case 2: + s.$set(s.$get() - (1) >>> 0); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_SemacquireMutex }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._r = _r; $f.ch = ch; $f.lifo = lifo; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + runtime_Semrelease = function(s, handoff) { + var _entry, _entry$1, _key, _key$1, ch, handoff, s, w, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _key$1 = $f._key$1; ch = $f.ch; handoff = $f.handoff; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s.$set(s.$get() + (1) >>> 0); + w = (_entry = semWaiters[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : sliceType$1.nil); + if (w.$length === 0) { + $s = -1; return; + } + ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]); + w = $subslice(w, 1); + _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: w }; + if (w.$length === 0) { + delete semWaiters[ptrType$1.keyFor(s)]; + } + _key$1 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$1)] = { k: _key$1, v: (_entry$1 = semAwoken[ptrType$1.keyFor(s)], _entry$1 !== undefined ? _entry$1.v : 0) + (1) >>> 0 }; + $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._key$1 = _key$1; $f.ch = ch; $f.handoff = handoff; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; + }; + runtime_notifyListCheck = function(size) { + var size; + }; + runtime_canSpin = function(i) { + var i; + return false; + }; + runtime_nanotime = function() { + return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000)); + }; + throw$1 = function(s) { + var s; + $throwRuntimeError($externalize(s, $String)); + }; + Mutex.ptr.prototype.Lock = function() { + var awoke, delta, iter, m, new$1, old, queueLifo, starving, waitStartTime, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; awoke = $f.awoke; delta = $f.delta; iter = $f.iter; m = $f.m; new$1 = $f.new$1; old = $f.old; queueLifo = $f.queueLifo; starving = $f.starving; waitStartTime = $f.waitStartTime; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + m = this; + if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) { + if (false) { + race.Acquire((m)); + } + $s = -1; return; + } + waitStartTime = new $Int64(0, 0); + starving = false; + awoke = false; + iter = 0; + old = m.state; + /* while (true) { */ case 1: + /* */ if (((old & 5) === 1) && runtime_canSpin(iter)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (((old & 5) === 1) && runtime_canSpin(iter)) { */ case 3: + if (!awoke && ((old & 2) === 0) && !(((old >> 3 >> 0) === 0)) && atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, old | 2)) { + awoke = true; + } + runtime_doSpin(); + iter = iter + (1) >> 0; + old = m.state; + /* continue; */ $s = 1; continue; + /* } */ case 4: + new$1 = old; + if ((old & 4) === 0) { + new$1 = new$1 | (1); + } + if (!(((old & 5) === 0))) { + new$1 = new$1 + (8) >> 0; + } + if (starving && !(((old & 1) === 0))) { + new$1 = new$1 | (4); + } + if (awoke) { + if ((new$1 & 2) === 0) { + throw$1("sync: inconsistent mutex state"); + } + new$1 = (new$1 & ~(2)) >> 0; + } + /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 5: + if ((old & 5) === 0) { + /* break; */ $s = 2; continue; + } + queueLifo = !((waitStartTime.$high === 0 && waitStartTime.$low === 0)); + if ((waitStartTime.$high === 0 && waitStartTime.$low === 0)) { + waitStartTime = runtime_nanotime(); + } + $r = runtime_SemacquireMutex((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), queueLifo); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + starving = starving || (x = (x$1 = runtime_nanotime(), new $Int64(x$1.$high - waitStartTime.$high, x$1.$low - waitStartTime.$low)), (x.$high > 0 || (x.$high === 0 && x.$low > 1000000))); + old = m.state; + if (!(((old & 4) === 0))) { + if (!(((old & 3) === 0)) || ((old >> 3 >> 0) === 0)) { + throw$1("sync: inconsistent mutex state"); + } + delta = -7; + if (!starving || ((old >> 3 >> 0) === 1)) { + delta = delta - (4) >> 0; + } + atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), delta); + /* break; */ $s = 2; continue; + } + awoke = true; + iter = 0; + $s = 7; continue; + /* } else { */ case 6: + old = m.state; + /* } */ case 7: + /* } */ $s = 1; continue; case 2: + if (false) { + race.Acquire((m)); + } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Lock }; } $f.awoke = awoke; $f.delta = delta; $f.iter = iter; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.queueLifo = queueLifo; $f.starving = starving; $f.waitStartTime = waitStartTime; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Mutex.prototype.Lock = function() { return this.$val.Lock(); }; + Mutex.ptr.prototype.Unlock = function() { + var m, new$1, old, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + m = this; + if (false) { + $unused(m.state); + race.Release((m)); + } + new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1); + if ((((new$1 + 1 >> 0)) & 1) === 0) { + throw$1("sync: unlock of unlocked mutex"); + } + /* */ if ((new$1 & 4) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((new$1 & 4) === 0) { */ case 1: + old = new$1; + /* while (true) { */ case 4: + if (((old >> 3 >> 0) === 0) || !(((old & 7) === 0))) { + $s = -1; return; + } + new$1 = ((old - 8 >> 0)) | 2; + /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 6: + $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), false); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 7: + old = m.state; + /* } */ $s = 4; continue; case 5: + $s = 3; continue; + /* } else { */ case 2: + $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), true); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Unlock }; } $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f; + }; + Mutex.prototype.Unlock = function() { return this.$val.Unlock(); }; + Once.ptr.prototype.Do = function(f) { + var f, o, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + o = this; + if (atomic.LoadUint32((o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 1) { + $s = -1; return; + } + $r = o.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(o.m, "Unlock"), []]); + /* */ if (o.done === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (o.done === 0) { */ case 2: + $deferred.push([atomic.StoreUint32, [(o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o))), 1]]); + $r = f(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Once.prototype.Do = function(f) { return this.$val.Do(f); }; + poolCleanup = function() { + var _i, _i$1, _ref, _ref$1, i, i$1, j, l, p, x; + _ref = allPools; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= allPools.$length) ? ($throwRuntimeError("index out of range"), undefined) : allPools.$array[allPools.$offset + i] = ptrType.nil); + i$1 = 0; + while (true) { + if (!(i$1 < ((p.localSize >> 0)))) { break; } + l = indexLocal(p.local, i$1); + l.poolLocalInternal.private$0 = $ifaceNil; + _ref$1 = l.poolLocalInternal.shared; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + j = _i$1; + (x = l.poolLocalInternal.shared, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j] = $ifaceNil)); + _i$1++; + } + l.poolLocalInternal.shared = sliceType$4.nil; + i$1 = i$1 + (1) >> 0; + } + p.local = 0; + p.localSize = 0; + _i++; + } + allPools = new sliceType([]); + }; + init = function() { + runtime_registerPoolCleanup(poolCleanup); + }; + indexLocal = function(l, i) { + var i, l, lp; + lp = (((l) + ($imul(((i >>> 0)), 128) >>> 0) >>> 0)); + return ($pointerOfStructConversion(lp, ptrType$7)); + }; + init$1 = function() { + var n; + n = new notifyList.ptr(0, 0, 0, 0, 0); + runtime_notifyListCheck(20); + }; + runtime_doSpin = function() { + $throwRuntimeError("native function not implemented: sync.runtime_doSpin"); + }; + RWMutex.ptr.prototype.RLock = function() { + var rw, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Disable(); + } + /* */ if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { */ case 1: + $r = runtime_SemacquireMutex((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (false) { + race.Enable(); + race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RLock }; } $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; + }; + RWMutex.prototype.RLock = function() { return this.$val.RLock(); }; + RWMutex.ptr.prototype.RUnlock = function() { + var r, rw, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.ReleaseMerge(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); + race.Disable(); + } + r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1); + /* */ if (r < 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (r < 0) { */ case 1: + if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) { + race.Enable(); + throw$1("sync: RUnlock of unlocked RWMutex"); + } + /* */ if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { */ case 3: + $r = runtime_Semrelease((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + /* } */ case 2: + if (false) { + race.Enable(); + } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RUnlock }; } $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; + }; + RWMutex.prototype.RUnlock = function() { return this.$val.RUnlock(); }; + RWMutex.ptr.prototype.Lock = function() { + var r, rw, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Disable(); + } + $r = rw.w.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1073741824) + 1073741824 >> 0; + /* */ if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { */ case 2: + $r = runtime_SemacquireMutex((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + if (false) { + race.Enable(); + race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + race.Acquire(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); + } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Lock }; } $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; + }; + RWMutex.prototype.Lock = function() { return this.$val.Lock(); }; + RWMutex.ptr.prototype.Unlock = function() { + var i, r, rw, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; i = $f.i; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Release(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + race.Disable(); + } + r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1073741824); + if (r >= 1073741824) { + race.Enable(); + throw$1("sync: Unlock of unlocked RWMutex"); + } + i = 0; + /* while (true) { */ case 1: + /* if (!(i < ((r >> 0)))) { break; } */ if(!(i < ((r >> 0)))) { $s = 2; continue; } + $r = runtime_Semrelease((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + $r = rw.w.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (false) { + race.Enable(); + } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Unlock }; } $f.i = i; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; + }; + RWMutex.prototype.Unlock = function() { return this.$val.Unlock(); }; + RWMutex.ptr.prototype.RLocker = function() { + var rw; + rw = this; + return ($pointerOfStructConversion(rw, ptrType$8)); + }; + RWMutex.prototype.RLocker = function() { return this.$val.RLocker(); }; + rlocker.ptr.prototype.Lock = function() { + var r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + $r = ($pointerOfStructConversion(r, ptrType$9)).RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Lock }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + rlocker.prototype.Lock = function() { return this.$val.Lock(); }; + rlocker.ptr.prototype.Unlock = function() { + var r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + $r = ($pointerOfStructConversion(r, ptrType$9)).RUnlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Unlock }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + rlocker.prototype.Unlock = function() { return this.$val.Unlock(); }; + ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "getSlow", name: "getSlow", pkg: "sync", typ: $funcType([], [$emptyInterface], false)}, {prop: "pin", name: "pin", pkg: "sync", typ: $funcType([], [ptrType$7], false)}, {prop: "pinSlow", name: "pinSlow", pkg: "sync", typ: $funcType([], [ptrType$7], false)}]; + ptrType$16.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + ptrType$17.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$2], [], false)}]; + ptrType$9.methods = [{prop: "RLock", name: "RLock", pkg: "", typ: $funcType([], [], false)}, {prop: "RUnlock", name: "RUnlock", pkg: "", typ: $funcType([], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "RLocker", name: "RLocker", pkg: "", typ: $funcType([], [Locker], false)}]; + ptrType$8.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + Pool.init("sync", [{prop: "local", name: "local", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "localSize", name: "localSize", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "store", name: "store", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: funcType, tag: ""}]); + Mutex.init("sync", [{prop: "state", name: "state", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "sema", name: "sema", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]); + Once.init("sync", [{prop: "m", name: "m", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + poolLocalInternal.init("sync", [{prop: "private$0", name: "private", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "shared", name: "shared", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: Mutex, tag: ""}]); + poolLocal.init("sync", [{prop: "poolLocalInternal", name: "poolLocalInternal", embedded: true, exported: false, typ: poolLocalInternal, tag: ""}, {prop: "pad", name: "pad", embedded: false, exported: false, typ: arrayType$2, tag: ""}]); + notifyList.init("sync", [{prop: "wait", name: "wait", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "notify", name: "notify", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lock", name: "lock", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "head", name: "head", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}]); + RWMutex.init("sync", [{prop: "w", name: "w", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", embedded: false, exported: false, typ: $Int32, tag: ""}]); + rlocker.init("sync", [{prop: "w", name: "w", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", embedded: false, exported: false, typ: $Int32, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + allPools = sliceType.nil; + semWaiters = {}; + semAwoken = {}; + expunged = (new Uint8Array(8)); + init(); + init$1(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["unicode"] = (function() { + var $pkg = {}, $init, RangeTable, Range16, Range32, CaseRange, d, foldPair, arrayType, sliceType, sliceType$1, ptrType, sliceType$2, sliceType$3, sliceType$4, _C, _Cc, _Cf, _Co, _Cs, _L, _Ll, _Lm, _Lo, _Lt, _Lu, _M, _Mc, _Me, _Mn, _N, _Nd, _Nl, _No, _P, _Pc, _Pd, _Pe, _Pf, _Pi, _Po, _Ps, _S, _Sc, _Sk, _Sm, _So, _Z, _Zl, _Zp, _Zs, _Adlam, _Ahom, _Anatolian_Hieroglyphs, _Arabic, _Armenian, _Avestan, _Balinese, _Bamum, _Bassa_Vah, _Batak, _Bengali, _Bhaiksuki, _Bopomofo, _Brahmi, _Braille, _Buginese, _Buhid, _Canadian_Aboriginal, _Carian, _Caucasian_Albanian, _Chakma, _Cham, _Cherokee, _Common, _Coptic, _Cuneiform, _Cypriot, _Cyrillic, _Deseret, _Devanagari, _Duployan, _Egyptian_Hieroglyphs, _Elbasan, _Ethiopic, _Georgian, _Glagolitic, _Gothic, _Grantha, _Greek, _Gujarati, _Gurmukhi, _Han, _Hangul, _Hanunoo, _Hatran, _Hebrew, _Hiragana, _Imperial_Aramaic, _Inherited, _Inscriptional_Pahlavi, _Inscriptional_Parthian, _Javanese, _Kaithi, _Kannada, _Katakana, _Kayah_Li, _Kharoshthi, _Khmer, _Khojki, _Khudawadi, _Lao, _Latin, _Lepcha, _Limbu, _Linear_A, _Linear_B, _Lisu, _Lycian, _Lydian, _Mahajani, _Malayalam, _Mandaic, _Manichaean, _Marchen, _Masaram_Gondi, _Meetei_Mayek, _Mende_Kikakui, _Meroitic_Cursive, _Meroitic_Hieroglyphs, _Miao, _Modi, _Mongolian, _Mro, _Multani, _Myanmar, _Nabataean, _New_Tai_Lue, _Newa, _Nko, _Nushu, _Ogham, _Ol_Chiki, _Old_Hungarian, _Old_Italic, _Old_North_Arabian, _Old_Permic, _Old_Persian, _Old_South_Arabian, _Old_Turkic, _Oriya, _Osage, _Osmanya, _Pahawh_Hmong, _Palmyrene, _Pau_Cin_Hau, _Phags_Pa, _Phoenician, _Psalter_Pahlavi, _Rejang, _Runic, _Samaritan, _Saurashtra, _Sharada, _Shavian, _Siddham, _SignWriting, _Sinhala, _Sora_Sompeng, _Soyombo, _Sundanese, _Syloti_Nagri, _Syriac, _Tagalog, _Tagbanwa, _Tai_Le, _Tai_Tham, _Tai_Viet, _Takri, _Tamil, _Tangut, _Telugu, _Thaana, _Thai, _Tibetan, _Tifinagh, _Tirhuta, _Ugaritic, _Vai, _Warang_Citi, _Yi, _Zanabazar_Square, _CaseRanges, properties, asciiFold, caseOrbit, foldL, foldLl, foldLt, foldLu, foldM, foldMn, foldCommon, foldGreek, foldInherited, to, IsDigit, IsPrint, In, IsLetter, is16, is32, Is, isExcludingLatin, To, ToUpper, ToLower, SimpleFold; + RangeTable = $pkg.RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", true, "unicode", true, function(R16_, R32_, LatinOffset_) { + this.$val = this; + if (arguments.length === 0) { + this.R16 = sliceType.nil; + this.R32 = sliceType$1.nil; + this.LatinOffset = 0; + return; + } + this.R16 = R16_; + this.R32 = R32_; + this.LatinOffset = LatinOffset_; + }); + Range16 = $pkg.Range16 = $newType(0, $kindStruct, "unicode.Range16", true, "unicode", true, function(Lo_, Hi_, Stride_) { + this.$val = this; + if (arguments.length === 0) { + this.Lo = 0; + this.Hi = 0; + this.Stride = 0; + return; + } + this.Lo = Lo_; + this.Hi = Hi_; + this.Stride = Stride_; + }); + Range32 = $pkg.Range32 = $newType(0, $kindStruct, "unicode.Range32", true, "unicode", true, function(Lo_, Hi_, Stride_) { + this.$val = this; + if (arguments.length === 0) { + this.Lo = 0; + this.Hi = 0; + this.Stride = 0; + return; + } + this.Lo = Lo_; + this.Hi = Hi_; + this.Stride = Stride_; + }); + CaseRange = $pkg.CaseRange = $newType(0, $kindStruct, "unicode.CaseRange", true, "unicode", true, function(Lo_, Hi_, Delta_) { + this.$val = this; + if (arguments.length === 0) { + this.Lo = 0; + this.Hi = 0; + this.Delta = arrayType.zero(); + return; + } + this.Lo = Lo_; + this.Hi = Hi_; + this.Delta = Delta_; + }); + d = $pkg.d = $newType(12, $kindArray, "unicode.d", true, "unicode", false, null); + foldPair = $pkg.foldPair = $newType(0, $kindStruct, "unicode.foldPair", true, "unicode", false, function(From_, To_) { + this.$val = this; + if (arguments.length === 0) { + this.From = 0; + this.To = 0; + return; + } + this.From = From_; + this.To = To_; + }); + arrayType = $arrayType($Int32, 3); + sliceType = $sliceType(Range16); + sliceType$1 = $sliceType(Range32); + ptrType = $ptrType(RangeTable); + sliceType$2 = $sliceType(ptrType); + sliceType$3 = $sliceType(CaseRange); + sliceType$4 = $sliceType(foldPair); + to = function(_case, r, caseRange) { + var _case, _q, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, caseRange, cr, delta, foundMapping, hi, lo, m, mappedRune, r, x; + mappedRune = 0; + foundMapping = false; + if (_case < 0 || 3 <= _case) { + _tmp = 65533; + _tmp$1 = false; + mappedRune = _tmp; + foundMapping = _tmp$1; + return [mappedRune, foundMapping]; + } + lo = 0; + hi = caseRange.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + cr = ((m < 0 || m >= caseRange.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseRange.$array[caseRange.$offset + m]); + if (((cr.Lo >> 0)) <= r && r <= ((cr.Hi >> 0))) { + delta = ((x = cr.Delta, ((_case < 0 || _case >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_case]))); + if (delta > 1114111) { + _tmp$2 = ((cr.Lo >> 0)) + ((((((r - ((cr.Lo >> 0)) >> 0)) & ~1) >> 0) | (((_case & 1) >> 0)))) >> 0; + _tmp$3 = true; + mappedRune = _tmp$2; + foundMapping = _tmp$3; + return [mappedRune, foundMapping]; + } + _tmp$4 = r + delta >> 0; + _tmp$5 = true; + mappedRune = _tmp$4; + foundMapping = _tmp$5; + return [mappedRune, foundMapping]; + } + if (r < ((cr.Lo >> 0))) { + hi = m; + } else { + lo = m + 1 >> 0; + } + } + _tmp$6 = r; + _tmp$7 = false; + mappedRune = _tmp$6; + foundMapping = _tmp$7; + return [mappedRune, foundMapping]; + }; + IsDigit = function(r) { + var r; + if (r <= 255) { + return 48 <= r && r <= 57; + } + return isExcludingLatin($pkg.Digit, r); + }; + $pkg.IsDigit = IsDigit; + IsPrint = function(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 128) >>> 0) === 0)); + } + return In(r, $pkg.PrintRanges); + }; + $pkg.IsPrint = IsPrint; + In = function(r, ranges) { + var _i, _ref, inside, r, ranges; + _ref = ranges; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + inside = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (Is(inside, r)) { + return true; + } + _i++; + } + return false; + }; + $pkg.In = In; + IsLetter = function(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 96) >>> 0) === 0)); + } + return isExcludingLatin($pkg.Letter, r); + }; + $pkg.IsLetter = IsLetter; + is16 = function(ranges, r) { + var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges; + if (ranges.$length <= 18 || r <= 255) { + _ref = ranges; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]); + if (r < range_.Lo) { + return false; + } + if (r <= range_.Hi) { + return (range_.Stride === 1) || ((_r = ((r - range_.Lo << 16 >>> 16)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0); + } + _i++; + } + return false; + } + lo = 0; + hi = ranges.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + range_$1 = ((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]); + if (range_$1.Lo <= r && r <= range_$1.Hi) { + return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo << 16 >>> 16)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0); + } + if (r < range_$1.Lo) { + hi = m; + } else { + lo = m + 1 >> 0; + } + } + return false; + }; + is32 = function(ranges, r) { + var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges; + if (ranges.$length <= 18) { + _ref = ranges; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]); + if (r < range_.Lo) { + return false; + } + if (r <= range_.Hi) { + return (range_.Stride === 1) || ((_r = ((r - range_.Lo >>> 0)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0); + } + _i++; + } + return false; + } + lo = 0; + hi = ranges.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + range_$1 = $clone(((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]), Range32); + if (range_$1.Lo <= r && r <= range_$1.Hi) { + return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo >>> 0)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0); + } + if (r < range_$1.Lo) { + hi = m; + } else { + lo = m + 1 >> 0; + } + } + return false; + }; + Is = function(rangeTab, r) { + var r, r16, r32, rangeTab, x; + r16 = rangeTab.R16; + if (r16.$length > 0 && r <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >> 0))) { + return is16(r16, ((r << 16 >>> 16))); + } + r32 = rangeTab.R32; + if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) { + return is32(r32, ((r >>> 0))); + } + return false; + }; + $pkg.Is = Is; + isExcludingLatin = function(rangeTab, r) { + var off, r, r16, r32, rangeTab, x; + r16 = rangeTab.R16; + off = rangeTab.LatinOffset; + if (r16.$length > off && r <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >> 0))) { + return is16($subslice(r16, off), ((r << 16 >>> 16))); + } + r32 = rangeTab.R32; + if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) { + return is32(r32, ((r >>> 0))); + } + return false; + }; + To = function(_case, r) { + var _case, _tuple, r; + _tuple = to(_case, r, $pkg.CaseRanges); + r = _tuple[0]; + return r; + }; + $pkg.To = To; + ToUpper = function(r) { + var r; + if (r <= 127) { + if (97 <= r && r <= 122) { + r = r - (32) >> 0; + } + return r; + } + return To(0, r); + }; + $pkg.ToUpper = ToUpper; + ToLower = function(r) { + var r; + if (r <= 127) { + if (65 <= r && r <= 90) { + r = r + (32) >> 0; + } + return r; + } + return To(1, r); + }; + $pkg.ToLower = ToLower; + SimpleFold = function(r) { + var _q, hi, l, lo, m, r; + if (r < 0 || r > 1114111) { + return r; + } + if (((r >> 0)) < 128) { + return ((((r < 0 || r >= asciiFold.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiFold[r]) >> 0)); + } + lo = 0; + hi = caseOrbit.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + if (((((m < 0 || m >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + m]).From >> 0)) < r) { + lo = m + 1 >> 0; + } else { + hi = m; + } + } + if (lo < caseOrbit.$length && (((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0)) === r)) { + return ((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).To >> 0)); + } + l = ToLower(r); + if (!((l === r))) { + return l; + } + return ToUpper(r); + }; + $pkg.SimpleFold = SimpleFold; + RangeTable.init("", [{prop: "R16", name: "R16", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "R32", name: "R32", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", embedded: false, exported: true, typ: $Int, tag: ""}]); + Range16.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", embedded: false, exported: true, typ: $Uint16, tag: ""}]); + Range32.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + CaseRange.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", embedded: false, exported: true, typ: d, tag: ""}]); + d.init($Int32, 3); + foldPair.init("", [{prop: "From", name: "From", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "To", name: "To", embedded: false, exported: true, typ: $Uint16, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _C = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 31, 1), new Range16.ptr(127, 159, 1), new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 2274, 467), new Range16.ptr(6158, 8203, 2045), new Range16.ptr(8204, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(55296, 63743, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1), new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 2); + _Cc = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 31, 1), new Range16.ptr(127, 159, 1)]), sliceType$1.nil, 2); + _Cf = new RangeTable.ptr(new sliceType([new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 2274, 467), new Range16.ptr(6158, 8203, 2045), new Range16.ptr(8204, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1)]), 0); + _Co = new RangeTable.ptr(new sliceType([new Range16.ptr(57344, 63743, 1)]), new sliceType$1([new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 0); + _Cs = new RangeTable.ptr(new sliceType([new Range16.ptr(55296, 57343, 1)]), sliceType$1.nil, 0); + _L = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 181, 11), new Range16.ptr(186, 192, 6), new Range16.ptr(193, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(880, 884, 1), new Range16.ptr(886, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 929, 1), new Range16.ptr(931, 1013, 1), new Range16.ptr(1015, 1153, 1), new Range16.ptr(1162, 1327, 1), new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1377, 8), new Range16.ptr(1378, 1415, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1765, 16), new Range16.ptr(1766, 1774, 8), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2048, 6), new Range16.ptr(2049, 2069, 1), new Range16.ptr(2074, 2084, 10), new Range16.ptr(2088, 2112, 24), new Range16.ptr(2113, 2136, 1), new Range16.ptr(2144, 2154, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2417, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2556, 2565, 9), new Range16.ptr(2566, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2809, 2821, 12), new Range16.ptr(2822, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3162, 1), new Range16.ptr(3168, 3169, 1), new Range16.ptr(3200, 3205, 5), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3412, 3414, 1), new Range16.ptr(3423, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3654, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3782, 3804, 22), new Range16.ptr(3805, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4256, 18), new Range16.ptr(4257, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5024, 5109, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6103, 6108, 5), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6276, 1), new Range16.ptr(6279, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6823, 6917, 94), new Range16.ptr(6918, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7293, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(7424, 7615, 1), new Range16.ptr(7680, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8032, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8124, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8140, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8160, 8172, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8188, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8458, 8467, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8495, 8505, 1), new Range16.ptr(8508, 8511, 1), new Range16.ptr(8517, 8521, 1), new Range16.ptr(8526, 8579, 53), new Range16.ptr(8580, 11264, 2684), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11360, 11492, 1), new Range16.ptr(11499, 11502, 1), new Range16.ptr(11506, 11507, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11648, 17), new Range16.ptr(11649, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(11823, 12293, 470), new Range16.ptr(12294, 12337, 43), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12348, 1), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1), new Range16.ptr(12449, 12538, 1), new Range16.ptr(12540, 12543, 1), new Range16.ptr(12549, 12590, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(40960, 42124, 1), new Range16.ptr(42192, 42237, 1), new Range16.ptr(42240, 42508, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42560, 42606, 1), new Range16.ptr(42623, 42653, 1), new Range16.ptr(42656, 42725, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42786, 42888, 1), new Range16.ptr(42891, 42926, 1), new Range16.ptr(42928, 42935, 1), new Range16.ptr(42999, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43261, 2), new Range16.ptr(43274, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43471, 43488, 17), new Range16.ptr(43489, 43492, 1), new Range16.ptr(43494, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43741, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43764, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43877, 1), new Range16.ptr(43888, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1), new Range16.ptr(65382, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66349, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66560, 66717, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70108, 2), new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70282, 2), new Range32.ptr(70283, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70312, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70480, 19), new Range32.ptr(70493, 70497, 1), new Range32.ptr(70656, 70708, 1), new Range32.ptr(70727, 70730, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71128, 71131, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71424, 71449, 1), new Range32.ptr(71840, 71903, 1), new Range32.ptr(71935, 72192, 257), new Range32.ptr(72203, 72242, 1), new Range32.ptr(72250, 72272, 22), new Range32.ptr(72284, 72323, 1), new Range32.ptr(72326, 72329, 1), new Range32.ptr(72384, 72440, 1), new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72750, 1), new Range32.ptr(72768, 72818, 50), new Range32.ptr(72819, 72847, 1), new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73008, 1), new Range32.ptr(73030, 73728, 698), new Range32.ptr(73729, 74649, 1), new Range32.ptr(74880, 75075, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(82944, 83526, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(92992, 92995, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94099, 67), new Range32.ptr(94100, 94111, 1), new Range32.ptr(94176, 94177, 1), new Range32.ptr(94208, 100332, 1), new Range32.ptr(100352, 101106, 1), new Range32.ptr(110592, 110878, 1), new Range32.ptr(110960, 111355, 1), new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120570, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120628, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120686, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120744, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120779, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(125184, 125251, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 6); + _Ll = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 311, 2), new Range16.ptr(312, 328, 2), new Range16.ptr(329, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(397, 402, 5), new Range16.ptr(405, 409, 4), new Range16.ptr(410, 411, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 426, 2), new Range16.ptr(427, 429, 2), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(442, 445, 3), new Range16.ptr(446, 447, 1), new Range16.ptr(454, 460, 3), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(496, 499, 3), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 563, 2), new Range16.ptr(564, 569, 1), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 659, 1), new Range16.ptr(661, 687, 1), new Range16.ptr(881, 883, 2), new Range16.ptr(887, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(912, 940, 28), new Range16.ptr(941, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1020, 1072, 52), new Range16.ptr(1073, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1415, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7424, 7467, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7578, 1), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7830, 7837, 1), new Range16.ptr(7839, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8112, 8116, 1), new Range16.ptr(8118, 8119, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8135, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8151, 1), new Range16.ptr(8160, 8167, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8183, 1), new Range16.ptr(8458, 8462, 4), new Range16.ptr(8463, 8467, 4), new Range16.ptr(8495, 8505, 5), new Range16.ptr(8508, 8509, 1), new Range16.ptr(8518, 8521, 1), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11377, 11379, 2), new Range16.ptr(11380, 11382, 2), new Range16.ptr(11383, 11387, 1), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11492, 11500, 8), new Range16.ptr(11502, 11507, 5), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42800, 42801, 1), new Range16.ptr(42803, 42865, 2), new Range16.ptr(42866, 42872, 1), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42894, 2), new Range16.ptr(42897, 42899, 2), new Range16.ptr(42900, 42901, 1), new Range16.ptr(42903, 42921, 2), new Range16.ptr(42933, 42935, 2), new Range16.ptr(43002, 43824, 822), new Range16.ptr(43825, 43866, 1), new Range16.ptr(43872, 43877, 1), new Range16.ptr(43888, 43967, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(71872, 71903, 1), new Range32.ptr(119834, 119859, 1), new Range32.ptr(119886, 119892, 1), new Range32.ptr(119894, 119911, 1), new Range32.ptr(119938, 119963, 1), new Range32.ptr(119990, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120015, 1), new Range32.ptr(120042, 120067, 1), new Range32.ptr(120094, 120119, 1), new Range32.ptr(120146, 120171, 1), new Range32.ptr(120198, 120223, 1), new Range32.ptr(120250, 120275, 1), new Range32.ptr(120302, 120327, 1), new Range32.ptr(120354, 120379, 1), new Range32.ptr(120406, 120431, 1), new Range32.ptr(120458, 120485, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120545, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120603, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120661, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120719, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120777, 1), new Range32.ptr(120779, 125218, 4439), new Range32.ptr(125219, 125251, 1)]), 4); + _Lm = new RangeTable.ptr(new sliceType([new Range16.ptr(688, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(884, 890, 6), new Range16.ptr(1369, 1600, 231), new Range16.ptr(1765, 1766, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2074, 32), new Range16.ptr(2084, 2088, 4), new Range16.ptr(2417, 3654, 1237), new Range16.ptr(3782, 4348, 566), new Range16.ptr(6103, 6211, 108), new Range16.ptr(6823, 7288, 465), new Range16.ptr(7289, 7293, 1), new Range16.ptr(7468, 7530, 1), new Range16.ptr(7544, 7579, 35), new Range16.ptr(7580, 7615, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(11388, 11389, 1), new Range16.ptr(11631, 11823, 192), new Range16.ptr(12293, 12337, 44), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12445, 98), new Range16.ptr(12446, 12540, 94), new Range16.ptr(12541, 12542, 1), new Range16.ptr(40981, 42232, 1251), new Range16.ptr(42233, 42237, 1), new Range16.ptr(42508, 42623, 115), new Range16.ptr(42652, 42653, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42864, 42888, 24), new Range16.ptr(43000, 43001, 1), new Range16.ptr(43471, 43494, 23), new Range16.ptr(43632, 43741, 109), new Range16.ptr(43763, 43764, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(65392, 65438, 46), new Range16.ptr(65439, 65439, 1)]), new sliceType$1([new Range32.ptr(92992, 92992, 1), new Range32.ptr(92993, 92995, 1), new Range32.ptr(94099, 94111, 1), new Range32.ptr(94176, 94177, 1)]), 0); + _Lo = new RangeTable.ptr(new sliceType([new Range16.ptr(170, 186, 16), new Range16.ptr(443, 448, 5), new Range16.ptr(449, 451, 1), new Range16.ptr(660, 1488, 828), new Range16.ptr(1489, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1774, 25), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2048, 2069, 1), new Range16.ptr(2112, 2136, 1), new Range16.ptr(2144, 2154, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2418, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2556, 2565, 9), new Range16.ptr(2566, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2809, 2821, 12), new Range16.ptr(2822, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3162, 1), new Range16.ptr(3168, 3169, 1), new Range16.ptr(3200, 3205, 5), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3412, 3414, 1), new Range16.ptr(3423, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3653, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3804, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4304, 66), new Range16.ptr(4305, 4346, 1), new Range16.ptr(4349, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6108, 6176, 68), new Range16.ptr(6177, 6210, 1), new Range16.ptr(6212, 6263, 1), new Range16.ptr(6272, 6276, 1), new Range16.ptr(6279, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6917, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7287, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(8501, 8504, 1), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11648, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(12294, 12348, 54), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12447, 12449, 2), new Range16.ptr(12450, 12538, 1), new Range16.ptr(12543, 12549, 6), new Range16.ptr(12550, 12590, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(40960, 40980, 1), new Range16.ptr(40982, 42124, 1), new Range16.ptr(42192, 42231, 1), new Range16.ptr(42240, 42507, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42606, 42656, 50), new Range16.ptr(42657, 42725, 1), new Range16.ptr(42895, 42999, 104), new Range16.ptr(43003, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43261, 2), new Range16.ptr(43274, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43488, 43492, 1), new Range16.ptr(43495, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43631, 1), new Range16.ptr(43633, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43740, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43777, 15), new Range16.ptr(43778, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43968, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1), new Range16.ptr(65440, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66349, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66640, 66717, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70108, 2), new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70282, 2), new Range32.ptr(70283, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70312, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70480, 19), new Range32.ptr(70493, 70497, 1), new Range32.ptr(70656, 70708, 1), new Range32.ptr(70727, 70730, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71128, 71131, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71424, 71449, 1), new Range32.ptr(71935, 72192, 257), new Range32.ptr(72203, 72242, 1), new Range32.ptr(72250, 72272, 22), new Range32.ptr(72284, 72323, 1), new Range32.ptr(72326, 72329, 1), new Range32.ptr(72384, 72440, 1), new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72750, 1), new Range32.ptr(72768, 72818, 50), new Range32.ptr(72819, 72847, 1), new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73008, 1), new Range32.ptr(73030, 73728, 698), new Range32.ptr(73729, 74649, 1), new Range32.ptr(74880, 75075, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(82944, 83526, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94208, 176), new Range32.ptr(94209, 100332, 1), new Range32.ptr(100352, 101106, 1), new Range32.ptr(110592, 110878, 1), new Range32.ptr(110960, 111355, 1), new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 1); + _Lt = new RangeTable.ptr(new sliceType([new Range16.ptr(453, 459, 3), new Range16.ptr(498, 8072, 7574), new Range16.ptr(8073, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8124, 8140, 16), new Range16.ptr(8188, 8188, 1)]), sliceType$1.nil, 0); + _Lu = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 461, 3), new Range16.ptr(463, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 500, 3), new Range16.ptr(502, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(880, 882, 2), new Range16.ptr(886, 895, 9), new Range16.ptr(902, 904, 2), new Range16.ptr(905, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 978, 3), new Range16.ptr(979, 980, 1), new Range16.ptr(984, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(5024, 5109, 1), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8120, 8123, 1), new Range16.ptr(8136, 8139, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8187, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8459, 8461, 1), new Range16.ptr(8464, 8466, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8496, 8499, 1), new Range16.ptr(8510, 8511, 1), new Range16.ptr(8517, 8579, 62), new Range16.ptr(11264, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42926, 1), new Range16.ptr(42928, 42932, 1), new Range16.ptr(42934, 65313, 22379), new Range16.ptr(65314, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(71840, 71871, 1), new Range32.ptr(119808, 119833, 1), new Range32.ptr(119860, 119885, 1), new Range32.ptr(119912, 119937, 1), new Range32.ptr(119964, 119966, 2), new Range32.ptr(119967, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119989, 1), new Range32.ptr(120016, 120041, 1), new Range32.ptr(120068, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120120, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120172, 120197, 1), new Range32.ptr(120224, 120249, 1), new Range32.ptr(120276, 120301, 1), new Range32.ptr(120328, 120353, 1), new Range32.ptr(120380, 120405, 1), new Range32.ptr(120432, 120457, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120546, 120570, 1), new Range32.ptr(120604, 120628, 1), new Range32.ptr(120662, 120686, 1), new Range32.ptr(120720, 120744, 1), new Range32.ptr(120778, 125184, 4406), new Range32.ptr(125185, 125217, 1)]), 3); + _M = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1161, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2260, 2273, 1), new Range16.ptr(2275, 2307, 1), new Range16.ptr(2362, 2364, 1), new Range16.ptr(2366, 2383, 1), new Range16.ptr(2385, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2435, 1), new Range16.ptr(2492, 2494, 2), new Range16.ptr(2495, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2509, 1), new Range16.ptr(2519, 2530, 11), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2563, 1), new Range16.ptr(2620, 2622, 2), new Range16.ptr(2623, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2691, 1), new Range16.ptr(2748, 2750, 2), new Range16.ptr(2751, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2786, 2787, 1), new Range16.ptr(2810, 2815, 1), new Range16.ptr(2817, 2819, 1), new Range16.ptr(2876, 2878, 2), new Range16.ptr(2879, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3006, 60), new Range16.ptr(3007, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3031, 3072, 41), new Range16.ptr(3073, 3075, 1), new Range16.ptr(3134, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3203, 1), new Range16.ptr(3260, 3262, 2), new Range16.ptr(3263, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3328, 3331, 1), new Range16.ptr(3387, 3388, 1), new Range16.ptr(3390, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3405, 1), new Range16.ptr(3415, 3426, 11), new Range16.ptr(3427, 3458, 31), new Range16.ptr(3459, 3530, 71), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3544, 2), new Range16.ptr(3545, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3633, 3636, 3), new Range16.ptr(3637, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3953, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4139, 101), new Range16.ptr(4140, 4158, 1), new Range16.ptr(4182, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4194, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4237, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4253, 1), new Range16.ptr(4957, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6277, 6278, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6679, 6683, 1), new Range16.ptr(6741, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6846, 1), new Range16.ptr(6912, 6916, 1), new Range16.ptr(6964, 6980, 1), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7042, 1), new Range16.ptr(7073, 7085, 1), new Range16.ptr(7142, 7155, 1), new Range16.ptr(7204, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7400, 1), new Range16.ptr(7405, 7410, 5), new Range16.ptr(7411, 7412, 1), new Range16.ptr(7415, 7417, 1), new Range16.ptr(7616, 7673, 1), new Range16.ptr(7675, 7679, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12335, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42610, 1), new Range16.ptr(42612, 42621, 1), new Range16.ptr(42654, 42655, 1), new Range16.ptr(42736, 42737, 1), new Range16.ptr(43010, 43014, 4), new Range16.ptr(43019, 43043, 24), new Range16.ptr(43044, 43047, 1), new Range16.ptr(43136, 43137, 1), new Range16.ptr(43188, 43205, 1), new Range16.ptr(43232, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43347, 1), new Range16.ptr(43392, 43395, 1), new Range16.ptr(43443, 43456, 1), new Range16.ptr(43493, 43561, 68), new Range16.ptr(43562, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43644, 43645, 1), new Range16.ptr(43696, 43698, 2), new Range16.ptr(43699, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43755, 42), new Range16.ptr(43756, 43759, 1), new Range16.ptr(43765, 43766, 1), new Range16.ptr(44003, 44010, 1), new Range16.ptr(44012, 44013, 1), new Range16.ptr(64286, 65024, 738), new Range16.ptr(65025, 65039, 1), new Range16.ptr(65056, 65071, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69632, 1306), new Range32.ptr(69633, 69634, 1), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69762, 1), new Range32.ptr(69808, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70018, 1), new Range32.ptr(70067, 70080, 1), new Range32.ptr(70090, 70092, 1), new Range32.ptr(70188, 70199, 1), new Range32.ptr(70206, 70367, 161), new Range32.ptr(70368, 70378, 1), new Range32.ptr(70400, 70403, 1), new Range32.ptr(70460, 70462, 2), new Range32.ptr(70463, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70502, 3), new Range32.ptr(70503, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70709, 70726, 1), new Range32.ptr(70832, 70851, 1), new Range32.ptr(71087, 71093, 1), new Range32.ptr(71096, 71104, 1), new Range32.ptr(71132, 71133, 1), new Range32.ptr(71216, 71232, 1), new Range32.ptr(71339, 71351, 1), new Range32.ptr(71453, 71467, 1), new Range32.ptr(72193, 72202, 1), new Range32.ptr(72243, 72249, 1), new Range32.ptr(72251, 72254, 1), new Range32.ptr(72263, 72273, 10), new Range32.ptr(72274, 72283, 1), new Range32.ptr(72330, 72345, 1), new Range32.ptr(72751, 72758, 1), new Range32.ptr(72760, 72767, 1), new Range32.ptr(72850, 72871, 1), new Range32.ptr(72873, 72886, 1), new Range32.ptr(73009, 73014, 1), new Range32.ptr(73018, 73020, 2), new Range32.ptr(73021, 73023, 2), new Range32.ptr(73024, 73029, 1), new Range32.ptr(73031, 92912, 19881), new Range32.ptr(92913, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94033, 94078, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119141, 119145, 1), new Range32.ptr(119149, 119154, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(121344, 121398, 1), new Range32.ptr(121403, 121452, 1), new Range32.ptr(121461, 121476, 15), new Range32.ptr(121499, 121503, 1), new Range32.ptr(121505, 121519, 1), new Range32.ptr(122880, 122886, 1), new Range32.ptr(122888, 122904, 1), new Range32.ptr(122907, 122913, 1), new Range32.ptr(122915, 122916, 1), new Range32.ptr(122918, 122922, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(125252, 125258, 1), new Range32.ptr(917760, 917999, 1)]), 0); + _Mc = new RangeTable.ptr(new sliceType([new Range16.ptr(2307, 2363, 56), new Range16.ptr(2366, 2368, 1), new Range16.ptr(2377, 2380, 1), new Range16.ptr(2382, 2383, 1), new Range16.ptr(2434, 2435, 1), new Range16.ptr(2494, 2496, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2508, 1), new Range16.ptr(2519, 2563, 44), new Range16.ptr(2622, 2624, 1), new Range16.ptr(2691, 2750, 59), new Range16.ptr(2751, 2752, 1), new Range16.ptr(2761, 2763, 2), new Range16.ptr(2764, 2818, 54), new Range16.ptr(2819, 2878, 59), new Range16.ptr(2880, 2887, 7), new Range16.ptr(2888, 2891, 3), new Range16.ptr(2892, 2903, 11), new Range16.ptr(3006, 3007, 1), new Range16.ptr(3009, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3020, 1), new Range16.ptr(3031, 3073, 42), new Range16.ptr(3074, 3075, 1), new Range16.ptr(3137, 3140, 1), new Range16.ptr(3202, 3203, 1), new Range16.ptr(3262, 3264, 2), new Range16.ptr(3265, 3268, 1), new Range16.ptr(3271, 3272, 1), new Range16.ptr(3274, 3275, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3330, 3331, 1), new Range16.ptr(3390, 3392, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3404, 1), new Range16.ptr(3415, 3458, 43), new Range16.ptr(3459, 3535, 76), new Range16.ptr(3536, 3537, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3967, 4139, 172), new Range16.ptr(4140, 4145, 5), new Range16.ptr(4152, 4155, 3), new Range16.ptr(4156, 4182, 26), new Range16.ptr(4183, 4194, 11), new Range16.ptr(4195, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4227, 4228, 1), new Range16.ptr(4231, 4236, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4252, 1), new Range16.ptr(6070, 6078, 8), new Range16.ptr(6079, 6085, 1), new Range16.ptr(6087, 6088, 1), new Range16.ptr(6435, 6438, 1), new Range16.ptr(6441, 6443, 1), new Range16.ptr(6448, 6449, 1), new Range16.ptr(6451, 6456, 1), new Range16.ptr(6681, 6682, 1), new Range16.ptr(6741, 6743, 2), new Range16.ptr(6753, 6755, 2), new Range16.ptr(6756, 6765, 9), new Range16.ptr(6766, 6770, 1), new Range16.ptr(6916, 6965, 49), new Range16.ptr(6971, 6973, 2), new Range16.ptr(6974, 6977, 1), new Range16.ptr(6979, 6980, 1), new Range16.ptr(7042, 7073, 31), new Range16.ptr(7078, 7079, 1), new Range16.ptr(7082, 7143, 61), new Range16.ptr(7146, 7148, 1), new Range16.ptr(7150, 7154, 4), new Range16.ptr(7155, 7204, 49), new Range16.ptr(7205, 7211, 1), new Range16.ptr(7220, 7221, 1), new Range16.ptr(7393, 7410, 17), new Range16.ptr(7411, 7415, 4), new Range16.ptr(12334, 12335, 1), new Range16.ptr(43043, 43044, 1), new Range16.ptr(43047, 43136, 89), new Range16.ptr(43137, 43188, 51), new Range16.ptr(43189, 43203, 1), new Range16.ptr(43346, 43347, 1), new Range16.ptr(43395, 43444, 49), new Range16.ptr(43445, 43450, 5), new Range16.ptr(43451, 43453, 2), new Range16.ptr(43454, 43456, 1), new Range16.ptr(43567, 43568, 1), new Range16.ptr(43571, 43572, 1), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43645, 43755, 110), new Range16.ptr(43758, 43759, 1), new Range16.ptr(43765, 44003, 238), new Range16.ptr(44004, 44006, 2), new Range16.ptr(44007, 44009, 2), new Range16.ptr(44010, 44012, 2)]), new sliceType$1([new Range32.ptr(69632, 69634, 2), new Range32.ptr(69762, 69808, 46), new Range32.ptr(69809, 69810, 1), new Range32.ptr(69815, 69816, 1), new Range32.ptr(69932, 70018, 86), new Range32.ptr(70067, 70069, 1), new Range32.ptr(70079, 70080, 1), new Range32.ptr(70188, 70190, 1), new Range32.ptr(70194, 70195, 1), new Range32.ptr(70197, 70368, 171), new Range32.ptr(70369, 70370, 1), new Range32.ptr(70402, 70403, 1), new Range32.ptr(70462, 70463, 1), new Range32.ptr(70465, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70709, 210), new Range32.ptr(70710, 70711, 1), new Range32.ptr(70720, 70721, 1), new Range32.ptr(70725, 70832, 107), new Range32.ptr(70833, 70834, 1), new Range32.ptr(70841, 70843, 2), new Range32.ptr(70844, 70846, 1), new Range32.ptr(70849, 71087, 238), new Range32.ptr(71088, 71089, 1), new Range32.ptr(71096, 71099, 1), new Range32.ptr(71102, 71216, 114), new Range32.ptr(71217, 71218, 1), new Range32.ptr(71227, 71228, 1), new Range32.ptr(71230, 71340, 110), new Range32.ptr(71342, 71343, 1), new Range32.ptr(71350, 71456, 106), new Range32.ptr(71457, 71462, 5), new Range32.ptr(72199, 72200, 1), new Range32.ptr(72249, 72279, 30), new Range32.ptr(72280, 72343, 63), new Range32.ptr(72751, 72766, 15), new Range32.ptr(72873, 72881, 8), new Range32.ptr(72884, 94033, 21149), new Range32.ptr(94034, 94078, 1), new Range32.ptr(119141, 119142, 1), new Range32.ptr(119149, 119154, 1)]), 0); + _Me = new RangeTable.ptr(new sliceType([new Range16.ptr(1160, 1161, 1), new Range16.ptr(6846, 8413, 1567), new Range16.ptr(8414, 8416, 1), new Range16.ptr(8418, 8420, 1), new Range16.ptr(42608, 42610, 1)]), sliceType$1.nil, 0); + _Mn = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1159, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2260, 2273, 1), new Range16.ptr(2275, 2306, 1), new Range16.ptr(2362, 2364, 2), new Range16.ptr(2369, 2376, 1), new Range16.ptr(2381, 2385, 4), new Range16.ptr(2386, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2492, 59), new Range16.ptr(2497, 2500, 1), new Range16.ptr(2509, 2530, 21), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2620, 58), new Range16.ptr(2625, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2690, 1), new Range16.ptr(2748, 2753, 5), new Range16.ptr(2754, 2757, 1), new Range16.ptr(2759, 2760, 1), new Range16.ptr(2765, 2786, 21), new Range16.ptr(2787, 2810, 23), new Range16.ptr(2811, 2815, 1), new Range16.ptr(2817, 2876, 59), new Range16.ptr(2879, 2881, 2), new Range16.ptr(2882, 2884, 1), new Range16.ptr(2893, 2902, 9), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3008, 62), new Range16.ptr(3021, 3072, 51), new Range16.ptr(3134, 3136, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3260, 59), new Range16.ptr(3263, 3270, 7), new Range16.ptr(3276, 3277, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3328, 3329, 1), new Range16.ptr(3387, 3388, 1), new Range16.ptr(3393, 3396, 1), new Range16.ptr(3405, 3426, 21), new Range16.ptr(3427, 3530, 103), new Range16.ptr(3538, 3540, 1), new Range16.ptr(3542, 3633, 91), new Range16.ptr(3636, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3953, 3966, 1), new Range16.ptr(3968, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4141, 103), new Range16.ptr(4142, 4144, 1), new Range16.ptr(4146, 4151, 1), new Range16.ptr(4153, 4154, 1), new Range16.ptr(4157, 4158, 1), new Range16.ptr(4184, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4229, 3), new Range16.ptr(4230, 4237, 7), new Range16.ptr(4253, 4957, 704), new Range16.ptr(4958, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6069, 1), new Range16.ptr(6071, 6077, 1), new Range16.ptr(6086, 6089, 3), new Range16.ptr(6090, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6277, 6278, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6434, 1), new Range16.ptr(6439, 6440, 1), new Range16.ptr(6450, 6457, 7), new Range16.ptr(6458, 6459, 1), new Range16.ptr(6679, 6680, 1), new Range16.ptr(6683, 6742, 59), new Range16.ptr(6744, 6750, 1), new Range16.ptr(6752, 6754, 2), new Range16.ptr(6757, 6764, 1), new Range16.ptr(6771, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6845, 1), new Range16.ptr(6912, 6915, 1), new Range16.ptr(6964, 6966, 2), new Range16.ptr(6967, 6970, 1), new Range16.ptr(6972, 6978, 6), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7041, 1), new Range16.ptr(7074, 7077, 1), new Range16.ptr(7080, 7081, 1), new Range16.ptr(7083, 7085, 1), new Range16.ptr(7142, 7144, 2), new Range16.ptr(7145, 7149, 4), new Range16.ptr(7151, 7153, 1), new Range16.ptr(7212, 7219, 1), new Range16.ptr(7222, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7412, 7), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7673, 1), new Range16.ptr(7675, 7679, 1), new Range16.ptr(8400, 8412, 1), new Range16.ptr(8417, 8421, 4), new Range16.ptr(8422, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42612, 5), new Range16.ptr(42613, 42621, 1), new Range16.ptr(42654, 42655, 1), new Range16.ptr(42736, 42737, 1), new Range16.ptr(43010, 43014, 4), new Range16.ptr(43019, 43045, 26), new Range16.ptr(43046, 43204, 158), new Range16.ptr(43205, 43232, 27), new Range16.ptr(43233, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43345, 1), new Range16.ptr(43392, 43394, 1), new Range16.ptr(43443, 43446, 3), new Range16.ptr(43447, 43449, 1), new Range16.ptr(43452, 43493, 41), new Range16.ptr(43561, 43566, 1), new Range16.ptr(43569, 43570, 1), new Range16.ptr(43573, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43644, 43696, 52), new Range16.ptr(43698, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43756, 43), new Range16.ptr(43757, 43766, 9), new Range16.ptr(44005, 44008, 3), new Range16.ptr(44013, 64286, 20273), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65071, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69633, 1307), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69761, 1), new Range32.ptr(69811, 69814, 1), new Range32.ptr(69817, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69931, 1), new Range32.ptr(69933, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70070, 53), new Range32.ptr(70071, 70078, 1), new Range32.ptr(70090, 70092, 1), new Range32.ptr(70191, 70193, 1), new Range32.ptr(70196, 70198, 2), new Range32.ptr(70199, 70206, 7), new Range32.ptr(70367, 70371, 4), new Range32.ptr(70372, 70378, 1), new Range32.ptr(70400, 70401, 1), new Range32.ptr(70460, 70464, 4), new Range32.ptr(70502, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70712, 70719, 1), new Range32.ptr(70722, 70724, 1), new Range32.ptr(70726, 70835, 109), new Range32.ptr(70836, 70840, 1), new Range32.ptr(70842, 70847, 5), new Range32.ptr(70848, 70850, 2), new Range32.ptr(70851, 71090, 239), new Range32.ptr(71091, 71093, 1), new Range32.ptr(71100, 71101, 1), new Range32.ptr(71103, 71104, 1), new Range32.ptr(71132, 71133, 1), new Range32.ptr(71219, 71226, 1), new Range32.ptr(71229, 71231, 2), new Range32.ptr(71232, 71339, 107), new Range32.ptr(71341, 71344, 3), new Range32.ptr(71345, 71349, 1), new Range32.ptr(71351, 71453, 102), new Range32.ptr(71454, 71455, 1), new Range32.ptr(71458, 71461, 1), new Range32.ptr(71463, 71467, 1), new Range32.ptr(72193, 72198, 1), new Range32.ptr(72201, 72202, 1), new Range32.ptr(72243, 72248, 1), new Range32.ptr(72251, 72254, 1), new Range32.ptr(72263, 72273, 10), new Range32.ptr(72274, 72278, 1), new Range32.ptr(72281, 72283, 1), new Range32.ptr(72330, 72342, 1), new Range32.ptr(72344, 72345, 1), new Range32.ptr(72752, 72758, 1), new Range32.ptr(72760, 72765, 1), new Range32.ptr(72767, 72850, 83), new Range32.ptr(72851, 72871, 1), new Range32.ptr(72874, 72880, 1), new Range32.ptr(72882, 72883, 1), new Range32.ptr(72885, 72886, 1), new Range32.ptr(73009, 73014, 1), new Range32.ptr(73018, 73020, 2), new Range32.ptr(73021, 73023, 2), new Range32.ptr(73024, 73029, 1), new Range32.ptr(73031, 92912, 19881), new Range32.ptr(92913, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(121344, 121398, 1), new Range32.ptr(121403, 121452, 1), new Range32.ptr(121461, 121476, 15), new Range32.ptr(121499, 121503, 1), new Range32.ptr(121505, 121519, 1), new Range32.ptr(122880, 122886, 1), new Range32.ptr(122888, 122904, 1), new Range32.ptr(122907, 122913, 1), new Range32.ptr(122915, 122916, 1), new Range32.ptr(122918, 122922, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(125252, 125258, 1), new Range32.ptr(917760, 917999, 1)]), 0); + _N = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3046, 3058, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3416, 3422, 1), new Range16.ptr(3430, 3448, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3891, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(5870, 5872, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(8304, 8308, 4), new Range16.ptr(8309, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8578, 1), new Range16.ptr(8581, 8585, 1), new Range16.ptr(9312, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12295, 778), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(12690, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(42726, 42735, 1), new Range16.ptr(43056, 43061, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65856, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(66720, 66729, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67835, 67839, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68028, 68029, 1), new Range32.ptr(68032, 68047, 1), new Range32.ptr(68050, 68095, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(68858, 68863, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70736, 70745, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71472, 71483, 1), new Range32.ptr(71904, 71922, 1), new Range32.ptr(72784, 72812, 1), new Range32.ptr(73040, 73049, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(125264, 125273, 1), new Range32.ptr(127232, 127244, 1)]), 4); + _Nd = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(3046, 3055, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3430, 3439, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3881, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6617, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(66720, 66729, 1), new Range32.ptr(69734, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70736, 70745, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71472, 71481, 1), new Range32.ptr(71904, 71913, 1), new Range32.ptr(72784, 72793, 1), new Range32.ptr(73040, 73049, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125264, 125273, 1)]), 1); + _Nl = new RangeTable.ptr(new sliceType([new Range16.ptr(5870, 5872, 1), new Range16.ptr(8544, 8578, 1), new Range16.ptr(8581, 8584, 1), new Range16.ptr(12295, 12321, 26), new Range16.ptr(12322, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(42726, 42735, 1)]), new sliceType$1([new Range32.ptr(65856, 65908, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(74752, 74862, 1)]), 0); + _No = new RangeTable.ptr(new sliceType([new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3056, 3058, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3416, 3422, 1), new Range16.ptr(3440, 3448, 1), new Range16.ptr(3882, 3891, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6618, 8304, 1686), new Range16.ptr(8308, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8543, 1), new Range16.ptr(8585, 9312, 727), new Range16.ptr(9313, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12690, 1173), new Range16.ptr(12691, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(43056, 43061, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65909, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67835, 67839, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68028, 68029, 1), new Range32.ptr(68032, 68047, 1), new Range32.ptr(68050, 68095, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(68858, 68863, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69733, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(71482, 71483, 1), new Range32.ptr(71914, 71922, 1), new Range32.ptr(72794, 72812, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(127232, 127244, 1)]), 3); + _P = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 42, 1), new Range16.ptr(44, 47, 1), new Range16.ptr(58, 59, 1), new Range16.ptr(63, 64, 1), new Range16.ptr(91, 93, 1), new Range16.ptr(95, 123, 28), new Range16.ptr(125, 161, 36), new Range16.ptr(167, 171, 4), new Range16.ptr(182, 183, 1), new Range16.ptr(187, 191, 4), new Range16.ptr(894, 903, 9), new Range16.ptr(1370, 1375, 1), new Range16.ptr(1417, 1418, 1), new Range16.ptr(1470, 1472, 2), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2557, 2800, 243), new Range16.ptr(3572, 3663, 91), new Range16.ptr(3674, 3675, 1), new Range16.ptr(3844, 3858, 1), new Range16.ptr(3860, 3898, 38), new Range16.ptr(3899, 3901, 1), new Range16.ptr(3973, 4048, 75), new Range16.ptr(4049, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5120, 5741, 621), new Range16.ptr(5742, 5787, 45), new Range16.ptr(5788, 5867, 79), new Range16.ptr(5868, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8208, 829), new Range16.ptr(8209, 8231, 1), new Range16.ptr(8240, 8259, 1), new Range16.ptr(8261, 8273, 1), new Range16.ptr(8275, 8286, 1), new Range16.ptr(8317, 8318, 1), new Range16.ptr(8333, 8334, 1), new Range16.ptr(8968, 8971, 1), new Range16.ptr(9001, 9002, 1), new Range16.ptr(10088, 10101, 1), new Range16.ptr(10181, 10182, 1), new Range16.ptr(10214, 10223, 1), new Range16.ptr(10627, 10648, 1), new Range16.ptr(10712, 10715, 1), new Range16.ptr(10748, 10749, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11822, 1), new Range16.ptr(11824, 11849, 1), new Range16.ptr(12289, 12291, 1), new Range16.ptr(12296, 12305, 1), new Range16.ptr(12308, 12319, 1), new Range16.ptr(12336, 12349, 13), new Range16.ptr(12448, 12539, 91), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43260, 43310, 50), new Range16.ptr(43311, 43359, 48), new Range16.ptr(43457, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 64830, 20819), new Range16.ptr(64831, 65040, 209), new Range16.ptr(65041, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65121, 1), new Range16.ptr(65123, 65128, 5), new Range16.ptr(65130, 65131, 1), new Range16.ptr(65281, 65283, 1), new Range16.ptr(65285, 65290, 1), new Range16.ptr(65292, 65295, 1), new Range16.ptr(65306, 65307, 1), new Range16.ptr(65311, 65312, 1), new Range16.ptr(65339, 65341, 1), new Range16.ptr(65343, 65371, 28), new Range16.ptr(65373, 65375, 2), new Range16.ptr(65376, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70089, 1), new Range32.ptr(70093, 70107, 14), new Range32.ptr(70109, 70111, 1), new Range32.ptr(70200, 70205, 1), new Range32.ptr(70313, 70731, 418), new Range32.ptr(70732, 70735, 1), new Range32.ptr(70747, 70749, 2), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71127, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(71264, 71276, 1), new Range32.ptr(71484, 71486, 1), new Range32.ptr(72255, 72262, 1), new Range32.ptr(72346, 72348, 1), new Range32.ptr(72350, 72354, 1), new Range32.ptr(72769, 72773, 1), new Range32.ptr(72816, 72817, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827), new Range32.ptr(121479, 121483, 1), new Range32.ptr(125278, 125279, 1)]), 11); + _Pc = new RangeTable.ptr(new sliceType([new Range16.ptr(95, 8255, 8160), new Range16.ptr(8256, 8276, 20), new Range16.ptr(65075, 65076, 1), new Range16.ptr(65101, 65103, 1), new Range16.ptr(65343, 65343, 1)]), sliceType$1.nil, 0); + _Pd = new RangeTable.ptr(new sliceType([new Range16.ptr(45, 1418, 1373), new Range16.ptr(1470, 5120, 3650), new Range16.ptr(6150, 8208, 2058), new Range16.ptr(8209, 8213, 1), new Range16.ptr(11799, 11802, 3), new Range16.ptr(11834, 11835, 1), new Range16.ptr(11840, 12316, 476), new Range16.ptr(12336, 12448, 112), new Range16.ptr(65073, 65074, 1), new Range16.ptr(65112, 65123, 11), new Range16.ptr(65293, 65293, 1)]), sliceType$1.nil, 0); + _Pe = new RangeTable.ptr(new sliceType([new Range16.ptr(41, 93, 52), new Range16.ptr(125, 3899, 3774), new Range16.ptr(3901, 5788, 1887), new Range16.ptr(8262, 8318, 56), new Range16.ptr(8334, 8969, 635), new Range16.ptr(8971, 9002, 31), new Range16.ptr(10089, 10101, 2), new Range16.ptr(10182, 10215, 33), new Range16.ptr(10217, 10223, 2), new Range16.ptr(10628, 10648, 2), new Range16.ptr(10713, 10715, 2), new Range16.ptr(10749, 11811, 1062), new Range16.ptr(11813, 11817, 2), new Range16.ptr(12297, 12305, 2), new Range16.ptr(12309, 12315, 2), new Range16.ptr(12318, 12319, 1), new Range16.ptr(64830, 65048, 218), new Range16.ptr(65078, 65092, 2), new Range16.ptr(65096, 65114, 18), new Range16.ptr(65116, 65118, 2), new Range16.ptr(65289, 65341, 52), new Range16.ptr(65373, 65379, 3)]), sliceType$1.nil, 1); + _Pf = new RangeTable.ptr(new sliceType([new Range16.ptr(187, 8217, 8030), new Range16.ptr(8221, 8250, 29), new Range16.ptr(11779, 11781, 2), new Range16.ptr(11786, 11789, 3), new Range16.ptr(11805, 11809, 4)]), sliceType$1.nil, 0); + _Pi = new RangeTable.ptr(new sliceType([new Range16.ptr(171, 8216, 8045), new Range16.ptr(8219, 8220, 1), new Range16.ptr(8223, 8249, 26), new Range16.ptr(11778, 11780, 2), new Range16.ptr(11785, 11788, 3), new Range16.ptr(11804, 11808, 4)]), sliceType$1.nil, 0); + _Po = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 39, 1), new Range16.ptr(42, 46, 2), new Range16.ptr(47, 58, 11), new Range16.ptr(59, 63, 4), new Range16.ptr(64, 92, 28), new Range16.ptr(161, 167, 6), new Range16.ptr(182, 183, 1), new Range16.ptr(191, 894, 703), new Range16.ptr(903, 1370, 467), new Range16.ptr(1371, 1375, 1), new Range16.ptr(1417, 1472, 55), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2557, 2800, 243), new Range16.ptr(3572, 3663, 91), new Range16.ptr(3674, 3675, 1), new Range16.ptr(3844, 3858, 1), new Range16.ptr(3860, 3973, 113), new Range16.ptr(4048, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5741, 5742, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6149, 1), new Range16.ptr(6151, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8214, 835), new Range16.ptr(8215, 8224, 9), new Range16.ptr(8225, 8231, 1), new Range16.ptr(8240, 8248, 1), new Range16.ptr(8251, 8254, 1), new Range16.ptr(8257, 8259, 1), new Range16.ptr(8263, 8273, 1), new Range16.ptr(8275, 8277, 2), new Range16.ptr(8278, 8286, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11782, 5), new Range16.ptr(11783, 11784, 1), new Range16.ptr(11787, 11790, 3), new Range16.ptr(11791, 11798, 1), new Range16.ptr(11800, 11801, 1), new Range16.ptr(11803, 11806, 3), new Range16.ptr(11807, 11818, 11), new Range16.ptr(11819, 11822, 1), new Range16.ptr(11824, 11833, 1), new Range16.ptr(11836, 11839, 1), new Range16.ptr(11841, 11843, 2), new Range16.ptr(11844, 11849, 1), new Range16.ptr(12289, 12291, 1), new Range16.ptr(12349, 12539, 190), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43260, 43310, 50), new Range16.ptr(43311, 43359, 48), new Range16.ptr(43457, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 65040, 21029), new Range16.ptr(65041, 65046, 1), new Range16.ptr(65049, 65072, 23), new Range16.ptr(65093, 65094, 1), new Range16.ptr(65097, 65100, 1), new Range16.ptr(65104, 65106, 1), new Range16.ptr(65108, 65111, 1), new Range16.ptr(65119, 65121, 1), new Range16.ptr(65128, 65130, 2), new Range16.ptr(65131, 65281, 150), new Range16.ptr(65282, 65283, 1), new Range16.ptr(65285, 65287, 1), new Range16.ptr(65290, 65294, 2), new Range16.ptr(65295, 65306, 11), new Range16.ptr(65307, 65311, 4), new Range16.ptr(65312, 65340, 28), new Range16.ptr(65377, 65380, 3), new Range16.ptr(65381, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65792, 1), new Range32.ptr(65793, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70089, 1), new Range32.ptr(70093, 70107, 14), new Range32.ptr(70109, 70111, 1), new Range32.ptr(70200, 70205, 1), new Range32.ptr(70313, 70731, 418), new Range32.ptr(70732, 70735, 1), new Range32.ptr(70747, 70749, 2), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71127, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(71264, 71276, 1), new Range32.ptr(71484, 71486, 1), new Range32.ptr(72255, 72262, 1), new Range32.ptr(72346, 72348, 1), new Range32.ptr(72350, 72354, 1), new Range32.ptr(72769, 72773, 1), new Range32.ptr(72816, 72817, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827), new Range32.ptr(121479, 121483, 1), new Range32.ptr(125278, 125279, 1)]), 8); + _Ps = new RangeTable.ptr(new sliceType([new Range16.ptr(40, 91, 51), new Range16.ptr(123, 3898, 3775), new Range16.ptr(3900, 5787, 1887), new Range16.ptr(8218, 8222, 4), new Range16.ptr(8261, 8317, 56), new Range16.ptr(8333, 8968, 635), new Range16.ptr(8970, 9001, 31), new Range16.ptr(10088, 10100, 2), new Range16.ptr(10181, 10214, 33), new Range16.ptr(10216, 10222, 2), new Range16.ptr(10627, 10647, 2), new Range16.ptr(10712, 10714, 2), new Range16.ptr(10748, 11810, 1062), new Range16.ptr(11812, 11816, 2), new Range16.ptr(11842, 12296, 454), new Range16.ptr(12298, 12304, 2), new Range16.ptr(12308, 12314, 2), new Range16.ptr(12317, 64831, 52514), new Range16.ptr(65047, 65077, 30), new Range16.ptr(65079, 65091, 2), new Range16.ptr(65095, 65113, 18), new Range16.ptr(65115, 65117, 2), new Range16.ptr(65288, 65339, 51), new Range16.ptr(65371, 65375, 4), new Range16.ptr(65378, 65378, 1)]), sliceType$1.nil, 1); + _S = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 43, 7), new Range16.ptr(60, 62, 1), new Range16.ptr(94, 96, 2), new Range16.ptr(124, 126, 2), new Range16.ptr(162, 166, 1), new Range16.ptr(168, 169, 1), new Range16.ptr(172, 174, 2), new Range16.ptr(175, 177, 1), new Range16.ptr(180, 184, 4), new Range16.ptr(215, 247, 32), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 1014, 113), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1423, 1), new Range16.ptr(1542, 1544, 1), new Range16.ptr(1547, 1550, 3), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2554, 2555, 1), new Range16.ptr(2801, 2928, 127), new Range16.ptr(3059, 3066, 1), new Range16.ptr(3199, 3407, 208), new Range16.ptr(3449, 3647, 198), new Range16.ptr(3841, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6107, 6464, 357), new Range16.ptr(6622, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8125, 8127, 2), new Range16.ptr(8128, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8352, 8383, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8472, 1), new Range16.ptr(8478, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8512, 5), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8522, 8525, 1), new Range16.ptr(8527, 8586, 59), new Range16.ptr(8587, 8592, 5), new Range16.ptr(8593, 8967, 1), new Range16.ptr(8972, 9000, 1), new Range16.ptr(9003, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 10087, 1), new Range16.ptr(10132, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11218, 1), new Range16.ptr(11244, 11247, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43065, 1), new Range16.ptr(43639, 43641, 1), new Range16.ptr(43867, 64297, 20430), new Range16.ptr(64434, 64449, 1), new Range16.ptr(65020, 65021, 1), new Range16.ptr(65122, 65124, 2), new Range16.ptr(65125, 65126, 1), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65532, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65934, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 71487, 3191), new Range32.ptr(92988, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119272, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(120832, 121343, 1), new Range32.ptr(121399, 121402, 1), new Range32.ptr(121453, 121460, 1), new Range32.ptr(121462, 121475, 1), new Range32.ptr(121477, 121478, 1), new Range32.ptr(126704, 126705, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127404, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127547, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127584, 127589, 1), new Range32.ptr(127744, 128724, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128760, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(129280, 129291, 1), new Range32.ptr(129296, 129342, 1), new Range32.ptr(129344, 129356, 1), new Range32.ptr(129360, 129387, 1), new Range32.ptr(129408, 129431, 1), new Range32.ptr(129472, 129488, 16), new Range32.ptr(129489, 129510, 1)]), 10); + _Sc = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 162, 126), new Range16.ptr(163, 165, 1), new Range16.ptr(1423, 1547, 124), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2555, 2801, 246), new Range16.ptr(3065, 3647, 582), new Range16.ptr(6107, 8352, 2245), new Range16.ptr(8353, 8383, 1), new Range16.ptr(43064, 65020, 21956), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65504, 65505, 1), new Range16.ptr(65509, 65510, 1)]), sliceType$1.nil, 2); + _Sk = new RangeTable.ptr(new sliceType([new Range16.ptr(94, 96, 2), new Range16.ptr(168, 175, 7), new Range16.ptr(180, 184, 4), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 8125, 7224), new Range16.ptr(8127, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43867, 64434, 20567), new Range16.ptr(64435, 64449, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65507, 65507, 1)]), new sliceType$1([new Range32.ptr(127995, 127995, 1), new Range32.ptr(127996, 127999, 1)]), 3); + _Sm = new RangeTable.ptr(new sliceType([new Range16.ptr(43, 60, 17), new Range16.ptr(61, 62, 1), new Range16.ptr(124, 126, 2), new Range16.ptr(172, 177, 5), new Range16.ptr(215, 247, 32), new Range16.ptr(1014, 1542, 528), new Range16.ptr(1543, 1544, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8472, 8512, 40), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8523, 8592, 69), new Range16.ptr(8593, 8596, 1), new Range16.ptr(8602, 8603, 1), new Range16.ptr(8608, 8614, 3), new Range16.ptr(8622, 8654, 32), new Range16.ptr(8655, 8658, 3), new Range16.ptr(8660, 8692, 32), new Range16.ptr(8693, 8959, 1), new Range16.ptr(8992, 8993, 1), new Range16.ptr(9084, 9115, 31), new Range16.ptr(9116, 9139, 1), new Range16.ptr(9180, 9185, 1), new Range16.ptr(9655, 9665, 10), new Range16.ptr(9720, 9727, 1), new Range16.ptr(9839, 10176, 337), new Range16.ptr(10177, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10239, 1), new Range16.ptr(10496, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11007, 1), new Range16.ptr(11056, 11076, 1), new Range16.ptr(11079, 11084, 1), new Range16.ptr(64297, 65122, 825), new Range16.ptr(65124, 65126, 1), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65506, 65513, 7), new Range16.ptr(65514, 65516, 1)]), new sliceType$1([new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(126704, 126705, 1)]), 5); + _So = new RangeTable.ptr(new sliceType([new Range16.ptr(166, 169, 3), new Range16.ptr(174, 176, 2), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1550, 128), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2554, 2928, 374), new Range16.ptr(3059, 3064, 1), new Range16.ptr(3066, 3199, 133), new Range16.ptr(3407, 3449, 42), new Range16.ptr(3841, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6464, 6622, 158), new Range16.ptr(6623, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8478, 7), new Range16.ptr(8479, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8522, 15), new Range16.ptr(8524, 8525, 1), new Range16.ptr(8527, 8586, 59), new Range16.ptr(8587, 8597, 10), new Range16.ptr(8598, 8601, 1), new Range16.ptr(8604, 8607, 1), new Range16.ptr(8609, 8610, 1), new Range16.ptr(8612, 8613, 1), new Range16.ptr(8615, 8621, 1), new Range16.ptr(8623, 8653, 1), new Range16.ptr(8656, 8657, 1), new Range16.ptr(8659, 8661, 2), new Range16.ptr(8662, 8691, 1), new Range16.ptr(8960, 8967, 1), new Range16.ptr(8972, 8991, 1), new Range16.ptr(8994, 9000, 1), new Range16.ptr(9003, 9083, 1), new Range16.ptr(9085, 9114, 1), new Range16.ptr(9140, 9179, 1), new Range16.ptr(9186, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 9654, 1), new Range16.ptr(9656, 9664, 1), new Range16.ptr(9666, 9719, 1), new Range16.ptr(9728, 9838, 1), new Range16.ptr(9840, 10087, 1), new Range16.ptr(10132, 10175, 1), new Range16.ptr(10240, 10495, 1), new Range16.ptr(11008, 11055, 1), new Range16.ptr(11077, 11078, 1), new Range16.ptr(11085, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11218, 1), new Range16.ptr(11244, 11247, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43063, 1), new Range16.ptr(43065, 43639, 574), new Range16.ptr(43640, 43641, 1), new Range16.ptr(65021, 65508, 487), new Range16.ptr(65512, 65517, 5), new Range16.ptr(65518, 65532, 14), new Range16.ptr(65533, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65847, 1), new Range32.ptr(65848, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65934, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 71487, 3191), new Range32.ptr(92988, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119272, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(120832, 121343, 1), new Range32.ptr(121399, 121402, 1), new Range32.ptr(121453, 121460, 1), new Range32.ptr(121462, 121475, 1), new Range32.ptr(121477, 121478, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127404, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127547, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127584, 127589, 1), new Range32.ptr(127744, 127994, 1), new Range32.ptr(128000, 128724, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128760, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(129280, 129291, 1), new Range32.ptr(129296, 129342, 1), new Range32.ptr(129344, 129356, 1), new Range32.ptr(129360, 129387, 1), new Range32.ptr(129408, 129431, 1), new Range32.ptr(129472, 129488, 16), new Range32.ptr(129489, 129510, 1)]), 2); + _Z = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8232, 8233, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1); + _Zl = new RangeTable.ptr(new sliceType([new Range16.ptr(8232, 8232, 1)]), sliceType$1.nil, 0); + _Zp = new RangeTable.ptr(new sliceType([new Range16.ptr(8233, 8233, 1)]), sliceType$1.nil, 0); + _Zs = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1); + $pkg.Cc = _Cc; + $pkg.Cf = _Cf; + $pkg.Co = _Co; + $pkg.Cs = _Cs; + $pkg.Digit = _Nd; + $pkg.Nd = _Nd; + $pkg.Letter = _L; + $pkg.L = _L; + $pkg.Lm = _Lm; + $pkg.Lo = _Lo; + $pkg.Ll = _Ll; + $pkg.M = _M; + $pkg.Mc = _Mc; + $pkg.Me = _Me; + $pkg.Mn = _Mn; + $pkg.Nl = _Nl; + $pkg.No = _No; + $pkg.N = _N; + $pkg.C = _C; + $pkg.Pc = _Pc; + $pkg.Pd = _Pd; + $pkg.Pe = _Pe; + $pkg.Pf = _Pf; + $pkg.Pi = _Pi; + $pkg.Po = _Po; + $pkg.Ps = _Ps; + $pkg.P = _P; + $pkg.Sc = _Sc; + $pkg.Sk = _Sk; + $pkg.Sm = _Sm; + $pkg.So = _So; + $pkg.Z = _Z; + $pkg.S = _S; + $pkg.PrintRanges = new sliceType$2([$pkg.L, $pkg.M, $pkg.N, $pkg.P, $pkg.S]); + $pkg.Lt = _Lt; + $pkg.Lu = _Lu; + $pkg.Zl = _Zl; + $pkg.Zp = _Zp; + $pkg.Zs = _Zs; + $pkg.Categories = $makeMap($String.keyFor, [{ k: "C", v: $pkg.C }, { k: "Cc", v: $pkg.Cc }, { k: "Cf", v: $pkg.Cf }, { k: "Co", v: $pkg.Co }, { k: "Cs", v: $pkg.Cs }, { k: "L", v: $pkg.L }, { k: "Ll", v: $pkg.Ll }, { k: "Lm", v: $pkg.Lm }, { k: "Lo", v: $pkg.Lo }, { k: "Lt", v: $pkg.Lt }, { k: "Lu", v: $pkg.Lu }, { k: "M", v: $pkg.M }, { k: "Mc", v: $pkg.Mc }, { k: "Me", v: $pkg.Me }, { k: "Mn", v: $pkg.Mn }, { k: "N", v: $pkg.N }, { k: "Nd", v: $pkg.Nd }, { k: "Nl", v: $pkg.Nl }, { k: "No", v: $pkg.No }, { k: "P", v: $pkg.P }, { k: "Pc", v: $pkg.Pc }, { k: "Pd", v: $pkg.Pd }, { k: "Pe", v: $pkg.Pe }, { k: "Pf", v: $pkg.Pf }, { k: "Pi", v: $pkg.Pi }, { k: "Po", v: $pkg.Po }, { k: "Ps", v: $pkg.Ps }, { k: "S", v: $pkg.S }, { k: "Sc", v: $pkg.Sc }, { k: "Sk", v: $pkg.Sk }, { k: "Sm", v: $pkg.Sm }, { k: "So", v: $pkg.So }, { k: "Z", v: $pkg.Z }, { k: "Zl", v: $pkg.Zl }, { k: "Zp", v: $pkg.Zp }, { k: "Zs", v: $pkg.Zs }]); + _Adlam = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(125184, 125258, 1), new Range32.ptr(125264, 125273, 1), new Range32.ptr(125278, 125279, 1)]), 0); + _Ahom = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71424, 71449, 1), new Range32.ptr(71453, 71467, 1), new Range32.ptr(71472, 71487, 1)]), 0); + _Anatolian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(82944, 83526, 1)]), 0); + _Arabic = new RangeTable.ptr(new sliceType([new Range16.ptr(1536, 1540, 1), new Range16.ptr(1542, 1547, 1), new Range16.ptr(1549, 1562, 1), new Range16.ptr(1564, 1564, 1), new Range16.ptr(1566, 1566, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1622, 1647, 1), new Range16.ptr(1649, 1756, 1), new Range16.ptr(1758, 1791, 1), new Range16.ptr(1872, 1919, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2260, 2273, 1), new Range16.ptr(2275, 2303, 1), new Range16.ptr(64336, 64449, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65021, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1)]), new sliceType$1([new Range32.ptr(69216, 69246, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126500, 1), new Range32.ptr(126503, 126503, 1), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126521, 1), new Range32.ptr(126523, 126523, 1), new Range32.ptr(126530, 126530, 1), new Range32.ptr(126535, 126535, 1), new Range32.ptr(126537, 126537, 1), new Range32.ptr(126539, 126539, 1), new Range32.ptr(126541, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126548, 1), new Range32.ptr(126551, 126551, 1), new Range32.ptr(126553, 126553, 1), new Range32.ptr(126555, 126555, 1), new Range32.ptr(126557, 126557, 1), new Range32.ptr(126559, 126559, 1), new Range32.ptr(126561, 126562, 1), new Range32.ptr(126564, 126564, 1), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126590, 1), new Range32.ptr(126592, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(126704, 126705, 1)]), 0); + _Armenian = new RangeTable.ptr(new sliceType([new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1375, 1), new Range16.ptr(1377, 1415, 1), new Range16.ptr(1418, 1418, 1), new Range16.ptr(1421, 1423, 1), new Range16.ptr(64275, 64279, 1)]), sliceType$1.nil, 0); + _Avestan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68352, 68405, 1), new Range32.ptr(68409, 68415, 1)]), 0); + _Balinese = new RangeTable.ptr(new sliceType([new Range16.ptr(6912, 6987, 1), new Range16.ptr(6992, 7036, 1)]), sliceType$1.nil, 0); + _Bamum = new RangeTable.ptr(new sliceType([new Range16.ptr(42656, 42743, 1)]), new sliceType$1([new Range32.ptr(92160, 92728, 1)]), 0); + _Bassa_Vah = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92880, 92909, 1), new Range32.ptr(92912, 92917, 1)]), 0); + _Batak = new RangeTable.ptr(new sliceType([new Range16.ptr(7104, 7155, 1), new Range16.ptr(7164, 7167, 1)]), sliceType$1.nil, 0); + _Bengali = new RangeTable.ptr(new sliceType([new Range16.ptr(2432, 2435, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2482, 1), new Range16.ptr(2486, 2489, 1), new Range16.ptr(2492, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2510, 1), new Range16.ptr(2519, 2519, 1), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2531, 1), new Range16.ptr(2534, 2557, 1)]), sliceType$1.nil, 0); + _Bhaiksuki = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72758, 1), new Range32.ptr(72760, 72773, 1), new Range32.ptr(72784, 72812, 1)]), 0); + _Bopomofo = new RangeTable.ptr(new sliceType([new Range16.ptr(746, 747, 1), new Range16.ptr(12549, 12590, 1), new Range16.ptr(12704, 12730, 1)]), sliceType$1.nil, 0); + _Brahmi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69632, 69709, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69759, 69759, 1)]), 0); + _Braille = new RangeTable.ptr(new sliceType([new Range16.ptr(10240, 10495, 1)]), sliceType$1.nil, 0); + _Buginese = new RangeTable.ptr(new sliceType([new Range16.ptr(6656, 6683, 1), new Range16.ptr(6686, 6687, 1)]), sliceType$1.nil, 0); + _Buhid = new RangeTable.ptr(new sliceType([new Range16.ptr(5952, 5971, 1)]), sliceType$1.nil, 0); + _Canadian_Aboriginal = new RangeTable.ptr(new sliceType([new Range16.ptr(5120, 5759, 1), new Range16.ptr(6320, 6389, 1)]), sliceType$1.nil, 0); + _Carian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66208, 66256, 1)]), 0); + _Caucasian_Albanian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66864, 66915, 1), new Range32.ptr(66927, 66927, 1)]), 0); + _Chakma = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69888, 69940, 1), new Range32.ptr(69942, 69955, 1)]), 0); + _Cham = new RangeTable.ptr(new sliceType([new Range16.ptr(43520, 43574, 1), new Range16.ptr(43584, 43597, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(43612, 43615, 1)]), sliceType$1.nil, 0); + _Cherokee = new RangeTable.ptr(new sliceType([new Range16.ptr(5024, 5109, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(43888, 43967, 1)]), sliceType$1.nil, 0); + _Common = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 64, 1), new Range16.ptr(91, 96, 1), new Range16.ptr(123, 169, 1), new Range16.ptr(171, 185, 1), new Range16.ptr(187, 191, 1), new Range16.ptr(215, 215, 1), new Range16.ptr(247, 247, 1), new Range16.ptr(697, 735, 1), new Range16.ptr(741, 745, 1), new Range16.ptr(748, 767, 1), new Range16.ptr(884, 884, 1), new Range16.ptr(894, 894, 1), new Range16.ptr(901, 901, 1), new Range16.ptr(903, 903, 1), new Range16.ptr(1417, 1417, 1), new Range16.ptr(1541, 1541, 1), new Range16.ptr(1548, 1548, 1), new Range16.ptr(1563, 1563, 1), new Range16.ptr(1567, 1567, 1), new Range16.ptr(1600, 1600, 1), new Range16.ptr(1757, 1757, 1), new Range16.ptr(2274, 2274, 1), new Range16.ptr(2404, 2405, 1), new Range16.ptr(3647, 3647, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4347, 4347, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6146, 6147, 1), new Range16.ptr(6149, 6149, 1), new Range16.ptr(7379, 7379, 1), new Range16.ptr(7393, 7393, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7411, 1), new Range16.ptr(7413, 7415, 1), new Range16.ptr(8192, 8203, 1), new Range16.ptr(8206, 8292, 1), new Range16.ptr(8294, 8304, 1), new Range16.ptr(8308, 8318, 1), new Range16.ptr(8320, 8334, 1), new Range16.ptr(8352, 8383, 1), new Range16.ptr(8448, 8485, 1), new Range16.ptr(8487, 8489, 1), new Range16.ptr(8492, 8497, 1), new Range16.ptr(8499, 8525, 1), new Range16.ptr(8527, 8543, 1), new Range16.ptr(8585, 8587, 1), new Range16.ptr(8592, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9312, 10239, 1), new Range16.ptr(10496, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11218, 1), new Range16.ptr(11244, 11247, 1), new Range16.ptr(11776, 11849, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12288, 12292, 1), new Range16.ptr(12294, 12294, 1), new Range16.ptr(12296, 12320, 1), new Range16.ptr(12336, 12343, 1), new Range16.ptr(12348, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12448, 12448, 1), new Range16.ptr(12539, 12540, 1), new Range16.ptr(12688, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12832, 12895, 1), new Range16.ptr(12927, 13007, 1), new Range16.ptr(13144, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42752, 42785, 1), new Range16.ptr(42888, 42890, 1), new Range16.ptr(43056, 43065, 1), new Range16.ptr(43310, 43310, 1), new Range16.ptr(43471, 43471, 1), new Range16.ptr(43867, 43867, 1), new Range16.ptr(64830, 64831, 1), new Range16.ptr(65040, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65126, 1), new Range16.ptr(65128, 65131, 1), new Range16.ptr(65279, 65279, 1), new Range16.ptr(65281, 65312, 1), new Range16.ptr(65339, 65344, 1), new Range16.ptr(65371, 65381, 1), new Range16.ptr(65392, 65392, 1), new Range16.ptr(65438, 65439, 1), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65529, 65533, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(65799, 65843, 1), new Range32.ptr(65847, 65855, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(66000, 66044, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(113824, 113827, 1), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119142, 1), new Range32.ptr(119146, 119162, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119272, 1), new Range32.ptr(119552, 119638, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119970, 1), new Range32.ptr(119973, 119974, 1), new Range32.ptr(119977, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119995, 1), new Range32.ptr(119997, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120134, 1), new Range32.ptr(120138, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120779, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127232, 127244, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127404, 1), new Range32.ptr(127462, 127487, 1), new Range32.ptr(127489, 127490, 1), new Range32.ptr(127504, 127547, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127584, 127589, 1), new Range32.ptr(127744, 128724, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128760, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(129280, 129291, 1), new Range32.ptr(129296, 129342, 1), new Range32.ptr(129344, 129356, 1), new Range32.ptr(129360, 129387, 1), new Range32.ptr(129408, 129431, 1), new Range32.ptr(129472, 129472, 1), new Range32.ptr(129488, 129510, 1), new Range32.ptr(917505, 917505, 1), new Range32.ptr(917536, 917631, 1)]), 7); + _Coptic = new RangeTable.ptr(new sliceType([new Range16.ptr(994, 1007, 1), new Range16.ptr(11392, 11507, 1), new Range16.ptr(11513, 11519, 1)]), sliceType$1.nil, 0); + _Cuneiform = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(73728, 74649, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(74880, 75075, 1)]), 0); + _Cypriot = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67592, 1), new Range32.ptr(67594, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67644, 1), new Range32.ptr(67647, 67647, 1)]), 0); + _Cyrillic = new RangeTable.ptr(new sliceType([new Range16.ptr(1024, 1156, 1), new Range16.ptr(1159, 1327, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7467, 7467, 1), new Range16.ptr(7544, 7544, 1), new Range16.ptr(11744, 11775, 1), new Range16.ptr(42560, 42655, 1), new Range16.ptr(65070, 65071, 1)]), sliceType$1.nil, 0); + _Deseret = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66560, 66639, 1)]), 0); + _Devanagari = new RangeTable.ptr(new sliceType([new Range16.ptr(2304, 2384, 1), new Range16.ptr(2387, 2403, 1), new Range16.ptr(2406, 2431, 1), new Range16.ptr(43232, 43261, 1)]), sliceType$1.nil, 0); + _Duployan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(113820, 113823, 1)]), 0); + _Egyptian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(77824, 78894, 1)]), 0); + _Elbasan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66816, 66855, 1)]), 0); + _Ethiopic = new RangeTable.ptr(new sliceType([new Range16.ptr(4608, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4696, 1), new Range16.ptr(4698, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4800, 1), new Range16.ptr(4802, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4957, 4988, 1), new Range16.ptr(4992, 5017, 1), new Range16.ptr(11648, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1)]), sliceType$1.nil, 0); + _Georgian = new RangeTable.ptr(new sliceType([new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4295, 1), new Range16.ptr(4301, 4301, 1), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4351, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11559, 1), new Range16.ptr(11565, 11565, 1)]), sliceType$1.nil, 0); + _Glagolitic = new RangeTable.ptr(new sliceType([new Range16.ptr(11264, 11310, 1), new Range16.ptr(11312, 11358, 1)]), new sliceType$1([new Range32.ptr(122880, 122886, 1), new Range32.ptr(122888, 122904, 1), new Range32.ptr(122907, 122913, 1), new Range32.ptr(122915, 122916, 1), new Range32.ptr(122918, 122922, 1)]), 0); + _Gothic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66352, 66378, 1)]), 0); + _Grantha = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70400, 70403, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70460, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70480, 70480, 1), new Range32.ptr(70487, 70487, 1), new Range32.ptr(70493, 70499, 1), new Range32.ptr(70502, 70508, 1), new Range32.ptr(70512, 70516, 1)]), 0); + _Greek = new RangeTable.ptr(new sliceType([new Range16.ptr(880, 883, 1), new Range16.ptr(885, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 895, 1), new Range16.ptr(900, 900, 1), new Range16.ptr(902, 902, 1), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 908, 1), new Range16.ptr(910, 929, 1), new Range16.ptr(931, 993, 1), new Range16.ptr(1008, 1023, 1), new Range16.ptr(7462, 7466, 1), new Range16.ptr(7517, 7521, 1), new Range16.ptr(7526, 7530, 1), new Range16.ptr(7615, 7615, 1), new Range16.ptr(7936, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8025, 1), new Range16.ptr(8027, 8027, 1), new Range16.ptr(8029, 8029, 1), new Range16.ptr(8031, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8132, 1), new Range16.ptr(8134, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8157, 8175, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8190, 1), new Range16.ptr(8486, 8486, 1), new Range16.ptr(43877, 43877, 1)]), new sliceType$1([new Range32.ptr(65856, 65934, 1), new Range32.ptr(65952, 65952, 1), new Range32.ptr(119296, 119365, 1)]), 0); + _Gujarati = new RangeTable.ptr(new sliceType([new Range16.ptr(2689, 2691, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2748, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2768, 2768, 1), new Range16.ptr(2784, 2787, 1), new Range16.ptr(2790, 2801, 1), new Range16.ptr(2809, 2815, 1)]), sliceType$1.nil, 0); + _Gurmukhi = new RangeTable.ptr(new sliceType([new Range16.ptr(2561, 2563, 1), new Range16.ptr(2565, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2620, 2620, 1), new Range16.ptr(2622, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2641, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2654, 1), new Range16.ptr(2662, 2677, 1)]), sliceType$1.nil, 0); + _Han = new RangeTable.ptr(new sliceType([new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12293, 12293, 1), new Range16.ptr(12295, 12295, 1), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12347, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1)]), new sliceType$1([new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 0); + _Hangul = new RangeTable.ptr(new sliceType([new Range16.ptr(4352, 4607, 1), new Range16.ptr(12334, 12335, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12896, 12926, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(65440, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), sliceType$1.nil, 0); + _Hanunoo = new RangeTable.ptr(new sliceType([new Range16.ptr(5920, 5940, 1)]), sliceType$1.nil, 0); + _Hatran = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67835, 67839, 1)]), 0); + _Hebrew = new RangeTable.ptr(new sliceType([new Range16.ptr(1425, 1479, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1524, 1), new Range16.ptr(64285, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64318, 1), new Range16.ptr(64320, 64321, 1), new Range16.ptr(64323, 64324, 1), new Range16.ptr(64326, 64335, 1)]), sliceType$1.nil, 0); + _Hiragana = new RangeTable.ptr(new sliceType([new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1)]), new sliceType$1([new Range32.ptr(110593, 110878, 1), new Range32.ptr(127488, 127488, 1)]), 0); + _Imperial_Aramaic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67648, 67669, 1), new Range32.ptr(67671, 67679, 1)]), 0); + _Inherited = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1157, 1158, 1), new Range16.ptr(1611, 1621, 1), new Range16.ptr(1648, 1648, 1), new Range16.ptr(2385, 2386, 1), new Range16.ptr(6832, 6846, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7405, 1), new Range16.ptr(7412, 7412, 1), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7673, 1), new Range16.ptr(7675, 7679, 1), new Range16.ptr(8204, 8205, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66045, 1), new Range32.ptr(66272, 66272, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(917760, 917999, 1)]), 0); + _Inscriptional_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68448, 68466, 1), new Range32.ptr(68472, 68479, 1)]), 0); + _Inscriptional_Parthian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68416, 68437, 1), new Range32.ptr(68440, 68447, 1)]), 0); + _Javanese = new RangeTable.ptr(new sliceType([new Range16.ptr(43392, 43469, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43486, 43487, 1)]), sliceType$1.nil, 0); + _Kaithi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69760, 69825, 1)]), 0); + _Kannada = new RangeTable.ptr(new sliceType([new Range16.ptr(3200, 3203, 1), new Range16.ptr(3205, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3260, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3294, 3294, 1), new Range16.ptr(3296, 3299, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3313, 3314, 1)]), sliceType$1.nil, 0); + _Katakana = new RangeTable.ptr(new sliceType([new Range16.ptr(12449, 12538, 1), new Range16.ptr(12541, 12543, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13008, 13054, 1), new Range16.ptr(13056, 13143, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1)]), new sliceType$1([new Range32.ptr(110592, 110592, 1)]), 0); + _Kayah_Li = new RangeTable.ptr(new sliceType([new Range16.ptr(43264, 43309, 1), new Range16.ptr(43311, 43311, 1)]), sliceType$1.nil, 0); + _Kharoshthi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68096, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68167, 1), new Range32.ptr(68176, 68184, 1)]), 0); + _Khmer = new RangeTable.ptr(new sliceType([new Range16.ptr(6016, 6109, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6624, 6655, 1)]), sliceType$1.nil, 0); + _Khojki = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70206, 1)]), 0); + _Khudawadi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70320, 70378, 1), new Range32.ptr(70384, 70393, 1)]), 0); + _Lao = new RangeTable.ptr(new sliceType([new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3716, 1), new Range16.ptr(3719, 3720, 1), new Range16.ptr(3722, 3722, 1), new Range16.ptr(3725, 3725, 1), new Range16.ptr(3732, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3749, 1), new Range16.ptr(3751, 3751, 1), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3769, 1), new Range16.ptr(3771, 3773, 1), new Range16.ptr(3776, 3780, 1), new Range16.ptr(3782, 3782, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3804, 3807, 1)]), sliceType$1.nil, 0); + _Latin = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 170, 1), new Range16.ptr(186, 186, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 696, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(7424, 7461, 1), new Range16.ptr(7468, 7516, 1), new Range16.ptr(7522, 7525, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7614, 1), new Range16.ptr(7680, 7935, 1), new Range16.ptr(8305, 8305, 1), new Range16.ptr(8319, 8319, 1), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8490, 8491, 1), new Range16.ptr(8498, 8498, 1), new Range16.ptr(8526, 8526, 1), new Range16.ptr(8544, 8584, 1), new Range16.ptr(11360, 11391, 1), new Range16.ptr(42786, 42887, 1), new Range16.ptr(42891, 42926, 1), new Range16.ptr(42928, 42935, 1), new Range16.ptr(42999, 43007, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43876, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1)]), sliceType$1.nil, 6); + _Lepcha = new RangeTable.ptr(new sliceType([new Range16.ptr(7168, 7223, 1), new Range16.ptr(7227, 7241, 1), new Range16.ptr(7245, 7247, 1)]), sliceType$1.nil, 0); + _Limbu = new RangeTable.ptr(new sliceType([new Range16.ptr(6400, 6430, 1), new Range16.ptr(6432, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6464, 6464, 1), new Range16.ptr(6468, 6479, 1)]), sliceType$1.nil, 0); + _Linear_A = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1)]), 0); + _Linear_B = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1)]), 0); + _Lisu = new RangeTable.ptr(new sliceType([new Range16.ptr(42192, 42239, 1)]), sliceType$1.nil, 0); + _Lycian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66176, 66204, 1)]), 0); + _Lydian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67872, 67897, 1), new Range32.ptr(67903, 67903, 1)]), 0); + _Mahajani = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69968, 70006, 1)]), 0); + _Malayalam = new RangeTable.ptr(new sliceType([new Range16.ptr(3328, 3331, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3407, 1), new Range16.ptr(3412, 3427, 1), new Range16.ptr(3430, 3455, 1)]), sliceType$1.nil, 0); + _Mandaic = new RangeTable.ptr(new sliceType([new Range16.ptr(2112, 2139, 1), new Range16.ptr(2142, 2142, 1)]), sliceType$1.nil, 0); + _Manichaean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68288, 68326, 1), new Range32.ptr(68331, 68342, 1)]), 0); + _Marchen = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72816, 72847, 1), new Range32.ptr(72850, 72871, 1), new Range32.ptr(72873, 72886, 1)]), 0); + _Masaram_Gondi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73014, 1), new Range32.ptr(73018, 73018, 1), new Range32.ptr(73020, 73021, 1), new Range32.ptr(73023, 73031, 1), new Range32.ptr(73040, 73049, 1)]), 0); + _Meetei_Mayek = new RangeTable.ptr(new sliceType([new Range16.ptr(43744, 43766, 1), new Range16.ptr(43968, 44013, 1), new Range16.ptr(44016, 44025, 1)]), sliceType$1.nil, 0); + _Mende_Kikakui = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(124928, 125124, 1), new Range32.ptr(125127, 125142, 1)]), 0); + _Meroitic_Cursive = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68000, 68023, 1), new Range32.ptr(68028, 68047, 1), new Range32.ptr(68050, 68095, 1)]), 0); + _Meroitic_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67968, 67999, 1)]), 0); + _Miao = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94078, 1), new Range32.ptr(94095, 94111, 1)]), 0); + _Modi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71168, 71236, 1), new Range32.ptr(71248, 71257, 1)]), 0); + _Mongolian = new RangeTable.ptr(new sliceType([new Range16.ptr(6144, 6145, 1), new Range16.ptr(6148, 6148, 1), new Range16.ptr(6150, 6158, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6314, 1)]), new sliceType$1([new Range32.ptr(71264, 71276, 1)]), 0); + _Mro = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92736, 92766, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(92782, 92783, 1)]), 0); + _Multani = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70280, 1), new Range32.ptr(70282, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70313, 1)]), 0); + _Myanmar = new RangeTable.ptr(new sliceType([new Range16.ptr(4096, 4255, 1), new Range16.ptr(43488, 43518, 1), new Range16.ptr(43616, 43647, 1)]), sliceType$1.nil, 0); + _Nabataean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67712, 67742, 1), new Range32.ptr(67751, 67759, 1)]), 0); + _New_Tai_Lue = new RangeTable.ptr(new sliceType([new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6622, 6623, 1)]), sliceType$1.nil, 0); + _Newa = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70656, 70745, 1), new Range32.ptr(70747, 70747, 1), new Range32.ptr(70749, 70749, 1)]), 0); + _Nko = new RangeTable.ptr(new sliceType([new Range16.ptr(1984, 2042, 1)]), sliceType$1.nil, 0); + _Nushu = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(94177, 94177, 1), new Range32.ptr(110960, 111355, 1)]), 0); + _Ogham = new RangeTable.ptr(new sliceType([new Range16.ptr(5760, 5788, 1)]), sliceType$1.nil, 0); + _Ol_Chiki = new RangeTable.ptr(new sliceType([new Range16.ptr(7248, 7295, 1)]), sliceType$1.nil, 0); + _Old_Hungarian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68736, 68786, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(68858, 68863, 1)]), 0); + _Old_Italic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66304, 66339, 1), new Range32.ptr(66349, 66351, 1)]), 0); + _Old_North_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68224, 68255, 1)]), 0); + _Old_Permic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66384, 66426, 1)]), 0); + _Old_Persian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66517, 1)]), 0); + _Old_South_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68192, 68223, 1)]), 0); + _Old_Turkic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68608, 68680, 1)]), 0); + _Oriya = new RangeTable.ptr(new sliceType([new Range16.ptr(2817, 2819, 1), new Range16.ptr(2821, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2876, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2908, 2909, 1), new Range16.ptr(2911, 2915, 1), new Range16.ptr(2918, 2935, 1)]), sliceType$1.nil, 0); + _Osage = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66736, 66771, 1), new Range32.ptr(66776, 66811, 1)]), 0); + _Osmanya = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66688, 66717, 1), new Range32.ptr(66720, 66729, 1)]), 0); + _Pahawh_Hmong = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92928, 92997, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1)]), 0); + _Palmyrene = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67680, 67711, 1)]), 0); + _Pau_Cin_Hau = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72384, 72440, 1)]), 0); + _Phags_Pa = new RangeTable.ptr(new sliceType([new Range16.ptr(43072, 43127, 1)]), sliceType$1.nil, 0); + _Phoenician = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67840, 67867, 1), new Range32.ptr(67871, 67871, 1)]), 0); + _Psalter_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68480, 68497, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(68521, 68527, 1)]), 0); + _Rejang = new RangeTable.ptr(new sliceType([new Range16.ptr(43312, 43347, 1), new Range16.ptr(43359, 43359, 1)]), sliceType$1.nil, 0); + _Runic = new RangeTable.ptr(new sliceType([new Range16.ptr(5792, 5866, 1), new Range16.ptr(5870, 5880, 1)]), sliceType$1.nil, 0); + _Samaritan = new RangeTable.ptr(new sliceType([new Range16.ptr(2048, 2093, 1), new Range16.ptr(2096, 2110, 1)]), sliceType$1.nil, 0); + _Saurashtra = new RangeTable.ptr(new sliceType([new Range16.ptr(43136, 43205, 1), new Range16.ptr(43214, 43225, 1)]), sliceType$1.nil, 0); + _Sharada = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70016, 70093, 1), new Range32.ptr(70096, 70111, 1)]), 0); + _Shavian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66640, 66687, 1)]), 0); + _Siddham = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71040, 71093, 1), new Range32.ptr(71096, 71133, 1)]), 0); + _SignWriting = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(120832, 121483, 1), new Range32.ptr(121499, 121503, 1), new Range32.ptr(121505, 121519, 1)]), 0); + _Sinhala = new RangeTable.ptr(new sliceType([new Range16.ptr(3458, 3459, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3517, 1), new Range16.ptr(3520, 3526, 1), new Range16.ptr(3530, 3530, 1), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3542, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3570, 3572, 1)]), new sliceType$1([new Range32.ptr(70113, 70132, 1)]), 0); + _Sora_Sompeng = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69840, 69864, 1), new Range32.ptr(69872, 69881, 1)]), 0); + _Soyombo = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72272, 72323, 1), new Range32.ptr(72326, 72348, 1), new Range32.ptr(72350, 72354, 1)]), 0); + _Sundanese = new RangeTable.ptr(new sliceType([new Range16.ptr(7040, 7103, 1), new Range16.ptr(7360, 7367, 1)]), sliceType$1.nil, 0); + _Syloti_Nagri = new RangeTable.ptr(new sliceType([new Range16.ptr(43008, 43051, 1)]), sliceType$1.nil, 0); + _Syriac = new RangeTable.ptr(new sliceType([new Range16.ptr(1792, 1805, 1), new Range16.ptr(1807, 1866, 1), new Range16.ptr(1869, 1871, 1), new Range16.ptr(2144, 2154, 1)]), sliceType$1.nil, 0); + _Tagalog = new RangeTable.ptr(new sliceType([new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5908, 1)]), sliceType$1.nil, 0); + _Tagbanwa = new RangeTable.ptr(new sliceType([new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6002, 6003, 1)]), sliceType$1.nil, 0); + _Tai_Le = new RangeTable.ptr(new sliceType([new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1)]), sliceType$1.nil, 0); + _Tai_Tham = new RangeTable.ptr(new sliceType([new Range16.ptr(6688, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6816, 6829, 1)]), sliceType$1.nil, 0); + _Tai_Viet = new RangeTable.ptr(new sliceType([new Range16.ptr(43648, 43714, 1), new Range16.ptr(43739, 43743, 1)]), sliceType$1.nil, 0); + _Takri = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71296, 71351, 1), new Range32.ptr(71360, 71369, 1)]), 0); + _Tamil = new RangeTable.ptr(new sliceType([new Range16.ptr(2946, 2947, 1), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2972, 1), new Range16.ptr(2974, 2975, 1), new Range16.ptr(2979, 2980, 1), new Range16.ptr(2984, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3006, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3024, 3024, 1), new Range16.ptr(3031, 3031, 1), new Range16.ptr(3046, 3066, 1)]), sliceType$1.nil, 0); + _Tangut = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(94176, 94176, 1), new Range32.ptr(94208, 100332, 1), new Range32.ptr(100352, 101106, 1)]), 0); + _Telugu = new RangeTable.ptr(new sliceType([new Range16.ptr(3072, 3075, 1), new Range16.ptr(3077, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3160, 3162, 1), new Range16.ptr(3168, 3171, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3199, 1)]), sliceType$1.nil, 0); + _Thaana = new RangeTable.ptr(new sliceType([new Range16.ptr(1920, 1969, 1)]), sliceType$1.nil, 0); + _Thai = new RangeTable.ptr(new sliceType([new Range16.ptr(3585, 3642, 1), new Range16.ptr(3648, 3675, 1)]), sliceType$1.nil, 0); + _Tibetan = new RangeTable.ptr(new sliceType([new Range16.ptr(3840, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3953, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4030, 4044, 1), new Range16.ptr(4046, 4052, 1), new Range16.ptr(4057, 4058, 1)]), sliceType$1.nil, 0); + _Tifinagh = new RangeTable.ptr(new sliceType([new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11632, 1), new Range16.ptr(11647, 11647, 1)]), sliceType$1.nil, 0); + _Tirhuta = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70784, 70855, 1), new Range32.ptr(70864, 70873, 1)]), 0); + _Ugaritic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66432, 66461, 1), new Range32.ptr(66463, 66463, 1)]), 0); + _Vai = new RangeTable.ptr(new sliceType([new Range16.ptr(42240, 42539, 1)]), sliceType$1.nil, 0); + _Warang_Citi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71840, 71922, 1), new Range32.ptr(71935, 71935, 1)]), 0); + _Yi = new RangeTable.ptr(new sliceType([new Range16.ptr(40960, 42124, 1), new Range16.ptr(42128, 42182, 1)]), sliceType$1.nil, 0); + _Zanabazar_Square = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72192, 72263, 1)]), 0); + $pkg.Adlam = _Adlam; + $pkg.Ahom = _Ahom; + $pkg.Anatolian_Hieroglyphs = _Anatolian_Hieroglyphs; + $pkg.Arabic = _Arabic; + $pkg.Armenian = _Armenian; + $pkg.Avestan = _Avestan; + $pkg.Balinese = _Balinese; + $pkg.Bamum = _Bamum; + $pkg.Bassa_Vah = _Bassa_Vah; + $pkg.Batak = _Batak; + $pkg.Bengali = _Bengali; + $pkg.Bhaiksuki = _Bhaiksuki; + $pkg.Bopomofo = _Bopomofo; + $pkg.Brahmi = _Brahmi; + $pkg.Braille = _Braille; + $pkg.Buginese = _Buginese; + $pkg.Buhid = _Buhid; + $pkg.Canadian_Aboriginal = _Canadian_Aboriginal; + $pkg.Carian = _Carian; + $pkg.Caucasian_Albanian = _Caucasian_Albanian; + $pkg.Chakma = _Chakma; + $pkg.Cham = _Cham; + $pkg.Cherokee = _Cherokee; + $pkg.Common = _Common; + $pkg.Coptic = _Coptic; + $pkg.Cuneiform = _Cuneiform; + $pkg.Cypriot = _Cypriot; + $pkg.Cyrillic = _Cyrillic; + $pkg.Deseret = _Deseret; + $pkg.Devanagari = _Devanagari; + $pkg.Duployan = _Duployan; + $pkg.Egyptian_Hieroglyphs = _Egyptian_Hieroglyphs; + $pkg.Elbasan = _Elbasan; + $pkg.Ethiopic = _Ethiopic; + $pkg.Georgian = _Georgian; + $pkg.Glagolitic = _Glagolitic; + $pkg.Gothic = _Gothic; + $pkg.Grantha = _Grantha; + $pkg.Greek = _Greek; + $pkg.Gujarati = _Gujarati; + $pkg.Gurmukhi = _Gurmukhi; + $pkg.Han = _Han; + $pkg.Hangul = _Hangul; + $pkg.Hanunoo = _Hanunoo; + $pkg.Hatran = _Hatran; + $pkg.Hebrew = _Hebrew; + $pkg.Hiragana = _Hiragana; + $pkg.Imperial_Aramaic = _Imperial_Aramaic; + $pkg.Inherited = _Inherited; + $pkg.Inscriptional_Pahlavi = _Inscriptional_Pahlavi; + $pkg.Inscriptional_Parthian = _Inscriptional_Parthian; + $pkg.Javanese = _Javanese; + $pkg.Kaithi = _Kaithi; + $pkg.Kannada = _Kannada; + $pkg.Katakana = _Katakana; + $pkg.Kayah_Li = _Kayah_Li; + $pkg.Kharoshthi = _Kharoshthi; + $pkg.Khmer = _Khmer; + $pkg.Khojki = _Khojki; + $pkg.Khudawadi = _Khudawadi; + $pkg.Lao = _Lao; + $pkg.Latin = _Latin; + $pkg.Lepcha = _Lepcha; + $pkg.Limbu = _Limbu; + $pkg.Linear_A = _Linear_A; + $pkg.Linear_B = _Linear_B; + $pkg.Lisu = _Lisu; + $pkg.Lycian = _Lycian; + $pkg.Lydian = _Lydian; + $pkg.Mahajani = _Mahajani; + $pkg.Malayalam = _Malayalam; + $pkg.Mandaic = _Mandaic; + $pkg.Manichaean = _Manichaean; + $pkg.Marchen = _Marchen; + $pkg.Masaram_Gondi = _Masaram_Gondi; + $pkg.Meetei_Mayek = _Meetei_Mayek; + $pkg.Mende_Kikakui = _Mende_Kikakui; + $pkg.Meroitic_Cursive = _Meroitic_Cursive; + $pkg.Meroitic_Hieroglyphs = _Meroitic_Hieroglyphs; + $pkg.Miao = _Miao; + $pkg.Modi = _Modi; + $pkg.Mongolian = _Mongolian; + $pkg.Mro = _Mro; + $pkg.Multani = _Multani; + $pkg.Myanmar = _Myanmar; + $pkg.Nabataean = _Nabataean; + $pkg.New_Tai_Lue = _New_Tai_Lue; + $pkg.Newa = _Newa; + $pkg.Nko = _Nko; + $pkg.Nushu = _Nushu; + $pkg.Ogham = _Ogham; + $pkg.Ol_Chiki = _Ol_Chiki; + $pkg.Old_Hungarian = _Old_Hungarian; + $pkg.Old_Italic = _Old_Italic; + $pkg.Old_North_Arabian = _Old_North_Arabian; + $pkg.Old_Permic = _Old_Permic; + $pkg.Old_Persian = _Old_Persian; + $pkg.Old_South_Arabian = _Old_South_Arabian; + $pkg.Old_Turkic = _Old_Turkic; + $pkg.Oriya = _Oriya; + $pkg.Osage = _Osage; + $pkg.Osmanya = _Osmanya; + $pkg.Pahawh_Hmong = _Pahawh_Hmong; + $pkg.Palmyrene = _Palmyrene; + $pkg.Pau_Cin_Hau = _Pau_Cin_Hau; + $pkg.Phags_Pa = _Phags_Pa; + $pkg.Phoenician = _Phoenician; + $pkg.Psalter_Pahlavi = _Psalter_Pahlavi; + $pkg.Rejang = _Rejang; + $pkg.Runic = _Runic; + $pkg.Samaritan = _Samaritan; + $pkg.Saurashtra = _Saurashtra; + $pkg.Sharada = _Sharada; + $pkg.Shavian = _Shavian; + $pkg.Siddham = _Siddham; + $pkg.SignWriting = _SignWriting; + $pkg.Sinhala = _Sinhala; + $pkg.Sora_Sompeng = _Sora_Sompeng; + $pkg.Soyombo = _Soyombo; + $pkg.Sundanese = _Sundanese; + $pkg.Syloti_Nagri = _Syloti_Nagri; + $pkg.Syriac = _Syriac; + $pkg.Tagalog = _Tagalog; + $pkg.Tagbanwa = _Tagbanwa; + $pkg.Tai_Le = _Tai_Le; + $pkg.Tai_Tham = _Tai_Tham; + $pkg.Tai_Viet = _Tai_Viet; + $pkg.Takri = _Takri; + $pkg.Tamil = _Tamil; + $pkg.Tangut = _Tangut; + $pkg.Telugu = _Telugu; + $pkg.Thaana = _Thaana; + $pkg.Thai = _Thai; + $pkg.Tibetan = _Tibetan; + $pkg.Tifinagh = _Tifinagh; + $pkg.Tirhuta = _Tirhuta; + $pkg.Ugaritic = _Ugaritic; + $pkg.Vai = _Vai; + $pkg.Warang_Citi = _Warang_Citi; + $pkg.Yi = _Yi; + $pkg.Zanabazar_Square = _Zanabazar_Square; + $pkg.Scripts = $makeMap($String.keyFor, [{ k: "Adlam", v: $pkg.Adlam }, { k: "Ahom", v: $pkg.Ahom }, { k: "Anatolian_Hieroglyphs", v: $pkg.Anatolian_Hieroglyphs }, { k: "Arabic", v: $pkg.Arabic }, { k: "Armenian", v: $pkg.Armenian }, { k: "Avestan", v: $pkg.Avestan }, { k: "Balinese", v: $pkg.Balinese }, { k: "Bamum", v: $pkg.Bamum }, { k: "Bassa_Vah", v: $pkg.Bassa_Vah }, { k: "Batak", v: $pkg.Batak }, { k: "Bengali", v: $pkg.Bengali }, { k: "Bhaiksuki", v: $pkg.Bhaiksuki }, { k: "Bopomofo", v: $pkg.Bopomofo }, { k: "Brahmi", v: $pkg.Brahmi }, { k: "Braille", v: $pkg.Braille }, { k: "Buginese", v: $pkg.Buginese }, { k: "Buhid", v: $pkg.Buhid }, { k: "Canadian_Aboriginal", v: $pkg.Canadian_Aboriginal }, { k: "Carian", v: $pkg.Carian }, { k: "Caucasian_Albanian", v: $pkg.Caucasian_Albanian }, { k: "Chakma", v: $pkg.Chakma }, { k: "Cham", v: $pkg.Cham }, { k: "Cherokee", v: $pkg.Cherokee }, { k: "Common", v: $pkg.Common }, { k: "Coptic", v: $pkg.Coptic }, { k: "Cuneiform", v: $pkg.Cuneiform }, { k: "Cypriot", v: $pkg.Cypriot }, { k: "Cyrillic", v: $pkg.Cyrillic }, { k: "Deseret", v: $pkg.Deseret }, { k: "Devanagari", v: $pkg.Devanagari }, { k: "Duployan", v: $pkg.Duployan }, { k: "Egyptian_Hieroglyphs", v: $pkg.Egyptian_Hieroglyphs }, { k: "Elbasan", v: $pkg.Elbasan }, { k: "Ethiopic", v: $pkg.Ethiopic }, { k: "Georgian", v: $pkg.Georgian }, { k: "Glagolitic", v: $pkg.Glagolitic }, { k: "Gothic", v: $pkg.Gothic }, { k: "Grantha", v: $pkg.Grantha }, { k: "Greek", v: $pkg.Greek }, { k: "Gujarati", v: $pkg.Gujarati }, { k: "Gurmukhi", v: $pkg.Gurmukhi }, { k: "Han", v: $pkg.Han }, { k: "Hangul", v: $pkg.Hangul }, { k: "Hanunoo", v: $pkg.Hanunoo }, { k: "Hatran", v: $pkg.Hatran }, { k: "Hebrew", v: $pkg.Hebrew }, { k: "Hiragana", v: $pkg.Hiragana }, { k: "Imperial_Aramaic", v: $pkg.Imperial_Aramaic }, { k: "Inherited", v: $pkg.Inherited }, { k: "Inscriptional_Pahlavi", v: $pkg.Inscriptional_Pahlavi }, { k: "Inscriptional_Parthian", v: $pkg.Inscriptional_Parthian }, { k: "Javanese", v: $pkg.Javanese }, { k: "Kaithi", v: $pkg.Kaithi }, { k: "Kannada", v: $pkg.Kannada }, { k: "Katakana", v: $pkg.Katakana }, { k: "Kayah_Li", v: $pkg.Kayah_Li }, { k: "Kharoshthi", v: $pkg.Kharoshthi }, { k: "Khmer", v: $pkg.Khmer }, { k: "Khojki", v: $pkg.Khojki }, { k: "Khudawadi", v: $pkg.Khudawadi }, { k: "Lao", v: $pkg.Lao }, { k: "Latin", v: $pkg.Latin }, { k: "Lepcha", v: $pkg.Lepcha }, { k: "Limbu", v: $pkg.Limbu }, { k: "Linear_A", v: $pkg.Linear_A }, { k: "Linear_B", v: $pkg.Linear_B }, { k: "Lisu", v: $pkg.Lisu }, { k: "Lycian", v: $pkg.Lycian }, { k: "Lydian", v: $pkg.Lydian }, { k: "Mahajani", v: $pkg.Mahajani }, { k: "Malayalam", v: $pkg.Malayalam }, { k: "Mandaic", v: $pkg.Mandaic }, { k: "Manichaean", v: $pkg.Manichaean }, { k: "Marchen", v: $pkg.Marchen }, { k: "Masaram_Gondi", v: $pkg.Masaram_Gondi }, { k: "Meetei_Mayek", v: $pkg.Meetei_Mayek }, { k: "Mende_Kikakui", v: $pkg.Mende_Kikakui }, { k: "Meroitic_Cursive", v: $pkg.Meroitic_Cursive }, { k: "Meroitic_Hieroglyphs", v: $pkg.Meroitic_Hieroglyphs }, { k: "Miao", v: $pkg.Miao }, { k: "Modi", v: $pkg.Modi }, { k: "Mongolian", v: $pkg.Mongolian }, { k: "Mro", v: $pkg.Mro }, { k: "Multani", v: $pkg.Multani }, { k: "Myanmar", v: $pkg.Myanmar }, { k: "Nabataean", v: $pkg.Nabataean }, { k: "New_Tai_Lue", v: $pkg.New_Tai_Lue }, { k: "Newa", v: $pkg.Newa }, { k: "Nko", v: $pkg.Nko }, { k: "Nushu", v: $pkg.Nushu }, { k: "Ogham", v: $pkg.Ogham }, { k: "Ol_Chiki", v: $pkg.Ol_Chiki }, { k: "Old_Hungarian", v: $pkg.Old_Hungarian }, { k: "Old_Italic", v: $pkg.Old_Italic }, { k: "Old_North_Arabian", v: $pkg.Old_North_Arabian }, { k: "Old_Permic", v: $pkg.Old_Permic }, { k: "Old_Persian", v: $pkg.Old_Persian }, { k: "Old_South_Arabian", v: $pkg.Old_South_Arabian }, { k: "Old_Turkic", v: $pkg.Old_Turkic }, { k: "Oriya", v: $pkg.Oriya }, { k: "Osage", v: $pkg.Osage }, { k: "Osmanya", v: $pkg.Osmanya }, { k: "Pahawh_Hmong", v: $pkg.Pahawh_Hmong }, { k: "Palmyrene", v: $pkg.Palmyrene }, { k: "Pau_Cin_Hau", v: $pkg.Pau_Cin_Hau }, { k: "Phags_Pa", v: $pkg.Phags_Pa }, { k: "Phoenician", v: $pkg.Phoenician }, { k: "Psalter_Pahlavi", v: $pkg.Psalter_Pahlavi }, { k: "Rejang", v: $pkg.Rejang }, { k: "Runic", v: $pkg.Runic }, { k: "Samaritan", v: $pkg.Samaritan }, { k: "Saurashtra", v: $pkg.Saurashtra }, { k: "Sharada", v: $pkg.Sharada }, { k: "Shavian", v: $pkg.Shavian }, { k: "Siddham", v: $pkg.Siddham }, { k: "SignWriting", v: $pkg.SignWriting }, { k: "Sinhala", v: $pkg.Sinhala }, { k: "Sora_Sompeng", v: $pkg.Sora_Sompeng }, { k: "Soyombo", v: $pkg.Soyombo }, { k: "Sundanese", v: $pkg.Sundanese }, { k: "Syloti_Nagri", v: $pkg.Syloti_Nagri }, { k: "Syriac", v: $pkg.Syriac }, { k: "Tagalog", v: $pkg.Tagalog }, { k: "Tagbanwa", v: $pkg.Tagbanwa }, { k: "Tai_Le", v: $pkg.Tai_Le }, { k: "Tai_Tham", v: $pkg.Tai_Tham }, { k: "Tai_Viet", v: $pkg.Tai_Viet }, { k: "Takri", v: $pkg.Takri }, { k: "Tamil", v: $pkg.Tamil }, { k: "Tangut", v: $pkg.Tangut }, { k: "Telugu", v: $pkg.Telugu }, { k: "Thaana", v: $pkg.Thaana }, { k: "Thai", v: $pkg.Thai }, { k: "Tibetan", v: $pkg.Tibetan }, { k: "Tifinagh", v: $pkg.Tifinagh }, { k: "Tirhuta", v: $pkg.Tirhuta }, { k: "Ugaritic", v: $pkg.Ugaritic }, { k: "Vai", v: $pkg.Vai }, { k: "Warang_Citi", v: $pkg.Warang_Citi }, { k: "Yi", v: $pkg.Yi }, { k: "Zanabazar_Square", v: $pkg.Zanabazar_Square }]); + _CaseRanges = new sliceType$3([new CaseRange.ptr(65, 90, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(97, 122, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(181, 181, $toNativeArray($kindInt32, [743, 0, 743])), new CaseRange.ptr(192, 214, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(216, 222, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(224, 246, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(248, 254, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(255, 255, $toNativeArray($kindInt32, [121, 0, 121])), new CaseRange.ptr(256, 303, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(304, 304, $toNativeArray($kindInt32, [0, -199, 0])), new CaseRange.ptr(305, 305, $toNativeArray($kindInt32, [-232, 0, -232])), new CaseRange.ptr(306, 311, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(313, 328, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(330, 375, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(376, 376, $toNativeArray($kindInt32, [0, -121, 0])), new CaseRange.ptr(377, 382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(383, 383, $toNativeArray($kindInt32, [-300, 0, -300])), new CaseRange.ptr(384, 384, $toNativeArray($kindInt32, [195, 0, 195])), new CaseRange.ptr(385, 385, $toNativeArray($kindInt32, [0, 210, 0])), new CaseRange.ptr(386, 389, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(390, 390, $toNativeArray($kindInt32, [0, 206, 0])), new CaseRange.ptr(391, 392, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(393, 394, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(395, 396, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(398, 398, $toNativeArray($kindInt32, [0, 79, 0])), new CaseRange.ptr(399, 399, $toNativeArray($kindInt32, [0, 202, 0])), new CaseRange.ptr(400, 400, $toNativeArray($kindInt32, [0, 203, 0])), new CaseRange.ptr(401, 402, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(403, 403, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(404, 404, $toNativeArray($kindInt32, [0, 207, 0])), new CaseRange.ptr(405, 405, $toNativeArray($kindInt32, [97, 0, 97])), new CaseRange.ptr(406, 406, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(407, 407, $toNativeArray($kindInt32, [0, 209, 0])), new CaseRange.ptr(408, 409, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(410, 410, $toNativeArray($kindInt32, [163, 0, 163])), new CaseRange.ptr(412, 412, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(413, 413, $toNativeArray($kindInt32, [0, 213, 0])), new CaseRange.ptr(414, 414, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(415, 415, $toNativeArray($kindInt32, [0, 214, 0])), new CaseRange.ptr(416, 421, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(422, 422, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(423, 424, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(425, 425, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(428, 429, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(430, 430, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(431, 432, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(433, 434, $toNativeArray($kindInt32, [0, 217, 0])), new CaseRange.ptr(435, 438, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(439, 439, $toNativeArray($kindInt32, [0, 219, 0])), new CaseRange.ptr(440, 441, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(444, 445, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(447, 447, $toNativeArray($kindInt32, [56, 0, 56])), new CaseRange.ptr(452, 452, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(453, 453, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(454, 454, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(455, 455, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(456, 456, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(457, 457, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(458, 458, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(459, 459, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(460, 460, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(461, 476, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(477, 477, $toNativeArray($kindInt32, [-79, 0, -79])), new CaseRange.ptr(478, 495, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(497, 497, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(498, 498, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(499, 499, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(500, 501, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(502, 502, $toNativeArray($kindInt32, [0, -97, 0])), new CaseRange.ptr(503, 503, $toNativeArray($kindInt32, [0, -56, 0])), new CaseRange.ptr(504, 543, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(544, 544, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(546, 563, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(570, 570, $toNativeArray($kindInt32, [0, 10795, 0])), new CaseRange.ptr(571, 572, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(573, 573, $toNativeArray($kindInt32, [0, -163, 0])), new CaseRange.ptr(574, 574, $toNativeArray($kindInt32, [0, 10792, 0])), new CaseRange.ptr(575, 576, $toNativeArray($kindInt32, [10815, 0, 10815])), new CaseRange.ptr(577, 578, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(579, 579, $toNativeArray($kindInt32, [0, -195, 0])), new CaseRange.ptr(580, 580, $toNativeArray($kindInt32, [0, 69, 0])), new CaseRange.ptr(581, 581, $toNativeArray($kindInt32, [0, 71, 0])), new CaseRange.ptr(582, 591, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(592, 592, $toNativeArray($kindInt32, [10783, 0, 10783])), new CaseRange.ptr(593, 593, $toNativeArray($kindInt32, [10780, 0, 10780])), new CaseRange.ptr(594, 594, $toNativeArray($kindInt32, [10782, 0, 10782])), new CaseRange.ptr(595, 595, $toNativeArray($kindInt32, [-210, 0, -210])), new CaseRange.ptr(596, 596, $toNativeArray($kindInt32, [-206, 0, -206])), new CaseRange.ptr(598, 599, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(601, 601, $toNativeArray($kindInt32, [-202, 0, -202])), new CaseRange.ptr(603, 603, $toNativeArray($kindInt32, [-203, 0, -203])), new CaseRange.ptr(604, 604, $toNativeArray($kindInt32, [42319, 0, 42319])), new CaseRange.ptr(608, 608, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(609, 609, $toNativeArray($kindInt32, [42315, 0, 42315])), new CaseRange.ptr(611, 611, $toNativeArray($kindInt32, [-207, 0, -207])), new CaseRange.ptr(613, 613, $toNativeArray($kindInt32, [42280, 0, 42280])), new CaseRange.ptr(614, 614, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(616, 616, $toNativeArray($kindInt32, [-209, 0, -209])), new CaseRange.ptr(617, 617, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(618, 618, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(619, 619, $toNativeArray($kindInt32, [10743, 0, 10743])), new CaseRange.ptr(620, 620, $toNativeArray($kindInt32, [42305, 0, 42305])), new CaseRange.ptr(623, 623, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(625, 625, $toNativeArray($kindInt32, [10749, 0, 10749])), new CaseRange.ptr(626, 626, $toNativeArray($kindInt32, [-213, 0, -213])), new CaseRange.ptr(629, 629, $toNativeArray($kindInt32, [-214, 0, -214])), new CaseRange.ptr(637, 637, $toNativeArray($kindInt32, [10727, 0, 10727])), new CaseRange.ptr(640, 640, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(643, 643, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(647, 647, $toNativeArray($kindInt32, [42282, 0, 42282])), new CaseRange.ptr(648, 648, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(649, 649, $toNativeArray($kindInt32, [-69, 0, -69])), new CaseRange.ptr(650, 651, $toNativeArray($kindInt32, [-217, 0, -217])), new CaseRange.ptr(652, 652, $toNativeArray($kindInt32, [-71, 0, -71])), new CaseRange.ptr(658, 658, $toNativeArray($kindInt32, [-219, 0, -219])), new CaseRange.ptr(669, 669, $toNativeArray($kindInt32, [42261, 0, 42261])), new CaseRange.ptr(670, 670, $toNativeArray($kindInt32, [42258, 0, 42258])), new CaseRange.ptr(837, 837, $toNativeArray($kindInt32, [84, 0, 84])), new CaseRange.ptr(880, 883, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(886, 887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(891, 893, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(895, 895, $toNativeArray($kindInt32, [0, 116, 0])), new CaseRange.ptr(902, 902, $toNativeArray($kindInt32, [0, 38, 0])), new CaseRange.ptr(904, 906, $toNativeArray($kindInt32, [0, 37, 0])), new CaseRange.ptr(908, 908, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(910, 911, $toNativeArray($kindInt32, [0, 63, 0])), new CaseRange.ptr(913, 929, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(931, 939, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(940, 940, $toNativeArray($kindInt32, [-38, 0, -38])), new CaseRange.ptr(941, 943, $toNativeArray($kindInt32, [-37, 0, -37])), new CaseRange.ptr(945, 961, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(962, 962, $toNativeArray($kindInt32, [-31, 0, -31])), new CaseRange.ptr(963, 971, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(972, 972, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(973, 974, $toNativeArray($kindInt32, [-63, 0, -63])), new CaseRange.ptr(975, 975, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(976, 976, $toNativeArray($kindInt32, [-62, 0, -62])), new CaseRange.ptr(977, 977, $toNativeArray($kindInt32, [-57, 0, -57])), new CaseRange.ptr(981, 981, $toNativeArray($kindInt32, [-47, 0, -47])), new CaseRange.ptr(982, 982, $toNativeArray($kindInt32, [-54, 0, -54])), new CaseRange.ptr(983, 983, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(984, 1007, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1008, 1008, $toNativeArray($kindInt32, [-86, 0, -86])), new CaseRange.ptr(1009, 1009, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1010, 1010, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(1011, 1011, $toNativeArray($kindInt32, [-116, 0, -116])), new CaseRange.ptr(1012, 1012, $toNativeArray($kindInt32, [0, -60, 0])), new CaseRange.ptr(1013, 1013, $toNativeArray($kindInt32, [-96, 0, -96])), new CaseRange.ptr(1015, 1016, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1017, 1017, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(1018, 1019, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1021, 1023, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(1024, 1039, $toNativeArray($kindInt32, [0, 80, 0])), new CaseRange.ptr(1040, 1071, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(1072, 1103, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(1104, 1119, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1120, 1153, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1162, 1215, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1216, 1216, $toNativeArray($kindInt32, [0, 15, 0])), new CaseRange.ptr(1217, 1230, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1231, 1231, $toNativeArray($kindInt32, [-15, 0, -15])), new CaseRange.ptr(1232, 1327, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1329, 1366, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(1377, 1414, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(4256, 4293, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4295, 4295, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4301, 4301, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(5024, 5103, $toNativeArray($kindInt32, [0, 38864, 0])), new CaseRange.ptr(5104, 5109, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(5112, 5117, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(7296, 7296, $toNativeArray($kindInt32, [-6254, 0, -6254])), new CaseRange.ptr(7297, 7297, $toNativeArray($kindInt32, [-6253, 0, -6253])), new CaseRange.ptr(7298, 7298, $toNativeArray($kindInt32, [-6244, 0, -6244])), new CaseRange.ptr(7299, 7300, $toNativeArray($kindInt32, [-6242, 0, -6242])), new CaseRange.ptr(7301, 7301, $toNativeArray($kindInt32, [-6243, 0, -6243])), new CaseRange.ptr(7302, 7302, $toNativeArray($kindInt32, [-6236, 0, -6236])), new CaseRange.ptr(7303, 7303, $toNativeArray($kindInt32, [-6181, 0, -6181])), new CaseRange.ptr(7304, 7304, $toNativeArray($kindInt32, [35266, 0, 35266])), new CaseRange.ptr(7545, 7545, $toNativeArray($kindInt32, [35332, 0, 35332])), new CaseRange.ptr(7549, 7549, $toNativeArray($kindInt32, [3814, 0, 3814])), new CaseRange.ptr(7680, 7829, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7835, 7835, $toNativeArray($kindInt32, [-59, 0, -59])), new CaseRange.ptr(7838, 7838, $toNativeArray($kindInt32, [0, -7615, 0])), new CaseRange.ptr(7840, 7935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7936, 7943, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7944, 7951, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7952, 7957, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7960, 7965, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7968, 7975, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7976, 7983, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7984, 7991, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7992, 7999, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8000, 8005, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8008, 8013, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8017, 8017, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8019, 8019, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8021, 8021, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8023, 8023, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8025, 8025, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8027, 8027, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8029, 8029, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8031, 8031, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8032, 8039, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8040, 8047, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8048, 8049, $toNativeArray($kindInt32, [74, 0, 74])), new CaseRange.ptr(8050, 8053, $toNativeArray($kindInt32, [86, 0, 86])), new CaseRange.ptr(8054, 8055, $toNativeArray($kindInt32, [100, 0, 100])), new CaseRange.ptr(8056, 8057, $toNativeArray($kindInt32, [128, 0, 128])), new CaseRange.ptr(8058, 8059, $toNativeArray($kindInt32, [112, 0, 112])), new CaseRange.ptr(8060, 8061, $toNativeArray($kindInt32, [126, 0, 126])), new CaseRange.ptr(8064, 8071, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8072, 8079, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8080, 8087, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8088, 8095, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8096, 8103, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8104, 8111, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8112, 8113, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8115, 8115, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8120, 8121, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8122, 8123, $toNativeArray($kindInt32, [0, -74, 0])), new CaseRange.ptr(8124, 8124, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8126, 8126, $toNativeArray($kindInt32, [-7205, 0, -7205])), new CaseRange.ptr(8131, 8131, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8136, 8139, $toNativeArray($kindInt32, [0, -86, 0])), new CaseRange.ptr(8140, 8140, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8144, 8145, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8152, 8153, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8154, 8155, $toNativeArray($kindInt32, [0, -100, 0])), new CaseRange.ptr(8160, 8161, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8165, 8165, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(8168, 8169, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8170, 8171, $toNativeArray($kindInt32, [0, -112, 0])), new CaseRange.ptr(8172, 8172, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(8179, 8179, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8184, 8185, $toNativeArray($kindInt32, [0, -128, 0])), new CaseRange.ptr(8186, 8187, $toNativeArray($kindInt32, [0, -126, 0])), new CaseRange.ptr(8188, 8188, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8486, 8486, $toNativeArray($kindInt32, [0, -7517, 0])), new CaseRange.ptr(8490, 8490, $toNativeArray($kindInt32, [0, -8383, 0])), new CaseRange.ptr(8491, 8491, $toNativeArray($kindInt32, [0, -8262, 0])), new CaseRange.ptr(8498, 8498, $toNativeArray($kindInt32, [0, 28, 0])), new CaseRange.ptr(8526, 8526, $toNativeArray($kindInt32, [-28, 0, -28])), new CaseRange.ptr(8544, 8559, $toNativeArray($kindInt32, [0, 16, 0])), new CaseRange.ptr(8560, 8575, $toNativeArray($kindInt32, [-16, 0, -16])), new CaseRange.ptr(8579, 8580, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(9398, 9423, $toNativeArray($kindInt32, [0, 26, 0])), new CaseRange.ptr(9424, 9449, $toNativeArray($kindInt32, [-26, 0, -26])), new CaseRange.ptr(11264, 11310, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(11312, 11358, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(11360, 11361, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11362, 11362, $toNativeArray($kindInt32, [0, -10743, 0])), new CaseRange.ptr(11363, 11363, $toNativeArray($kindInt32, [0, -3814, 0])), new CaseRange.ptr(11364, 11364, $toNativeArray($kindInt32, [0, -10727, 0])), new CaseRange.ptr(11365, 11365, $toNativeArray($kindInt32, [-10795, 0, -10795])), new CaseRange.ptr(11366, 11366, $toNativeArray($kindInt32, [-10792, 0, -10792])), new CaseRange.ptr(11367, 11372, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11373, 11373, $toNativeArray($kindInt32, [0, -10780, 0])), new CaseRange.ptr(11374, 11374, $toNativeArray($kindInt32, [0, -10749, 0])), new CaseRange.ptr(11375, 11375, $toNativeArray($kindInt32, [0, -10783, 0])), new CaseRange.ptr(11376, 11376, $toNativeArray($kindInt32, [0, -10782, 0])), new CaseRange.ptr(11378, 11379, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11381, 11382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11390, 11391, $toNativeArray($kindInt32, [0, -10815, 0])), new CaseRange.ptr(11392, 11491, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11499, 11502, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11506, 11507, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11520, 11557, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11559, 11559, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11565, 11565, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(42560, 42605, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42624, 42651, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42786, 42799, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42802, 42863, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42873, 42876, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42877, 42877, $toNativeArray($kindInt32, [0, -35332, 0])), new CaseRange.ptr(42878, 42887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42891, 42892, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42893, 42893, $toNativeArray($kindInt32, [0, -42280, 0])), new CaseRange.ptr(42896, 42899, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42902, 42921, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42922, 42922, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42923, 42923, $toNativeArray($kindInt32, [0, -42319, 0])), new CaseRange.ptr(42924, 42924, $toNativeArray($kindInt32, [0, -42315, 0])), new CaseRange.ptr(42925, 42925, $toNativeArray($kindInt32, [0, -42305, 0])), new CaseRange.ptr(42926, 42926, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42928, 42928, $toNativeArray($kindInt32, [0, -42258, 0])), new CaseRange.ptr(42929, 42929, $toNativeArray($kindInt32, [0, -42282, 0])), new CaseRange.ptr(42930, 42930, $toNativeArray($kindInt32, [0, -42261, 0])), new CaseRange.ptr(42931, 42931, $toNativeArray($kindInt32, [0, 928, 0])), new CaseRange.ptr(42932, 42935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(43859, 43859, $toNativeArray($kindInt32, [-928, 0, -928])), new CaseRange.ptr(43888, 43967, $toNativeArray($kindInt32, [-38864, 0, -38864])), new CaseRange.ptr(65313, 65338, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(65345, 65370, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(66560, 66599, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66600, 66639, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(66736, 66771, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66776, 66811, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(68736, 68786, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(68800, 68850, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(71840, 71871, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(71872, 71903, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(125184, 125217, $toNativeArray($kindInt32, [0, 34, 0])), new CaseRange.ptr(125218, 125251, $toNativeArray($kindInt32, [-34, 0, -34]))]); + $pkg.CaseRanges = _CaseRanges; + properties = $toNativeArray($kindUint8, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 130, 130, 130, 136, 130, 130, 130, 130, 130, 130, 136, 130, 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 130, 130, 136, 136, 136, 130, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 130, 130, 130, 136, 130, 136, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 130, 136, 130, 136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 130, 136, 136, 136, 136, 136, 130, 136, 136, 224, 130, 136, 0, 136, 136, 136, 136, 132, 132, 136, 192, 130, 130, 136, 132, 224, 130, 132, 132, 132, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, 160, 160, 160, 160, 160, 160, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 136, 192, 192, 192, 192, 192, 192, 192, 192]); + asciiFold = $toNativeArray($kindUint16, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 8490, 76, 77, 78, 79, 80, 81, 82, 383, 84, 85, 86, 87, 88, 89, 90, 123, 124, 125, 126, 127]); + caseOrbit = new sliceType$4([new foldPair.ptr(75, 107), new foldPair.ptr(83, 115), new foldPair.ptr(107, 8490), new foldPair.ptr(115, 383), new foldPair.ptr(181, 924), new foldPair.ptr(197, 229), new foldPair.ptr(223, 7838), new foldPair.ptr(229, 8491), new foldPair.ptr(304, 304), new foldPair.ptr(305, 305), new foldPair.ptr(383, 83), new foldPair.ptr(452, 453), new foldPair.ptr(453, 454), new foldPair.ptr(454, 452), new foldPair.ptr(455, 456), new foldPair.ptr(456, 457), new foldPair.ptr(457, 455), new foldPair.ptr(458, 459), new foldPair.ptr(459, 460), new foldPair.ptr(460, 458), new foldPair.ptr(497, 498), new foldPair.ptr(498, 499), new foldPair.ptr(499, 497), new foldPair.ptr(837, 921), new foldPair.ptr(914, 946), new foldPair.ptr(917, 949), new foldPair.ptr(920, 952), new foldPair.ptr(921, 953), new foldPair.ptr(922, 954), new foldPair.ptr(924, 956), new foldPair.ptr(928, 960), new foldPair.ptr(929, 961), new foldPair.ptr(931, 962), new foldPair.ptr(934, 966), new foldPair.ptr(937, 969), new foldPair.ptr(946, 976), new foldPair.ptr(949, 1013), new foldPair.ptr(952, 977), new foldPair.ptr(953, 8126), new foldPair.ptr(954, 1008), new foldPair.ptr(956, 181), new foldPair.ptr(960, 982), new foldPair.ptr(961, 1009), new foldPair.ptr(962, 963), new foldPair.ptr(963, 931), new foldPair.ptr(966, 981), new foldPair.ptr(969, 8486), new foldPair.ptr(976, 914), new foldPair.ptr(977, 1012), new foldPair.ptr(981, 934), new foldPair.ptr(982, 928), new foldPair.ptr(1008, 922), new foldPair.ptr(1009, 929), new foldPair.ptr(1012, 920), new foldPair.ptr(1013, 917), new foldPair.ptr(1042, 1074), new foldPair.ptr(1044, 1076), new foldPair.ptr(1054, 1086), new foldPair.ptr(1057, 1089), new foldPair.ptr(1058, 1090), new foldPair.ptr(1066, 1098), new foldPair.ptr(1074, 7296), new foldPair.ptr(1076, 7297), new foldPair.ptr(1086, 7298), new foldPair.ptr(1089, 7299), new foldPair.ptr(1090, 7300), new foldPair.ptr(1098, 7302), new foldPair.ptr(1122, 1123), new foldPair.ptr(1123, 7303), new foldPair.ptr(7296, 1042), new foldPair.ptr(7297, 1044), new foldPair.ptr(7298, 1054), new foldPair.ptr(7299, 1057), new foldPair.ptr(7300, 7301), new foldPair.ptr(7301, 1058), new foldPair.ptr(7302, 1066), new foldPair.ptr(7303, 1122), new foldPair.ptr(7304, 42570), new foldPair.ptr(7776, 7777), new foldPair.ptr(7777, 7835), new foldPair.ptr(7835, 7776), new foldPair.ptr(7838, 223), new foldPair.ptr(8126, 837), new foldPair.ptr(8486, 937), new foldPair.ptr(8490, 75), new foldPair.ptr(8491, 197), new foldPair.ptr(42570, 42571), new foldPair.ptr(42571, 7304)]); + foldL = new RangeTable.ptr(new sliceType([new Range16.ptr(837, 837, 1)]), sliceType$1.nil, 0); + foldLl = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 302, 2), new Range16.ptr(306, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 453, 1), new Range16.ptr(455, 456, 1), new Range16.ptr(458, 459, 1), new Range16.ptr(461, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 498, 1), new Range16.ptr(500, 502, 2), new Range16.ptr(503, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(837, 880, 43), new Range16.ptr(882, 886, 4), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 984, 9), new Range16.ptr(986, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(5024, 5109, 1), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8072, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8120, 8124, 1), new Range16.ptr(8136, 8140, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8188, 1), new Range16.ptr(8486, 8490, 4), new Range16.ptr(8491, 8498, 7), new Range16.ptr(8579, 11264, 2685), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42926, 1), new Range16.ptr(42928, 42932, 1), new Range16.ptr(42934, 65313, 22379), new Range16.ptr(65314, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(71840, 71871, 1), new Range32.ptr(125184, 125217, 1)]), 3); + foldLt = new RangeTable.ptr(new sliceType([new Range16.ptr(452, 454, 2), new Range16.ptr(455, 457, 2), new Range16.ptr(458, 460, 2), new Range16.ptr(497, 499, 2), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8115, 8131, 16), new Range16.ptr(8179, 8179, 1)]), sliceType$1.nil, 0); + foldLu = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 303, 2), new Range16.ptr(307, 311, 2), new Range16.ptr(314, 328, 2), new Range16.ptr(331, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(402, 405, 3), new Range16.ptr(409, 410, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 429, 5), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(445, 447, 2), new Range16.ptr(453, 454, 1), new Range16.ptr(456, 457, 1), new Range16.ptr(459, 460, 1), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(498, 499, 1), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 543, 2), new Range16.ptr(547, 563, 2), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 596, 1), new Range16.ptr(598, 599, 1), new Range16.ptr(601, 603, 2), new Range16.ptr(604, 608, 4), new Range16.ptr(609, 613, 2), new Range16.ptr(614, 616, 2), new Range16.ptr(617, 620, 1), new Range16.ptr(623, 625, 2), new Range16.ptr(626, 629, 3), new Range16.ptr(637, 643, 3), new Range16.ptr(647, 652, 1), new Range16.ptr(658, 669, 11), new Range16.ptr(670, 837, 167), new Range16.ptr(881, 883, 2), new Range16.ptr(887, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(940, 943, 1), new Range16.ptr(945, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1072, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1414, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7545, 7549, 4), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7835, 7841, 6), new Range16.ptr(7843, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8017, 8023, 2), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8112, 8113, 1), new Range16.ptr(8126, 8144, 18), new Range16.ptr(8145, 8160, 15), new Range16.ptr(8161, 8165, 4), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11379, 11382, 3), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11500, 11502, 2), new Range16.ptr(11507, 11520, 13), new Range16.ptr(11521, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42803, 42863, 2), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42897, 5), new Range16.ptr(42899, 42903, 4), new Range16.ptr(42905, 42921, 2), new Range16.ptr(42933, 42935, 2), new Range16.ptr(43859, 43888, 29), new Range16.ptr(43889, 43967, 1), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(71872, 71903, 1), new Range32.ptr(125218, 125251, 1)]), 4); + foldM = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); + foldMn = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); + $pkg.FoldCategory = $makeMap($String.keyFor, [{ k: "L", v: foldL }, { k: "Ll", v: foldLl }, { k: "Lt", v: foldLt }, { k: "Lu", v: foldLu }, { k: "M", v: foldM }, { k: "Mn", v: foldMn }]); + foldCommon = new RangeTable.ptr(new sliceType([new Range16.ptr(924, 956, 32)]), sliceType$1.nil, 0); + foldGreek = new RangeTable.ptr(new sliceType([new Range16.ptr(181, 837, 656)]), sliceType$1.nil, 0); + foldInherited = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); + $pkg.FoldScript = $makeMap($String.keyFor, [{ k: "Common", v: foldCommon }, { k: "Greek", v: foldGreek }, { k: "Inherited", v: foldInherited }]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["reflect"] = (function() { + var $pkg = {}, $init, errors, js, math, runtime, strconv, sync, unicode, utf8, uncommonType, funcType, name, nameData, mapIter, Type, Kind, tflag, rtype, typeAlg, method, ChanDir, arrayType, chanType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, Method, nameOff, typeOff, textOff, StructField, StructTag, fieldScan, Value, flag, ValueError, MapIter, sliceType$1, ptrType$1, sliceType$2, sliceType$3, ptrType$2, funcType$1, sliceType$4, ptrType$3, ptrType$4, sliceType$5, sliceType$6, sliceType$7, ptrType$5, ptrType$6, structType$3, sliceType$8, sliceType$9, ptrType$7, ptrType$8, sliceType$10, sliceType$11, ptrType$9, ptrType$10, sliceType$13, sliceType$14, ptrType$11, sliceType$15, ptrType$17, sliceType$18, funcType$3, funcType$4, funcType$5, ptrType$18, arrayType$8, ptrType$19, ptrType$20, initialized, uncommonTypeMap, nameMap, nameOffList, typeOffList, callHelper, jsObjectPtr, selectHelper, kindNames, uint8Type, init, jsType, reflectType, setKindType, newName, newNameOff, newTypeOff, internalStr, isWrapped, copyStruct, makeValue, MakeSlice, TypeOf, ValueOf, FuncOf, SliceOf, Zero, unsafe_New, makeInt, typedmemmove, keyFor, mapaccess, mapassign, mapdelete, mapiterinit, mapiterkey, mapitervalue, mapiternext, maplen, cvtDirect, methodReceiver, valueInterface, ifaceE2I, methodName, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, chanrecv, chansend, PtrTo, implements$1, directlyAssignable, haveIdenticalType, haveIdenticalUnderlyingType, toType, ifaceIndir, copyVal, overflowFloat32, Indirect, New, convertOp, makeFloat, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + math = $packages["math"]; + runtime = $packages["runtime"]; + strconv = $packages["strconv"]; + sync = $packages["sync"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + uncommonType = $pkg.uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", true, "reflect", false, function(pkgPath_, mcount_, xcount_, moff_, _methods_) { + this.$val = this; + if (arguments.length === 0) { + this.pkgPath = 0; + this.mcount = 0; + this.xcount = 0; + this.moff = 0; + this._methods = sliceType$5.nil; + return; + } + this.pkgPath = pkgPath_; + this.mcount = mcount_; + this.xcount = xcount_; + this.moff = moff_; + this._methods = _methods_; + }); + funcType = $pkg.funcType = $newType(0, $kindStruct, "reflect.funcType", true, "reflect", false, function(rtype_, inCount_, outCount_, _in_, _out_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.inCount = 0; + this.outCount = 0; + this._in = sliceType$2.nil; + this._out = sliceType$2.nil; + return; + } + this.rtype = rtype_; + this.inCount = inCount_; + this.outCount = outCount_; + this._in = _in_; + this._out = _out_; + }); + name = $pkg.name = $newType(0, $kindStruct, "reflect.name", true, "reflect", false, function(bytes_) { + this.$val = this; + if (arguments.length === 0) { + this.bytes = ptrType$4.nil; + return; + } + this.bytes = bytes_; + }); + nameData = $pkg.nameData = $newType(0, $kindStruct, "reflect.nameData", true, "reflect", false, function(name_, tag_, exported_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.tag = ""; + this.exported = false; + return; + } + this.name = name_; + this.tag = tag_; + this.exported = exported_; + }); + mapIter = $pkg.mapIter = $newType(0, $kindStruct, "reflect.mapIter", true, "reflect", false, function(t_, m_, keys_, i_, last_) { + this.$val = this; + if (arguments.length === 0) { + this.t = $ifaceNil; + this.m = null; + this.keys = null; + this.i = 0; + this.last = null; + return; + } + this.t = t_; + this.m = m_; + this.keys = keys_; + this.i = i_; + this.last = last_; + }); + Type = $pkg.Type = $newType(8, $kindInterface, "reflect.Type", true, "reflect", true, null); + Kind = $pkg.Kind = $newType(4, $kindUint, "reflect.Kind", true, "reflect", true, null); + tflag = $pkg.tflag = $newType(1, $kindUint8, "reflect.tflag", true, "reflect", false, null); + rtype = $pkg.rtype = $newType(0, $kindStruct, "reflect.rtype", true, "reflect", false, function(size_, ptrdata_, hash_, tflag_, align_, fieldAlign_, kind_, alg_, gcdata_, str_, ptrToThis_) { + this.$val = this; + if (arguments.length === 0) { + this.size = 0; + this.ptrdata = 0; + this.hash = 0; + this.tflag = 0; + this.align = 0; + this.fieldAlign = 0; + this.kind = 0; + this.alg = ptrType$3.nil; + this.gcdata = ptrType$4.nil; + this.str = 0; + this.ptrToThis = 0; + return; + } + this.size = size_; + this.ptrdata = ptrdata_; + this.hash = hash_; + this.tflag = tflag_; + this.align = align_; + this.fieldAlign = fieldAlign_; + this.kind = kind_; + this.alg = alg_; + this.gcdata = gcdata_; + this.str = str_; + this.ptrToThis = ptrToThis_; + }); + typeAlg = $pkg.typeAlg = $newType(0, $kindStruct, "reflect.typeAlg", true, "reflect", false, function(hash_, equal_) { + this.$val = this; + if (arguments.length === 0) { + this.hash = $throwNilPointerError; + this.equal = $throwNilPointerError; + return; + } + this.hash = hash_; + this.equal = equal_; + }); + method = $pkg.method = $newType(0, $kindStruct, "reflect.method", true, "reflect", false, function(name_, mtyp_, ifn_, tfn_) { + this.$val = this; + if (arguments.length === 0) { + this.name = 0; + this.mtyp = 0; + this.ifn = 0; + this.tfn = 0; + return; + } + this.name = name_; + this.mtyp = mtyp_; + this.ifn = ifn_; + this.tfn = tfn_; + }); + ChanDir = $pkg.ChanDir = $newType(4, $kindInt, "reflect.ChanDir", true, "reflect", true, null); + arrayType = $pkg.arrayType = $newType(0, $kindStruct, "reflect.arrayType", true, "reflect", false, function(rtype_, elem_, slice_, len_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.elem = ptrType$1.nil; + this.slice = ptrType$1.nil; + this.len = 0; + return; + } + this.rtype = rtype_; + this.elem = elem_; + this.slice = slice_; + this.len = len_; + }); + chanType = $pkg.chanType = $newType(0, $kindStruct, "reflect.chanType", true, "reflect", false, function(rtype_, elem_, dir_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.elem = ptrType$1.nil; + this.dir = 0; + return; + } + this.rtype = rtype_; + this.elem = elem_; + this.dir = dir_; + }); + imethod = $pkg.imethod = $newType(0, $kindStruct, "reflect.imethod", true, "reflect", false, function(name_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.name = 0; + this.typ = 0; + return; + } + this.name = name_; + this.typ = typ_; + }); + interfaceType = $pkg.interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", true, "reflect", false, function(rtype_, pkgPath_, methods_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.pkgPath = new name.ptr(ptrType$4.nil); + this.methods = sliceType$6.nil; + return; + } + this.rtype = rtype_; + this.pkgPath = pkgPath_; + this.methods = methods_; + }); + mapType = $pkg.mapType = $newType(0, $kindStruct, "reflect.mapType", true, "reflect", false, function(rtype_, key_, elem_, bucket_, keysize_, valuesize_, bucketsize_, flags_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.key = ptrType$1.nil; + this.elem = ptrType$1.nil; + this.bucket = ptrType$1.nil; + this.keysize = 0; + this.valuesize = 0; + this.bucketsize = 0; + this.flags = 0; + return; + } + this.rtype = rtype_; + this.key = key_; + this.elem = elem_; + this.bucket = bucket_; + this.keysize = keysize_; + this.valuesize = valuesize_; + this.bucketsize = bucketsize_; + this.flags = flags_; + }); + ptrType = $pkg.ptrType = $newType(0, $kindStruct, "reflect.ptrType", true, "reflect", false, function(rtype_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.elem = ptrType$1.nil; + return; + } + this.rtype = rtype_; + this.elem = elem_; + }); + sliceType = $pkg.sliceType = $newType(0, $kindStruct, "reflect.sliceType", true, "reflect", false, function(rtype_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.elem = ptrType$1.nil; + return; + } + this.rtype = rtype_; + this.elem = elem_; + }); + structField = $pkg.structField = $newType(0, $kindStruct, "reflect.structField", true, "reflect", false, function(name_, typ_, offsetEmbed_) { + this.$val = this; + if (arguments.length === 0) { + this.name = new name.ptr(ptrType$4.nil); + this.typ = ptrType$1.nil; + this.offsetEmbed = 0; + return; + } + this.name = name_; + this.typ = typ_; + this.offsetEmbed = offsetEmbed_; + }); + structType = $pkg.structType = $newType(0, $kindStruct, "reflect.structType", true, "reflect", false, function(rtype_, pkgPath_, fields_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + this.pkgPath = new name.ptr(ptrType$4.nil); + this.fields = sliceType$7.nil; + return; + } + this.rtype = rtype_; + this.pkgPath = pkgPath_; + this.fields = fields_; + }); + Method = $pkg.Method = $newType(0, $kindStruct, "reflect.Method", true, "reflect", true, function(Name_, PkgPath_, Type_, Func_, Index_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.PkgPath = ""; + this.Type = $ifaceNil; + this.Func = new Value.ptr(ptrType$1.nil, 0, 0); + this.Index = 0; + return; + } + this.Name = Name_; + this.PkgPath = PkgPath_; + this.Type = Type_; + this.Func = Func_; + this.Index = Index_; + }); + nameOff = $pkg.nameOff = $newType(4, $kindInt32, "reflect.nameOff", true, "reflect", false, null); + typeOff = $pkg.typeOff = $newType(4, $kindInt32, "reflect.typeOff", true, "reflect", false, null); + textOff = $pkg.textOff = $newType(4, $kindInt32, "reflect.textOff", true, "reflect", false, null); + StructField = $pkg.StructField = $newType(0, $kindStruct, "reflect.StructField", true, "reflect", true, function(Name_, PkgPath_, Type_, Tag_, Offset_, Index_, Anonymous_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.PkgPath = ""; + this.Type = $ifaceNil; + this.Tag = ""; + this.Offset = 0; + this.Index = sliceType$13.nil; + this.Anonymous = false; + return; + } + this.Name = Name_; + this.PkgPath = PkgPath_; + this.Type = Type_; + this.Tag = Tag_; + this.Offset = Offset_; + this.Index = Index_; + this.Anonymous = Anonymous_; + }); + StructTag = $pkg.StructTag = $newType(8, $kindString, "reflect.StructTag", true, "reflect", true, null); + fieldScan = $pkg.fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", true, "reflect", false, function(typ_, index_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType$11.nil; + this.index = sliceType$13.nil; + return; + } + this.typ = typ_; + this.index = index_; + }); + Value = $pkg.Value = $newType(0, $kindStruct, "reflect.Value", true, "reflect", true, function(typ_, ptr_, flag_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType$1.nil; + this.ptr = 0; + this.flag = 0; + return; + } + this.typ = typ_; + this.ptr = ptr_; + this.flag = flag_; + }); + flag = $pkg.flag = $newType(4, $kindUintptr, "reflect.flag", true, "reflect", false, null); + ValueError = $pkg.ValueError = $newType(0, $kindStruct, "reflect.ValueError", true, "reflect", true, function(Method_, Kind_) { + this.$val = this; + if (arguments.length === 0) { + this.Method = ""; + this.Kind = 0; + return; + } + this.Method = Method_; + this.Kind = Kind_; + }); + MapIter = $pkg.MapIter = $newType(0, $kindStruct, "reflect.MapIter", true, "reflect", true, function(m_, it_) { + this.$val = this; + if (arguments.length === 0) { + this.m = new Value.ptr(ptrType$1.nil, 0, 0); + this.it = 0; + return; + } + this.m = m_; + this.it = it_; + }); + sliceType$1 = $sliceType(name); + ptrType$1 = $ptrType(rtype); + sliceType$2 = $sliceType(ptrType$1); + sliceType$3 = $sliceType($emptyInterface); + ptrType$2 = $ptrType(js.Object); + funcType$1 = $funcType([sliceType$3], [ptrType$2], true); + sliceType$4 = $sliceType($String); + ptrType$3 = $ptrType(typeAlg); + ptrType$4 = $ptrType($Uint8); + sliceType$5 = $sliceType(method); + sliceType$6 = $sliceType(imethod); + sliceType$7 = $sliceType(structField); + ptrType$5 = $ptrType(uncommonType); + ptrType$6 = $ptrType(nameData); + structType$3 = $structType("reflect", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + sliceType$8 = $sliceType(ptrType$2); + sliceType$9 = $sliceType(Value); + ptrType$7 = $ptrType(mapIter); + ptrType$8 = $ptrType(funcType); + sliceType$10 = $sliceType(Type); + sliceType$11 = $sliceType(sliceType$8); + ptrType$9 = $ptrType(interfaceType); + ptrType$10 = $ptrType(imethod); + sliceType$13 = $sliceType($Int); + sliceType$14 = $sliceType(fieldScan); + ptrType$11 = $ptrType(structType); + sliceType$15 = $sliceType($Uint8); + ptrType$17 = $ptrType($UnsafePointer); + sliceType$18 = $sliceType($Int32); + funcType$3 = $funcType([$String], [$Bool], false); + funcType$4 = $funcType([$UnsafePointer, $Uintptr], [$Uintptr], false); + funcType$5 = $funcType([$UnsafePointer, $UnsafePointer], [$Bool], false); + ptrType$18 = $ptrType(structField); + arrayType$8 = $arrayType($Uintptr, 2); + ptrType$19 = $ptrType(MapIter); + ptrType$20 = $ptrType(ValueError); + init = function() { + var used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; used = $f.used; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + used = (function(i) { + var i; + }); + $r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$1 = new uncommonType.ptr(0, 0, 0, 0, sliceType$5.nil), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$2 = new method.ptr(0, 0, 0, 0), new x$2.constructor.elem(x$2))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$3 = new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, 0), new x$3.constructor.elem(x$3))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$4 = new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, 0), new x$4.constructor.elem(x$4))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$5 = new funcType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), 0, 0, sliceType$2.nil, sliceType$2.nil), new x$5.constructor.elem(x$5))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$6 = new interfaceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new name.ptr(ptrType$4.nil), sliceType$6.nil), new x$6.constructor.elem(x$6))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$7 = new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0), new x$7.constructor.elem(x$7))); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$8 = new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil), new x$8.constructor.elem(x$8))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$9 = new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil), new x$9.constructor.elem(x$9))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$10 = new structType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new name.ptr(ptrType$4.nil), sliceType$7.nil), new x$10.constructor.elem(x$10))); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$11 = new imethod.ptr(0, 0), new x$11.constructor.elem(x$11))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$12 = new structField.ptr(new name.ptr(ptrType$4.nil), ptrType$1.nil, 0), new x$12.constructor.elem(x$12))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + initialized = true; + uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.used = used; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; + }; + jsType = function(typ) { + var typ; + return typ.jsType; + }; + reflectType = function(typ) { + var _1, _i, _i$1, _i$2, _i$3, _key, _ref, _ref$1, _ref$2, _ref$3, dir, exported, exported$1, f, fields, i, i$1, i$2, i$3, i$4, i$5, imethods, in$1, m, m$1, m$2, methodSet, methods, offsetEmbed, out, outCount, params, reflectFields, reflectMethods, results, rt, typ, ut, xcount; + if (typ.reflectType === undefined) { + rt = new rtype.ptr(((($parseInt(typ.size) >> 0) >>> 0)), 0, 0, 0, 0, 0, ((($parseInt(typ.kind) >> 0) << 24 >>> 24)), ptrType$3.nil, ptrType$4.nil, newNameOff($clone(newName(internalStr(typ.string), "", !!(typ.exported)), name)), 0); + rt.jsType = typ; + typ.reflectType = rt; + methodSet = $methodSet(typ); + if (!(($parseInt(methodSet.length) === 0)) || !!(typ.named)) { + rt.tflag = (rt.tflag | (1)) >>> 0; + if (!!(typ.named)) { + rt.tflag = (rt.tflag | (4)) >>> 0; + } + reflectMethods = sliceType$5.nil; + i = 0; + while (true) { + if (!(i < $parseInt(methodSet.length))) { break; } + m = methodSet[i]; + exported = internalStr(m.pkg) === ""; + if (!exported) { + i = i + (1) >> 0; + continue; + } + reflectMethods = $append(reflectMethods, new method.ptr(newNameOff($clone(newName(internalStr(m.name), "", exported), name)), newTypeOff(reflectType(m.typ)), 0, 0)); + i = i + (1) >> 0; + } + xcount = ((reflectMethods.$length << 16 >>> 16)); + i$1 = 0; + while (true) { + if (!(i$1 < $parseInt(methodSet.length))) { break; } + m$1 = methodSet[i$1]; + exported$1 = internalStr(m$1.pkg) === ""; + if (exported$1) { + i$1 = i$1 + (1) >> 0; + continue; + } + reflectMethods = $append(reflectMethods, new method.ptr(newNameOff($clone(newName(internalStr(m$1.name), "", exported$1), name)), newTypeOff(reflectType(m$1.typ)), 0, 0)); + i$1 = i$1 + (1) >> 0; + } + ut = new uncommonType.ptr(newNameOff($clone(newName(internalStr(typ.pkg), "", false), name)), (($parseInt(methodSet.length) << 16 >>> 16)), xcount, 0, reflectMethods); + _key = rt; (uncommonTypeMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: ut }; + ut.jsType = typ; + } + _1 = rt.Kind(); + if (_1 === (17)) { + setKindType(rt, new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem), ptrType$1.nil, ((($parseInt(typ.len) >> 0) >>> 0)))); + } else if (_1 === (18)) { + dir = 3; + if (!!(typ.sendOnly)) { + dir = 2; + } + if (!!(typ.recvOnly)) { + dir = 1; + } + setKindType(rt, new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem), ((dir >>> 0)))); + } else if (_1 === (19)) { + params = typ.params; + in$1 = $makeSlice(sliceType$2, $parseInt(params.length)); + _ref = in$1; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$2 = _i; + ((i$2 < 0 || i$2 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i$2] = reflectType(params[i$2])); + _i++; + } + results = typ.results; + out = $makeSlice(sliceType$2, $parseInt(results.length)); + _ref$1 = out; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$3 = _i$1; + ((i$3 < 0 || i$3 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$3] = reflectType(results[i$3])); + _i$1++; + } + outCount = (($parseInt(results.length) << 16 >>> 16)); + if (!!(typ.variadic)) { + outCount = (outCount | (32768)) >>> 0; + } + setKindType(rt, new funcType.ptr($clone(rt, rtype), (($parseInt(params.length) << 16 >>> 16)), outCount, in$1, out)); + } else if (_1 === (20)) { + methods = typ.methods; + imethods = $makeSlice(sliceType$6, $parseInt(methods.length)); + _ref$2 = imethods; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$4 = _i$2; + m$2 = methods[i$4]; + imethod.copy(((i$4 < 0 || i$4 >= imethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : imethods.$array[imethods.$offset + i$4]), new imethod.ptr(newNameOff($clone(newName(internalStr(m$2.name), "", internalStr(m$2.pkg) === ""), name)), newTypeOff(reflectType(m$2.typ)))); + _i$2++; + } + setKindType(rt, new interfaceType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkg), "", false), name), imethods)); + } else if (_1 === (21)) { + setKindType(rt, new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, 0, 0, 0, 0)); + } else if (_1 === (22)) { + setKindType(rt, new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem))); + } else if (_1 === (23)) { + setKindType(rt, new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem))); + } else if (_1 === (25)) { + fields = typ.fields; + reflectFields = $makeSlice(sliceType$7, $parseInt(fields.length)); + _ref$3 = reflectFields; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + i$5 = _i$3; + f = fields[i$5]; + offsetEmbed = ((i$5 >>> 0)) << 1 >>> 0; + if (!!(f.embedded)) { + offsetEmbed = (offsetEmbed | (1)) >>> 0; + } + structField.copy(((i$5 < 0 || i$5 >= reflectFields.$length) ? ($throwRuntimeError("index out of range"), undefined) : reflectFields.$array[reflectFields.$offset + i$5]), new structField.ptr($clone(newName(internalStr(f.name), internalStr(f.tag), !!(f.exported)), name), reflectType(f.typ), offsetEmbed)); + _i$3++; + } + setKindType(rt, new structType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkgPath), "", false), name), reflectFields)); + } + } + return ((typ.reflectType)); + }; + setKindType = function(rt, kindType) { + var kindType, rt; + rt.kindType = kindType; + kindType.rtype = rt; + }; + uncommonType.ptr.prototype.methods = function() { + var t; + t = this; + return t._methods; + }; + uncommonType.prototype.methods = function() { return this.$val.methods(); }; + uncommonType.ptr.prototype.exportedMethods = function() { + var t; + t = this; + return $subslice(t._methods, 0, t.xcount, t.xcount); + }; + uncommonType.prototype.exportedMethods = function() { return this.$val.exportedMethods(); }; + rtype.ptr.prototype.uncommon = function() { + var _entry, t; + t = this; + return (_entry = uncommonTypeMap[ptrType$1.keyFor(t)], _entry !== undefined ? _entry.v : ptrType$5.nil); + }; + rtype.prototype.uncommon = function() { return this.$val.uncommon(); }; + funcType.ptr.prototype.in$ = function() { + var t; + t = this; + return t._in; + }; + funcType.prototype.in$ = function() { return this.$val.in$(); }; + funcType.ptr.prototype.out = function() { + var t; + t = this; + return t._out; + }; + funcType.prototype.out = function() { return this.$val.out(); }; + name.ptr.prototype.name = function() { + var _entry, n, s; + s = ""; + n = this; + s = (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).name; + return s; + }; + name.prototype.name = function() { return this.$val.name(); }; + name.ptr.prototype.tag = function() { + var _entry, n, s; + s = ""; + n = this; + s = (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).tag; + return s; + }; + name.prototype.tag = function() { return this.$val.tag(); }; + name.ptr.prototype.pkgPath = function() { + var n; + n = this; + return ""; + }; + name.prototype.pkgPath = function() { return this.$val.pkgPath(); }; + name.ptr.prototype.isExported = function() { + var _entry, n; + n = this; + return (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).exported; + }; + name.prototype.isExported = function() { return this.$val.isExported(); }; + newName = function(n, tag, exported) { + var _key, b, exported, n, tag; + b = $newDataPointer(0, ptrType$4); + _key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$4.keyFor(_key)] = { k: _key, v: new nameData.ptr(n, tag, exported) }; + return new name.ptr(b); + }; + rtype.ptr.prototype.nameOff = function(off) { + var off, t, x; + t = this; + return (x = ((off >> 0)), ((x < 0 || x >= nameOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : nameOffList.$array[nameOffList.$offset + x])); + }; + rtype.prototype.nameOff = function(off) { return this.$val.nameOff(off); }; + newNameOff = function(n) { + var i, n; + i = nameOffList.$length; + nameOffList = $append(nameOffList, n); + return ((i >> 0)); + }; + rtype.ptr.prototype.typeOff = function(off) { + var off, t, x; + t = this; + return (x = ((off >> 0)), ((x < 0 || x >= typeOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeOffList.$array[typeOffList.$offset + x])); + }; + rtype.prototype.typeOff = function(off) { return this.$val.typeOff(off); }; + newTypeOff = function(t) { + var i, t; + i = typeOffList.$length; + typeOffList = $append(typeOffList, t); + return ((i >> 0)); + }; + internalStr = function(strObj) { + var c, strObj; + c = new structType$3.ptr(""); + c.str = strObj; + return c.str; + }; + isWrapped = function(typ) { + var typ; + return !!(jsType(typ).wrapped); + }; + copyStruct = function(dst, src, typ) { + var dst, fields, i, prop, src, typ; + fields = jsType(typ).fields; + i = 0; + while (true) { + if (!(i < $parseInt(fields.length))) { break; } + prop = $internalize(fields[i].prop, $String); + dst[$externalize(prop, $String)] = src[$externalize(prop, $String)]; + i = i + (1) >> 0; + } + }; + makeValue = function(t, v, fl) { + var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _v = $f._v; _v$1 = $f._v$1; fl = $f.fl; rt = $f.rt; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + rt = _r; + _r$1 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; } + _r$2 = t.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$2 === 25; case 5: + if (_v$1) { _v = true; $s = 4; continue s; } + _r$3 = t.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3 === 22; case 4: + /* */ if (_v) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_v) { */ case 2: + _r$4 = t.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $s = -1; return new Value.ptr(rt, (v), (fl | ((_r$4 >>> 0))) >>> 0); + /* } */ case 3: + _r$5 = t.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $s = -1; return new Value.ptr(rt, ($newDataPointer(v, jsType(rt.ptrTo()))), (((fl | ((_r$5 >>> 0))) >>> 0) | 128) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: makeValue }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._v = _v; $f._v$1 = _v$1; $f.fl = fl; $f.rt = rt; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + MakeSlice = function(typ, len, cap) { + var _r, _r$1, cap, len, typ, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; len = $f.len; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + typ = [typ]; + _r = typ[0].Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 23))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 23))) { */ case 1: + $panic(new $String("reflect.MakeSlice of non-slice type")); + /* } */ case 2: + if (len < 0) { + $panic(new $String("reflect.MakeSlice: negative len")); + } + if (cap < 0) { + $panic(new $String("reflect.MakeSlice: negative cap")); + } + if (len > cap) { + $panic(new $String("reflect.MakeSlice: len > cap")); + } + _r$1 = makeValue(typ[0], $makeSlice(jsType(typ[0]), len, cap, (function(typ) { return function $b() { + var _r$1, _r$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$1 = typ[0].Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2.zero(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f; + }; })(typ)), 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: MakeSlice }; } $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.len = len; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.MakeSlice = MakeSlice; + TypeOf = function(i) { + var i; + if (!initialized) { + return new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); + } + if ($interfaceIsEqual(i, $ifaceNil)) { + return $ifaceNil; + } + return reflectType(i.constructor); + }; + $pkg.TypeOf = TypeOf; + ValueOf = function(i) { + var _r, i, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(i, $ifaceNil)) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + _r = makeValue(reflectType(i.constructor), i.$val, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: ValueOf }; } $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.ValueOf = ValueOf; + FuncOf = function(in$1, out, variadic) { + var _i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$1, jsIn, jsOut, out, v, v$1, variadic, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _v = $f._v; _v$1 = $f._v$1; i = $f.i; i$1 = $f.i$1; in$1 = $f.in$1; jsIn = $f.jsIn; jsOut = $f.jsOut; out = $f.out; v = $f.v; v$1 = $f.v$1; variadic = $f.variadic; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (!(variadic)) { _v = false; $s = 3; continue s; } + if (in$1.$length === 0) { _v$1 = true; $s = 4; continue s; } + _r = (x = in$1.$length - 1 >> 0, ((x < 0 || x >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x])).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v$1 = !((_r === 23)); case 4: + _v = _v$1; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $panic(new $String("reflect.FuncOf: last arg of variadic func must be slice")); + /* } */ case 2: + jsIn = $makeSlice(sliceType$8, in$1.$length); + _ref = in$1; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= jsIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsIn.$array[jsIn.$offset + i] = jsType(v)); + _i++; + } + jsOut = $makeSlice(sliceType$8, out.$length); + _ref$1 = out; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + ((i$1 < 0 || i$1 >= jsOut.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsOut.$array[jsOut.$offset + i$1] = jsType(v$1)); + _i$1++; + } + $s = -1; return reflectType($funcType($externalize(jsIn, sliceType$8), $externalize(jsOut, sliceType$8), $externalize(variadic, $Bool))); + /* */ } return; } if ($f === undefined) { $f = { $blk: FuncOf }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._v = _v; $f._v$1 = _v$1; $f.i = i; $f.i$1 = i$1; $f.in$1 = in$1; $f.jsIn = jsIn; $f.jsOut = jsOut; $f.out = out; $f.v = v; $f.v$1 = v$1; $f.variadic = variadic; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.FuncOf = FuncOf; + rtype.ptr.prototype.ptrTo = function() { + var t; + t = this; + return reflectType($ptrType(jsType(t))); + }; + rtype.prototype.ptrTo = function() { return this.$val.ptrTo(); }; + SliceOf = function(t) { + var t; + return reflectType($sliceType(jsType(t))); + }; + $pkg.SliceOf = SliceOf; + Zero = function(typ) { + var _r, typ, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeValue(typ, jsType(typ).zero(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Zero }; } $f._r = _r; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Zero = Zero; + unsafe_New = function(typ) { + var _1, typ; + _1 = typ.Kind(); + if (_1 === (25)) { + return (new (jsType(typ).ptr)()); + } else if (_1 === (17)) { + return (jsType(typ).zero()); + } else { + return ($newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo()))); + } + }; + makeInt = function(f, bits, t) { + var _1, _r, bits, f, ptr, t, typ, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; bits = $f.bits; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + _1 = typ.Kind(); + if (_1 === (3)) { + (ptr).$set(((bits.$low << 24 >> 24))); + } else if (_1 === (4)) { + (ptr).$set(((bits.$low << 16 >> 16))); + } else if ((_1 === (2)) || (_1 === (5))) { + (ptr).$set(((bits.$low >> 0))); + } else if (_1 === (6)) { + (ptr).$set((new $Int64(bits.$high, bits.$low))); + } else if (_1 === (8)) { + (ptr).$set(((bits.$low << 24 >>> 24))); + } else if (_1 === (9)) { + (ptr).$set(((bits.$low << 16 >>> 16))); + } else if ((_1 === (7)) || (_1 === (10)) || (_1 === (12))) { + (ptr).$set(((bits.$low >>> 0))); + } else if (_1 === (11)) { + (ptr).$set((bits)); + } + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: makeInt }; } $f._1 = _1; $f._r = _r; $f.bits = bits; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; + }; + typedmemmove = function(t, dst, src) { + var dst, src, t; + dst.$set(src.$get()); + }; + keyFor = function(t, key) { + var k, key, kv, t; + kv = key; + if (!(kv.$get === undefined)) { + kv = kv.$get(); + } + k = $internalize(jsType(t.Key()).keyFor(kv), $String); + return [kv, k]; + }; + mapaccess = function(t, m, key) { + var _tuple, entry, k, key, m, t; + _tuple = keyFor(t, key); + k = _tuple[1]; + entry = m[$externalize(k, $String)]; + if (entry === undefined) { + return 0; + } + return ($newDataPointer(entry.v, jsType(PtrTo(t.Elem())))); + }; + mapassign = function(t, m, key, val) { + var _r, _tuple, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; entry = $f.entry; et = $f.et; jsVal = $f.jsVal; k = $f.k; key = $f.key; kv = $f.kv; m = $f.m; newVal = $f.newVal; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tuple = keyFor(t, key); + kv = _tuple[0]; + k = _tuple[1]; + jsVal = val.$get(); + et = t.Elem(); + _r = et.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 25) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r === 25) { */ case 1: + newVal = jsType(et).zero(); + copyStruct(newVal, jsVal, et); + jsVal = newVal; + /* } */ case 2: + entry = new ($global.Object)(); + entry.k = kv; + entry.v = jsVal; + m[$externalize(k, $String)] = entry; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: mapassign }; } $f._r = _r; $f._tuple = _tuple; $f.entry = entry; $f.et = et; $f.jsVal = jsVal; $f.k = k; $f.key = key; $f.kv = kv; $f.m = m; $f.newVal = newVal; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + mapdelete = function(t, m, key) { + var _tuple, k, key, m, t; + _tuple = keyFor(t, key); + k = _tuple[1]; + delete m[$externalize(k, $String)]; + }; + mapIter.ptr.prototype.skipUntilValidKey = function() { + var iter, k; + iter = this; + while (true) { + if (!(iter.i < $parseInt(iter.keys.length))) { break; } + k = iter.keys[iter.i]; + if (!(iter.m[$externalize($internalize(k, $String), $String)] === undefined)) { + break; + } + iter.i = iter.i + (1) >> 0; + } + }; + mapIter.prototype.skipUntilValidKey = function() { return this.$val.skipUntilValidKey(); }; + mapiterinit = function(t, m) { + var m, t; + return (new mapIter.ptr(t, m, $keys(m), 0, null)); + }; + mapiterkey = function(it) { + var _r, _r$1, _r$2, it, iter, k, kv, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; iter = $f.iter; k = $f.k; kv = $f.kv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + iter = ($pointerOfStructConversion(it, ptrType$7)); + kv = null; + if (!(iter.last === null)) { + kv = iter.last; + } else { + iter.skipUntilValidKey(); + if (iter.i === $parseInt(iter.keys.length)) { + $s = -1; return 0; + } + k = iter.keys[iter.i]; + kv = iter.m[$externalize($internalize(k, $String), $String)]; + iter.last = kv; + } + _r = iter.t.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return ($newDataPointer(kv.k, _r$2)); + /* */ } return; } if ($f === undefined) { $f = { $blk: mapiterkey }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.iter = iter; $f.k = k; $f.kv = kv; $f.$s = $s; $f.$r = $r; return $f; + }; + mapitervalue = function(it) { + var _r, _r$1, _r$2, it, iter, k, kv, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; iter = $f.iter; k = $f.k; kv = $f.kv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + iter = ($pointerOfStructConversion(it, ptrType$7)); + kv = null; + if (!(iter.last === null)) { + kv = iter.last; + } else { + iter.skipUntilValidKey(); + if (iter.i === $parseInt(iter.keys.length)) { + $s = -1; return 0; + } + k = iter.keys[iter.i]; + kv = iter.m[$externalize($internalize(k, $String), $String)]; + iter.last = kv; + } + _r = iter.t.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return ($newDataPointer(kv.v, _r$2)); + /* */ } return; } if ($f === undefined) { $f = { $blk: mapitervalue }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.iter = iter; $f.k = k; $f.kv = kv; $f.$s = $s; $f.$r = $r; return $f; + }; + mapiternext = function(it) { + var it, iter; + iter = ($pointerOfStructConversion(it, ptrType$7)); + iter.last = null; + iter.i = iter.i + (1) >> 0; + }; + maplen = function(m) { + var m; + return $parseInt($keys(m).length); + }; + cvtDirect = function(v, typ) { + var _1, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, k, slice, srcVal, typ, v, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; k = $f.k; slice = $f.slice; srcVal = $f.srcVal; typ = $f.typ; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + srcVal = $clone(v, Value).object(); + /* */ if (srcVal === jsType(v.typ).nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (srcVal === jsType(v.typ).nil) { */ case 1: + _r = makeValue(typ, jsType(typ).nil, v.flag); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + val = null; + _r$1 = typ.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + k = _r$1; + _1 = k; + /* */ if (_1 === (23)) { $s = 6; continue; } + /* */ if (_1 === (22)) { $s = 7; continue; } + /* */ if (_1 === (25)) { $s = 8; continue; } + /* */ if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_1 === (23)) { */ case 6: + slice = new (jsType(typ))(srcVal.$array); + slice.$offset = srcVal.$offset; + slice.$length = srcVal.$length; + slice.$capacity = srcVal.$capacity; + val = $newDataPointer(slice, jsType(PtrTo(typ))); + $s = 11; continue; + /* } else if (_1 === (22)) { */ case 7: + _r$2 = typ.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === 25) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_r$3 === 25) { */ case 12: + _r$4 = typ.Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(_r$4, v.typ.Elem())) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if ($interfaceIsEqual(_r$4, v.typ.Elem())) { */ case 16: + val = srcVal; + /* break; */ $s = 4; continue; + /* } */ case 17: + val = new (jsType(typ))(); + _arg = val; + _arg$1 = srcVal; + _r$5 = typ.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$2 = _r$5; + $r = copyStruct(_arg, _arg$1, _arg$2); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 4; continue; + /* } */ case 13: + val = new (jsType(typ))(srcVal.$get, srcVal.$set); + $s = 11; continue; + /* } else if (_1 === (25)) { */ case 8: + val = new (jsType(typ).ptr)(); + copyStruct(val, srcVal, typ); + $s = 11; continue; + /* } else if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { */ case 9: + val = v.ptr; + $s = 11; continue; + /* } else { */ case 10: + $panic(new ValueError.ptr("reflect.Convert", k)); + /* } */ case 11: + case 4: + _r$6 = typ.common(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = typ.Kind(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $s = -1; return new Value.ptr(_r$6, (val), (((new flag(v.flag).ro() | ((v.flag & 128) >>> 0)) >>> 0) | ((_r$7 >>> 0))) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtDirect }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.k = k; $f.slice = slice; $f.srcVal = srcVal; $f.typ = typ; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + methodReceiver = function(op, v, i) { + var _$39, fn, i, m, m$1, ms, op, prop, rcvr, t, tt, v, x; + _$39 = ptrType$1.nil; + t = ptrType$8.nil; + fn = 0; + prop = ""; + if (v.typ.Kind() === 20) { + tt = (v.typ.kindType); + if (i < 0 || i >= tt.methods.$length) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if (!$clone(tt.rtype.nameOff(m.name), name).isExported()) { + $panic(new $String("reflect: " + op + " of unexported method")); + } + t = (tt.rtype.typeOff(m.typ).kindType); + prop = $clone(tt.rtype.nameOff(m.name), name).name(); + } else { + ms = v.typ.exportedMethods(); + if (((i >>> 0)) >= ((ms.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); + if (!$clone(v.typ.nameOff(m$1.name), name).isExported()) { + $panic(new $String("reflect: " + op + " of unexported method")); + } + t = (v.typ.typeOff(m$1.mtyp).kindType); + prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String); + } + rcvr = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr = new (jsType(v.typ))(rcvr); + } + fn = (rcvr[$externalize(prop, $String)]); + return [_$39, t, fn]; + }; + valueInterface = function(v, safe) { + var _r, safe, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; safe = $f.safe; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (v.flag === 0) { + $panic(new ValueError.ptr("reflect.Value.Interface", 0)); + } + if (safe && !((((v.flag & 96) >>> 0) === 0))) { + $panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method")); + } + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue("Interface", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + if (isWrapped(v.typ)) { + $s = -1; return ((new (jsType(v.typ))($clone(v, Value).object()))); + } + $s = -1; return (($clone(v, Value).object())); + /* */ } return; } if ($f === undefined) { $f = { $blk: valueInterface }; } $f._r = _r; $f.safe = safe; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + ifaceE2I = function(t, src, dst) { + var dst, src, t; + dst.$set(src); + }; + methodName = function() { + return "?FIXME?"; + }; + makeMethodValue = function(op, v) { + var _r, _tuple, fn, fv, op, rcvr, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; fn = $f.fn; fv = $f.fv; op = $f.op; rcvr = $f.rcvr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fn = [fn]; + rcvr = [rcvr]; + if (((v.flag & 512) >>> 0) === 0) { + $panic(new $String("reflect: internal error: invalid use of makePartialFunc")); + } + _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); + fn[0] = _tuple[2]; + rcvr[0] = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr[0] = new (jsType(v.typ))(rcvr[0]); + } + fv = js.MakeFunc((function(fn, rcvr) { return function(this$1, arguments$1) { + var arguments$1, this$1; + return new $jsObjectPtr(fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$8))); + }; })(fn, rcvr)); + _r = $clone(v, Value).Type().common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return new Value.ptr(_r, (fv), (new flag(v.flag).ro() | 19) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: makeMethodValue }; } $f._r = _r; $f._tuple = _tuple; $f.fn = fn; $f.fv = fv; $f.op = op; $f.rcvr = rcvr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.ptr.prototype.pointers = function() { + var _1, t; + t = this; + _1 = t.Kind(); + if ((_1 === (22)) || (_1 === (21)) || (_1 === (18)) || (_1 === (19)) || (_1 === (25)) || (_1 === (17))) { + return true; + } else { + return false; + } + }; + rtype.prototype.pointers = function() { return this.$val.pointers(); }; + rtype.ptr.prototype.Comparable = function() { + var _1, _r, _r$1, i, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; i = $f.i; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _1 = t.Kind(); + /* */ if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { $s = 2; continue; } + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (25)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { */ case 2: + $s = -1; return false; + /* } else if (_1 === (17)) { */ case 3: + _r = t.Elem().Comparable(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } else if (_1 === (25)) { */ case 4: + i = 0; + /* while (true) { */ case 7: + /* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 8; continue; } + _r$1 = t.Field(i).Type.Comparable(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!_r$1) { */ case 9: + $s = -1; return false; + /* } */ case 10: + i = i + (1) >> 0; + /* } */ $s = 7; continue; case 8: + /* } */ case 5: + case 1: + $s = -1; return true; + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Comparable }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.Comparable = function() { return this.$val.Comparable(); }; + rtype.ptr.prototype.Method = function(i) { + var _i, _i$1, _r, _ref, _ref$1, arg, fl, fn, ft, i, in$1, m, methods, mt, mtyp, out, p, pname, prop, ret, t, tt, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; arg = $f.arg; fl = $f.fl; fn = $f.fn; ft = $f.ft; i = $f.i; in$1 = $f.in$1; m = $f.m; methods = $f.methods; mt = $f.mt; mtyp = $f.mtyp; out = $f.out; p = $f.p; pname = $f.pname; prop = $f.prop; ret = $f.ret; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + prop = [prop]; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + Method.copy(m, tt.Method(i)); + $s = -1; return m; + } + methods = t.exportedMethods(); + if (i < 0 || i >= methods.$length) { + $panic(new $String("reflect: Method index out of range")); + } + p = $clone(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]), method); + pname = $clone(t.nameOff(p.name), name); + m.Name = $clone(pname, name).name(); + fl = 19; + mtyp = t.typeOff(p.mtyp); + ft = (mtyp.kindType); + in$1 = $makeSlice(sliceType$10, 0, (1 + ft.in$().$length >> 0)); + in$1 = $append(in$1, t); + _ref = ft.in$(); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + in$1 = $append(in$1, arg); + _i++; + } + out = $makeSlice(sliceType$10, 0, ft.out().$length); + _ref$1 = ft.out(); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + ret = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + out = $append(out, ret); + _i$1++; + } + _r = FuncOf(in$1, out, ft.rtype.IsVariadic()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + mt = _r; + m.Type = mt; + prop[0] = $internalize($methodSet(t.jsType)[i].prop, $String); + fn = js.MakeFunc((function(prop) { return function(this$1, arguments$1) { + var arguments$1, rcvr, this$1; + rcvr = (0 >= arguments$1.$length ? ($throwRuntimeError("index out of range"), undefined) : arguments$1.$array[arguments$1.$offset + 0]); + return new $jsObjectPtr(rcvr[$externalize(prop[0], $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$8))); + }; })(prop)); + m.Func = new Value.ptr($assertType(mt, ptrType$1), (fn), fl); + m.Index = i; + Method.copy(m, m); + $s = -1; return m; + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Method }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.arg = arg; $f.fl = fl; $f.fn = fn; $f.ft = ft; $f.i = i; $f.in$1 = in$1; $f.m = m; $f.methods = methods; $f.mt = mt; $f.mtyp = mtyp; $f.out = out; $f.p = p; $f.pname = pname; $f.prop = prop; $f.ret = ret; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.Method = function(i) { return this.$val.Method(i); }; + Value.ptr.prototype.object = function() { + var _1, newVal, v, val; + v = this; + if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) { + return v.ptr; + } + if (!((((v.flag & 128) >>> 0) === 0))) { + val = v.ptr.$get(); + if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) { + switch (0) { default: + _1 = v.typ.Kind(); + if ((_1 === (11)) || (_1 === (6))) { + val = new (jsType(v.typ))(val.$high, val.$low); + } else if ((_1 === (15)) || (_1 === (16))) { + val = new (jsType(v.typ))(val.$real, val.$imag); + } else if (_1 === (23)) { + if (val === val.constructor.nil) { + val = jsType(v.typ).nil; + break; + } + newVal = new (jsType(v.typ))(val.$array); + newVal.$offset = val.$offset; + newVal.$length = val.$length; + newVal.$capacity = val.$capacity; + val = newVal; + } + } + } + return val; + } + return v.ptr; + }; + Value.prototype.object = function() { return this.$val.object(); }; + Value.ptr.prototype.assignTo = function(context, dst, target) { + var _r, _r$1, _r$2, context, dst, fl, target, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; context = $f.context; dst = $f.dst; fl = $f.fl; target = $f.target; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue(context, $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + _r$1 = directlyAssignable(dst, v.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ if (implements$1(dst, v.typ)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 5: + fl = (((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0; + fl = (fl | (((dst.Kind() >>> 0)))) >>> 0; + $s = -1; return new Value.ptr(dst, v.ptr, fl); + /* } else if (implements$1(dst, v.typ)) { */ case 6: + if (target === 0) { + target = unsafe_New(dst); + } + _r$2 = valueInterface($clone(v, Value), false); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + if (dst.NumMethod() === 0) { + (target).$set(x); + } else { + ifaceE2I(dst, x, target); + } + $s = -1; return new Value.ptr(dst, target, 148); + /* } */ case 7: + case 4: + $panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String())); + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.assignTo }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.context = context; $f.dst = dst; $f.fl = fl; $f.target = target; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.assignTo = function(context, dst, target) { return this.$val.assignTo(context, dst, target); }; + Value.ptr.prototype.call = function(op, in$1) { + var _1, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, arg, argsArray, elem, fn, i, i$1, i$2, i$3, in$1, isSlice, m, n, nin, nout, op, origIn, rcvr, results, ret, slice, t, targ, v, x, x$1, x$2, xt, xt$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; arg = $f.arg; argsArray = $f.argsArray; elem = $f.elem; fn = $f.fn; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; in$1 = $f.in$1; isSlice = $f.isSlice; m = $f.m; n = $f.n; nin = $f.nin; nout = $f.nout; op = $f.op; origIn = $f.origIn; rcvr = $f.rcvr; results = $f.results; ret = $f.ret; slice = $f.slice; t = $f.t; targ = $f.targ; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; xt = $f.xt; xt$1 = $f.xt$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + t = ptrType$8.nil; + fn = 0; + rcvr = null; + if (!((((v.flag & 512) >>> 0) === 0))) { + _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); + t = _tuple[1]; + fn = _tuple[2]; + rcvr = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr = new (jsType(v.typ))(rcvr); + } + } else { + t = (v.typ.kindType); + fn = ($clone(v, Value).object()); + rcvr = undefined; + } + if (fn === 0) { + $panic(new $String("reflect.Value.Call: call of nil function")); + } + isSlice = op === "CallSlice"; + n = t.rtype.NumIn(); + if (isSlice) { + if (!t.rtype.IsVariadic()) { + $panic(new $String("reflect: CallSlice of non-variadic function")); + } + if (in$1.$length < n) { + $panic(new $String("reflect: CallSlice with too few input arguments")); + } + if (in$1.$length > n) { + $panic(new $String("reflect: CallSlice with too many input arguments")); + } + } else { + if (t.rtype.IsVariadic()) { + n = n - (1) >> 0; + } + if (in$1.$length < n) { + $panic(new $String("reflect: Call with too few input arguments")); + } + if (!t.rtype.IsVariadic() && in$1.$length > n) { + $panic(new $String("reflect: Call with too many input arguments")); + } + } + _ref = in$1; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if ($clone(x, Value).Kind() === 0) { + $panic(new $String("reflect: " + op + " using zero Value argument")); + } + _i++; + } + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + _tmp = $clone(((i < 0 || i >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i]), Value).Type(); + _tmp$1 = t.rtype.In(i); + xt = _tmp; + targ = _tmp$1; + _r = xt.AssignableTo(targ); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + _r$1 = xt.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = targ.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String("reflect: " + op + " using " + _r$1 + " as type " + _r$2)); + /* } */ case 4: + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + /* */ if (!isSlice && t.rtype.IsVariadic()) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!isSlice && t.rtype.IsVariadic()) { */ case 8: + m = in$1.$length - n >> 0; + _r$3 = MakeSlice(t.rtype.In(n), m, m); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + slice = _r$3; + _r$4 = t.rtype.In(n).Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + elem = _r$4; + i$1 = 0; + /* while (true) { */ case 12: + /* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 13; continue; } + x$2 = (x$1 = n + i$1 >> 0, ((x$1 < 0 || x$1 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x$1])); + xt$1 = $clone(x$2, Value).Type(); + _r$5 = xt$1.AssignableTo(elem); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!_r$5) { */ case 14: + _r$6 = xt$1.String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = elem.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $panic(new $String("reflect: cannot use " + _r$6 + " as type " + _r$7 + " in " + op)); + /* } */ case 15: + _r$8 = $clone(slice, Value).Index(i$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $r = $clone(_r$8, Value).Set($clone(x$2, Value)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + /* } */ $s = 12; continue; case 13: + origIn = in$1; + in$1 = $makeSlice(sliceType$9, (n + 1 >> 0)); + $copySlice($subslice(in$1, 0, n), origIn); + ((n < 0 || n >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + n] = slice); + /* } */ case 9: + nin = in$1.$length; + if (!((nin === t.rtype.NumIn()))) { + $panic(new $String("reflect.Value.Call: wrong argument count")); + } + nout = t.rtype.NumOut(); + argsArray = new ($global.Array)(t.rtype.NumIn()); + _ref$1 = in$1; + _i$1 = 0; + /* while (true) { */ case 21: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; } + i$2 = _i$1; + arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _arg = t.rtype.In(i$2); + _r$9 = t.rtype.In(i$2).common(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$1 = _r$9; + _arg$2 = 0; + _r$10 = $clone(arg, Value).assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = $clone(_r$10, Value).object(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$3 = _r$11; + _r$12 = unwrapJsObject(_arg, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + argsArray[i$2] = _r$12; + _i$1++; + /* } */ $s = 21; continue; case 22: + _r$13 = callHelper(new sliceType$3([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + results = _r$13; + _1 = nout; + /* */ if (_1 === (0)) { $s = 29; continue; } + /* */ if (_1 === (1)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (_1 === (0)) { */ case 29: + $s = -1; return sliceType$9.nil; + /* } else if (_1 === (1)) { */ case 30: + _r$14 = makeValue(t.rtype.Out(0), wrapJsObject(t.rtype.Out(0), results), 0); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $s = -1; return new sliceType$9([$clone(_r$14, Value)]); + /* } else { */ case 31: + ret = $makeSlice(sliceType$9, nout); + _ref$2 = ret; + _i$2 = 0; + /* while (true) { */ case 34: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 35; continue; } + i$3 = _i$2; + _r$15 = makeValue(t.rtype.Out(i$3), wrapJsObject(t.rtype.Out(i$3), results[i$3]), 0); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + ((i$3 < 0 || i$3 >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i$3] = _r$15); + _i$2++; + /* } */ $s = 34; continue; case 35: + $s = -1; return ret; + /* } */ case 32: + case 28: + $s = -1; return sliceType$9.nil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.call }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.arg = arg; $f.argsArray = argsArray; $f.elem = elem; $f.fn = fn; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.in$1 = in$1; $f.isSlice = isSlice; $f.m = m; $f.n = n; $f.nin = nin; $f.nout = nout; $f.op = op; $f.origIn = origIn; $f.rcvr = rcvr; $f.results = results; $f.ret = ret; $f.slice = slice; $f.t = t; $f.targ = targ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.xt = xt; $f.xt$1 = xt$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.call = function(op, in$1) { return this.$val.call(op, in$1); }; + Value.ptr.prototype.Cap = function() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (17)) { + return v.typ.Len(); + } else if ((_1 === (18)) || (_1 === (23))) { + return $parseInt($clone(v, Value).object().$capacity) >> 0; + } + $panic(new ValueError.ptr("reflect.Value.Cap", k)); + }; + Value.prototype.Cap = function() { return this.$val.Cap(); }; + wrapJsObject = function(typ, val) { + var typ, val; + if ($interfaceIsEqual(typ, jsObjectPtr)) { + return new (jsType(jsObjectPtr))(val); + } + return val; + }; + unwrapJsObject = function(typ, val) { + var typ, val; + if ($interfaceIsEqual(typ, jsObjectPtr)) { + return val.object; + } + return val; + }; + Value.ptr.prototype.Elem = function() { + var _1, _r, fl, k, tt, typ, v, val, val$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; fl = $f.fl; k = $f.k; tt = $f.tt; typ = $f.typ; v = $f.v; val = $f.val; val$1 = $f.val$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (20)) { $s = 2; continue; } + /* */ if (_1 === (22)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (20)) { */ case 2: + val = $clone(v, Value).object(); + if (val === $ifaceNil) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + typ = reflectType(val.constructor); + _r = makeValue(typ, val.$val, new flag(v.flag).ro()); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } else if (_1 === (22)) { */ case 3: + if ($clone(v, Value).IsNil()) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + val$1 = $clone(v, Value).object(); + tt = (v.typ.kindType); + fl = (((((v.flag & 96) >>> 0) | 128) >>> 0) | 256) >>> 0; + fl = (fl | (((tt.elem.Kind() >>> 0)))) >>> 0; + $s = -1; return new Value.ptr(tt.elem, (wrapJsObject(tt.elem, val$1)), fl); + /* } else { */ case 4: + $panic(new ValueError.ptr("reflect.Value.Elem", k)); + /* } */ case 5: + case 1: + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Elem }; } $f._1 = _1; $f._r = _r; $f.fl = fl; $f.k = k; $f.tt = tt; $f.typ = typ; $f.v = v; $f.val = val; $f.val$1 = val$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Elem = function() { return this.$val.Elem(); }; + Value.ptr.prototype.Field = function(i) { + var _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; field = $f.field; fl = $f.fl; i = $f.i; jsTag = $f.jsTag; o = $f.o; prop = $f.prop; s = $f.s; tag = $f.tag; tt = $f.tt; typ = $f.typ; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + jsTag = [jsTag]; + prop = [prop]; + s = [s]; + typ = [typ]; + v = this; + if (!((new flag(v.flag).kind() === 25))) { + $panic(new ValueError.ptr("reflect.Value.Field", new flag(v.flag).kind())); + } + tt = (v.typ.kindType); + if (((i >>> 0)) >= ((tt.fields.$length >>> 0))) { + $panic(new $String("reflect: Field index out of range")); + } + prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String); + field = (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + typ[0] = field.typ; + fl = (((v.flag & 416) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; + if (!$clone(field.name, name).isExported()) { + if (field.embedded()) { + fl = (fl | (64)) >>> 0; + } else { + fl = (fl | (32)) >>> 0; + } + } + tag = $clone((x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).name, name).tag(); + /* */ if (!(tag === "") && !((i === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tag === "") && !((i === 0))) { */ case 1: + jsTag[0] = getJsTag(tag); + /* */ if (!(jsTag[0] === "")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(jsTag[0] === "")) { */ case 3: + /* while (true) { */ case 5: + o = [o]; + _r = $clone(v, Value).Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* */ if (v.typ === jsObjectPtr) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (v.typ === jsObjectPtr) { */ case 8: + o[0] = $clone(v, Value).object().object; + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function() { + return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0])); + }; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function(x$2) { + var x$2; + o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0])); + }; })(jsTag, o, prop, s, typ))), fl); + /* } */ case 9: + /* */ if (v.typ.Kind() === 22) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (v.typ.Kind() === 22) { */ case 10: + _r$1 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + /* } */ case 11: + /* } */ $s = 5; continue; case 6: + /* } */ case 4: + /* } */ case 2: + s[0] = v.ptr; + /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13: + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function() { + return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]); + }; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function(x$2) { + var x$2; + s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2); + }; })(jsTag, prop, s, typ))), fl); + /* } */ case 14: + _r$2 = makeValue(typ[0], wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]), fl); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Field }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.field = field; $f.fl = fl; $f.i = i; $f.jsTag = jsTag; $f.o = o; $f.prop = prop; $f.s = s; $f.tag = tag; $f.tt = tt; $f.typ = typ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Field = function(i) { return this.$val.Field(i); }; + getJsTag = function(tag) { + var _tuple, i, name$1, qvalue, tag, value; + while (true) { + if (!(!(tag === ""))) { break; } + i = 0; + while (true) { + if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + } + tag = $substring(tag, i); + if (tag === "") { + break; + } + i = 0; + while (true) { + if (!(i < tag.length && !((tag.charCodeAt(i) === 32)) && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)))) { break; } + i = i + (1) >> 0; + } + if ((i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) { + break; + } + name$1 = ($substring(tag, 0, i)); + tag = $substring(tag, (i + 1 >> 0)); + i = 1; + while (true) { + if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; } + if (tag.charCodeAt(i) === 92) { + i = i + (1) >> 0; + } + i = i + (1) >> 0; + } + if (i >= tag.length) { + break; + } + qvalue = ($substring(tag, 0, (i + 1 >> 0))); + tag = $substring(tag, (i + 1 >> 0)); + if (name$1 === "js") { + _tuple = strconv.Unquote(qvalue); + value = _tuple[0]; + return value; + } + } + return ""; + }; + Value.ptr.prototype.Index = function(i) { + var _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; a = $f.a; a$1 = $f.a$1; c = $f.c; fl = $f.fl; fl$1 = $f.fl$1; fl$2 = $f.fl$2; i = $f.i; k = $f.k; s = $f.s; str = $f.str; tt = $f.tt; tt$1 = $f.tt$1; typ = $f.typ; typ$1 = $f.typ$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + a = [a]; + a$1 = [a$1]; + c = [c]; + i = [i]; + typ = [typ]; + typ$1 = [typ$1]; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + tt = (v.typ.kindType); + if (i[0] < 0 || i[0] > ((tt.len >> 0))) { + $panic(new $String("reflect: array index out of range")); + } + typ[0] = tt.elem; + fl = (((((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; + a[0] = v.ptr; + /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 7: + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function() { + return wrapJsObject(typ[0], a[0][i[0]]); + }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) { + var x; + a[0][i[0]] = unwrapJsObject(typ[0], x); + }; })(a, a$1, c, i, typ, typ$1))), fl); + /* } */ case 8: + _r = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } else if (_1 === (23)) { */ case 3: + s = $clone(v, Value).object(); + if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) { + $panic(new $String("reflect: slice index out of range")); + } + tt$1 = (v.typ.kindType); + typ$1[0] = tt$1.elem; + fl$1 = (((384 | new flag(v.flag).ro()) >>> 0) | ((typ$1[0].Kind() >>> 0))) >>> 0; + i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0; + a$1[0] = s.$array; + /* */ if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 10: + $s = -1; return new Value.ptr(typ$1[0], (new (jsType(PtrTo(typ$1[0])))((function(a, a$1, c, i, typ, typ$1) { return function() { + return wrapJsObject(typ$1[0], a$1[0][i[0]]); + }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) { + var x; + a$1[0][i[0]] = unwrapJsObject(typ$1[0], x); + }; })(a, a$1, c, i, typ, typ$1))), fl$1); + /* } */ case 11: + _r$1 = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* } else if (_1 === (24)) { */ case 4: + str = (v.ptr).$get(); + if (i[0] < 0 || i[0] >= str.length) { + $panic(new $String("reflect: string index out of range")); + } + fl$2 = (((new flag(v.flag).ro() | 8) >>> 0) | 128) >>> 0; + c[0] = str.charCodeAt(i[0]); + $s = -1; return new Value.ptr(uint8Type, ((c.$ptr || (c.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c)))), fl$2); + /* } else { */ case 5: + $panic(new ValueError.ptr("reflect.Value.Index", k)); + /* } */ case 6: + case 1: + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Index }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.a$1 = a$1; $f.c = c; $f.fl = fl; $f.fl$1 = fl$1; $f.fl$2 = fl$2; $f.i = i; $f.k = k; $f.s = s; $f.str = str; $f.tt = tt; $f.tt$1 = tt$1; $f.typ = typ; $f.typ$1 = typ$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Index = function(i) { return this.$val.Index(i); }; + Value.ptr.prototype.InterfaceData = function() { + var v; + v = this; + $panic(errors.New("InterfaceData is not supported by GopherJS")); + }; + Value.prototype.InterfaceData = function() { return this.$val.InterfaceData(); }; + Value.ptr.prototype.IsNil = function() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (22)) || (_1 === (23))) { + return $clone(v, Value).object() === jsType(v.typ).nil; + } else if (_1 === (18)) { + return $clone(v, Value).object() === $chanNil; + } else if (_1 === (19)) { + return $clone(v, Value).object() === $throwNilPointerError; + } else if (_1 === (21)) { + return $clone(v, Value).object() === false; + } else if (_1 === (20)) { + return $clone(v, Value).object() === $ifaceNil; + } else if (_1 === (26)) { + return $clone(v, Value).object() === 0; + } else { + $panic(new ValueError.ptr("reflect.Value.IsNil", k)); + } + }; + Value.prototype.IsNil = function() { return this.$val.IsNil(); }; + Value.ptr.prototype.Len = function() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (17)) || (_1 === (24))) { + return $parseInt($clone(v, Value).object().length); + } else if (_1 === (23)) { + return $parseInt($clone(v, Value).object().$length) >> 0; + } else if (_1 === (18)) { + return $parseInt($clone(v, Value).object().$buffer.length) >> 0; + } else if (_1 === (21)) { + return $parseInt($keys($clone(v, Value).object()).length); + } else { + $panic(new ValueError.ptr("reflect.Value.Len", k)); + } + }; + Value.prototype.Len = function() { return this.$val.Len(); }; + Value.ptr.prototype.Pointer = function() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (18)) || (_1 === (21)) || (_1 === (22)) || (_1 === (26))) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return $clone(v, Value).object(); + } else if (_1 === (19)) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return 1; + } else if (_1 === (23)) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return $clone(v, Value).object().$array; + } else { + $panic(new ValueError.ptr("reflect.Value.Pointer", k)); + } + }; + Value.prototype.Pointer = function() { return this.$val.Pointer(); }; + Value.ptr.prototype.Set = function(x) { + var _1, _r, _r$1, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(x.flag).mustBeExported(); + _r = $clone(x, Value).assignTo("reflect.Set", v.typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + /* */ if (!((((v.flag & 128) >>> 0) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((((v.flag & 128) >>> 0) === 0))) { */ case 2: + _1 = v.typ.Kind(); + /* */ if (_1 === (17)) { $s = 5; continue; } + /* */ if (_1 === (20)) { $s = 6; continue; } + /* */ if (_1 === (25)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (17)) { */ case 5: + jsType(v.typ).copy(v.ptr, x.ptr); + $s = 9; continue; + /* } else if (_1 === (20)) { */ case 6: + _r$1 = valueInterface($clone(x, Value), false); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v.ptr.$set(_r$1); + $s = 9; continue; + /* } else if (_1 === (25)) { */ case 7: + copyStruct(v.ptr, x.ptr, v.typ); + $s = 9; continue; + /* } else { */ case 8: + v.ptr.$set($clone(x, Value).object()); + /* } */ case 9: + case 4: + $s = -1; return; + /* } */ case 3: + v.ptr = x.ptr; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Set }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Set = function(x) { return this.$val.Set(x); }; + Value.ptr.prototype.SetBytes = function(x) { + var _r, _r$1, _v, slice, typedSlice, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; slice = $f.slice; typedSlice = $f.typedSlice; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 8))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 8))) { */ case 1: + $panic(new $String("reflect.Value.SetBytes of non-byte slice")); + /* } */ case 2: + slice = x; + if (!(v.typ.Name() === "")) { _v = true; $s = 6; continue s; } + _r$1 = v.typ.Elem().Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = !(_r$1 === ""); case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + typedSlice = new (jsType(v.typ))(slice.$array); + typedSlice.$offset = slice.$offset; + typedSlice.$length = slice.$length; + typedSlice.$capacity = slice.$capacity; + slice = typedSlice; + /* } */ case 5: + v.ptr.$set(slice); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetBytes }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.slice = slice; $f.typedSlice = typedSlice; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.SetBytes = function(x) { return this.$val.SetBytes(x); }; + Value.ptr.prototype.SetCap = function(n) { + var n, newSlice, s, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + s = v.ptr.$get(); + if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) { + $panic(new $String("reflect: slice capacity out of range in SetCap")); + } + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = s.$length; + newSlice.$capacity = n; + v.ptr.$set(newSlice); + }; + Value.prototype.SetCap = function(n) { return this.$val.SetCap(n); }; + Value.ptr.prototype.SetLen = function(n) { + var n, newSlice, s, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + s = v.ptr.$get(); + if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) { + $panic(new $String("reflect: slice length out of range in SetLen")); + } + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = n; + newSlice.$capacity = s.$capacity; + v.ptr.$set(newSlice); + }; + Value.prototype.SetLen = function(n) { return this.$val.SetLen(n); }; + Value.ptr.prototype.Slice = function(i, j) { + var _1, _r, _r$1, cap, i, j, kind, s, str, tt, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; i = $f.i; j = $f.j; kind = $f.kind; s = $f.s; str = $f.str; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + cap = 0; + typ = $ifaceNil; + s = null; + kind = new flag(v.flag).kind(); + _1 = kind; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); + } + tt = (v.typ.kindType); + cap = ((tt.len >> 0)); + typ = SliceOf(tt.elem); + s = new (jsType(typ))($clone(v, Value).object()); + $s = 6; continue; + /* } else if (_1 === (23)) { */ case 3: + typ = v.typ; + s = $clone(v, Value).object(); + cap = $parseInt(s.$capacity) >> 0; + $s = 6; continue; + /* } else if (_1 === (24)) { */ case 4: + str = (v.ptr).$get(); + if (i < 0 || j < i || j > str.length) { + $panic(new $String("reflect.Value.Slice: string slice index out of bounds")); + } + _r = ValueOf(new $String($substring(str, i, j))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } else { */ case 5: + $panic(new ValueError.ptr("reflect.Value.Slice", kind)); + /* } */ case 6: + case 1: + if (i < 0 || j < i || j > cap) { + $panic(new $String("reflect.Value.Slice: slice index out of bounds")); + } + _r$1 = makeValue(typ, $subslice(s, i, j), new flag(v.flag).ro()); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.i = i; $f.j = j; $f.kind = kind; $f.s = s; $f.str = str; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Slice = function(i, j) { return this.$val.Slice(i, j); }; + Value.ptr.prototype.Slice3 = function(i, j, k) { + var _1, _r, cap, i, j, k, kind, s, tt, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; cap = $f.cap; i = $f.i; j = $f.j; k = $f.k; kind = $f.kind; s = $f.s; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + cap = 0; + typ = $ifaceNil; + s = null; + kind = new flag(v.flag).kind(); + _1 = kind; + if (_1 === (17)) { + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); + } + tt = (v.typ.kindType); + cap = ((tt.len >> 0)); + typ = SliceOf(tt.elem); + s = new (jsType(typ))($clone(v, Value).object()); + } else if (_1 === (23)) { + typ = v.typ; + s = $clone(v, Value).object(); + cap = $parseInt(s.$capacity) >> 0; + } else { + $panic(new ValueError.ptr("reflect.Value.Slice3", kind)); + } + if (i < 0 || j < i || k < j || k > cap) { + $panic(new $String("reflect.Value.Slice3: slice index out of bounds")); + } + _r = makeValue(typ, $subslice(s, i, j, k), new flag(v.flag).ro()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice3 }; } $f._1 = _1; $f._r = _r; $f.cap = cap; $f.i = i; $f.j = j; $f.k = k; $f.kind = kind; $f.s = s; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Slice3 = function(i, j, k) { return this.$val.Slice3(i, j, k); }; + Value.ptr.prototype.Close = function() { + var v; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + $close($clone(v, Value).object()); + }; + Value.prototype.Close = function() { return this.$val.Close(); }; + chanrecv = function(ch, nb, val) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; ch = $f.ch; comms = $f.comms; nb = $f.nb; received = $f.received; recvRes = $f.recvRes; selectRes = $f.selectRes; selected = $f.selected; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + selected = false; + received = false; + comms = new sliceType$11([new sliceType$8([ch])]); + if (nb) { + comms = $append(comms, new sliceType$8([])); + } + _r = selectHelper(new sliceType$3([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + selectRes = _r; + if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) { + _tmp = false; + _tmp$1 = false; + selected = _tmp; + received = _tmp$1; + $s = -1; return [selected, received]; + } + recvRes = selectRes[1]; + val.$set(recvRes[0]); + _tmp$2 = true; + _tmp$3 = !!(recvRes[1]); + selected = _tmp$2; + received = _tmp$3; + $s = -1; return [selected, received]; + /* */ } return; } if ($f === undefined) { $f = { $blk: chanrecv }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.received = received; $f.recvRes = recvRes; $f.selectRes = selectRes; $f.selected = selected; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + chansend = function(ch, val, nb) { + var _r, ch, comms, nb, selectRes, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; ch = $f.ch; comms = $f.comms; nb = $f.nb; selectRes = $f.selectRes; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + comms = new sliceType$11([new sliceType$8([ch, val.$get()])]); + if (nb) { + comms = $append(comms, new sliceType$8([])); + } + _r = selectHelper(new sliceType$3([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + selectRes = _r; + if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) { + $s = -1; return false; + } + $s = -1; return true; + /* */ } return; } if ($f === undefined) { $f = { $blk: chansend }; } $f._r = _r; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.selectRes = selectRes; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + structField.ptr.prototype.offset = function() { + var f; + f = this; + return f.offsetEmbed >>> 1 >>> 0; + }; + structField.prototype.offset = function() { return this.$val.offset(); }; + structField.ptr.prototype.embedded = function() { + var f; + f = this; + return !((((f.offsetEmbed & 1) >>> 0) === 0)); + }; + structField.prototype.embedded = function() { return this.$val.embedded(); }; + Kind.prototype.String = function() { + var k; + k = this.$val; + if (((k >> 0)) < kindNames.$length) { + return ((k < 0 || k >= kindNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + k]); + } + return "kind" + strconv.Itoa(((k >> 0))); + }; + $ptrType(Kind).prototype.String = function() { return new Kind(this.$get()).String(); }; + rtype.ptr.prototype.String = function() { + var s, t; + t = this; + s = $clone(t.nameOff(t.str), name).name(); + if (!((((t.tflag & 2) >>> 0) === 0))) { + return $substring(s, 1); + } + return s; + }; + rtype.prototype.String = function() { return this.$val.String(); }; + rtype.ptr.prototype.Size = function() { + var t; + t = this; + return t.size; + }; + rtype.prototype.Size = function() { return this.$val.Size(); }; + rtype.ptr.prototype.Bits = function() { + var k, t; + t = this; + if (t === ptrType$1.nil) { + $panic(new $String("reflect: Bits of nil Type")); + } + k = t.Kind(); + if (k < 2 || k > 16) { + $panic(new $String("reflect: Bits of non-arithmetic Type " + t.String())); + } + return $imul(((t.size >> 0)), 8); + }; + rtype.prototype.Bits = function() { return this.$val.Bits(); }; + rtype.ptr.prototype.Align = function() { + var t; + t = this; + return ((t.align >> 0)); + }; + rtype.prototype.Align = function() { return this.$val.Align(); }; + rtype.ptr.prototype.FieldAlign = function() { + var t; + t = this; + return ((t.fieldAlign >> 0)); + }; + rtype.prototype.FieldAlign = function() { return this.$val.FieldAlign(); }; + rtype.ptr.prototype.Kind = function() { + var t; + t = this; + return ((((t.kind & 31) >>> 0) >>> 0)); + }; + rtype.prototype.Kind = function() { return this.$val.Kind(); }; + rtype.ptr.prototype.common = function() { + var t; + t = this; + return t; + }; + rtype.prototype.common = function() { return this.$val.common(); }; + rtype.ptr.prototype.exportedMethods = function() { + var t, ut; + t = this; + ut = t.uncommon(); + if (ut === ptrType$5.nil) { + return sliceType$5.nil; + } + return ut.exportedMethods(); + }; + rtype.prototype.exportedMethods = function() { return this.$val.exportedMethods(); }; + rtype.ptr.prototype.NumMethod = function() { + var t, tt; + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + return tt.NumMethod(); + } + return t.exportedMethods().$length; + }; + rtype.prototype.NumMethod = function() { return this.$val.NumMethod(); }; + rtype.ptr.prototype.MethodByName = function(name$1) { + var _i, _r, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, i, m, name$1, ok, p, t, tt, ut, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; i = $f.i; m = $f.m; name$1 = $f.name$1; ok = $f.ok; p = $f.p; t = $f.t; tt = $f.tt; ut = $f.ut; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + ok = false; + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + _tuple = tt.MethodByName(name$1); + Method.copy(m, _tuple[0]); + ok = _tuple[1]; + $s = -1; return [m, ok]; + } + ut = t.uncommon(); + if (ut === ptrType$5.nil) { + _tmp = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + _tmp$1 = false; + Method.copy(m, _tmp); + ok = _tmp$1; + $s = -1; return [m, ok]; + } + _ref = ut.exportedMethods(); + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + p = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), method); + /* */ if ($clone(t.nameOff(p.name), name).name() === name$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($clone(t.nameOff(p.name), name).name() === name$1) { */ case 3: + _r = t.Method(i); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$2 = $clone(_r, Method); + _tmp$3 = true; + Method.copy(m, _tmp$2); + ok = _tmp$3; + $s = -1; return [m, ok]; + /* } */ case 4: + _i++; + /* } */ $s = 1; continue; case 2: + _tmp$4 = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + _tmp$5 = false; + Method.copy(m, _tmp$4); + ok = _tmp$5; + $s = -1; return [m, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.MethodByName }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.i = i; $f.m = m; $f.name$1 = name$1; $f.ok = ok; $f.p = p; $f.t = t; $f.tt = tt; $f.ut = ut; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); }; + rtype.ptr.prototype.PkgPath = function() { + var t, ut; + t = this; + if (((t.tflag & 4) >>> 0) === 0) { + return ""; + } + ut = t.uncommon(); + if (ut === ptrType$5.nil) { + return ""; + } + return $clone(t.nameOff(ut.pkgPath), name).name(); + }; + rtype.prototype.PkgPath = function() { return this.$val.PkgPath(); }; + rtype.ptr.prototype.Name = function() { + var i, s, t; + t = this; + if (((t.tflag & 4) >>> 0) === 0) { + return ""; + } + s = t.String(); + i = s.length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (s.charCodeAt(i) === 46) { + break; + } + i = i - (1) >> 0; + } + return $substring(s, (i + 1 >> 0)); + }; + rtype.prototype.Name = function() { return this.$val.Name(); }; + rtype.ptr.prototype.ChanDir = function() { + var t, tt; + t = this; + if (!((t.Kind() === 18))) { + $panic(new $String("reflect: ChanDir of non-chan type")); + } + tt = (t.kindType); + return ((tt.dir >> 0)); + }; + rtype.prototype.ChanDir = function() { return this.$val.ChanDir(); }; + rtype.ptr.prototype.IsVariadic = function() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: IsVariadic of non-func type")); + } + tt = (t.kindType); + return !((((tt.outCount & 32768) >>> 0) === 0)); + }; + rtype.prototype.IsVariadic = function() { return this.$val.IsVariadic(); }; + rtype.ptr.prototype.Elem = function() { + var _1, t, tt, tt$1, tt$2, tt$3, tt$4; + t = this; + _1 = t.Kind(); + if (_1 === (17)) { + tt = (t.kindType); + return toType(tt.elem); + } else if (_1 === (18)) { + tt$1 = (t.kindType); + return toType(tt$1.elem); + } else if (_1 === (21)) { + tt$2 = (t.kindType); + return toType(tt$2.elem); + } else if (_1 === (22)) { + tt$3 = (t.kindType); + return toType(tt$3.elem); + } else if (_1 === (23)) { + tt$4 = (t.kindType); + return toType(tt$4.elem); + } + $panic(new $String("reflect: Elem of invalid type")); + }; + rtype.prototype.Elem = function() { return this.$val.Elem(); }; + rtype.ptr.prototype.Field = function(i) { + var i, t, tt; + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: Field of non-struct type")); + } + tt = (t.kindType); + return tt.Field(i); + }; + rtype.prototype.Field = function(i) { return this.$val.Field(i); }; + rtype.ptr.prototype.FieldByIndex = function(index) { + var _r, index, t, tt, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; index = $f.index; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: FieldByIndex of non-struct type")); + } + tt = (t.kindType); + _r = tt.FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByIndex }; } $f._r = _r; $f.index = index; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); }; + rtype.ptr.prototype.FieldByName = function(name$1) { + var _r, name$1, t, tt, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; name$1 = $f.name$1; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: FieldByName of non-struct type")); + } + tt = (t.kindType); + _r = tt.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByName }; } $f._r = _r; $f.name$1 = name$1; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); }; + rtype.ptr.prototype.FieldByNameFunc = function(match) { + var _r, match, t, tt, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; match = $f.match; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: FieldByNameFunc of non-struct type")); + } + tt = (t.kindType); + _r = tt.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByNameFunc }; } $f._r = _r; $f.match = match; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); }; + rtype.ptr.prototype.In = function(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: In of non-func type")); + } + tt = (t.kindType); + return toType((x = tt.in$(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + }; + rtype.prototype.In = function(i) { return this.$val.In(i); }; + rtype.ptr.prototype.Key = function() { + var t, tt; + t = this; + if (!((t.Kind() === 21))) { + $panic(new $String("reflect: Key of non-map type")); + } + tt = (t.kindType); + return toType(tt.key); + }; + rtype.prototype.Key = function() { return this.$val.Key(); }; + rtype.ptr.prototype.Len = function() { + var t, tt; + t = this; + if (!((t.Kind() === 17))) { + $panic(new $String("reflect: Len of non-array type")); + } + tt = (t.kindType); + return ((tt.len >> 0)); + }; + rtype.prototype.Len = function() { return this.$val.Len(); }; + rtype.ptr.prototype.NumField = function() { + var t, tt; + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: NumField of non-struct type")); + } + tt = (t.kindType); + return tt.fields.$length; + }; + rtype.prototype.NumField = function() { return this.$val.NumField(); }; + rtype.ptr.prototype.NumIn = function() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: NumIn of non-func type")); + } + tt = (t.kindType); + return ((tt.inCount >> 0)); + }; + rtype.prototype.NumIn = function() { return this.$val.NumIn(); }; + rtype.ptr.prototype.NumOut = function() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: NumOut of non-func type")); + } + tt = (t.kindType); + return tt.out().$length; + }; + rtype.prototype.NumOut = function() { return this.$val.NumOut(); }; + rtype.ptr.prototype.Out = function(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: Out of non-func type")); + } + tt = (t.kindType); + return toType((x = tt.out(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + }; + rtype.prototype.Out = function(i) { return this.$val.Out(i); }; + ChanDir.prototype.String = function() { + var _1, d; + d = this.$val; + _1 = d; + if (_1 === (2)) { + return "chan<-"; + } else if (_1 === (1)) { + return "<-chan"; + } else if (_1 === (3)) { + return "chan"; + } + return "ChanDir" + strconv.Itoa(((d >> 0))); + }; + $ptrType(ChanDir).prototype.String = function() { return new ChanDir(this.$get()).String(); }; + interfaceType.ptr.prototype.Method = function(i) { + var i, m, p, pname, t, x; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + t = this; + if (i < 0 || i >= t.methods.$length) { + return m; + } + p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + pname = $clone(t.rtype.nameOff(p.name), name); + m.Name = $clone(pname, name).name(); + if (!$clone(pname, name).isExported()) { + m.PkgPath = $clone(pname, name).pkgPath(); + if (m.PkgPath === "") { + m.PkgPath = $clone(t.pkgPath, name).name(); + } + } + m.Type = toType(t.rtype.typeOff(p.typ)); + m.Index = i; + return m; + }; + interfaceType.prototype.Method = function(i) { return this.$val.Method(i); }; + interfaceType.ptr.prototype.NumMethod = function() { + var t; + t = this; + return t.methods.$length; + }; + interfaceType.prototype.NumMethod = function() { return this.$val.NumMethod(); }; + interfaceType.ptr.prototype.MethodByName = function(name$1) { + var _i, _ref, _tmp, _tmp$1, i, m, name$1, ok, p, t, x; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + ok = false; + t = this; + if (t === ptrType$9.nil) { + return [m, ok]; + } + p = ptrType$10.nil; + _ref = t.methods; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if ($clone(t.rtype.nameOff(p.name), name).name() === name$1) { + _tmp = $clone(t.Method(i), Method); + _tmp$1 = true; + Method.copy(m, _tmp); + ok = _tmp$1; + return [m, ok]; + } + _i++; + } + return [m, ok]; + }; + interfaceType.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); }; + StructTag.prototype.Get = function(key) { + var _tuple, key, tag, v; + tag = this.$val; + _tuple = new StructTag(tag).Lookup(key); + v = _tuple[0]; + return v; + }; + $ptrType(StructTag).prototype.Get = function(key) { return new StructTag(this.$get()).Get(key); }; + StructTag.prototype.Lookup = function(key) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, i, key, name$1, ok, qvalue, tag, value, value$1; + value = ""; + ok = false; + tag = this.$val; + while (true) { + if (!(!(tag === ""))) { break; } + i = 0; + while (true) { + if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + } + tag = $substring(tag, i); + if (tag === "") { + break; + } + i = 0; + while (true) { + if (!(i < tag.length && tag.charCodeAt(i) > 32 && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)) && !((tag.charCodeAt(i) === 127)))) { break; } + i = i + (1) >> 0; + } + if ((i === 0) || (i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) { + break; + } + name$1 = ($substring(tag, 0, i)); + tag = $substring(tag, (i + 1 >> 0)); + i = 1; + while (true) { + if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; } + if (tag.charCodeAt(i) === 92) { + i = i + (1) >> 0; + } + i = i + (1) >> 0; + } + if (i >= tag.length) { + break; + } + qvalue = ($substring(tag, 0, (i + 1 >> 0))); + tag = $substring(tag, (i + 1 >> 0)); + if (key === name$1) { + _tuple = strconv.Unquote(qvalue); + value$1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + break; + } + _tmp = value$1; + _tmp$1 = true; + value = _tmp; + ok = _tmp$1; + return [value, ok]; + } + } + _tmp$2 = ""; + _tmp$3 = false; + value = _tmp$2; + ok = _tmp$3; + return [value, ok]; + }; + $ptrType(StructTag).prototype.Lookup = function(key) { return new StructTag(this.$get()).Lookup(key); }; + structType.ptr.prototype.Field = function(i) { + var f, i, p, t, tag, x; + f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); + t = this; + if (i < 0 || i >= t.fields.$length) { + $panic(new $String("reflect: Field index out of bounds")); + } + p = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + f.Type = toType(p.typ); + f.Name = $clone(p.name, name).name(); + f.Anonymous = p.embedded(); + if (!$clone(p.name, name).isExported()) { + f.PkgPath = $clone(t.pkgPath, name).name(); + } + tag = $clone(p.name, name).tag(); + if (!(tag === "")) { + f.Tag = (tag); + } + f.Offset = p.offset(); + f.Index = new sliceType$13([i]); + return f; + }; + structType.prototype.Field = function(i) { return this.$val.Field(i); }; + structType.ptr.prototype.FieldByIndex = function(index) { + var _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _v = $f._v; f = $f.f; ft = $f.ft; i = $f.i; index = $f.index; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); + t = this; + f.Type = toType(t.rtype); + _ref = index; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (i > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i > 0) { */ case 3: + ft = f.Type; + _r = ft.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + if (!(_r === 22)) { _v = false; $s = 7; continue s; } + _r$1 = ft.Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 === 25; case 7: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + _r$3 = ft.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ft = _r$3; + /* } */ case 6: + f.Type = ft; + /* } */ case 4: + _r$4 = f.Type.Field(x); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + StructField.copy(f, _r$4); + _i++; + /* } */ $s = 1; continue; case 2: + $s = -1; return f; + /* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByIndex }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._v = _v; $f.f = f; $f.ft = ft; $f.i = i; $f.index = index; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + structType.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); }; + structType.ptr.prototype.FieldByNameFunc = function(match) { + var _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; count = $f.count; current = $f.current; f = $f.f; fname = $f.fname; i = $f.i; index = $f.index; match = $f.match; next = $f.next; nextCount = $f.nextCount; ntyp = $f.ntyp; ok = $f.ok; result = $f.result; scan = $f.scan; styp = $f.styp; t = $f.t; t$1 = $f.t$1; visited = $f.visited; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); + ok = false; + t = this; + current = new sliceType$14([]); + next = new sliceType$14([new fieldScan.ptr(t, sliceType$13.nil)]); + nextCount = false; + visited = $makeMap(ptrType$11.keyFor, []); + /* while (true) { */ case 1: + /* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; } + _tmp = next; + _tmp$1 = $subslice(current, 0, 0); + current = _tmp; + next = _tmp$1; + count = nextCount; + nextCount = false; + _ref = current; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + scan = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), fieldScan); + t$1 = scan.typ; + /* */ if ((_entry = visited[ptrType$11.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((_entry = visited[ptrType$11.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { */ case 5: + _i++; + /* continue; */ $s = 3; continue; + /* } */ case 6: + _key = t$1; (visited || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key)] = { k: _key, v: true }; + _ref$1 = t$1.fields; + _i$1 = 0; + /* while (true) { */ case 7: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; } + i = _i$1; + f = (x = t$1.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + fname = $clone(f.name, name).name(); + ntyp = ptrType$1.nil; + /* */ if (f.embedded()) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (f.embedded()) { */ case 9: + ntyp = f.typ; + /* */ if (ntyp.Kind() === 22) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (ntyp.Kind() === 22) { */ case 11: + _r = ntyp.Elem().common(); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ntyp = _r; + /* } */ case 12: + /* } */ case 10: + _r$1 = match(fname); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_r$1) { */ case 14: + if ((_entry$1 = count[ptrType$11.keyFor(t$1)], _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) { + _tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); + _tmp$3 = false; + StructField.copy(result, _tmp$2); + ok = _tmp$3; + $s = -1; return [result, ok]; + } + StructField.copy(result, t$1.Field(i)); + result.Index = sliceType$13.nil; + result.Index = $appendSlice(result.Index, scan.index); + result.Index = $append(result.Index, i); + ok = true; + _i$1++; + /* continue; */ $s = 7; continue; + /* } */ case 15: + if (ok || ntyp === ptrType$1.nil || !((ntyp.Kind() === 25))) { + _i$1++; + /* continue; */ $s = 7; continue; + } + styp = (ntyp.kindType); + if ((_entry$2 = nextCount[ptrType$11.keyFor(styp)], _entry$2 !== undefined ? _entry$2.v : 0) > 0) { + _key$1 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key$1)] = { k: _key$1, v: 2 }; + _i$1++; + /* continue; */ $s = 7; continue; + } + if (nextCount === false) { + nextCount = $makeMap(ptrType$11.keyFor, []); + } + _key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key$2)] = { k: _key$2, v: 1 }; + if ((_entry$3 = count[ptrType$11.keyFor(t$1)], _entry$3 !== undefined ? _entry$3.v : 0) > 1) { + _key$3 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key$3)] = { k: _key$3, v: 2 }; + } + index = sliceType$13.nil; + index = $appendSlice(index, scan.index); + index = $append(index, i); + next = $append(next, new fieldScan.ptr(styp, index)); + _i$1++; + /* } */ $s = 7; continue; case 8: + _i++; + /* } */ $s = 3; continue; case 4: + if (ok) { + /* break; */ $s = 2; continue; + } + /* } */ $s = 1; continue; case 2: + $s = -1; return [result, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByNameFunc }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.count = count; $f.current = current; $f.f = f; $f.fname = fname; $f.i = i; $f.index = index; $f.match = match; $f.next = next; $f.nextCount = nextCount; $f.ntyp = ntyp; $f.ok = ok; $f.result = result; $f.scan = scan; $f.styp = styp; $f.t = t; $f.t$1 = t$1; $f.visited = visited; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + structType.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); }; + structType.ptr.prototype.FieldByName = function(name$1) { + var _i, _r, _ref, _tmp, _tmp$1, _tuple, f, hasEmbeds, i, name$1, present, t, tf, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; f = $f.f; hasEmbeds = $f.hasEmbeds; i = $f.i; name$1 = $f.name$1; present = $f.present; t = $f.t; tf = $f.tf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + name$1 = [name$1]; + f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); + present = false; + t = this; + hasEmbeds = false; + if (!(name$1[0] === "")) { + _ref = t.fields; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tf = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if ($clone(tf.name, name).name() === name$1[0]) { + _tmp = $clone(t.Field(i), StructField); + _tmp$1 = true; + StructField.copy(f, _tmp); + present = _tmp$1; + $s = -1; return [f, present]; + } + if (tf.embedded()) { + hasEmbeds = true; + } + _i++; + } + } + if (!hasEmbeds) { + $s = -1; return [f, present]; + } + _r = t.FieldByNameFunc((function(name$1) { return function(s) { + var s; + return s === name$1[0]; + }; })(name$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + StructField.copy(f, _tuple[0]); + present = _tuple[1]; + $s = -1; return [f, present]; + /* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByName }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.f = f; $f.hasEmbeds = hasEmbeds; $f.i = i; $f.name$1 = name$1; $f.present = present; $f.t = t; $f.tf = tf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + structType.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); }; + PtrTo = function(t) { + var t; + return $assertType(t, ptrType$1).ptrTo(); + }; + $pkg.PtrTo = PtrTo; + rtype.ptr.prototype.Implements = function(u) { + var _r, t, u, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.Implements")); + } + _r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 20))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 20))) { */ case 1: + $panic(new $String("reflect: non-interface type passed to Type.Implements")); + /* } */ case 2: + $s = -1; return implements$1($assertType(u, ptrType$1), t); + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Implements }; } $f._r = _r; $f.t = t; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.Implements = function(u) { return this.$val.Implements(u); }; + rtype.ptr.prototype.AssignableTo = function(u) { + var _r, t, u, uu, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.AssignableTo")); + } + uu = $assertType(u, ptrType$1); + _r = directlyAssignable(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r || implements$1(uu, t); + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.AssignableTo }; } $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.AssignableTo = function(u) { return this.$val.AssignableTo(u); }; + rtype.ptr.prototype.ConvertibleTo = function(u) { + var _r, t, u, uu, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.ConvertibleTo")); + } + uu = $assertType(u, ptrType$1); + _r = convertOp(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return !(_r === $throwNilPointerError); + /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.ConvertibleTo }; } $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f; + }; + rtype.prototype.ConvertibleTo = function(u) { return this.$val.ConvertibleTo(u); }; + implements$1 = function(T, V) { + var T, V, i, i$1, j, j$1, t, tm, tm$1, tmName, tmName$1, tmPkgPath, tmPkgPath$1, v, v$1, vm, vm$1, vmName, vmName$1, vmPkgPath, vmPkgPath$1, vmethods, x, x$1, x$2; + if (!((T.Kind() === 20))) { + return false; + } + t = (T.kindType); + if (t.methods.$length === 0) { + return true; + } + if (V.Kind() === 20) { + v = (V.kindType); + i = 0; + j = 0; + while (true) { + if (!(j < v.methods.$length)) { break; } + tm = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + tmName = $clone(t.rtype.nameOff(tm.name), name); + vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])); + vmName = $clone(V.nameOff(vm.name), name); + if ($clone(vmName, name).name() === $clone(tmName, name).name() && V.typeOff(vm.typ) === t.rtype.typeOff(tm.typ)) { + if (!$clone(tmName, name).isExported()) { + tmPkgPath = $clone(tmName, name).pkgPath(); + if (tmPkgPath === "") { + tmPkgPath = $clone(t.pkgPath, name).name(); + } + vmPkgPath = $clone(vmName, name).pkgPath(); + if (vmPkgPath === "") { + vmPkgPath = $clone(v.pkgPath, name).name(); + } + if (!(tmPkgPath === vmPkgPath)) { + j = j + (1) >> 0; + continue; + } + } + i = i + (1) >> 0; + if (i >= t.methods.$length) { + return true; + } + } + j = j + (1) >> 0; + } + return false; + } + v$1 = V.uncommon(); + if (v$1 === ptrType$5.nil) { + return false; + } + i$1 = 0; + vmethods = v$1.methods(); + j$1 = 0; + while (true) { + if (!(j$1 < ((v$1.mcount >> 0)))) { break; } + tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])); + tmName$1 = $clone(t.rtype.nameOff(tm$1.name), name); + vm$1 = $clone(((j$1 < 0 || j$1 >= vmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : vmethods.$array[vmethods.$offset + j$1]), method); + vmName$1 = $clone(V.nameOff(vm$1.name), name); + if ($clone(vmName$1, name).name() === $clone(tmName$1, name).name() && V.typeOff(vm$1.mtyp) === t.rtype.typeOff(tm$1.typ)) { + if (!$clone(tmName$1, name).isExported()) { + tmPkgPath$1 = $clone(tmName$1, name).pkgPath(); + if (tmPkgPath$1 === "") { + tmPkgPath$1 = $clone(t.pkgPath, name).name(); + } + vmPkgPath$1 = $clone(vmName$1, name).pkgPath(); + if (vmPkgPath$1 === "") { + vmPkgPath$1 = $clone(V.nameOff(v$1.pkgPath), name).name(); + } + if (!(tmPkgPath$1 === vmPkgPath$1)) { + j$1 = j$1 + (1) >> 0; + continue; + } + } + i$1 = i$1 + (1) >> 0; + if (i$1 >= t.methods.$length) { + return true; + } + } + j$1 = j$1 + (1) >> 0; + } + return false; + }; + directlyAssignable = function(T, V) { + var T, V, _r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (T === V) { + $s = -1; return true; + } + if (!(T.Name() === "") && !(V.Name() === "") || !((T.Kind() === V.Kind()))) { + $s = -1; return false; + } + _r = haveIdenticalUnderlyingType(T, V, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: directlyAssignable }; } $f.T = T; $f.V = V; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f; + }; + haveIdenticalType = function(T, V, cmpTags) { + var T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _v, cmpTags, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _v = $f._v; cmpTags = $f.cmpTags; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (cmpTags) { + $s = -1; return $interfaceIsEqual(T, V); + } + _r = T.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = V.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r === _r$1)) { _v = true; $s = 3; continue s; } + _r$2 = T.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = V.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = !((_r$2 === _r$3)); case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return false; + /* } */ case 2: + _r$4 = T.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg = _r$4; + _r$5 = V.common(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$1 = _r$5; + _r$6 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $s = -1; return _r$6; + /* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalType }; } $f.T = T; $f.V = V; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._v = _v; $f.cmpTags = cmpTags; $f.$s = $s; $f.$r = $r; return $f; + }; + haveIdenticalUnderlyingType = function(T, V, cmpTags) { + var T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _v, _v$1, _v$2, _v$3, cmpTags, i, i$1, i$2, kind, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; cmpTags = $f.cmpTags; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; kind = $f.kind; t = $f.t; t$1 = $f.t$1; t$2 = $f.t$2; tf = $f.tf; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; vf = $f.vf; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (T === V) { + $s = -1; return true; + } + kind = T.Kind(); + if (!((kind === V.Kind()))) { + $s = -1; return false; + } + if (1 <= kind && kind <= 16 || (kind === 24) || (kind === 26)) { + $s = -1; return true; + } + _1 = kind; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (18)) { $s = 3; continue; } + /* */ if (_1 === (19)) { $s = 4; continue; } + /* */ if (_1 === (20)) { $s = 5; continue; } + /* */ if (_1 === (21)) { $s = 6; continue; } + /* */ if ((_1 === (22)) || (_1 === (23))) { $s = 7; continue; } + /* */ if (_1 === (25)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (17)) { */ case 2: + if (!(T.Len() === V.Len())) { _v = false; $s = 10; continue s; } + _r = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 10: + $s = -1; return _v; + /* } else if (_1 === (18)) { */ case 3: + if (!(V.ChanDir() === 3)) { _v$1 = false; $s = 14; continue s; } + _r$1 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = _r$1; case 14: + /* */ if (_v$1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_v$1) { */ case 12: + $s = -1; return true; + /* } */ case 13: + if (!(V.ChanDir() === T.ChanDir())) { _v$2 = false; $s = 16; continue s; } + _r$2 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$2 = _r$2; case 16: + $s = -1; return _v$2; + /* } else if (_1 === (19)) { */ case 4: + t = (T.kindType); + v = (V.kindType); + if (!((t.outCount === v.outCount)) || !((t.inCount === v.inCount))) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 18: + /* if (!(i < t.rtype.NumIn())) { break; } */ if(!(i < t.rtype.NumIn())) { $s = 19; continue; } + _r$3 = haveIdenticalType(t.rtype.In(i), v.rtype.In(i), cmpTags); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!_r$3) { */ case 20: + $s = -1; return false; + /* } */ case 21: + i = i + (1) >> 0; + /* } */ $s = 18; continue; case 19: + i$1 = 0; + /* while (true) { */ case 23: + /* if (!(i$1 < t.rtype.NumOut())) { break; } */ if(!(i$1 < t.rtype.NumOut())) { $s = 24; continue; } + _r$4 = haveIdenticalType(t.rtype.Out(i$1), v.rtype.Out(i$1), cmpTags); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!_r$4) { */ case 25: + $s = -1; return false; + /* } */ case 26: + i$1 = i$1 + (1) >> 0; + /* } */ $s = 23; continue; case 24: + $s = -1; return true; + /* } else if (_1 === (20)) { */ case 5: + t$1 = (T.kindType); + v$1 = (V.kindType); + if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) { + $s = -1; return true; + } + $s = -1; return false; + /* } else if (_1 === (21)) { */ case 6: + _r$5 = haveIdenticalType(T.Key(), V.Key(), cmpTags); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (!(_r$5)) { _v$3 = false; $s = 28; continue s; } + _r$6 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$3 = _r$6; case 28: + $s = -1; return _v$3; + /* } else if ((_1 === (22)) || (_1 === (23))) { */ case 7: + _r$7 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $s = -1; return _r$7; + /* } else if (_1 === (25)) { */ case 8: + t$2 = (T.kindType); + v$2 = (V.kindType); + if (!((t$2.fields.$length === v$2.fields.$length))) { + $s = -1; return false; + } + if (!($clone(t$2.pkgPath, name).name() === $clone(v$2.pkgPath, name).name())) { + $s = -1; return false; + } + _ref = t$2.fields; + _i = 0; + /* while (true) { */ case 32: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 33; continue; } + i$2 = _i; + tf = (x = t$2.fields, ((i$2 < 0 || i$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$2])); + vf = (x$1 = v$2.fields, ((i$2 < 0 || i$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$2])); + if (!($clone(tf.name, name).name() === $clone(vf.name, name).name())) { + $s = -1; return false; + } + _r$8 = haveIdenticalType(tf.typ, vf.typ, cmpTags); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!_r$8) { */ case 34: + $s = -1; return false; + /* } */ case 35: + if (cmpTags && !($clone(tf.name, name).tag() === $clone(vf.name, name).tag())) { + $s = -1; return false; + } + if (!((tf.offsetEmbed === vf.offsetEmbed))) { + $s = -1; return false; + } + _i++; + /* } */ $s = 32; continue; case 33: + $s = -1; return true; + /* } */ case 9: + case 1: + $s = -1; return false; + /* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalUnderlyingType }; } $f.T = T; $f.V = V; $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.cmpTags = cmpTags; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.kind = kind; $f.t = t; $f.t$1 = t$1; $f.t$2 = t$2; $f.tf = tf; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.vf = vf; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + toType = function(t) { + var t; + if (t === ptrType$1.nil) { + return $ifaceNil; + } + return t; + }; + ifaceIndir = function(t) { + var t; + return ((t.kind & 32) >>> 0) === 0; + }; + flag.prototype.kind = function() { + var f; + f = this.$val; + return ((((f & 31) >>> 0) >>> 0)); + }; + $ptrType(flag).prototype.kind = function() { return new flag(this.$get()).kind(); }; + flag.prototype.ro = function() { + var f; + f = this.$val; + if (!((((f & 96) >>> 0) === 0))) { + return 32; + } + return 0; + }; + $ptrType(flag).prototype.ro = function() { return new flag(this.$get()).ro(); }; + Value.ptr.prototype.pointer = function() { + var v; + v = this; + if (!((v.typ.size === 4)) || !v.typ.pointers()) { + $panic(new $String("can't call pointer on a non-pointer Value")); + } + if (!((((v.flag & 128) >>> 0) === 0))) { + return (v.ptr).$get(); + } + return v.ptr; + }; + Value.prototype.pointer = function() { return this.$val.pointer(); }; + ValueError.ptr.prototype.Error = function() { + var e; + e = this; + if (e.Kind === 0) { + return "reflect: call of " + e.Method + " on zero Value"; + } + return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value"; + }; + ValueError.prototype.Error = function() { return this.$val.Error(); }; + flag.prototype.mustBe = function(expected) { + var expected, f; + f = this.$val; + if (!((new flag(f).kind() === expected))) { + $panic(new ValueError.ptr(methodName(), new flag(f).kind())); + } + }; + $ptrType(flag).prototype.mustBe = function(expected) { return new flag(this.$get()).mustBe(expected); }; + flag.prototype.mustBeExported = function() { + var f; + f = this.$val; + if (f === 0) { + $panic(new ValueError.ptr(methodName(), 0)); + } + if (!((((f & 96) >>> 0) === 0))) { + $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); + } + }; + $ptrType(flag).prototype.mustBeExported = function() { return new flag(this.$get()).mustBeExported(); }; + flag.prototype.mustBeAssignable = function() { + var f; + f = this.$val; + if (f === 0) { + $panic(new ValueError.ptr(methodName(), 0)); + } + if (!((((f & 96) >>> 0) === 0))) { + $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); + } + if (((f & 256) >>> 0) === 0) { + $panic(new $String("reflect: " + methodName() + " using unaddressable value")); + } + }; + $ptrType(flag).prototype.mustBeAssignable = function() { return new flag(this.$get()).mustBeAssignable(); }; + Value.ptr.prototype.Addr = function() { + var v; + v = this; + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Addr of unaddressable value")); + } + return new Value.ptr(v.typ.ptrTo(), v.ptr, (new flag(v.flag).ro() | 22) >>> 0); + }; + Value.prototype.Addr = function() { return this.$val.Addr(); }; + Value.ptr.prototype.Bool = function() { + var v; + v = this; + new flag(v.flag).mustBe(1); + return (v.ptr).$get(); + }; + Value.prototype.Bool = function() { return this.$val.Bool(); }; + Value.ptr.prototype.Bytes = function() { + var _r, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 8))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 8))) { */ case 1: + $panic(new $String("reflect.Value.Bytes of non-byte slice")); + /* } */ case 2: + $s = -1; return (v.ptr).$get(); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Bytes }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Bytes = function() { return this.$val.Bytes(); }; + Value.ptr.prototype.runes = function() { + var _r, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 5))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 5))) { */ case 1: + $panic(new $String("reflect.Value.Bytes of non-rune slice")); + /* } */ case 2: + $s = -1; return (v.ptr).$get(); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.runes }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.runes = function() { return this.$val.runes(); }; + Value.ptr.prototype.CanAddr = function() { + var v; + v = this; + return !((((v.flag & 256) >>> 0) === 0)); + }; + Value.prototype.CanAddr = function() { return this.$val.CanAddr(); }; + Value.ptr.prototype.CanSet = function() { + var v; + v = this; + return ((v.flag & 352) >>> 0) === 256; + }; + Value.prototype.CanSet = function() { return this.$val.CanSet(); }; + Value.ptr.prototype.Call = function(in$1) { + var _r, in$1, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(19); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).call("Call", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Call }; } $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Call = function(in$1) { return this.$val.Call(in$1); }; + Value.ptr.prototype.CallSlice = function(in$1) { + var _r, in$1, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(19); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).call("CallSlice", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.CallSlice }; } $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.CallSlice = function(in$1) { return this.$val.CallSlice(in$1); }; + Value.ptr.prototype.Complex = function() { + var _1, k, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (15)) { + return ((x = (v.ptr).$get(), new $Complex128(x.$real, x.$imag))); + } else if (_1 === (16)) { + return (v.ptr).$get(); + } + $panic(new ValueError.ptr("reflect.Value.Complex", new flag(v.flag).kind())); + }; + Value.prototype.Complex = function() { return this.$val.Complex(); }; + Value.ptr.prototype.FieldByIndex = function(index) { + var _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _v = $f._v; i = $f.i; index = $f.index; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (index.$length === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (index.$length === 1) { */ case 1: + _r = $clone(v, Value).Field((0 >= index.$length ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + new flag(v.flag).mustBe(25); + _ref = index; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (i > 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (i > 0) { */ case 6: + if (!($clone(v, Value).Kind() === 22)) { _v = false; $s = 10; continue s; } + _r$1 = v.typ.Elem().Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 === 25; case 10: + /* */ if (_v) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_v) { */ case 8: + if ($clone(v, Value).IsNil()) { + $panic(new $String("reflect: indirection through nil pointer to embedded struct")); + } + _r$2 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + /* } */ case 9: + /* } */ case 7: + _r$3 = $clone(v, Value).Field(x); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + v = _r$3; + _i++; + /* } */ $s = 4; continue; case 5: + $s = -1; return v; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByIndex }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._v = _v; $f.i = i; $f.index = index; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); }; + Value.ptr.prototype.FieldByName = function(name$1) { + var _r, _r$1, _tuple, f, name$1, ok, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; name$1 = $f.name$1; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(25); + _r = v.typ.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = $clone(_tuple[0], StructField); + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* } */ case 3: + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByName }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.name$1 = name$1; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); }; + Value.ptr.prototype.FieldByNameFunc = function(match) { + var _r, _r$1, _tuple, f, match, ok, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; match = $f.match; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + _r = v.typ.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = $clone(_tuple[0], StructField); + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* } */ case 3: + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByNameFunc }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.match = match; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); }; + Value.ptr.prototype.Float = function() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (13)) { + return ((v.ptr).$get()); + } else if (_1 === (14)) { + return (v.ptr).$get(); + } + $panic(new ValueError.ptr("reflect.Value.Float", new flag(v.flag).kind())); + }; + Value.prototype.Float = function() { return this.$val.Float(); }; + Value.ptr.prototype.Int = function() { + var _1, k, p, v; + v = this; + k = new flag(v.flag).kind(); + p = v.ptr; + _1 = k; + if (_1 === (2)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (3)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (4)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (5)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (6)) { + return (p).$get(); + } + $panic(new ValueError.ptr("reflect.Value.Int", new flag(v.flag).kind())); + }; + Value.prototype.Int = function() { return this.$val.Int(); }; + Value.ptr.prototype.CanInterface = function() { + var v; + v = this; + if (v.flag === 0) { + $panic(new ValueError.ptr("reflect.Value.CanInterface", 0)); + } + return ((v.flag & 96) >>> 0) === 0; + }; + Value.prototype.CanInterface = function() { return this.$val.CanInterface(); }; + Value.ptr.prototype.Interface = function() { + var _r, i, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + i = $ifaceNil; + v = this; + _r = valueInterface($clone(v, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + $s = -1; return i; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Interface }; } $f._r = _r; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Interface = function() { return this.$val.Interface(); }; + Value.ptr.prototype.IsValid = function() { + var v; + v = this; + return !((v.flag === 0)); + }; + Value.prototype.IsValid = function() { return this.$val.IsValid(); }; + Value.ptr.prototype.Kind = function() { + var v; + v = this; + return new flag(v.flag).kind(); + }; + Value.prototype.Kind = function() { return this.$val.Kind(); }; + Value.ptr.prototype.MapIndex = function(key) { + var _r, e, fl, k, key, tt, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; fl = $f.fl; k = $f.k; key = $f.key; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + tt = (v.typ.kindType); + _r = $clone(key, Value).assignTo("reflect.Value.MapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + k = 0; + if (!((((key.flag & 128) >>> 0) === 0))) { + k = key.ptr; + } else { + k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); + } + e = mapaccess(v.typ, $clone(v, Value).pointer(), k); + if (e === 0) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + typ = tt.elem; + fl = new flag((((v.flag | key.flag) >>> 0))).ro(); + fl = (fl | (((typ.Kind() >>> 0)))) >>> 0; + $s = -1; return copyVal(typ, fl, e); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapIndex }; } $f._r = _r; $f.e = e; $f.fl = fl; $f.k = k; $f.key = key; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.MapIndex = function(key) { return this.$val.MapIndex(key); }; + Value.ptr.prototype.MapKeys = function() { + var _r, a, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; fl = $f.fl; i = $f.i; it = $f.it; key = $f.key; keyType = $f.keyType; m = $f.m; mlen = $f.mlen; tt = $f.tt; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + tt = (v.typ.kindType); + keyType = tt.key; + fl = (new flag(v.flag).ro() | ((keyType.Kind() >>> 0))) >>> 0; + m = $clone(v, Value).pointer(); + mlen = 0; + if (!(m === 0)) { + mlen = maplen(m); + } + it = mapiterinit(v.typ, m); + a = $makeSlice(sliceType$9, mlen); + i = 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; } + _r = mapiterkey(it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + if (key === 0) { + /* break; */ $s = 2; continue; + } + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = copyVal(keyType, fl, key)); + mapiternext(it); + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + $s = -1; return $subslice(a, 0, i); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapKeys }; } $f._r = _r; $f.a = a; $f.fl = fl; $f.i = i; $f.it = it; $f.key = key; $f.keyType = keyType; $f.m = m; $f.mlen = mlen; $f.tt = tt; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.MapKeys = function() { return this.$val.MapKeys(); }; + MapIter.ptr.prototype.Key = function() { + var _arg, _arg$1, _arg$2, _r, _r$1, _r$2, it, ktype, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; ktype = $f.ktype; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + it = this; + if (it.it === 0) { + $panic(new $String("MapIter.Key called before Next")); + } + _r = mapiterkey(it.it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r === 0) { */ case 1: + $panic(new $String("MapIter.Key called on exhausted iterator")); + /* } */ case 2: + t = (it.m.typ.kindType); + ktype = t.key; + _arg = ktype; + _arg$1 = (new flag(it.m.flag).ro() | ((ktype.Kind() >>> 0))) >>> 0; + _r$1 = mapiterkey(it.it); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = _r$1; + _r$2 = copyVal(_arg, _arg$1, _arg$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: MapIter.ptr.prototype.Key }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.ktype = ktype; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + MapIter.prototype.Key = function() { return this.$val.Key(); }; + MapIter.ptr.prototype.Value = function() { + var _arg, _arg$1, _arg$2, _r, _r$1, _r$2, it, t, vtype, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; t = $f.t; vtype = $f.vtype; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + it = this; + if (it.it === 0) { + $panic(new $String("MapIter.Value called before Next")); + } + _r = mapiterkey(it.it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r === 0) { */ case 1: + $panic(new $String("MapIter.Value called on exhausted iterator")); + /* } */ case 2: + t = (it.m.typ.kindType); + vtype = t.elem; + _arg = vtype; + _arg$1 = (new flag(it.m.flag).ro() | ((vtype.Kind() >>> 0))) >>> 0; + _r$1 = mapitervalue(it.it); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = _r$1; + _r$2 = copyVal(_arg, _arg$1, _arg$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: MapIter.ptr.prototype.Value }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.t = t; $f.vtype = vtype; $f.$s = $s; $f.$r = $r; return $f; + }; + MapIter.prototype.Value = function() { return this.$val.Value(); }; + MapIter.ptr.prototype.Next = function() { + var _r, _r$1, it, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; it = $f.it; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + it = this; + /* */ if (it.it === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (it.it === 0) { */ case 1: + it.it = mapiterinit(it.m.typ, $clone(it.m, Value).pointer()); + $s = 3; continue; + /* } else { */ case 2: + _r = mapiterkey(it.it); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r === 0) { */ case 4: + $panic(new $String("MapIter.Next called on exhausted iterator")); + /* } */ case 5: + mapiternext(it.it); + /* } */ case 3: + _r$1 = mapiterkey(it.it); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return !(_r$1 === 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: MapIter.ptr.prototype.Next }; } $f._r = _r; $f._r$1 = _r$1; $f.it = it; $f.$s = $s; $f.$r = $r; return $f; + }; + MapIter.prototype.Next = function() { return this.$val.Next(); }; + Value.ptr.prototype.MapRange = function() { + var v; + v = this; + new flag(v.flag).mustBe(21); + return new MapIter.ptr($clone(v, Value), 0); + }; + Value.prototype.MapRange = function() { return this.$val.MapRange(); }; + copyVal = function(typ, fl, ptr) { + var c, fl, ptr, typ; + if (ifaceIndir(typ)) { + c = unsafe_New(typ); + typedmemmove(typ, c, ptr); + return new Value.ptr(typ, c, (fl | 128) >>> 0); + } + return new Value.ptr(typ, (ptr).$get(), fl); + }; + Value.ptr.prototype.Method = function(i) { + var fl, i, v; + v = this; + if (v.typ === ptrType$1.nil) { + $panic(new ValueError.ptr("reflect.Value.Method", 0)); + } + if (!((((v.flag & 512) >>> 0) === 0)) || ((i >>> 0)) >= ((v.typ.NumMethod() >>> 0))) { + $panic(new $String("reflect: Method index out of range")); + } + if ((v.typ.Kind() === 20) && $clone(v, Value).IsNil()) { + $panic(new $String("reflect: Method on nil interface value")); + } + fl = (v.flag & 160) >>> 0; + fl = (fl | (19)) >>> 0; + fl = (fl | ((((((i >>> 0)) << 10 >>> 0) | 512) >>> 0))) >>> 0; + return new Value.ptr(v.typ, v.ptr, fl); + }; + Value.prototype.Method = function(i) { return this.$val.Method(i); }; + Value.ptr.prototype.NumMethod = function() { + var v; + v = this; + if (v.typ === ptrType$1.nil) { + $panic(new ValueError.ptr("reflect.Value.NumMethod", 0)); + } + if (!((((v.flag & 512) >>> 0) === 0))) { + return 0; + } + return v.typ.NumMethod(); + }; + Value.prototype.NumMethod = function() { return this.$val.NumMethod(); }; + Value.ptr.prototype.MethodByName = function(name$1) { + var _r, _tuple, m, name$1, ok, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; m = $f.m; name$1 = $f.name$1; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + if (v.typ === ptrType$1.nil) { + $panic(new ValueError.ptr("reflect.Value.MethodByName", 0)); + } + if (!((((v.flag & 512) >>> 0) === 0))) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + _r = v.typ.MethodByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = $clone(_tuple[0], Method); + ok = _tuple[1]; + if (!ok) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + $s = -1; return $clone(v, Value).Method(m.Index); + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MethodByName }; } $f._r = _r; $f._tuple = _tuple; $f.m = m; $f.name$1 = name$1; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); }; + Value.ptr.prototype.NumField = function() { + var tt, v; + v = this; + new flag(v.flag).mustBe(25); + tt = (v.typ.kindType); + return tt.fields.$length; + }; + Value.prototype.NumField = function() { return this.$val.NumField(); }; + Value.ptr.prototype.OverflowComplex = function(x) { + var _1, k, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (15)) { + return overflowFloat32(x.$real) || overflowFloat32(x.$imag); + } else if (_1 === (16)) { + return false; + } + $panic(new ValueError.ptr("reflect.Value.OverflowComplex", new flag(v.flag).kind())); + }; + Value.prototype.OverflowComplex = function(x) { return this.$val.OverflowComplex(x); }; + Value.ptr.prototype.OverflowFloat = function(x) { + var _1, k, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (13)) { + return overflowFloat32(x); + } else if (_1 === (14)) { + return false; + } + $panic(new ValueError.ptr("reflect.Value.OverflowFloat", new flag(v.flag).kind())); + }; + Value.prototype.OverflowFloat = function(x) { return this.$val.OverflowFloat(x); }; + overflowFloat32 = function(x) { + var x; + if (x < 0) { + x = -x; + } + return 3.4028234663852886e+38 < x && x <= 1.7976931348623157e+308; + }; + Value.ptr.prototype.OverflowInt = function(x) { + var _1, bitSize, k, trunc, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { + bitSize = $imul(v.typ.size, 8) >>> 0; + trunc = $shiftRightInt64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0))); + return !((x.$high === trunc.$high && x.$low === trunc.$low)); + } + $panic(new ValueError.ptr("reflect.Value.OverflowInt", new flag(v.flag).kind())); + }; + Value.prototype.OverflowInt = function(x) { return this.$val.OverflowInt(x); }; + Value.ptr.prototype.OverflowUint = function(x) { + var _1, bitSize, k, trunc, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (7)) || (_1 === (12)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { + bitSize = $imul(v.typ.size, 8) >>> 0; + trunc = $shiftRightUint64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0))); + return !((x.$high === trunc.$high && x.$low === trunc.$low)); + } + $panic(new ValueError.ptr("reflect.Value.OverflowUint", new flag(v.flag).kind())); + }; + Value.prototype.OverflowUint = function(x) { return this.$val.OverflowUint(x); }; + Value.ptr.prototype.Recv = function() { + var _r, _tuple, ok, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + x = new Value.ptr(ptrType$1.nil, 0, 0); + ok = false; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).recv(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + x = _tuple[0]; + ok = _tuple[1]; + $s = -1; return [x, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Recv }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Recv = function() { return this.$val.Recv(); }; + Value.ptr.prototype.recv = function(nb) { + var _r, _tuple, nb, ok, p, selected, t, tt, v, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; nb = $f.nb; ok = $f.ok; p = $f.p; selected = $f.selected; t = $f.t; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + val = new Value.ptr(ptrType$1.nil, 0, 0); + ok = false; + v = this; + tt = (v.typ.kindType); + if ((((tt.dir >> 0)) & 1) === 0) { + $panic(new $String("reflect: recv on send-only channel")); + } + t = tt.elem; + val = new Value.ptr(t, 0, ((t.Kind() >>> 0))); + p = 0; + if (ifaceIndir(t)) { + p = unsafe_New(t); + val.ptr = p; + val.flag = (val.flag | (128)) >>> 0; + } else { + p = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)))); + } + _r = chanrecv($clone(v, Value).pointer(), nb, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + selected = _tuple[0]; + ok = _tuple[1]; + if (!selected) { + val = new Value.ptr(ptrType$1.nil, 0, 0); + } + $s = -1; return [val, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.recv }; } $f._r = _r; $f._tuple = _tuple; $f.nb = nb; $f.ok = ok; $f.p = p; $f.selected = selected; $f.t = t; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.recv = function(nb) { return this.$val.recv(nb); }; + Value.ptr.prototype.Send = function(x) { + var _r, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).send($clone(x, Value), false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Send }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Send = function(x) { return this.$val.Send(x); }; + Value.ptr.prototype.send = function(x, nb) { + var _r, _r$1, nb, p, selected, tt, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; nb = $f.nb; p = $f.p; selected = $f.selected; tt = $f.tt; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + selected = false; + v = this; + tt = (v.typ.kindType); + if ((((tt.dir >> 0)) & 2) === 0) { + $panic(new $String("reflect: send on recv-only channel")); + } + new flag(x.flag).mustBeExported(); + _r = $clone(x, Value).assignTo("reflect.Value.Send", tt.elem, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + p = 0; + if (!((((x.flag & 128) >>> 0) === 0))) { + p = x.ptr; + } else { + p = ((x.$ptr_ptr || (x.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x)))); + } + _r$1 = chansend($clone(v, Value).pointer(), p, nb); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + selected = _r$1; + $s = -1; return selected; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.send }; } $f._r = _r; $f._r$1 = _r$1; $f.nb = nb; $f.p = p; $f.selected = selected; $f.tt = tt; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.send = function(x, nb) { return this.$val.send(x, nb); }; + Value.ptr.prototype.SetBool = function(x) { + var v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(1); + (v.ptr).$set(x); + }; + Value.prototype.SetBool = function(x) { return this.$val.SetBool(x); }; + Value.ptr.prototype.setRunes = function(x) { + var _r, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 5))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 5))) { */ case 1: + $panic(new $String("reflect.Value.setRunes of non-rune slice")); + /* } */ case 2: + (v.ptr).$set(x); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.setRunes }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.setRunes = function(x) { return this.$val.setRunes(x); }; + Value.ptr.prototype.SetComplex = function(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (15)) { + (v.ptr).$set((new $Complex64(x.$real, x.$imag))); + } else if (_1 === (16)) { + (v.ptr).$set(x); + } else { + $panic(new ValueError.ptr("reflect.Value.SetComplex", new flag(v.flag).kind())); + } + }; + Value.prototype.SetComplex = function(x) { return this.$val.SetComplex(x); }; + Value.ptr.prototype.SetFloat = function(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (13)) { + (v.ptr).$set(($fround(x))); + } else if (_1 === (14)) { + (v.ptr).$set(x); + } else { + $panic(new ValueError.ptr("reflect.Value.SetFloat", new flag(v.flag).kind())); + } + }; + Value.prototype.SetFloat = function(x) { return this.$val.SetFloat(x); }; + Value.ptr.prototype.SetInt = function(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (2)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0))); + } else if (_1 === (3)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24))); + } else if (_1 === (4)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16))); + } else if (_1 === (5)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0))); + } else if (_1 === (6)) { + (v.ptr).$set(x); + } else { + $panic(new ValueError.ptr("reflect.Value.SetInt", new flag(v.flag).kind())); + } + }; + Value.prototype.SetInt = function(x) { return this.$val.SetInt(x); }; + Value.ptr.prototype.SetMapIndex = function(key, val) { + var _r, _r$1, e, k, key, tt, v, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; e = $f.e; k = $f.k; key = $f.key; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + new flag(v.flag).mustBeExported(); + new flag(key.flag).mustBeExported(); + tt = (v.typ.kindType); + _r = $clone(key, Value).assignTo("reflect.Value.SetMapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + k = 0; + if (!((((key.flag & 128) >>> 0) === 0))) { + k = key.ptr; + } else { + k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); + } + if (val.typ === ptrType$1.nil) { + mapdelete(v.typ, $clone(v, Value).pointer(), k); + $s = -1; return; + } + new flag(val.flag).mustBeExported(); + _r$1 = $clone(val, Value).assignTo("reflect.Value.SetMapIndex", tt.elem, 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + e = 0; + if (!((((val.flag & 128) >>> 0) === 0))) { + e = val.ptr; + } else { + e = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)))); + } + $r = mapassign(v.typ, $clone(v, Value).pointer(), k, e); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetMapIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.k = k; $f.key = key; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.SetMapIndex = function(key, val) { return this.$val.SetMapIndex(key, val); }; + Value.ptr.prototype.SetUint = function(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (7)) { + (v.ptr).$set(((x.$low >>> 0))); + } else if (_1 === (8)) { + (v.ptr).$set(((x.$low << 24 >>> 24))); + } else if (_1 === (9)) { + (v.ptr).$set(((x.$low << 16 >>> 16))); + } else if (_1 === (10)) { + (v.ptr).$set(((x.$low >>> 0))); + } else if (_1 === (11)) { + (v.ptr).$set(x); + } else if (_1 === (12)) { + (v.ptr).$set(((x.$low >>> 0))); + } else { + $panic(new ValueError.ptr("reflect.Value.SetUint", new flag(v.flag).kind())); + } + }; + Value.prototype.SetUint = function(x) { return this.$val.SetUint(x); }; + Value.ptr.prototype.SetPointer = function(x) { + var v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(26); + (v.ptr).$set(x); + }; + Value.prototype.SetPointer = function(x) { return this.$val.SetPointer(x); }; + Value.ptr.prototype.SetString = function(x) { + var v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(24); + (v.ptr).$set(x); + }; + Value.prototype.SetString = function(x) { return this.$val.SetString(x); }; + Value.ptr.prototype.String = function() { + var _1, _r, k, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (0)) { + $s = -1; return ""; + } else if (_1 === (24)) { + $s = -1; return (v.ptr).$get(); + } + _r = $clone(v, Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return "<" + _r + " Value>"; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.String }; } $f._1 = _1; $f._r = _r; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.String = function() { return this.$val.String(); }; + Value.ptr.prototype.TryRecv = function() { + var _r, _tuple, ok, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + x = new Value.ptr(ptrType$1.nil, 0, 0); + ok = false; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).recv(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + x = _tuple[0]; + ok = _tuple[1]; + $s = -1; return [x, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TryRecv }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.TryRecv = function() { return this.$val.TryRecv(); }; + Value.ptr.prototype.TrySend = function(x) { + var _r, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).send($clone(x, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TrySend }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.TrySend = function(x) { return this.$val.TrySend(x); }; + Value.ptr.prototype.Type = function() { + var f, i, m, m$1, ms, tt, v, x; + v = this; + f = v.flag; + if (f === 0) { + $panic(new ValueError.ptr("reflect.Value.Type", 0)); + } + if (((f & 512) >>> 0) === 0) { + return v.typ; + } + i = ((v.flag >> 0)) >> 10 >> 0; + if (v.typ.Kind() === 20) { + tt = (v.typ.kindType); + if (((i >>> 0)) >= ((tt.methods.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + return v.typ.typeOff(m.typ); + } + ms = v.typ.exportedMethods(); + if (((i >>> 0)) >= ((ms.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); + return v.typ.typeOff(m$1.mtyp); + }; + Value.prototype.Type = function() { return this.$val.Type(); }; + Value.ptr.prototype.Uint = function() { + var _1, k, p, v, x; + v = this; + k = new flag(v.flag).kind(); + p = v.ptr; + _1 = k; + if (_1 === (7)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (8)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (9)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (10)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (11)) { + return (p).$get(); + } else if (_1 === (12)) { + return ((x = (p).$get(), new $Uint64(0, x.constructor === Number ? x : 1))); + } + $panic(new ValueError.ptr("reflect.Value.Uint", new flag(v.flag).kind())); + }; + Value.prototype.Uint = function() { return this.$val.Uint(); }; + Value.ptr.prototype.UnsafeAddr = function() { + var v; + v = this; + if (v.typ === ptrType$1.nil) { + $panic(new ValueError.ptr("reflect.Value.UnsafeAddr", 0)); + } + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.UnsafeAddr of unaddressable value")); + } + return (v.ptr); + }; + Value.prototype.UnsafeAddr = function() { return this.$val.UnsafeAddr(); }; + Indirect = function(v) { + var _r, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (!(($clone(v, Value).Kind() === 22))) { + $s = -1; return v; + } + _r = $clone(v, Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Indirect }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Indirect = Indirect; + New = function(typ) { + var fl, ptr, t, typ; + if ($interfaceIsEqual(typ, $ifaceNil)) { + $panic(new $String("reflect: New(nil)")); + } + t = $assertType(typ, ptrType$1); + ptr = unsafe_New(t); + fl = 22; + return new Value.ptr(t.ptrTo(), ptr, fl); + }; + $pkg.New = New; + Value.ptr.prototype.Convert = function(t) { + var _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; op = $f.op; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue("Convert", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + _r$1 = t.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = convertOp(_r$1, v.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + op = _r$2; + /* */ if (op === $throwNilPointerError) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (op === $throwNilPointerError) { */ case 6: + _r$3 = t.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $panic(new $String("reflect.Value.Convert: value of type " + v.typ.String() + " cannot be converted to type " + _r$3)); + /* } */ case 7: + _r$4 = op($clone(v, Value), t); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $s = -1; return _r$4; + /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Convert }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.op = op; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Value.prototype.Convert = function(t) { return this.$val.Convert(t); }; + convertOp = function(dst, src) { + var _1, _2, _3, _4, _5, _6, _7, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, dst, src, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _6 = $f._6; _7 = $f._7; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; dst = $f.dst; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _1 = src.Kind(); + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 4; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 5; continue; } + /* */ if (_1 === (24)) { $s = 6; continue; } + /* */ if (_1 === (23)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2: + _2 = dst.Kind(); + if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) { + $s = -1; return cvtInt; + } else if ((_2 === (13)) || (_2 === (14))) { + $s = -1; return cvtIntFloat; + } else if (_2 === (24)) { + $s = -1; return cvtIntString; + } + $s = 8; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3: + _3 = dst.Kind(); + if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6)) || (_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { + $s = -1; return cvtUint; + } else if ((_3 === (13)) || (_3 === (14))) { + $s = -1; return cvtUintFloat; + } else if (_3 === (24)) { + $s = -1; return cvtUintString; + } + $s = 8; continue; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 4: + _4 = dst.Kind(); + if ((_4 === (2)) || (_4 === (3)) || (_4 === (4)) || (_4 === (5)) || (_4 === (6))) { + $s = -1; return cvtFloatInt; + } else if ((_4 === (7)) || (_4 === (8)) || (_4 === (9)) || (_4 === (10)) || (_4 === (11)) || (_4 === (12))) { + $s = -1; return cvtFloatUint; + } else if ((_4 === (13)) || (_4 === (14))) { + $s = -1; return cvtFloat; + } + $s = 8; continue; + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 5: + _5 = dst.Kind(); + if ((_5 === (15)) || (_5 === (16))) { + $s = -1; return cvtComplex; + } + $s = 8; continue; + /* } else if (_1 === (24)) { */ case 6: + if (!(dst.Kind() === 23)) { _v = false; $s = 11; continue s; } + _r = dst.Elem().PkgPath(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r === ""; case 11: + /* */ if (_v) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_v) { */ case 9: + _r$1 = dst.Elem().Kind(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _6 = _r$1; + if (_6 === (8)) { + $s = -1; return cvtStringBytes; + } else if (_6 === (5)) { + $s = -1; return cvtStringRunes; + } + case 13: + /* } */ case 10: + $s = 8; continue; + /* } else if (_1 === (23)) { */ case 7: + if (!(dst.Kind() === 24)) { _v$1 = false; $s = 17; continue s; } + _r$2 = src.Elem().PkgPath(); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$2 === ""; case 17: + /* */ if (_v$1) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_v$1) { */ case 15: + _r$3 = src.Elem().Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _7 = _r$3; + if (_7 === (8)) { + $s = -1; return cvtBytesString; + } else if (_7 === (5)) { + $s = -1; return cvtRunesString; + } + case 19: + /* } */ case 16: + /* } */ case 8: + case 1: + _r$4 = haveIdenticalUnderlyingType(dst, src, false); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_r$4) { */ case 21: + $s = -1; return cvtDirect; + /* } */ case 22: + if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$2 = false; $s = 26; continue s; } + _r$5 = dst.Elem().common(); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg = _r$5; + _r$6 = src.Elem().common(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$1 = _r$6; + _r$7 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v$2 = _r$7; case 26: + /* */ if (_v$2) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (_v$2) { */ case 24: + $s = -1; return cvtDirect; + /* } */ case 25: + if (implements$1(dst, src)) { + if (src.Kind() === 20) { + $s = -1; return cvtI2I; + } + $s = -1; return cvtT2I; + } + $s = -1; return $throwNilPointerError; + /* */ } return; } if ($f === undefined) { $f = { $blk: convertOp }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._6 = _6; $f._7 = _7; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.dst = dst; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; + }; + makeFloat = function(f, v, t) { + var _1, _r, f, ptr, t, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + _1 = typ.size; + if (_1 === (4)) { + (ptr).$set(($fround(v))); + } else if (_1 === (8)) { + (ptr).$set(v); + } + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: makeFloat }; } $f._1 = _1; $f._r = _r; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + makeComplex = function(f, v, t) { + var _1, _r, f, ptr, t, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + _1 = typ.size; + if (_1 === (8)) { + (ptr).$set((new $Complex64(v.$real, v.$imag))); + } else if (_1 === (16)) { + (ptr).$set(v); + } + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: makeComplex }; } $f._1 = _1; $f._r = _r; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + makeString = function(f, v, t) { + var _r, f, ret, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + $clone(ret, Value).SetString(v); + ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; + $s = -1; return ret; + /* */ } return; } if ($f === undefined) { $f = { $blk: makeString }; } $f._r = _r; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + makeBytes = function(f, v, t) { + var _r, f, ret, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + $r = $clone(ret, Value).SetBytes(v); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; + $s = -1; return ret; + /* */ } return; } if ($f === undefined) { $f = { $blk: makeBytes }; } $f._r = _r; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + makeRunes = function(f, v, t) { + var _r, f, ret, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + $r = $clone(ret, Value).setRunes(v); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; + $s = -1; return ret; + /* */ } return; } if ($f === undefined) { $f = { $blk: makeRunes }; } $f._r = _r; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtInt = function(v, t) { + var _r, t, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), ((x = $clone(v, Value).Int(), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtInt }; } $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtUint = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), $clone(v, Value).Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtUint }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtFloatInt = function(v, t) { + var _r, t, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), ((x = (new $Int64(0, $clone(v, Value).Float())), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatInt }; } $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtFloatUint = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), (new $Uint64(0, $clone(v, Value).Float())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatUint }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtIntFloat = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Int())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtUintFloat = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Uint())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtFloat = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeFloat(new flag(v.flag).ro(), $clone(v, Value).Float(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtComplex = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeComplex(new flag(v.flag).ro(), $clone(v, Value).Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtComplex }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtIntString = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeString(new flag(v.flag).ro(), ($encodeRune($clone(v, Value).Int().$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntString }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtUintString = function(v, t) { + var _r, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = makeString(new flag(v.flag).ro(), ($encodeRune($clone(v, Value).Uint().$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintString }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtBytesString = function(v, t) { + var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = ($bytesToString(_r)); + _arg$2 = t; + _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtBytesString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtStringBytes = function(v, t) { + var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = (new sliceType$15($stringToBytes(_r))); + _arg$2 = t; + _r$1 = makeBytes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringBytes }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtRunesString = function(v, t) { + var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).runes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = ($runesToString(_r)); + _arg$2 = t; + _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtRunesString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtStringRunes = function(v, t) { + var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = (new sliceType$18($stringToRunes(_r))); + _arg$2 = t; + _r$1 = makeRunes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringRunes }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtT2I = function(v, typ) { + var _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; target = $f.target; typ = $f.typ; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = unsafe_New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + target = _r$1; + _r$2 = valueInterface($clone(v, Value), false); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + _r$3 = typ.NumMethod(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$3 === 0) { */ case 4: + (target).$set(x); + $s = 6; continue; + /* } else { */ case 5: + ifaceE2I($assertType(typ, ptrType$1), x, target); + /* } */ case 6: + _r$4 = typ.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $s = -1; return new Value.ptr(_r$4, target, (((new flag(v.flag).ro() | 128) >>> 0) | 20) >>> 0); + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtT2I }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.target = target; $f.typ = typ; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + cvtI2I = function(v, typ) { + var _r, _r$1, _r$2, ret, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; ret = $f.ret; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ if ($clone(v, Value).IsNil()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($clone(v, Value).IsNil()) { */ case 1: + _r = Zero(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + ret.flag = (ret.flag | (new flag(v.flag).ro())) >>> 0; + $s = -1; return ret; + /* } */ case 2: + _r$1 = $clone(v, Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = cvtT2I($clone(_r$1, Value), typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: cvtI2I }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ret = ret; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + ptrType$5.methods = [{prop: "methods", name: "methods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}]; + ptrType$8.methods = [{prop: "in$", name: "in", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}, {prop: "out", name: "out", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}]; + name.methods = [{prop: "name", name: "name", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "tag", name: "tag", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "isExported", name: "isExported", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "data", name: "data", pkg: "reflect", typ: $funcType([$Int, $String], [ptrType$4], false)}, {prop: "nameLen", name: "nameLen", pkg: "reflect", typ: $funcType([], [$Int], false)}, {prop: "tagLen", name: "tagLen", pkg: "reflect", typ: $funcType([], [$Int], false)}]; + ptrType$7.methods = [{prop: "skipUntilValidKey", name: "skipUntilValidKey", pkg: "reflect", typ: $funcType([], [], false)}]; + Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$5], false)}, {prop: "nameOff", name: "nameOff", pkg: "reflect", typ: $funcType([nameOff], [name], false)}, {prop: "typeOff", name: "typeOff", pkg: "reflect", typ: $funcType([typeOff], [ptrType$1], false)}, {prop: "ptrTo", name: "ptrTo", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "pointers", name: "pointers", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "textOff", name: "textOff", pkg: "reflect", typ: $funcType([textOff], [$UnsafePointer], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}]; + ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$9.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}]; + ptrType$18.methods = [{prop: "offset", name: "offset", pkg: "reflect", typ: $funcType([], [$Uintptr], false)}, {prop: "embedded", name: "embedded", pkg: "reflect", typ: $funcType([], [$Bool], false)}]; + ptrType$11.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}]; + StructTag.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}]; + Value.methods = [{prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$2], false)}, {prop: "assignTo", name: "assignTo", pkg: "reflect", typ: $funcType([$String, ptrType$1, $UnsafePointer], [Value], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$9], [sliceType$9], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$8], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Pointer", name: "Pointer", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Value], [], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$15], [], false)}, {prop: "SetCap", name: "SetCap", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([$Int, $Int], [Value], false)}, {prop: "Slice3", name: "Slice3", pkg: "", typ: $funcType([$Int, $Int, $Int], [Value], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "pointer", name: "pointer", pkg: "reflect", typ: $funcType([], [$UnsafePointer], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$15], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$18], false)}, {prop: "CanAddr", name: "CanAddr", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "CanSet", name: "CanSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$9], [sliceType$9], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$9], [sliceType$9], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [Value], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [Value], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "CanInterface", name: "CanInterface", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "MapIndex", name: "MapIndex", pkg: "", typ: $funcType([Value], [Value], false)}, {prop: "MapKeys", name: "MapKeys", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "MapRange", name: "MapRange", pkg: "", typ: $funcType([], [ptrType$19], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "OverflowComplex", name: "OverflowComplex", pkg: "", typ: $funcType([$Complex128], [$Bool], false)}, {prop: "OverflowFloat", name: "OverflowFloat", pkg: "", typ: $funcType([$Float64], [$Bool], false)}, {prop: "OverflowInt", name: "OverflowInt", pkg: "", typ: $funcType([$Int64], [$Bool], false)}, {prop: "OverflowUint", name: "OverflowUint", pkg: "", typ: $funcType([$Uint64], [$Bool], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "recv", name: "recv", pkg: "reflect", typ: $funcType([$Bool], [Value, $Bool], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([Value], [], false)}, {prop: "send", name: "send", pkg: "reflect", typ: $funcType([Value, $Bool], [$Bool], false)}, {prop: "SetBool", name: "SetBool", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "setRunes", name: "setRunes", pkg: "reflect", typ: $funcType([sliceType$18], [], false)}, {prop: "SetComplex", name: "SetComplex", pkg: "", typ: $funcType([$Complex128], [], false)}, {prop: "SetFloat", name: "SetFloat", pkg: "", typ: $funcType([$Float64], [], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetMapIndex", name: "SetMapIndex", pkg: "", typ: $funcType([Value, Value], [], false)}, {prop: "SetUint", name: "SetUint", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "SetPointer", name: "SetPointer", pkg: "", typ: $funcType([$UnsafePointer], [], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TryRecv", name: "TryRecv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "TrySend", name: "TrySend", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "UnsafeAddr", name: "UnsafeAddr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Convert", name: "Convert", pkg: "", typ: $funcType([Type], [Value], false)}]; + flag.methods = [{prop: "kind", name: "kind", pkg: "reflect", typ: $funcType([], [Kind], false)}, {prop: "ro", name: "ro", pkg: "reflect", typ: $funcType([], [flag], false)}, {prop: "mustBe", name: "mustBe", pkg: "reflect", typ: $funcType([Kind], [], false)}, {prop: "mustBeExported", name: "mustBeExported", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeAssignable", name: "mustBeAssignable", pkg: "reflect", typ: $funcType([], [], false)}]; + ptrType$20.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$19.methods = [{prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([], [$Bool], false)}]; + uncommonType.init("reflect", [{prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mcount", name: "mcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "xcount", name: "xcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "moff", name: "moff", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "_methods", name: "_methods", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + funcType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: "reflect:\"func\""}, {prop: "inCount", name: "inCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "outCount", name: "outCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "_in", name: "_in", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "_out", name: "_out", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); + name.init("reflect", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: ptrType$4, tag: ""}]); + nameData.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tag", name: "tag", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "exported", name: "exported", embedded: false, exported: false, typ: $Bool, tag: ""}]); + mapIter.init("reflect", [{prop: "t", name: "t", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "m", name: "m", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "keys", name: "keys", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "last", name: "last", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + Type.init([{prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$5], false)}]); + rtype.init("reflect", [{prop: "size", name: "size", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "ptrdata", name: "ptrdata", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tflag", name: "tflag", embedded: false, exported: false, typ: tflag, tag: ""}, {prop: "align", name: "align", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "alg", name: "alg", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "gcdata", name: "gcdata", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "str", name: "str", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", embedded: false, exported: false, typ: typeOff, tag: ""}]); + typeAlg.init("reflect", [{prop: "hash", name: "hash", embedded: false, exported: false, typ: funcType$4, tag: ""}, {prop: "equal", name: "equal", embedded: false, exported: false, typ: funcType$5, tag: ""}]); + method.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mtyp", name: "mtyp", embedded: false, exported: false, typ: typeOff, tag: ""}, {prop: "ifn", name: "ifn", embedded: false, exported: false, typ: textOff, tag: ""}, {prop: "tfn", name: "tfn", embedded: false, exported: false, typ: textOff, tag: ""}]); + arrayType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + chanType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + imethod.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: typeOff, tag: ""}]); + interfaceType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType$6, tag: ""}]); + mapType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "key", name: "key", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "keysize", name: "keysize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "flags", name: "flags", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + ptrType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + sliceType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + structField.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: name, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "offsetEmbed", name: "offsetEmbed", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + structType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "fields", name: "fields", embedded: false, exported: false, typ: sliceType$7, tag: ""}]); + Method.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Func", name: "Func", embedded: false, exported: true, typ: Value, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}]); + StructField.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Tag", name: "Tag", embedded: false, exported: true, typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "Anonymous", name: "Anonymous", embedded: false, exported: true, typ: $Bool, tag: ""}]); + fieldScan.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$13, tag: ""}]); + Value.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", embedded: true, exported: false, typ: flag, tag: ""}]); + ValueError.init("", [{prop: "Method", name: "Method", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: Kind, tag: ""}]); + MapIter.init("reflect", [{prop: "m", name: "m", embedded: false, exported: false, typ: Value, tag: ""}, {prop: "it", name: "it", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + nameOffList = sliceType$1.nil; + typeOffList = sliceType$2.nil; + initialized = false; + uncommonTypeMap = {}; + nameMap = {}; + callHelper = $assertType($internalize($call, $emptyInterface), funcType$1); + selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1); + jsObjectPtr = reflectType($jsObjectPtr); + kindNames = new sliceType$4(["invalid", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "float32", "float64", "complex64", "complex128", "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"]); + uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1); + $r = init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["sort"] = (function() { + var $pkg = {}, $init, reflect, Interface, reverse, StringSlice, sliceType$2, Search, SearchStrings, insertionSort, siftDown, heapSort, medianOfThree, swapRange, doPivot, quickSort, Sort, maxDepth, Reverse, Strings, Stable, stable, symMerge, rotate; + reflect = $packages["reflect"]; + Interface = $pkg.Interface = $newType(8, $kindInterface, "sort.Interface", true, "sort", true, null); + reverse = $pkg.reverse = $newType(0, $kindStruct, "sort.reverse", true, "sort", false, function(Interface_) { + this.$val = this; + if (arguments.length === 0) { + this.Interface = $ifaceNil; + return; + } + this.Interface = Interface_; + }); + StringSlice = $pkg.StringSlice = $newType(12, $kindSlice, "sort.StringSlice", true, "sort", true, null); + sliceType$2 = $sliceType($String); + Search = function(n, f) { + var _r, _tmp, _tmp$1, f, h, i, j, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; f = $f.f; h = $f.h; i = $f.i; j = $f.j; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tmp = 0; + _tmp$1 = n; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 1: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + i = h + 1 >> 0; + $s = 5; continue; + /* } else { */ case 4: + j = h; + /* } */ case 5: + /* } */ $s = 1; continue; case 2: + $s = -1; return i; + /* */ } return; } if ($f === undefined) { $f = { $blk: Search }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.f = f; $f.h = h; $f.i = i; $f.j = j; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Search = Search; + SearchStrings = function(a, x) { + var _r, a, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + a = [a]; + x = [x]; + _r = Search(a[0].$length, (function(a, x) { return function(i) { + var i; + return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]) >= x[0]; + }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: SearchStrings }; } $f._r = _r; $f.a = a; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.SearchStrings = SearchStrings; + StringSlice.prototype.Search = function(x) { + var _r, p, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _r = SearchStrings($subslice(new sliceType$2(p.$array), p.$offset, p.$offset + p.$length), x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Search }; } $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(StringSlice).prototype.Search = function(x) { return this.$get().Search(x); }; + insertionSort = function(data, a, b) { + var _r, _v, a, b, data, i, j, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + i = a + 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; } + j = i; + /* while (true) { */ case 3: + if (!(j > a)) { _v = false; $s = 5; continue s; } + _r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; } + $r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = j - (1) >> 0; + /* } */ $s = 3; continue; case 4: + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: insertionSort }; } $f._r = _r; $f._v = _v; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f; + }; + siftDown = function(data, lo, hi, first) { + var _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; child = $f.child; data = $f.data; first = $f.first; hi = $f.hi; lo = $f.lo; root = $f.root; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + root = lo; + /* while (true) { */ case 1: + child = ($imul(2, root)) + 1 >> 0; + if (child >= hi) { + /* break; */ $s = 2; continue; + } + if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; } + _r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + child = child + (1) >> 0; + /* } */ case 4: + _r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + $s = -1; return; + /* } */ case 8: + $r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + root = child; + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: siftDown }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.child = child; $f.data = data; $f.first = first; $f.hi = hi; $f.lo = lo; $f.root = root; $f.$s = $s; $f.$r = $r; return $f; + }; + heapSort = function(data, a, b) { + var _q, a, b, data, first, hi, i, i$1, lo, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; a = $f.a; b = $f.b; data = $f.data; first = $f.first; hi = $f.hi; i = $f.i; i$1 = $f.i$1; lo = $f.lo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + first = a; + lo = 0; + hi = b - a >> 0; + i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* while (true) { */ case 1: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; } + $r = siftDown(data, i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + /* } */ $s = 1; continue; case 2: + i$1 = hi - 1 >> 0; + /* while (true) { */ case 4: + /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; } + $r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = siftDown(data, lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 - (1) >> 0; + /* } */ $s = 4; continue; case 5: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: heapSort }; } $f._q = _q; $f.a = a; $f.b = b; $f.data = data; $f.first = first; $f.hi = hi; $f.i = i; $f.i$1 = i$1; $f.lo = lo; $f.$s = $s; $f.$r = $r; return $f; + }; + medianOfThree = function(data, m1, m0, m2) { + var _r, _r$1, _r$2, data, m0, m1, m2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; data = $f.data; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + $r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _r$1 = data.Less(m2, m1); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$1) { */ case 5: + $r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = data.Less(m1, m0); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$2) { */ case 9: + $r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + /* } */ case 6: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: medianOfThree }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.data = data; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.$s = $s; $f.$r = $r; return $f; + }; + swapRange = function(data, a, b, n) { + var a, b, data, i, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; b = $f.b; data = $f.data; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + $r = data.Swap(a + i >> 0, b + i >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: swapRange }; } $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + doPivot = function(data, lo, hi) { + var _q, _q$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, a, b, c, data, dups, hi, lo, m, midhi, midlo, pivot, protect, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; a = $f.a; b = $f.b; c = $f.c; data = $f.data; dups = $f.dups; hi = $f.hi; lo = $f.lo; m = $f.m; midhi = $f.midhi; midlo = $f.midlo; pivot = $f.pivot; protect = $f.protect; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + midlo = 0; + midhi = 0; + m = ((((((lo + hi >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + /* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((hi - lo >> 0) > 40) { */ case 1: + s = (_q = ((hi - lo >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + $r = medianOfThree(data, lo, lo + s >> 0, lo + ($imul(2, s)) >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = medianOfThree(data, m, m - s >> 0, m + s >> 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = medianOfThree(data, hi - 1 >> 0, (hi - 1 >> 0) - s >> 0, (hi - 1 >> 0) - ($imul(2, s)) >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $r = medianOfThree(data, lo, m, hi - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + pivot = lo; + _tmp = lo + 1 >> 0; + _tmp$1 = hi - 1 >> 0; + a = _tmp; + c = _tmp$1; + /* while (true) { */ case 7: + if (!(a < c)) { _v = false; $s = 9; continue s; } + _r = data.Less(a, pivot); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 9: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; } + a = a + (1) >> 0; + /* } */ $s = 7; continue; case 8: + b = a; + /* while (true) { */ case 11: + /* while (true) { */ case 13: + if (!(b < c)) { _v$1 = false; $s = 15; continue s; } + _r$1 = data.Less(pivot, b); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = !_r$1; case 15: + /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 14; continue; } + b = b + (1) >> 0; + /* } */ $s = 13; continue; case 14: + /* while (true) { */ case 17: + if (!(b < c)) { _v$2 = false; $s = 19; continue s; } + _r$2 = data.Less(pivot, c - 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$2 = _r$2; case 19: + /* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 18; continue; } + c = c - (1) >> 0; + /* } */ $s = 17; continue; case 18: + if (b >= c) { + /* break; */ $s = 12; continue; + } + $r = data.Swap(b, c - 1 >> 0); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + b = b + (1) >> 0; + c = c - (1) >> 0; + /* } */ $s = 11; continue; case 12: + protect = (hi - c >> 0) < 5; + /* */ if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 22: + dups = 0; + _r$3 = data.Less(pivot, hi - 1 >> 0); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!_r$3) { */ case 24: + $r = data.Swap(c, hi - 1 >> 0); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + c = c + (1) >> 0; + dups = dups + (1) >> 0; + /* } */ case 25: + _r$4 = data.Less(b - 1 >> 0, pivot); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!_r$4) { */ case 28: + b = b - (1) >> 0; + dups = dups + (1) >> 0; + /* } */ case 29: + _r$5 = data.Less(m, pivot); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!_r$5) { */ case 31: + $r = data.Swap(m, b - 1 >> 0); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + b = b - (1) >> 0; + dups = dups + (1) >> 0; + /* } */ case 32: + protect = dups > 1; + /* } */ case 23: + /* */ if (protect) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (protect) { */ case 35: + /* while (true) { */ case 37: + /* while (true) { */ case 39: + if (!(a < b)) { _v$3 = false; $s = 41; continue s; } + _r$6 = data.Less(b - 1 >> 0, pivot); /* */ $s = 42; case 42: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$3 = !_r$6; case 41: + /* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 40; continue; } + b = b - (1) >> 0; + /* } */ $s = 39; continue; case 40: + /* while (true) { */ case 43: + if (!(a < b)) { _v$4 = false; $s = 45; continue s; } + _r$7 = data.Less(a, pivot); /* */ $s = 46; case 46: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v$4 = _r$7; case 45: + /* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 44; continue; } + a = a + (1) >> 0; + /* } */ $s = 43; continue; case 44: + if (a >= b) { + /* break; */ $s = 38; continue; + } + $r = data.Swap(a, b - 1 >> 0); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = a + (1) >> 0; + b = b - (1) >> 0; + /* } */ $s = 37; continue; case 38: + /* } */ case 36: + $r = data.Swap(pivot, b - 1 >> 0); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = b - 1 >> 0; + _tmp$3 = c; + midlo = _tmp$2; + midhi = _tmp$3; + $s = -1; return [midlo, midhi]; + /* */ } return; } if ($f === undefined) { $f = { $blk: doPivot }; } $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.dups = dups; $f.hi = hi; $f.lo = lo; $f.m = m; $f.midhi = midhi; $f.midlo = midlo; $f.pivot = pivot; $f.protect = protect; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + quickSort = function(data, a, b, maxDepth$1) { + var _r, _r$1, _tuple, a, b, data, i, maxDepth$1, mhi, mlo, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; b = $f.b; data = $f.data; i = $f.i; maxDepth$1 = $f.maxDepth$1; mhi = $f.mhi; mlo = $f.mlo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + /* if (!((b - a >> 0) > 12)) { break; } */ if(!((b - a >> 0) > 12)) { $s = 2; continue; } + /* */ if (maxDepth$1 === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (maxDepth$1 === 0) { */ case 3: + $r = heapSort(data, a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + maxDepth$1 = maxDepth$1 - (1) >> 0; + _r = doPivot(data, a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + mlo = _tuple[0]; + mhi = _tuple[1]; + /* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7: + $r = quickSort(data, a, mlo, maxDepth$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = mhi; + $s = 9; continue; + /* } else { */ case 8: + $r = quickSort(data, mhi, b, maxDepth$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + b = mlo; + /* } */ case 9: + /* } */ $s = 1; continue; case 2: + /* */ if ((b - a >> 0) > 1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((b - a >> 0) > 1) { */ case 12: + i = a + 6 >> 0; + /* while (true) { */ case 14: + /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 15; continue; } + _r$1 = data.Less(i, i - 6 >> 0); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_r$1) { */ case 16: + $r = data.Swap(i, i - 6 >> 0); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 17: + i = i + (1) >> 0; + /* } */ $s = 14; continue; case 15: + $r = insertionSort(data, a, b); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: quickSort }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.maxDepth$1 = maxDepth$1; $f.mhi = mhi; $f.mlo = mlo; $f.$s = $s; $f.$r = $r; return $f; + }; + Sort = function(data) { + var _r, data, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + $r = quickSort(data, 0, n, maxDepth(n)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f._r = _r; $f.data = data; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Sort = Sort; + maxDepth = function(n) { + var depth, i, n; + depth = 0; + i = n; + while (true) { + if (!(i > 0)) { break; } + depth = depth + (1) >> 0; + i = (i >> $min((1), 31)) >> 0; + } + return $imul(depth, 2); + }; + reverse.ptr.prototype.Less = function(i, j) { + var _r, i, j, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Interface.Less(j, i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: reverse.ptr.prototype.Less }; } $f._r = _r; $f.i = i; $f.j = j; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + reverse.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; + Reverse = function(data) { + var data; + return new reverse.ptr(data); + }; + $pkg.Reverse = Reverse; + StringSlice.prototype.Len = function() { + var p; + p = this; + return p.$length; + }; + $ptrType(StringSlice).prototype.Len = function() { return this.$get().Len(); }; + StringSlice.prototype.Less = function(i, j) { + var i, j, p; + p = this; + return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + }; + $ptrType(StringSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; + StringSlice.prototype.Swap = function(i, j) { + var _tmp, _tmp$1, i, j, p; + p = this; + _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + _tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); + ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1); + }; + $ptrType(StringSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; + StringSlice.prototype.Sort = function() { + var p, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + $r = Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Sort }; } $f.p = p; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(StringSlice).prototype.Sort = function() { return this.$get().Sort(); }; + Strings = function(a) { + var a, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = Sort(($subslice(new StringSlice(a.$array), a.$offset, a.$offset + a.$length))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Strings }; } $f.a = a; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Strings = Strings; + Stable = function(data) { + var _arg, _arg$1, _r, data, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; data = $f.data; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = data; + _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $r = stable(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stable }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.data = data; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Stable = Stable; + stable = function(data, n) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, blockSize, data, m, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; a = $f.a; b = $f.b; blockSize = $f.blockSize; data = $f.data; m = $f.m; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + blockSize = 20; + _tmp = 0; + _tmp$1 = blockSize; + a = _tmp; + b = _tmp$1; + /* while (true) { */ case 1: + /* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 2; continue; } + $r = insertionSort(data, a, b); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = b; + b = b + (blockSize) >> 0; + /* } */ $s = 1; continue; case 2: + $r = insertionSort(data, a, n); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 5: + /* if (!(blockSize < n)) { break; } */ if(!(blockSize < n)) { $s = 6; continue; } + _tmp$2 = 0; + _tmp$3 = $imul(2, blockSize); + a = _tmp$2; + b = _tmp$3; + /* while (true) { */ case 7: + /* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 8; continue; } + $r = symMerge(data, a, a + blockSize >> 0, b); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = b; + b = b + (($imul(2, blockSize))) >> 0; + /* } */ $s = 7; continue; case 8: + m = a + blockSize >> 0; + /* */ if (m < n) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (m < n) { */ case 10: + $r = symMerge(data, a, m, n); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + blockSize = $imul(blockSize, (2)); + /* } */ $s = 5; continue; case 6: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: stable }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.a = a; $f.b = b; $f.blockSize = blockSize; $f.data = data; $f.m = m; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + symMerge = function(data, a, m, b) { + var _r, _r$1, _r$2, _tmp, _tmp$1, a, b, c, data, end, h, h$1, i, i$1, j, j$1, k, k$1, m, mid, n, p, r, start, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; a = $f.a; b = $f.b; c = $f.c; data = $f.data; end = $f.end; h = $f.h; h$1 = $f.h$1; i = $f.i; i$1 = $f.i$1; j = $f.j; j$1 = $f.j$1; k = $f.k; k$1 = $f.k$1; m = $f.m; mid = $f.mid; n = $f.n; p = $f.p; r = $f.r; start = $f.start; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ if ((m - a >> 0) === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((m - a >> 0) === 1) { */ case 1: + i = m; + j = b; + /* while (true) { */ case 3: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 4; continue; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r = data.Less(h, a); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r) { */ case 5: + i = h + 1 >> 0; + $s = 7; continue; + /* } else { */ case 6: + j = h; + /* } */ case 7: + /* } */ $s = 3; continue; case 4: + k = a; + /* while (true) { */ case 9: + /* if (!(k < (i - 1 >> 0))) { break; } */ if(!(k < (i - 1 >> 0))) { $s = 10; continue; } + $r = data.Swap(k, k + 1 >> 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + k = k + (1) >> 0; + /* } */ $s = 9; continue; case 10: + $s = -1; return; + /* } */ case 2: + /* */ if ((b - m >> 0) === 1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((b - m >> 0) === 1) { */ case 12: + i$1 = a; + j$1 = m; + /* while (true) { */ case 14: + /* if (!(i$1 < j$1)) { break; } */ if(!(i$1 < j$1)) { $s = 15; continue; } + h$1 = ((((((i$1 + j$1 >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r$1 = data.Less(m, h$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!_r$1) { */ case 16: + i$1 = h$1 + 1 >> 0; + $s = 18; continue; + /* } else { */ case 17: + j$1 = h$1; + /* } */ case 18: + /* } */ $s = 14; continue; case 15: + k$1 = m; + /* while (true) { */ case 20: + /* if (!(k$1 > i$1)) { break; } */ if(!(k$1 > i$1)) { $s = 21; continue; } + $r = data.Swap(k$1, k$1 - 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + k$1 = k$1 - (1) >> 0; + /* } */ $s = 20; continue; case 21: + $s = -1; return; + /* } */ case 13: + mid = ((((((a + b >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + n = mid + m >> 0; + _tmp = 0; + _tmp$1 = 0; + start = _tmp; + r = _tmp$1; + if (m > mid) { + start = n - b >> 0; + r = mid; + } else { + start = a; + r = m; + } + p = n - 1 >> 0; + /* while (true) { */ case 23: + /* if (!(start < r)) { break; } */ if(!(start < r)) { $s = 24; continue; } + c = ((((((start + r >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r$2 = data.Less(p - c >> 0, c); /* */ $s = 28; case 28: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!_r$2) { */ case 25: + start = c + 1 >> 0; + $s = 27; continue; + /* } else { */ case 26: + r = c; + /* } */ case 27: + /* } */ $s = 23; continue; case 24: + end = n - start >> 0; + /* */ if (start < m && m < end) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (start < m && m < end) { */ case 29: + $r = rotate(data, start, m, end); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 30: + /* */ if (a < start && start < mid) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (a < start && start < mid) { */ case 32: + $r = symMerge(data, a, start, mid); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 33: + /* */ if (mid < end && end < b) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (mid < end && end < b) { */ case 35: + $r = symMerge(data, mid, end, b); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 36: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: symMerge }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.end = end; $f.h = h; $f.h$1 = h$1; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.j$1 = j$1; $f.k = k; $f.k$1 = k$1; $f.m = m; $f.mid = mid; $f.n = n; $f.p = p; $f.r = r; $f.start = start; $f.$s = $s; $f.$r = $r; return $f; + }; + rotate = function(data, a, m, b) { + var a, b, data, i, j, m, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + i = m - a >> 0; + j = b - m >> 0; + /* while (true) { */ case 1: + /* if (!(!((i === j)))) { break; } */ if(!(!((i === j)))) { $s = 2; continue; } + /* */ if (i > j) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i > j) { */ case 3: + $r = swapRange(data, m - i >> 0, m, j); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (j) >> 0; + $s = 5; continue; + /* } else { */ case 4: + $r = swapRange(data, m - i >> 0, (m + j >> 0) - i >> 0, i); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = j - (i) >> 0; + /* } */ case 5: + /* } */ $s = 1; continue; case 2: + $r = swapRange(data, m - i >> 0, m, i); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: rotate }; } $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.m = m; $f.$s = $s; $f.$r = $r; return $f; + }; + reverse.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; + StringSlice.methods = [{prop: "Search", name: "Search", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}]; + Interface.init([{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]); + reverse.init("", [{prop: "Interface", name: "Interface", embedded: true, exported: true, typ: Interface, tag: ""}]); + StringSlice.init($String); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/fmtsort"] = (function() { + var $pkg = {}, $init, reflect, sort, SortedMap, ptrType, sliceType, Sort, compare, nilCompare, floatCompare, isNaN; + reflect = $packages["reflect"]; + sort = $packages["sort"]; + SortedMap = $pkg.SortedMap = $newType(0, $kindStruct, "fmtsort.SortedMap", true, "internal/fmtsort", true, function(Key_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Key = sliceType.nil; + this.Value = sliceType.nil; + return; + } + this.Key = Key_; + this.Value = Value_; + }); + ptrType = $ptrType(SortedMap); + sliceType = $sliceType(reflect.Value); + SortedMap.ptr.prototype.Len = function() { + var o; + o = this; + return o.Key.$length; + }; + SortedMap.prototype.Len = function() { return this.$val.Len(); }; + SortedMap.ptr.prototype.Less = function(i, j) { + var _r, i, j, o, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; o = $f.o; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + o = this; + _r = compare($clone((x = o.Key, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), reflect.Value), $clone((x$1 = o.Key, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])), reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r < 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: SortedMap.ptr.prototype.Less }; } $f._r = _r; $f.i = i; $f.j = j; $f.o = o; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + SortedMap.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; + SortedMap.ptr.prototype.Swap = function(i, j) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, o, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; + o = this; + _tmp = (x = o.Key, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + _tmp$1 = (x$1 = o.Key, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + (x$2 = o.Key, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i] = _tmp)); + (x$3 = o.Key, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j] = _tmp$1)); + _tmp$2 = (x$4 = o.Value, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j])); + _tmp$3 = (x$5 = o.Value, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i])); + (x$6 = o.Value, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = _tmp$2)); + (x$7 = o.Value, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j] = _tmp$3)); + }; + SortedMap.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); }; + Sort = function(mapValue) { + var _r, _r$1, _r$2, _r$3, i, iter, key, mapValue, sorted, value, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; iter = $f.iter; key = $f.key; mapValue = $f.mapValue; sorted = $f.sorted; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = $clone(mapValue, reflect.Value).Type().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 21))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 21))) { */ case 1: + $s = -1; return ptrType.nil; + /* } */ case 2: + key = $makeSlice(sliceType, $clone(mapValue, reflect.Value).Len()); + value = $makeSlice(sliceType, key.$length); + iter = $clone(mapValue, reflect.Value).MapRange(); + i = 0; + /* while (true) { */ case 4: + _r$1 = iter.Next(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* if (!(_r$1)) { break; } */ if(!(_r$1)) { $s = 5; continue; } + _r$2 = iter.Key(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + i] = _r$2); + _r$3 = iter.Value(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ((i < 0 || i >= value.$length) ? ($throwRuntimeError("index out of range"), undefined) : value.$array[value.$offset + i] = _r$3); + i = i + (1) >> 0; + /* } */ $s = 4; continue; case 5: + sorted = new SortedMap.ptr(key, value); + $r = sort.Stable(sorted); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return sorted; + /* */ } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.iter = iter; $f.key = key; $f.mapValue = mapValue; $f.sorted = sorted; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Sort = Sort; + compare = function(aVal, bVal) { + var _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, a, a$1, a$2, a$3, a$4, a$5, aType, aVal, ap, b, b$1, b$2, b$3, b$4, b$5, bType, bVal, bp, c, c$1, c$2, c$3, c$4, c$5, i, i$1, ok, ok$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; a$1 = $f.a$1; a$2 = $f.a$2; a$3 = $f.a$3; a$4 = $f.a$4; a$5 = $f.a$5; aType = $f.aType; aVal = $f.aVal; ap = $f.ap; b = $f.b; b$1 = $f.b$1; b$2 = $f.b$2; b$3 = $f.b$3; b$4 = $f.b$4; b$5 = $f.b$5; bType = $f.bType; bVal = $f.bVal; bp = $f.bp; c = $f.c; c$1 = $f.c$1; c$2 = $f.c$2; c$3 = $f.c$3; c$4 = $f.c$4; c$5 = $f.c$5; i = $f.i; i$1 = $f.i$1; ok = $f.ok; ok$1 = $f.ok$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tmp = $clone(aVal, reflect.Value).Type(); + _tmp$1 = $clone(bVal, reflect.Value).Type(); + aType = _tmp; + bType = _tmp$1; + if (!($interfaceIsEqual(aType, bType))) { + $s = -1; return -1; + } + _1 = $clone(aVal, reflect.Value).Kind(); + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 5; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 6; continue; } + /* */ if (_1 === (1)) { $s = 7; continue; } + /* */ if (_1 === (22)) { $s = 8; continue; } + /* */ if (_1 === (18)) { $s = 9; continue; } + /* */ if (_1 === (25)) { $s = 10; continue; } + /* */ if (_1 === (17)) { $s = 11; continue; } + /* */ if (_1 === (20)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2: + _tmp$2 = $clone(aVal, reflect.Value).Int(); + _tmp$3 = $clone(bVal, reflect.Value).Int(); + a = _tmp$2; + b = _tmp$3; + if ((a.$high < b.$high || (a.$high === b.$high && a.$low < b.$low))) { + $s = -1; return -1; + } else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3: + _tmp$4 = $clone(aVal, reflect.Value).Uint(); + _tmp$5 = $clone(bVal, reflect.Value).Uint(); + a$1 = _tmp$4; + b$1 = _tmp$5; + if ((a$1.$high < b$1.$high || (a$1.$high === b$1.$high && a$1.$low < b$1.$low))) { + $s = -1; return -1; + } else if ((a$1.$high > b$1.$high || (a$1.$high === b$1.$high && a$1.$low > b$1.$low))) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if (_1 === (24)) { */ case 4: + _r = $clone(aVal, reflect.Value).String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$6 = _r; + _r$1 = $clone(bVal, reflect.Value).String(); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp$7 = _r$1; + a$2 = _tmp$6; + b$2 = _tmp$7; + if (a$2 < b$2) { + $s = -1; return -1; + } else if (a$2 > b$2) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 5: + $s = -1; return floatCompare($clone(aVal, reflect.Value).Float(), $clone(bVal, reflect.Value).Float()); + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 6: + _tmp$8 = $clone(aVal, reflect.Value).Complex(); + _tmp$9 = $clone(bVal, reflect.Value).Complex(); + a$3 = _tmp$8; + b$3 = _tmp$9; + c = floatCompare(a$3.$real, b$3.$real); + if (!((c === 0))) { + $s = -1; return c; + } + $s = -1; return floatCompare(a$3.$imag, b$3.$imag); + /* } else if (_1 === (1)) { */ case 7: + _tmp$10 = $clone(aVal, reflect.Value).Bool(); + _tmp$11 = $clone(bVal, reflect.Value).Bool(); + a$4 = _tmp$10; + b$4 = _tmp$11; + if (a$4 === b$4) { + $s = -1; return 0; + } else if (a$4) { + $s = -1; return 1; + } else { + $s = -1; return -1; + } + $s = 14; continue; + /* } else if (_1 === (22)) { */ case 8: + _tmp$12 = $clone(aVal, reflect.Value).Pointer(); + _tmp$13 = $clone(bVal, reflect.Value).Pointer(); + a$5 = _tmp$12; + b$5 = _tmp$13; + if (a$5 < b$5) { + $s = -1; return -1; + } else if (a$5 > b$5) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if (_1 === (18)) { */ case 9: + _tuple = nilCompare($clone(aVal, reflect.Value), $clone(bVal, reflect.Value)); + c$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return c$1; + } + _tmp$14 = $clone(aVal, reflect.Value).Pointer(); + _tmp$15 = $clone(bVal, reflect.Value).Pointer(); + ap = _tmp$14; + bp = _tmp$15; + if (ap < bp) { + $s = -1; return -1; + } else if (ap > bp) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if (_1 === (25)) { */ case 10: + i = 0; + /* while (true) { */ case 17: + /* if (!(i < $clone(aVal, reflect.Value).NumField())) { break; } */ if(!(i < $clone(aVal, reflect.Value).NumField())) { $s = 18; continue; } + _r$2 = $clone(aVal, reflect.Value).Field(i); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg = $clone(_r$2, reflect.Value); + _r$3 = $clone(bVal, reflect.Value).Field(i); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$3, reflect.Value); + _r$4 = compare(_arg, _arg$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + c$2 = _r$4; + if (!((c$2 === 0))) { + $s = -1; return c$2; + } + i = i + (1) >> 0; + /* } */ $s = 17; continue; case 18: + $s = -1; return 0; + /* } else if (_1 === (17)) { */ case 11: + i$1 = 0; + /* while (true) { */ case 22: + /* if (!(i$1 < $clone(aVal, reflect.Value).Len())) { break; } */ if(!(i$1 < $clone(aVal, reflect.Value).Len())) { $s = 23; continue; } + _r$5 = $clone(aVal, reflect.Value).Index(i$1); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$5, reflect.Value); + _r$6 = $clone(bVal, reflect.Value).Index(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$3 = $clone(_r$6, reflect.Value); + _r$7 = compare(_arg$2, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + c$3 = _r$7; + if (!((c$3 === 0))) { + $s = -1; return c$3; + } + i$1 = i$1 + (1) >> 0; + /* } */ $s = 22; continue; case 23: + $s = -1; return 0; + /* } else if (_1 === (20)) { */ case 12: + _tuple$1 = nilCompare($clone(aVal, reflect.Value), $clone(bVal, reflect.Value)); + c$4 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + $s = -1; return c$4; + } + _r$8 = $clone(aVal, reflect.Value).Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = $clone(_r$8, reflect.Value).Type(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = reflect.ValueOf(_r$9); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _arg$4 = $clone(_r$10, reflect.Value); + _r$11 = $clone(bVal, reflect.Value).Elem(); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = $clone(_r$11, reflect.Value).Type(); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$13 = reflect.ValueOf(_r$12); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _arg$5 = $clone(_r$13, reflect.Value); + _r$14 = compare(_arg$4, _arg$5); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + c$5 = _r$14; + if (!((c$5 === 0))) { + $s = -1; return c$5; + } + _r$15 = $clone(aVal, reflect.Value).Elem(); /* */ $s = 34; case 34: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _arg$6 = $clone(_r$15, reflect.Value); + _r$16 = $clone(bVal, reflect.Value).Elem(); /* */ $s = 35; case 35: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _arg$7 = $clone(_r$16, reflect.Value); + _r$17 = compare(_arg$6, _arg$7); /* */ $s = 36; case 36: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $s = -1; return _r$17; + /* } else { */ case 13: + _r$18 = aType.String(); /* */ $s = 37; case 37: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $panic(new $String("bad type in compare: " + _r$18)); + /* } */ case 14: + case 1: + $s = -1; return 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: compare }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.a$1 = a$1; $f.a$2 = a$2; $f.a$3 = a$3; $f.a$4 = a$4; $f.a$5 = a$5; $f.aType = aType; $f.aVal = aVal; $f.ap = ap; $f.b = b; $f.b$1 = b$1; $f.b$2 = b$2; $f.b$3 = b$3; $f.b$4 = b$4; $f.b$5 = b$5; $f.bType = bType; $f.bVal = bVal; $f.bp = bp; $f.c = c; $f.c$1 = c$1; $f.c$2 = c$2; $f.c$3 = c$3; $f.c$4 = c$4; $f.c$5 = c$5; $f.i = i; $f.i$1 = i$1; $f.ok = ok; $f.ok$1 = ok$1; $f.$s = $s; $f.$r = $r; return $f; + }; + nilCompare = function(aVal, bVal) { + var aVal, bVal; + if ($clone(aVal, reflect.Value).IsNil()) { + if ($clone(bVal, reflect.Value).IsNil()) { + return [0, true]; + } + return [-1, true]; + } + if ($clone(bVal, reflect.Value).IsNil()) { + return [1, true]; + } + return [0, false]; + }; + floatCompare = function(a, b) { + var a, b; + if (isNaN(a)) { + return -1; + } else if (isNaN(b)) { + return 1; + } else if (a < b) { + return -1; + } else if (a > b) { + return 1; + } + return 0; + }; + isNaN = function(a) { + var a; + return !((a === a)); + }; + ptrType.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + SortedMap.init("", [{prop: "Key", name: "Key", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: sliceType, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["io"] = (function() { + var $pkg = {}, $init, errors, sync, atomic, Reader, Writer, ReadWriteCloser, ReaderFrom, WriterTo, RuneReader, RuneScanner, LimitedReader, sliceType, ptrType$1, errWhence, errOffset, ReadAtLeast, ReadFull, Copy, copyBuffer; + errors = $packages["errors"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + Reader = $pkg.Reader = $newType(8, $kindInterface, "io.Reader", true, "io", true, null); + Writer = $pkg.Writer = $newType(8, $kindInterface, "io.Writer", true, "io", true, null); + ReadWriteCloser = $pkg.ReadWriteCloser = $newType(8, $kindInterface, "io.ReadWriteCloser", true, "io", true, null); + ReaderFrom = $pkg.ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", true, "io", true, null); + WriterTo = $pkg.WriterTo = $newType(8, $kindInterface, "io.WriterTo", true, "io", true, null); + RuneReader = $pkg.RuneReader = $newType(8, $kindInterface, "io.RuneReader", true, "io", true, null); + RuneScanner = $pkg.RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", true, "io", true, null); + LimitedReader = $pkg.LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", true, "io", true, function(R_, N_) { + this.$val = this; + if (arguments.length === 0) { + this.R = $ifaceNil; + this.N = new $Int64(0, 0); + return; + } + this.R = R_; + this.N = N_; + }); + sliceType = $sliceType($Uint8); + ptrType$1 = $ptrType(LimitedReader); + ReadAtLeast = function(r, buf, min) { + var _r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; min = $f.min; n = $f.n; nn = $f.nn; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + if (buf.$length < min) { + _tmp = 0; + _tmp$1 = $pkg.ErrShortBuffer; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(n < min && $interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!(n < min && $interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + nn = 0; + _r = r.Read($subslice(buf, n)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + nn = _tuple[0]; + err = _tuple[1]; + n = n + (nn) >> 0; + /* } */ $s = 1; continue; case 2: + if (n >= min) { + err = $ifaceNil; + } else if (n > 0 && $interfaceIsEqual(err, $pkg.EOF)) { + err = $pkg.ErrUnexpectedEOF; + } + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: ReadAtLeast }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.min = min; $f.n = n; $f.nn = nn; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.ReadAtLeast = ReadAtLeast; + ReadFull = function(r, buf) { + var _r, _tuple, buf, err, n, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = ReadAtLeast(r, buf, buf.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: ReadFull }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.ReadFull = ReadFull; + Copy = function(dst, src) { + var _r, _tuple, dst, err, src, written, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; dst = $f.dst; err = $f.err; src = $f.src; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + written = new $Int64(0, 0); + err = $ifaceNil; + _r = copyBuffer(dst, src, sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + written = _tuple[0]; + err = _tuple[1]; + $s = -1; return [written, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.src = src; $f.written = written; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Copy = Copy; + copyBuffer = function(dst, src, buf) { + var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, buf, dst, er, err, ew, l, nr, nw, ok, ok$1, ok$2, rt, size, src, written, wt, x, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; buf = $f.buf; dst = $f.dst; er = $f.er; err = $f.err; ew = $f.ew; l = $f.l; nr = $f.nr; nw = $f.nw; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; rt = $f.rt; size = $f.size; src = $f.src; written = $f.written; wt = $f.wt; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + written = new $Int64(0, 0); + err = $ifaceNil; + _tuple = $assertType(src, WriterTo, true); + wt = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = wt.WriteTo(dst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + written = _tuple$1[0]; + err = _tuple$1[1]; + $s = -1; return [written, err]; + /* } */ case 2: + _tuple$2 = $assertType(dst, ReaderFrom, true); + rt = _tuple$2[0]; + ok$1 = _tuple$2[1]; + /* */ if (ok$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (ok$1) { */ case 4: + _r$1 = rt.ReadFrom(src); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$3 = _r$1; + written = _tuple$3[0]; + err = _tuple$3[1]; + $s = -1; return [written, err]; + /* } */ case 5: + if (buf === sliceType.nil) { + size = 32768; + _tuple$4 = $assertType(src, ptrType$1, true); + l = _tuple$4[0]; + ok$2 = _tuple$4[1]; + if (ok$2 && (x = (new $Int64(0, size)), x$1 = l.N, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) { + if ((x$2 = l.N, (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low < 1)))) { + size = 1; + } else { + size = (((x$3 = l.N, x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0)); + } + } + buf = $makeSlice(sliceType, size); + } + /* while (true) { */ case 7: + _r$2 = src.Read(buf); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$5 = _r$2; + nr = _tuple$5[0]; + er = _tuple$5[1]; + /* */ if (nr > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (nr > 0) { */ case 10: + _r$3 = dst.Write($subslice(buf, 0, nr)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$6 = _r$3; + nw = _tuple$6[0]; + ew = _tuple$6[1]; + if (nw > 0) { + written = (x$4 = (new $Int64(0, nw)), new $Int64(written.$high + x$4.$high, written.$low + x$4.$low)); + } + if (!($interfaceIsEqual(ew, $ifaceNil))) { + err = ew; + /* break; */ $s = 8; continue; + } + if (!((nr === nw))) { + err = $pkg.ErrShortWrite; + /* break; */ $s = 8; continue; + } + /* } */ case 11: + if (!($interfaceIsEqual(er, $ifaceNil))) { + if (!($interfaceIsEqual(er, $pkg.EOF))) { + err = er; + } + /* break; */ $s = 8; continue; + } + /* } */ $s = 7; continue; case 8: + _tmp = written; + _tmp$1 = err; + written = _tmp; + err = _tmp$1; + $s = -1; return [written, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: copyBuffer }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.buf = buf; $f.dst = dst; $f.er = er; $f.err = err; $f.ew = ew; $f.l = l; $f.nr = nr; $f.nw = nw; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.rt = rt; $f.size = size; $f.src = src; $f.written = written; $f.wt = wt; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + LimitedReader.ptr.prototype.Read = function(p) { + var _r, _tmp, _tmp$1, _tuple, err, l, n, p, x, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; l = $f.l; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + l = this; + if ((x = l.N, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + _tmp = 0; + _tmp$1 = $pkg.EOF; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if ((x$1 = (new $Int64(0, p.$length)), x$2 = l.N, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { + p = $subslice(p, 0, $flatten64(l.N)); + } + _r = l.R.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + l.N = (x$3 = l.N, x$4 = (new $Int64(0, n)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)); + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: LimitedReader.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.l = l; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + LimitedReader.prototype.Read = function(p) { return this.$val.Read(p); }; + ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; + Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); + Writer.init([{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); + ReadWriteCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); + ReaderFrom.init([{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]); + WriterTo.init([{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]); + RuneReader.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}]); + RuneScanner.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]); + LimitedReader.init("", [{prop: "R", name: "R", embedded: false, exported: true, typ: Reader, tag: ""}, {prop: "N", name: "N", embedded: false, exported: true, typ: $Int64, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrShortWrite = errors.New("short write"); + $pkg.ErrShortBuffer = errors.New("short buffer"); + $pkg.EOF = errors.New("EOF"); + $pkg.ErrUnexpectedEOF = errors.New("unexpected EOF"); + $pkg.ErrNoProgress = errors.New("multiple Read calls return no data or error"); + errWhence = errors.New("Seek: invalid whence"); + errOffset = errors.New("Seek: invalid offset"); + $pkg.ErrClosedPipe = errors.New("io: read/write on closed pipe"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["syscall"] = (function() { + var $pkg = {}, $init, js, race, runtime, sync, RawConn, NetlinkRouteRequest, NetlinkMessage, NetlinkRouteAttr, SockaddrLinklayer, SockaddrNetlink, mmapper, Errno, Sockaddr, SockaddrInet4, SockaddrInet6, SockaddrUnix, Timespec, Stat_t, RawSockaddrInet4, RawSockaddrInet6, RawSockaddrUnix, RawSockaddrLinklayer, RawSockaddrNetlink, RawSockaddr, RawSockaddrAny, _Socklen, Linger, Iovec, IPMreq, IPMreqn, IPv6Mreq, Msghdr, NlMsghdr, RtGenmsg, RtAttr, IfInfomsg, IfAddrmsg, sliceType, sliceType$1, ptrType$2, ptrType$4, arrayType$1, ptrType$9, arrayType$2, ptrType$12, sliceType$6, ptrType$13, sliceType$7, ptrType$14, arrayType$4, arrayType$5, arrayType$8, arrayType$9, arrayType$10, arrayType$11, ptrType$19, ptrType$20, structType, ptrType$23, funcType, funcType$1, ptrType$24, ptrType$25, ptrType$26, mapType, funcType$2, funcType$3, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$32, warningPrinted, lineBuffer, syscallModule, alreadyTriedToLoad, minusOne, envs, mapper, errEAGAIN, errEINVAL, errENOENT, ioSync, ioSync$24ptr, errors, init, printWarning, printToConsole, Exit, indexByte, runtime_envs, syscallByName, Syscall, Syscall6, RawSyscall, BytePtrFromString, readInt, readIntBE, readIntLE, ParseDirent, CloseOnExec, SetNonblock, msanRead, msanWrite, nlmAlignOf, rtaAlignOf, newNetlinkRouteRequest, NetlinkRIB, ParseNetlinkMessage, netlinkMessageHeaderAndData, ParseNetlinkRouteAttr, netlinkRouteAttrAndValue, itoa, uitoa, Getpagesize, Chmod, Fchmodat, Open, anyToSockaddr, Accept, Accept4, Getsockname, SetsockoptIPMreqn, Recvmsg, SendmsgN, ReadDirent, direntIno, direntReclen, direntNamlen, Stat, Lstat, errnoErr, Read, Write, Bind, GetsockoptInt, Recvfrom, Sendto, SetsockoptByte, SetsockoptInt, SetsockoptInet4Addr, SetsockoptIPMreq, SetsockoptIPv6Mreq, SetsockoptLinger, Socket, fchmodat, openat, Close, Dup, Fchdir, Fchmod, fcntl, Fsync, Getdents, read, write, munmap, Fchown, Fstat, Ftruncate, Pread, Pwrite, Seek, Shutdown, accept, accept4, bind, fstatat, getsockopt, setsockopt, socket, getsockname, recvfrom, sendto, recvmsg, sendmsg, mmap; + js = $packages["github.com/gopherjs/gopherjs/js"]; + race = $packages["internal/race"]; + runtime = $packages["runtime"]; + sync = $packages["sync"]; + RawConn = $pkg.RawConn = $newType(8, $kindInterface, "syscall.RawConn", true, "syscall", true, null); + NetlinkRouteRequest = $pkg.NetlinkRouteRequest = $newType(0, $kindStruct, "syscall.NetlinkRouteRequest", true, "syscall", true, function(Header_, Data_) { + this.$val = this; + if (arguments.length === 0) { + this.Header = new NlMsghdr.ptr(0, 0, 0, 0, 0); + this.Data = new RtGenmsg.ptr(0); + return; + } + this.Header = Header_; + this.Data = Data_; + }); + NetlinkMessage = $pkg.NetlinkMessage = $newType(0, $kindStruct, "syscall.NetlinkMessage", true, "syscall", true, function(Header_, Data_) { + this.$val = this; + if (arguments.length === 0) { + this.Header = new NlMsghdr.ptr(0, 0, 0, 0, 0); + this.Data = sliceType.nil; + return; + } + this.Header = Header_; + this.Data = Data_; + }); + NetlinkRouteAttr = $pkg.NetlinkRouteAttr = $newType(0, $kindStruct, "syscall.NetlinkRouteAttr", true, "syscall", true, function(Attr_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Attr = new RtAttr.ptr(0, 0); + this.Value = sliceType.nil; + return; + } + this.Attr = Attr_; + this.Value = Value_; + }); + SockaddrLinklayer = $pkg.SockaddrLinklayer = $newType(0, $kindStruct, "syscall.SockaddrLinklayer", true, "syscall", true, function(Protocol_, Ifindex_, Hatype_, Pkttype_, Halen_, Addr_, raw_) { + this.$val = this; + if (arguments.length === 0) { + this.Protocol = 0; + this.Ifindex = 0; + this.Hatype = 0; + this.Pkttype = 0; + this.Halen = 0; + this.Addr = arrayType$1.zero(); + this.raw = new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero()); + return; + } + this.Protocol = Protocol_; + this.Ifindex = Ifindex_; + this.Hatype = Hatype_; + this.Pkttype = Pkttype_; + this.Halen = Halen_; + this.Addr = Addr_; + this.raw = raw_; + }); + SockaddrNetlink = $pkg.SockaddrNetlink = $newType(0, $kindStruct, "syscall.SockaddrNetlink", true, "syscall", true, function(Family_, Pad_, Pid_, Groups_, raw_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Pad = 0; + this.Pid = 0; + this.Groups = 0; + this.raw = new RawSockaddrNetlink.ptr(0, 0, 0, 0); + return; + } + this.Family = Family_; + this.Pad = Pad_; + this.Pid = Pid_; + this.Groups = Groups_; + this.raw = raw_; + }); + mmapper = $pkg.mmapper = $newType(0, $kindStruct, "syscall.mmapper", true, "syscall", false, function(Mutex_, active_, mmap_, munmap_) { + this.$val = this; + if (arguments.length === 0) { + this.Mutex = new sync.Mutex.ptr(0, 0); + this.active = false; + this.mmap = $throwNilPointerError; + this.munmap = $throwNilPointerError; + return; + } + this.Mutex = Mutex_; + this.active = active_; + this.mmap = mmap_; + this.munmap = munmap_; + }); + Errno = $pkg.Errno = $newType(4, $kindUintptr, "syscall.Errno", true, "syscall", true, null); + Sockaddr = $pkg.Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", true, "syscall", true, null); + SockaddrInet4 = $pkg.SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", true, "syscall", true, function(Port_, Addr_, raw_) { + this.$val = this; + if (arguments.length === 0) { + this.Port = 0; + this.Addr = arrayType$9.zero(); + this.raw = new RawSockaddrInet4.ptr(0, 0, arrayType$9.zero(), arrayType$1.zero()); + return; + } + this.Port = Port_; + this.Addr = Addr_; + this.raw = raw_; + }); + SockaddrInet6 = $pkg.SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", true, "syscall", true, function(Port_, ZoneId_, Addr_, raw_) { + this.$val = this; + if (arguments.length === 0) { + this.Port = 0; + this.ZoneId = 0; + this.Addr = arrayType$2.zero(); + this.raw = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0); + return; + } + this.Port = Port_; + this.ZoneId = ZoneId_; + this.Addr = Addr_; + this.raw = raw_; + }); + SockaddrUnix = $pkg.SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", true, "syscall", true, function(Name_, raw_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.raw = new RawSockaddrUnix.ptr(0, arrayType$8.zero()); + return; + } + this.Name = Name_; + this.raw = raw_; + }); + Timespec = $pkg.Timespec = $newType(0, $kindStruct, "syscall.Timespec", true, "syscall", true, function(Sec_, Nsec_) { + this.$val = this; + if (arguments.length === 0) { + this.Sec = new $Int64(0, 0); + this.Nsec = new $Int64(0, 0); + return; + } + this.Sec = Sec_; + this.Nsec = Nsec_; + }); + Stat_t = $pkg.Stat_t = $newType(0, $kindStruct, "syscall.Stat_t", true, "syscall", true, function(Dev_, Ino_, Nlink_, Mode_, Uid_, Gid_, X__pad0_, Rdev_, Size_, Blksize_, Blocks_, Atim_, Mtim_, Ctim_, X__unused_) { + this.$val = this; + if (arguments.length === 0) { + this.Dev = new $Uint64(0, 0); + this.Ino = new $Uint64(0, 0); + this.Nlink = new $Uint64(0, 0); + this.Mode = 0; + this.Uid = 0; + this.Gid = 0; + this.X__pad0 = 0; + this.Rdev = new $Uint64(0, 0); + this.Size = new $Int64(0, 0); + this.Blksize = new $Int64(0, 0); + this.Blocks = new $Int64(0, 0); + this.Atim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)); + this.Mtim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)); + this.Ctim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)); + this.X__unused = arrayType$5.zero(); + return; + } + this.Dev = Dev_; + this.Ino = Ino_; + this.Nlink = Nlink_; + this.Mode = Mode_; + this.Uid = Uid_; + this.Gid = Gid_; + this.X__pad0 = X__pad0_; + this.Rdev = Rdev_; + this.Size = Size_; + this.Blksize = Blksize_; + this.Blocks = Blocks_; + this.Atim = Atim_; + this.Mtim = Mtim_; + this.Ctim = Ctim_; + this.X__unused = X__unused_; + }); + RawSockaddrInet4 = $pkg.RawSockaddrInet4 = $newType(0, $kindStruct, "syscall.RawSockaddrInet4", true, "syscall", true, function(Family_, Port_, Addr_, Zero_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Port = 0; + this.Addr = arrayType$9.zero(); + this.Zero = arrayType$1.zero(); + return; + } + this.Family = Family_; + this.Port = Port_; + this.Addr = Addr_; + this.Zero = Zero_; + }); + RawSockaddrInet6 = $pkg.RawSockaddrInet6 = $newType(0, $kindStruct, "syscall.RawSockaddrInet6", true, "syscall", true, function(Family_, Port_, Flowinfo_, Addr_, Scope_id_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Port = 0; + this.Flowinfo = 0; + this.Addr = arrayType$2.zero(); + this.Scope_id = 0; + return; + } + this.Family = Family_; + this.Port = Port_; + this.Flowinfo = Flowinfo_; + this.Addr = Addr_; + this.Scope_id = Scope_id_; + }); + RawSockaddrUnix = $pkg.RawSockaddrUnix = $newType(0, $kindStruct, "syscall.RawSockaddrUnix", true, "syscall", true, function(Family_, Path_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Path = arrayType$8.zero(); + return; + } + this.Family = Family_; + this.Path = Path_; + }); + RawSockaddrLinklayer = $pkg.RawSockaddrLinklayer = $newType(0, $kindStruct, "syscall.RawSockaddrLinklayer", true, "syscall", true, function(Family_, Protocol_, Ifindex_, Hatype_, Pkttype_, Halen_, Addr_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Protocol = 0; + this.Ifindex = 0; + this.Hatype = 0; + this.Pkttype = 0; + this.Halen = 0; + this.Addr = arrayType$1.zero(); + return; + } + this.Family = Family_; + this.Protocol = Protocol_; + this.Ifindex = Ifindex_; + this.Hatype = Hatype_; + this.Pkttype = Pkttype_; + this.Halen = Halen_; + this.Addr = Addr_; + }); + RawSockaddrNetlink = $pkg.RawSockaddrNetlink = $newType(0, $kindStruct, "syscall.RawSockaddrNetlink", true, "syscall", true, function(Family_, Pad_, Pid_, Groups_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Pad = 0; + this.Pid = 0; + this.Groups = 0; + return; + } + this.Family = Family_; + this.Pad = Pad_; + this.Pid = Pid_; + this.Groups = Groups_; + }); + RawSockaddr = $pkg.RawSockaddr = $newType(0, $kindStruct, "syscall.RawSockaddr", true, "syscall", true, function(Family_, Data_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Data = arrayType$10.zero(); + return; + } + this.Family = Family_; + this.Data = Data_; + }); + RawSockaddrAny = $pkg.RawSockaddrAny = $newType(0, $kindStruct, "syscall.RawSockaddrAny", true, "syscall", true, function(Addr_, Pad_) { + this.$val = this; + if (arguments.length === 0) { + this.Addr = new RawSockaddr.ptr(0, arrayType$10.zero()); + this.Pad = arrayType$11.zero(); + return; + } + this.Addr = Addr_; + this.Pad = Pad_; + }); + _Socklen = $pkg._Socklen = $newType(4, $kindUint32, "syscall._Socklen", true, "syscall", false, null); + Linger = $pkg.Linger = $newType(0, $kindStruct, "syscall.Linger", true, "syscall", true, function(Onoff_, Linger_) { + this.$val = this; + if (arguments.length === 0) { + this.Onoff = 0; + this.Linger = 0; + return; + } + this.Onoff = Onoff_; + this.Linger = Linger_; + }); + Iovec = $pkg.Iovec = $newType(0, $kindStruct, "syscall.Iovec", true, "syscall", true, function(Base_, Len_) { + this.$val = this; + if (arguments.length === 0) { + this.Base = ptrType$2.nil; + this.Len = new $Uint64(0, 0); + return; + } + this.Base = Base_; + this.Len = Len_; + }); + IPMreq = $pkg.IPMreq = $newType(0, $kindStruct, "syscall.IPMreq", true, "syscall", true, function(Multiaddr_, Interface_) { + this.$val = this; + if (arguments.length === 0) { + this.Multiaddr = arrayType$9.zero(); + this.Interface = arrayType$9.zero(); + return; + } + this.Multiaddr = Multiaddr_; + this.Interface = Interface_; + }); + IPMreqn = $pkg.IPMreqn = $newType(0, $kindStruct, "syscall.IPMreqn", true, "syscall", true, function(Multiaddr_, Address_, Ifindex_) { + this.$val = this; + if (arguments.length === 0) { + this.Multiaddr = arrayType$9.zero(); + this.Address = arrayType$9.zero(); + this.Ifindex = 0; + return; + } + this.Multiaddr = Multiaddr_; + this.Address = Address_; + this.Ifindex = Ifindex_; + }); + IPv6Mreq = $pkg.IPv6Mreq = $newType(0, $kindStruct, "syscall.IPv6Mreq", true, "syscall", true, function(Multiaddr_, Interface_) { + this.$val = this; + if (arguments.length === 0) { + this.Multiaddr = arrayType$2.zero(); + this.Interface = 0; + return; + } + this.Multiaddr = Multiaddr_; + this.Interface = Interface_; + }); + Msghdr = $pkg.Msghdr = $newType(0, $kindStruct, "syscall.Msghdr", true, "syscall", true, function(Name_, Namelen_, Pad_cgo_0_, Iov_, Iovlen_, Control_, Controllen_, Flags_, Pad_cgo_1_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ptrType$2.nil; + this.Namelen = 0; + this.Pad_cgo_0 = arrayType$9.zero(); + this.Iov = ptrType$20.nil; + this.Iovlen = new $Uint64(0, 0); + this.Control = ptrType$2.nil; + this.Controllen = new $Uint64(0, 0); + this.Flags = 0; + this.Pad_cgo_1 = arrayType$9.zero(); + return; + } + this.Name = Name_; + this.Namelen = Namelen_; + this.Pad_cgo_0 = Pad_cgo_0_; + this.Iov = Iov_; + this.Iovlen = Iovlen_; + this.Control = Control_; + this.Controllen = Controllen_; + this.Flags = Flags_; + this.Pad_cgo_1 = Pad_cgo_1_; + }); + NlMsghdr = $pkg.NlMsghdr = $newType(0, $kindStruct, "syscall.NlMsghdr", true, "syscall", true, function(Len_, Type_, Flags_, Seq_, Pid_) { + this.$val = this; + if (arguments.length === 0) { + this.Len = 0; + this.Type = 0; + this.Flags = 0; + this.Seq = 0; + this.Pid = 0; + return; + } + this.Len = Len_; + this.Type = Type_; + this.Flags = Flags_; + this.Seq = Seq_; + this.Pid = Pid_; + }); + RtGenmsg = $pkg.RtGenmsg = $newType(0, $kindStruct, "syscall.RtGenmsg", true, "syscall", true, function(Family_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + return; + } + this.Family = Family_; + }); + RtAttr = $pkg.RtAttr = $newType(0, $kindStruct, "syscall.RtAttr", true, "syscall", true, function(Len_, Type_) { + this.$val = this; + if (arguments.length === 0) { + this.Len = 0; + this.Type = 0; + return; + } + this.Len = Len_; + this.Type = Type_; + }); + IfInfomsg = $pkg.IfInfomsg = $newType(0, $kindStruct, "syscall.IfInfomsg", true, "syscall", true, function(Family_, X__ifi_pad_, Type_, Index_, Flags_, Change_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.X__ifi_pad = 0; + this.Type = 0; + this.Index = 0; + this.Flags = 0; + this.Change = 0; + return; + } + this.Family = Family_; + this.X__ifi_pad = X__ifi_pad_; + this.Type = Type_; + this.Index = Index_; + this.Flags = Flags_; + this.Change = Change_; + }); + IfAddrmsg = $pkg.IfAddrmsg = $newType(0, $kindStruct, "syscall.IfAddrmsg", true, "syscall", true, function(Family_, Prefixlen_, Flags_, Scope_, Index_) { + this.$val = this; + if (arguments.length === 0) { + this.Family = 0; + this.Prefixlen = 0; + this.Flags = 0; + this.Scope = 0; + this.Index = 0; + return; + } + this.Family = Family_; + this.Prefixlen = Prefixlen_; + this.Flags = Flags_; + this.Scope = Scope_; + this.Index = Index_; + }); + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType($String); + ptrType$2 = $ptrType($Uint8); + ptrType$4 = $ptrType($Int32); + arrayType$1 = $arrayType($Uint8, 8); + ptrType$9 = $ptrType($Uint16); + arrayType$2 = $arrayType($Uint8, 16); + ptrType$12 = $ptrType(SockaddrNetlink); + sliceType$6 = $sliceType(NetlinkMessage); + ptrType$13 = $ptrType(NlMsghdr); + sliceType$7 = $sliceType(NetlinkRouteAttr); + ptrType$14 = $ptrType(RtAttr); + arrayType$4 = $arrayType($Uint8, 32); + arrayType$5 = $arrayType($Int64, 3); + arrayType$8 = $arrayType($Int8, 108); + arrayType$9 = $arrayType($Uint8, 4); + arrayType$10 = $arrayType($Int8, 14); + arrayType$11 = $arrayType($Int8, 96); + ptrType$19 = $ptrType(_Socklen); + ptrType$20 = $ptrType(Iovec); + structType = $structType("syscall", [{prop: "addr", name: "addr", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$23 = $ptrType($Int64); + funcType = $funcType([$Uintptr], [], false); + funcType$1 = $funcType([$Uintptr], [$Bool], false); + ptrType$24 = $ptrType(NetlinkRouteRequest); + ptrType$25 = $ptrType(SockaddrLinklayer); + ptrType$26 = $ptrType(mmapper); + mapType = $mapType(ptrType$2, sliceType); + funcType$2 = $funcType([$Uintptr, $Uintptr, $Int, $Int, $Int, $Int64], [$Uintptr, $error], false); + funcType$3 = $funcType([$Uintptr, $Uintptr], [$error], false); + ptrType$27 = $ptrType(SockaddrInet4); + ptrType$28 = $ptrType(SockaddrInet6); + ptrType$29 = $ptrType(SockaddrUnix); + ptrType$30 = $ptrType(Timespec); + ptrType$32 = $ptrType(Msghdr); + init = function() { + $flushConsole = (function() { + if (!((lineBuffer.$length === 0))) { + $global.console.log($externalize(($bytesToString(lineBuffer)), $String)); + lineBuffer = sliceType.nil; + } + }); + }; + printWarning = function() { + if (!warningPrinted) { + $global.console.error($externalize("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md", $String)); + } + warningPrinted = true; + }; + printToConsole = function(b) { + var b, goPrintToConsole, i; + goPrintToConsole = $global.goPrintToConsole; + if (!(goPrintToConsole === undefined)) { + goPrintToConsole(b); + return; + } + lineBuffer = $appendSlice(lineBuffer, b); + while (true) { + i = indexByte(lineBuffer, 10); + if (i === -1) { + break; + } + $global.console.log($externalize(($bytesToString($subslice(lineBuffer, 0, i))), $String)); + lineBuffer = $subslice(lineBuffer, (i + 1 >> 0)); + } + }; + Exit = function(code) { + var code; + Syscall(231, ((code >>> 0)), 0, 0); + }; + $pkg.Exit = Exit; + indexByte = function(s, c) { + var _i, _ref, b, c, i, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (b === c) { + return i; + } + _i++; + } + return -1; + }; + runtime_envs = function() { + var envkeys, envs$1, i, jsEnv, key, process; + process = $global.process; + if (process === undefined) { + return sliceType$1.nil; + } + jsEnv = process.env; + envkeys = $global.Object.keys(jsEnv); + envs$1 = $makeSlice(sliceType$1, $parseInt(envkeys.length)); + i = 0; + while (true) { + if (!(i < $parseInt(envkeys.length))) { break; } + key = $internalize(envkeys[i], $String); + ((i < 0 || i >= envs$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs$1.$array[envs$1.$offset + i] = key + "=" + $internalize(jsEnv[$externalize(key, $String)], $String)); + i = i + (1) >> 0; + } + return envs$1; + }; + syscallByName = function(name) { + var name, require, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + $deferred.push([(function() { + $recover(); + }), []]); + if (syscallModule === null) { + if (alreadyTriedToLoad) { + return null; + } + alreadyTriedToLoad = true; + require = $global.require; + if (require === undefined) { + $panic(new $String("")); + } + syscallModule = require($externalize("syscall", $String)); + } + return syscallModule[$externalize(name, $String)]; + /* */ } catch(err) { $err = err; return null; } finally { $callDeferred($deferred, $err); } + }; + Syscall = function(trap, a1, a2, a3) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, a1, a2, a3, array, err, f, r, r1, r2, slice, trap; + r1 = 0; + r2 = 0; + err = 0; + f = syscallByName("Syscall"); + if (!(f === null)) { + r = f(trap, a1, a2, a3); + _tmp = ((($parseInt(r[0]) >> 0) >>> 0)); + _tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0)); + _tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0)); + r1 = _tmp; + r2 = _tmp$1; + err = _tmp$2; + return [r1, r2, err]; + } + if ((trap === 1) && ((a1 === 1) || (a1 === 2))) { + array = a2; + slice = $makeSlice(sliceType, $parseInt(array.length)); + slice.$array = array; + printToConsole(slice); + _tmp$3 = (($parseInt(array.length) >>> 0)); + _tmp$4 = 0; + _tmp$5 = 0; + r1 = _tmp$3; + r2 = _tmp$4; + err = _tmp$5; + return [r1, r2, err]; + } + if (trap === 231) { + runtime.Goexit(); + } + printWarning(); + _tmp$6 = ((minusOne >>> 0)); + _tmp$7 = 0; + _tmp$8 = 13; + r1 = _tmp$6; + r2 = _tmp$7; + err = _tmp$8; + return [r1, r2, err]; + }; + $pkg.Syscall = Syscall; + Syscall6 = function(trap, a1, a2, a3, a4, a5, a6) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a1, a2, a3, a4, a5, a6, err, f, r, r1, r2, trap; + r1 = 0; + r2 = 0; + err = 0; + f = syscallByName("Syscall6"); + if (!(f === null)) { + r = f(trap, a1, a2, a3, a4, a5, a6); + _tmp = ((($parseInt(r[0]) >> 0) >>> 0)); + _tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0)); + _tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0)); + r1 = _tmp; + r2 = _tmp$1; + err = _tmp$2; + return [r1, r2, err]; + } + if (!((trap === 202))) { + printWarning(); + } + _tmp$3 = ((minusOne >>> 0)); + _tmp$4 = 0; + _tmp$5 = 13; + r1 = _tmp$3; + r2 = _tmp$4; + err = _tmp$5; + return [r1, r2, err]; + }; + $pkg.Syscall6 = Syscall6; + RawSyscall = function(trap, a1, a2, a3) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a1, a2, a3, err, f, r, r1, r2, trap; + r1 = 0; + r2 = 0; + err = 0; + f = syscallByName("Syscall"); + if (!(f === null)) { + r = f(trap, a1, a2, a3); + _tmp = ((($parseInt(r[0]) >> 0) >>> 0)); + _tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0)); + _tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0)); + r1 = _tmp; + r2 = _tmp$1; + err = _tmp$2; + return [r1, r2, err]; + } + printWarning(); + _tmp$3 = ((minusOne >>> 0)); + _tmp$4 = 0; + _tmp$5 = 13; + r1 = _tmp$3; + r2 = _tmp$4; + err = _tmp$5; + return [r1, r2, err]; + }; + $pkg.RawSyscall = RawSyscall; + BytePtrFromString = function(s) { + var _i, _ref, array, b, i, s; + array = new ($global.Uint8Array)(s.length + 1 >> 0); + _ref = (new sliceType($stringToBytes(s))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (b === 0) { + return [ptrType$2.nil, new Errno(22)]; + } + array[i] = b; + _i++; + } + array[s.length] = 0; + return [((array)), $ifaceNil]; + }; + $pkg.BytePtrFromString = BytePtrFromString; + readInt = function(b, off, size) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, off, ok, size, u; + u = new $Uint64(0, 0); + ok = false; + if (b.$length < (((off + size >>> 0) >> 0))) { + _tmp = new $Uint64(0, 0); + _tmp$1 = false; + u = _tmp; + ok = _tmp$1; + return [u, ok]; + } + if (false) { + _tmp$2 = readIntBE($subslice(b, off), size); + _tmp$3 = true; + u = _tmp$2; + ok = _tmp$3; + return [u, ok]; + } + _tmp$4 = readIntLE($subslice(b, off), size); + _tmp$5 = true; + u = _tmp$4; + ok = _tmp$5; + return [u, ok]; + }; + readIntBE = function(b, size) { + var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + _1 = size; + if (_1 === (1)) { + return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))); + } else if (_1 === (2)) { + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return (x = (new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), x$1 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + } else if (_1 === (4)) { + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), x$5 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0)); + } else if (_1 === (8)) { + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$15 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0)); + } else { + $panic(new $String("syscall: readInt with unsupported size")); + } + }; + readIntLE = function(b, size) { + var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + _1 = size; + if (_1 === (1)) { + return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))); + } else if (_1 === (2)) { + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return (x = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$1 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + } else if (_1 === (4)) { + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$5 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0)); + } else if (_1 === (8)) { + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$15 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0)); + } else { + $panic(new $String("syscall: readInt with unsupported size")); + } + }; + ParseDirent = function(buf, max, names) { + var _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, buf, c, consumed, count, i, ino, max, name, names, namlen, newnames, ok, origlen, rec, reclen, x, x$1, x$2; + consumed = 0; + count = 0; + newnames = sliceType$1.nil; + origlen = buf.$length; + count = 0; + while (true) { + if (!(!((max === 0)) && buf.$length > 0)) { break; } + _tuple = direntReclen(buf); + reclen = _tuple[0]; + ok = _tuple[1]; + if (!ok || (x = (new $Uint64(0, buf.$length)), (reclen.$high > x.$high || (reclen.$high === x.$high && reclen.$low > x.$low)))) { + _tmp = origlen; + _tmp$1 = count; + _tmp$2 = names; + consumed = _tmp; + count = _tmp$1; + newnames = _tmp$2; + return [consumed, count, newnames]; + } + rec = $subslice(buf, 0, $flatten64(reclen)); + buf = $subslice(buf, $flatten64(reclen)); + _tuple$1 = direntIno(rec); + ino = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + break; + } + if ((ino.$high === 0 && ino.$low === 0)) { + continue; + } + _tuple$2 = direntNamlen(rec); + namlen = _tuple$2[0]; + ok = _tuple$2[1]; + if (!ok || (x$1 = new $Uint64(0 + namlen.$high, 19 + namlen.$low), x$2 = (new $Uint64(0, rec.$length)), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { + break; + } + name = $subslice(rec, 19, $flatten64(new $Uint64(0 + namlen.$high, 19 + namlen.$low))); + _ref = name; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (c === 0) { + name = $subslice(name, 0, i); + break; + } + _i++; + } + if (($bytesToString(name)) === "." || ($bytesToString(name)) === "..") { + continue; + } + max = max - (1) >> 0; + count = count + (1) >> 0; + names = $append(names, ($bytesToString(name))); + } + _tmp$3 = origlen - buf.$length >> 0; + _tmp$4 = count; + _tmp$5 = names; + consumed = _tmp$3; + count = _tmp$4; + newnames = _tmp$5; + return [consumed, count, newnames]; + }; + $pkg.ParseDirent = ParseDirent; + CloseOnExec = function(fd) { + var fd; + fcntl(fd, 2, 1); + }; + $pkg.CloseOnExec = CloseOnExec; + SetNonblock = function(fd, nonblocking) { + var _tuple, _tuple$1, err, fd, flag, nonblocking; + err = $ifaceNil; + _tuple = fcntl(fd, 3, 0); + flag = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + err = err; + return err; + } + if (nonblocking) { + flag = flag | (2048); + } else { + flag = (flag & ~(2048)) >> 0; + } + _tuple$1 = fcntl(fd, 4, flag); + err = _tuple$1[1]; + err = err; + return err; + }; + $pkg.SetNonblock = SetNonblock; + msanRead = function(addr, len) { + var addr, len; + }; + msanWrite = function(addr, len) { + var addr, len; + }; + nlmAlignOf = function(msglen) { + var msglen; + return (((msglen + 4 >> 0) - 1 >> 0)) & -4; + }; + rtaAlignOf = function(attrlen) { + var attrlen; + return (((attrlen + 4 >> 0) - 1 >> 0)) & -4; + }; + NetlinkRouteRequest.ptr.prototype.toWireFormat = function() { + var b, rr; + rr = this; + b = $makeSlice(sliceType, rr.Header.Len); + (($sliceToArray($subslice(b, 0, 4)))).$set(rr.Header.Len); + (($sliceToArray($subslice(b, 4, 6)))).$set(rr.Header.Type); + (($sliceToArray($subslice(b, 6, 8)))).$set(rr.Header.Flags); + (($sliceToArray($subslice(b, 8, 12)))).$set(rr.Header.Seq); + (($sliceToArray($subslice(b, 12, 16)))).$set(rr.Header.Pid); + (16 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 16] = (rr.Data.Family)); + return b; + }; + NetlinkRouteRequest.prototype.toWireFormat = function() { return this.$val.toWireFormat(); }; + newNetlinkRouteRequest = function(proto, seq, family) { + var family, proto, rr, seq; + rr = new NetlinkRouteRequest.ptr(new NlMsghdr.ptr(0, 0, 0, 0, 0), new RtGenmsg.ptr(0)); + rr.Header.Len = 17; + rr.Header.Type = ((proto << 16 >>> 16)); + rr.Header.Flags = 769; + rr.Header.Seq = ((seq >>> 0)); + rr.Data.Family = ((family << 24 >>> 24)); + return rr.toWireFormat(); + }; + NetlinkRIB = function(proto, family) { + var _i, _r, _r$1, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, err$2, err$3, err$4, family, lsa, lsa$1, m, msgs, nr, proto, rb, rbNew, s, tab, v, v$1, wb, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; family = $f.family; lsa = $f.lsa; lsa$1 = $f.lsa$1; m = $f.m; msgs = $f.msgs; nr = $f.nr; proto = $f.proto; rb = $f.rb; rbNew = $f.rbNew; s = $f.s; tab = $f.tab; v = $f.v; v$1 = $f.v$1; wb = $f.wb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + _tuple = Socket(16, 3, 0); + s = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType.nil, err]; + } + $deferred.push([Close, [s]]); + lsa = new SockaddrNetlink.ptr(16, 0, 0, 0, new RawSockaddrNetlink.ptr(0, 0, 0, 0)); + _r = Bind(s, lsa); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err$1 = _r; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [sliceType.nil, err$1]; + } + wb = newNetlinkRouteRequest(proto, 1, family); + _r$1 = Sendto(s, wb, 0, lsa); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$2 = _r$1; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return [sliceType.nil, err$2]; + } + tab = sliceType.nil; + rbNew = $makeSlice(sliceType, Getpagesize()); + done: + while (true) { + rb = rbNew; + _tuple$1 = Recvfrom(s, rb, 0); + nr = _tuple$1[0]; + err$3 = _tuple$1[2]; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return [sliceType.nil, err$3]; + } + if (nr < 16) { + $s = -1; return [sliceType.nil, new Errno(22)]; + } + rb = $subslice(rb, 0, nr); + tab = $appendSlice(tab, rb); + _tuple$2 = ParseNetlinkMessage(rb); + msgs = _tuple$2[0]; + err$3 = _tuple$2[1]; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return [sliceType.nil, err$3]; + } + _ref = msgs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), NetlinkMessage); + _tuple$3 = Getsockname(s); + lsa$1 = _tuple$3[0]; + err$4 = _tuple$3[1]; + if (!($interfaceIsEqual(err$4, $ifaceNil))) { + $s = -1; return [sliceType.nil, err$4]; + } + _ref$1 = lsa$1; + if ($assertType(_ref$1, ptrType$12, true)[1]) { + v = _ref$1.$val; + if (!((m.Header.Seq === 1)) || !((m.Header.Pid === v.Pid))) { + $s = -1; return [sliceType.nil, new Errno(22)]; + } + } else { + v$1 = _ref$1; + $s = -1; return [sliceType.nil, new Errno(22)]; + } + if (m.Header.Type === 3) { + break done; + } + if (m.Header.Type === 2) { + $s = -1; return [sliceType.nil, new Errno(22)]; + } + _i++; + } + } + $s = -1; return [tab, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: NetlinkRIB }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.family = family; $f.lsa = lsa; $f.lsa$1 = lsa$1; $f.m = m; $f.msgs = msgs; $f.nr = nr; $f.proto = proto; $f.rb = rb; $f.rbNew = rbNew; $f.s = s; $f.tab = tab; $f.v = v; $f.v$1 = v$1; $f.wb = wb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + $pkg.NetlinkRIB = NetlinkRIB; + ParseNetlinkMessage = function(b) { + var _tuple, b, dbuf, dlen, err, h, m, msgs; + msgs = sliceType$6.nil; + while (true) { + if (!(b.$length >= 16)) { break; } + _tuple = netlinkMessageHeaderAndData(b); + h = _tuple[0]; + dbuf = _tuple[1]; + dlen = _tuple[2]; + err = _tuple[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [sliceType$6.nil, err]; + } + m = new NetlinkMessage.ptr($clone(h, NlMsghdr), $subslice(dbuf, 0, (((h.Len >> 0)) - 16 >> 0))); + msgs = $append(msgs, m); + b = $subslice(b, dlen); + } + return [msgs, $ifaceNil]; + }; + $pkg.ParseNetlinkMessage = ParseNetlinkMessage; + netlinkMessageHeaderAndData = function(b) { + var _array, _struct, _view, b, h, l; + h = ((_array = ($sliceToArray(b)), _struct = new NlMsghdr.ptr(0, 0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true), _struct.Type = _view.getUint16(4, true), _struct.Flags = _view.getUint16(6, true), _struct.Seq = _view.getUint32(8, true), _struct.Pid = _view.getUint32(12, true), _struct)); + l = nlmAlignOf(((h.Len >> 0))); + if (((h.Len >> 0)) < 16 || l > b.$length) { + return [ptrType$13.nil, sliceType.nil, 0, new Errno(22)]; + } + return [h, $subslice(b, 16), l, $ifaceNil]; + }; + ParseNetlinkRouteAttr = function(m) { + var _1, _tuple, a, alen, attrs, b, err, m, ra, vbuf; + b = sliceType.nil; + _1 = m.Header.Type; + if ((_1 === (16)) || (_1 === (17))) { + b = $subslice(m.Data, 16); + } else if ((_1 === (20)) || (_1 === (21))) { + b = $subslice(m.Data, 8); + } else if ((_1 === (24)) || (_1 === (25))) { + b = $subslice(m.Data, 12); + } else { + return [sliceType$7.nil, new Errno(22)]; + } + attrs = sliceType$7.nil; + while (true) { + if (!(b.$length >= 4)) { break; } + _tuple = netlinkRouteAttrAndValue(b); + a = _tuple[0]; + vbuf = _tuple[1]; + alen = _tuple[2]; + err = _tuple[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [sliceType$7.nil, err]; + } + ra = new NetlinkRouteAttr.ptr($clone(a, RtAttr), $subslice(vbuf, 0, (((a.Len >> 0)) - 4 >> 0))); + attrs = $append(attrs, ra); + b = $subslice(b, alen); + } + return [attrs, $ifaceNil]; + }; + $pkg.ParseNetlinkRouteAttr = ParseNetlinkRouteAttr; + netlinkRouteAttrAndValue = function(b) { + var _array, _struct, _view, a, b; + a = ((_array = ($sliceToArray(b)), _struct = new RtAttr.ptr(0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint16(0, true), _struct.Type = _view.getUint16(2, true), _struct)); + if (((a.Len >> 0)) < 4 || ((a.Len >> 0)) > b.$length) { + return [ptrType$14.nil, sliceType.nil, 0, new Errno(22)]; + } + return [a, $subslice(b, 4), rtaAlignOf(((a.Len >> 0))), $ifaceNil]; + }; + itoa = function(val) { + var val; + if (val < 0) { + return "-" + uitoa(((-val >>> 0))); + } + return uitoa(((val >>> 0))); + }; + uitoa = function(val) { + var _q, _r, buf, i, val; + buf = arrayType$4.zero(); + i = 31; + while (true) { + if (!(val >= 10)) { break; } + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((_r = val % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24))); + i = i - (1) >> 0; + val = (_q = val / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + } + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((val + 48 >>> 0) << 24 >>> 24))); + return ($bytesToString($subslice(new sliceType(buf), i))); + }; + Timespec.ptr.prototype.Unix = function() { + var _tmp, _tmp$1, nsec, sec, ts; + sec = new $Int64(0, 0); + nsec = new $Int64(0, 0); + ts = this; + _tmp = (ts.Sec); + _tmp$1 = (ts.Nsec); + sec = _tmp; + nsec = _tmp$1; + return [sec, nsec]; + }; + Timespec.prototype.Unix = function() { return this.$val.Unix(); }; + Timespec.ptr.prototype.Nano = function() { + var ts, x, x$1; + ts = this; + return (x = $mul64((ts.Sec), new $Int64(0, 1000000000)), x$1 = (ts.Nsec), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + }; + Timespec.prototype.Nano = function() { return this.$val.Nano(); }; + Getpagesize = function() { + $throwRuntimeError("native function not implemented: syscall.Getpagesize"); + }; + $pkg.Getpagesize = Getpagesize; + Chmod = function(path, mode) { + var err, mode, path; + err = $ifaceNil; + err = Fchmodat(-100, path, mode, 0); + return err; + }; + $pkg.Chmod = Chmod; + Fchmodat = function(dirfd, path, mode, flags) { + var dirfd, err, flags, mode, path; + err = $ifaceNil; + if (!((((flags & ~256) >> 0) === 0))) { + err = new Errno(22); + return err; + } else if (!(((flags & 256) === 0))) { + err = new Errno(95); + return err; + } + err = fchmodat(dirfd, path, mode); + return err; + }; + $pkg.Fchmodat = Fchmodat; + Open = function(path, mode, perm) { + var _tuple, err, fd, mode, path, perm; + fd = 0; + err = $ifaceNil; + _tuple = openat(-100, path, mode | 0, perm); + fd = _tuple[0]; + err = _tuple[1]; + return [fd, err]; + }; + $pkg.Open = Open; + SockaddrInet4.ptr.prototype.sockaddr = function() { + var _array, _struct, _view, i, p, sa, x, x$1, x$2; + sa = this; + if (sa.Port < 0 || sa.Port > 65535) { + return [0, 0, new Errno(22)]; + } + sa.raw.Family = 2; + p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x)))))); + p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24)); + p.nilCheck, p[1] = ((sa.Port << 24 >>> 24)); + i = 0; + while (true) { + if (!(i < 4)) { break; } + (x$2 = sa.raw.Addr, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])))); + i = i + (1) >> 0; + } + _array = new Uint8Array(16); + return [(_array), 16, $ifaceNil]; + }; + SockaddrInet4.prototype.sockaddr = function() { return this.$val.sockaddr(); }; + SockaddrInet6.ptr.prototype.sockaddr = function() { + var _array, _struct, _view, i, p, sa, x, x$1, x$2; + sa = this; + if (sa.Port < 0 || sa.Port > 65535) { + return [0, 0, new Errno(22)]; + } + sa.raw.Family = 10; + p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x)))))); + p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24)); + p.nilCheck, p[1] = ((sa.Port << 24 >>> 24)); + sa.raw.Scope_id = sa.ZoneId; + i = 0; + while (true) { + if (!(i < 16)) { break; } + (x$2 = sa.raw.Addr, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])))); + i = i + (1) >> 0; + } + _array = new Uint8Array(28); + return [(_array), 28, $ifaceNil]; + }; + SockaddrInet6.prototype.sockaddr = function() { return this.$val.sockaddr(); }; + SockaddrUnix.ptr.prototype.sockaddr = function() { + var _array, _struct, _view, i, n, name, sa, sl, x; + sa = this; + name = sa.Name; + n = name.length; + if (n > 108) { + return [0, 0, new Errno(22)]; + } + if ((n === 108) && !((name.charCodeAt(0) === 64))) { + return [0, 0, new Errno(22)]; + } + sa.raw.Family = 1; + i = 0; + while (true) { + if (!(i < n)) { break; } + (x = sa.raw.Path, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = ((name.charCodeAt(i) << 24 >> 24)))); + i = i + (1) >> 0; + } + sl = 2; + if (n > 0) { + sl = sl + ((((n >>> 0)) + 1 >>> 0)) >>> 0; + } + if (sa.raw.Path[0] === 64) { + sa.raw.Path[0] = 0; + sl = sl - (1) >>> 0; + } + _array = new Uint8Array(110); + return [(_array), sl, $ifaceNil]; + }; + SockaddrUnix.prototype.sockaddr = function() { return this.$val.sockaddr(); }; + SockaddrLinklayer.ptr.prototype.sockaddr = function() { + var _array, _struct, _view, i, sa, x, x$1; + sa = this; + if (sa.Ifindex < 0 || sa.Ifindex > 2147483647) { + return [0, 0, new Errno(22)]; + } + sa.raw.Family = 17; + sa.raw.Protocol = sa.Protocol; + sa.raw.Ifindex = ((sa.Ifindex >> 0)); + sa.raw.Hatype = sa.Hatype; + sa.raw.Pkttype = sa.Pkttype; + sa.raw.Halen = sa.Halen; + i = 0; + while (true) { + if (!(i < 8)) { break; } + (x$1 = sa.raw.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = sa.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])))); + i = i + (1) >> 0; + } + _array = new Uint8Array(20); + return [(_array), 20, $ifaceNil]; + }; + SockaddrLinklayer.prototype.sockaddr = function() { return this.$val.sockaddr(); }; + SockaddrNetlink.ptr.prototype.sockaddr = function() { + var _array, _struct, _view, sa; + sa = this; + sa.raw.Family = 16; + sa.raw.Pad = sa.Pad; + sa.raw.Pid = sa.Pid; + sa.raw.Groups = sa.Groups; + _array = new Uint8Array(12); + return [(_array), 12, $ifaceNil]; + }; + SockaddrNetlink.prototype.sockaddr = function() { return this.$val.sockaddr(); }; + anyToSockaddr = function(rsa) { + var _1, _array, _array$1, _array$2, _array$3, _array$4, _array$5, _array$6, _array$7, _array$8, _array$9, _struct, _struct$1, _struct$2, _struct$3, _struct$4, _struct$5, _struct$6, _struct$7, _struct$8, _struct$9, _view, _view$1, _view$2, _view$3, _view$4, _view$5, _view$6, _view$7, _view$8, _view$9, bytes, i, i$1, i$2, n, p, p$1, pp, pp$1, pp$2, pp$3, pp$4, rsa, sa, sa$1, sa$2, sa$3, sa$4, x, x$1, x$2, x$3, x$4, x$5, x$6; + _1 = rsa.Addr.Family; + if (_1 === (16)) { + _array$1 = new Uint8Array(112); + pp = ((_array = (_array$1), _struct = new RawSockaddrNetlink.ptr(0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Family = _view.getUint16(0, true), _struct.Pad = _view.getUint16(2, true), _struct.Pid = _view.getUint32(4, true), _struct.Groups = _view.getUint32(8, true), _struct)); + _struct$1 = rsa, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Addr.Family = _view$1.getUint16(0, true), _struct$1.Addr.Data = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 2, _array$1.buffer.byteLength)), _struct$1.Pad = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 16, _array$1.buffer.byteLength)); + sa = new SockaddrNetlink.ptr(0, 0, 0, 0, new RawSockaddrNetlink.ptr(0, 0, 0, 0)); + sa.Family = pp.Family; + sa.Pad = pp.Pad; + sa.Pid = pp.Pid; + sa.Groups = pp.Groups; + return [sa, $ifaceNil]; + } else if (_1 === (17)) { + _array$3 = new Uint8Array(112); + pp$1 = ((_array$2 = (_array$3), _struct$2 = new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero()), _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Family = _view$2.getUint16(0, true), _struct$2.Protocol = _view$2.getUint16(2, true), _struct$2.Ifindex = _view$2.getInt32(4, true), _struct$2.Hatype = _view$2.getUint16(8, true), _struct$2.Pkttype = _view$2.getUint8(10, true), _struct$2.Halen = _view$2.getUint8(11, true), _struct$2.Addr = new ($nativeArray($kindUint8))(_array$2.buffer, $min(_array$2.byteOffset + 12, _array$2.buffer.byteLength)), _struct$2)); + _struct$3 = rsa, _view$3 = new DataView(_array$3.buffer, _array$3.byteOffset), _struct$3.Addr.Family = _view$3.getUint16(0, true), _struct$3.Addr.Data = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 2, _array$3.buffer.byteLength)), _struct$3.Pad = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 16, _array$3.buffer.byteLength)); + sa$1 = new SockaddrLinklayer.ptr(0, 0, 0, 0, 0, arrayType$1.zero(), new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero())); + sa$1.Protocol = pp$1.Protocol; + sa$1.Ifindex = ((pp$1.Ifindex >> 0)); + sa$1.Hatype = pp$1.Hatype; + sa$1.Pkttype = pp$1.Pkttype; + sa$1.Halen = pp$1.Halen; + i = 0; + while (true) { + if (!(i < 8)) { break; } + (x$1 = sa$1.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = pp$1.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])))); + i = i + (1) >> 0; + } + return [sa$1, $ifaceNil]; + } else if (_1 === (1)) { + _array$5 = new Uint8Array(112); + pp$2 = ((_array$4 = (_array$5), _struct$4 = new RawSockaddrUnix.ptr(0, arrayType$8.zero()), _view$4 = new DataView(_array$4.buffer, _array$4.byteOffset), _struct$4.Family = _view$4.getUint16(0, true), _struct$4.Path = new ($nativeArray($kindInt8))(_array$4.buffer, $min(_array$4.byteOffset + 2, _array$4.buffer.byteLength)), _struct$4)); + _struct$5 = rsa, _view$5 = new DataView(_array$5.buffer, _array$5.byteOffset), _struct$5.Addr.Family = _view$5.getUint16(0, true), _struct$5.Addr.Data = new ($nativeArray($kindInt8))(_array$5.buffer, $min(_array$5.byteOffset + 2, _array$5.buffer.byteLength)), _struct$5.Pad = new ($nativeArray($kindInt8))(_array$5.buffer, $min(_array$5.byteOffset + 16, _array$5.buffer.byteLength)); + sa$2 = new SockaddrUnix.ptr("", new RawSockaddrUnix.ptr(0, arrayType$8.zero())); + if (pp$2.Path[0] === 0) { + pp$2.Path[0] = 64; + } + n = 0; + while (true) { + if (!(n < 108 && !(((x$2 = pp$2.Path, ((n < 0 || n >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[n])) === 0)))) { break; } + n = n + (1) >> 0; + } + bytes = $subslice(new sliceType((($sliceToArray(new sliceType(pp$2.Path))))), 0, n); + sa$2.Name = ($bytesToString(bytes)); + return [sa$2, $ifaceNil]; + } else if (_1 === (2)) { + _array$7 = new Uint8Array(112); + pp$3 = ((_array$6 = (_array$7), _struct$6 = new RawSockaddrInet4.ptr(0, 0, arrayType$9.zero(), arrayType$1.zero()), _view$6 = new DataView(_array$6.buffer, _array$6.byteOffset), _struct$6.Family = _view$6.getUint16(0, true), _struct$6.Port = _view$6.getUint16(2, true), _struct$6.Addr = new ($nativeArray($kindUint8))(_array$6.buffer, $min(_array$6.byteOffset + 4, _array$6.buffer.byteLength)), _struct$6.Zero = new ($nativeArray($kindUint8))(_array$6.buffer, $min(_array$6.byteOffset + 8, _array$6.buffer.byteLength)), _struct$6)); + _struct$7 = rsa, _view$7 = new DataView(_array$7.buffer, _array$7.byteOffset), _struct$7.Addr.Family = _view$7.getUint16(0, true), _struct$7.Addr.Data = new ($nativeArray($kindInt8))(_array$7.buffer, $min(_array$7.byteOffset + 2, _array$7.buffer.byteLength)), _struct$7.Pad = new ($nativeArray($kindInt8))(_array$7.buffer, $min(_array$7.byteOffset + 16, _array$7.buffer.byteLength)); + sa$3 = new SockaddrInet4.ptr(0, arrayType$9.zero(), new RawSockaddrInet4.ptr(0, 0, arrayType$9.zero(), arrayType$1.zero())); + p = (((pp$3.$ptr_Port || (pp$3.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$3))))); + sa$3.Port = ((((p.nilCheck, p[0]) >> 0)) << 8 >> 0) + (((p.nilCheck, p[1]) >> 0)) >> 0; + i$1 = 0; + while (true) { + if (!(i$1 < 4)) { break; } + (x$4 = sa$3.Addr, ((i$1 < 0 || i$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[i$1] = (x$3 = pp$3.Addr, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1])))); + i$1 = i$1 + (1) >> 0; + } + return [sa$3, $ifaceNil]; + } else if (_1 === (10)) { + _array$9 = new Uint8Array(112); + pp$4 = ((_array$8 = (_array$9), _struct$8 = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0), _view$8 = new DataView(_array$8.buffer, _array$8.byteOffset), _struct$8.Family = _view$8.getUint16(0, true), _struct$8.Port = _view$8.getUint16(2, true), _struct$8.Flowinfo = _view$8.getUint32(4, true), _struct$8.Addr = new ($nativeArray($kindUint8))(_array$8.buffer, $min(_array$8.byteOffset + 8, _array$8.buffer.byteLength)), _struct$8.Scope_id = _view$8.getUint32(24, true), _struct$8)); + _struct$9 = rsa, _view$9 = new DataView(_array$9.buffer, _array$9.byteOffset), _struct$9.Addr.Family = _view$9.getUint16(0, true), _struct$9.Addr.Data = new ($nativeArray($kindInt8))(_array$9.buffer, $min(_array$9.byteOffset + 2, _array$9.buffer.byteLength)), _struct$9.Pad = new ($nativeArray($kindInt8))(_array$9.buffer, $min(_array$9.byteOffset + 16, _array$9.buffer.byteLength)); + sa$4 = new SockaddrInet6.ptr(0, 0, arrayType$2.zero(), new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0)); + p$1 = (((pp$4.$ptr_Port || (pp$4.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$4))))); + sa$4.Port = ((((p$1.nilCheck, p$1[0]) >> 0)) << 8 >> 0) + (((p$1.nilCheck, p$1[1]) >> 0)) >> 0; + sa$4.ZoneId = pp$4.Scope_id; + i$2 = 0; + while (true) { + if (!(i$2 < 16)) { break; } + (x$6 = sa$4.Addr, ((i$2 < 0 || i$2 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i$2] = (x$5 = pp$4.Addr, ((i$2 < 0 || i$2 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i$2])))); + i$2 = i$2 + (1) >> 0; + } + return [sa$4, $ifaceNil]; + } + return [$ifaceNil, new Errno(97)]; + }; + Accept = function(fd) { + var _tuple, _tuple$1, err, fd, len, len$24ptr, nfd, rsa, sa; + nfd = 0; + sa = $ifaceNil; + err = $ifaceNil; + rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); + len = 112; + _tuple = accept(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; })))); + nfd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [nfd, sa, err]; + } + _tuple$1 = anyToSockaddr(rsa); + sa = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + Close(nfd); + nfd = 0; + } + return [nfd, sa, err]; + }; + $pkg.Accept = Accept; + Accept4 = function(fd, flags) { + var _tuple, _tuple$1, err, fd, flags, len, len$24ptr, nfd, rsa, sa; + nfd = 0; + sa = $ifaceNil; + err = $ifaceNil; + rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); + len = 112; + _tuple = accept4(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; }))), flags); + nfd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [nfd, sa, err]; + } + if (len > 112) { + $panic(new $String("RawSockaddrAny too small")); + } + _tuple$1 = anyToSockaddr(rsa); + sa = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + Close(nfd); + nfd = 0; + } + return [nfd, sa, err]; + }; + $pkg.Accept4 = Accept4; + Getsockname = function(fd) { + var _tuple, err, fd, len, len$24ptr, rsa, sa; + sa = $ifaceNil; + err = $ifaceNil; + rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); + len = 112; + err = getsockname(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; })))); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [sa, err]; + } + _tuple = anyToSockaddr(rsa); + sa = _tuple[0]; + err = _tuple[1]; + return [sa, err]; + }; + $pkg.Getsockname = Getsockname; + SetsockoptIPMreqn = function(fd, level, opt, mreq) { + var _array, _struct, _view, err, fd, level, mreq, opt; + err = $ifaceNil; + _array = new Uint8Array(12); + err = setsockopt(fd, level, opt, (_array), 12); + _struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Address = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)), _struct.Ifindex = _view.getInt32(8, true); + return err; + }; + $pkg.SetsockoptIPMreqn = SetsockoptIPMreqn; + Recvmsg = function(fd, p, oob, flags) { + var _array, _struct, _tuple, _tuple$1, _tuple$2, _view, dummy, dummy$24ptr, err, fd, flags, from, iov, msg, n, oob, oobn, p, recvflags, rsa, sockType; + n = 0; + oobn = 0; + recvflags = 0; + from = $ifaceNil; + err = $ifaceNil; + msg = new Msghdr.ptr(ptrType$2.nil, 0, arrayType$9.zero(), ptrType$20.nil, new $Uint64(0, 0), ptrType$2.nil, new $Uint64(0, 0), 0, arrayType$9.zero()); + rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); + _array = new Uint8Array(112); + msg.Name = ((_array)); + _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); + msg.Namelen = 112; + iov = new Iovec.ptr(ptrType$2.nil, new $Uint64(0, 0)); + if (p.$length > 0) { + iov.Base = $indexPtr(p.$array, p.$offset + 0, ptrType$2); + iov.SetLen(p.$length); + } + dummy = 0; + if (oob.$length > 0) { + if (p.$length === 0) { + sockType = 0; + _tuple = GetsockoptInt(fd, 1, 3); + sockType = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [n, oobn, recvflags, from, err]; + } + if (!((sockType === 2))) { + iov.Base = (dummy$24ptr || (dummy$24ptr = new ptrType$2(function() { return dummy; }, function($v) { dummy = $v; }))); + iov.SetLen(1); + } + } + msg.Control = $indexPtr(oob.$array, oob.$offset + 0, ptrType$2); + msg.SetControllen(oob.$length); + } + msg.Iov = iov; + msg.Iovlen = new $Uint64(0, 1); + _tuple$1 = recvmsg(fd, msg, flags); + n = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [n, oobn, recvflags, from, err]; + } + oobn = ((msg.Controllen.$low >> 0)); + recvflags = ((msg.Flags >> 0)); + if (!((rsa.Addr.Family === 0))) { + _tuple$2 = anyToSockaddr(rsa); + from = _tuple$2[0]; + err = _tuple$2[1]; + } + return [n, oobn, recvflags, from, err]; + }; + $pkg.Recvmsg = Recvmsg; + SendmsgN = function(fd, p, oob, to, flags) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, dummy, err, err$1, fd, flags, iov, msg, n, oob, p, ptr, salen, sockType, to, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; dummy = $f.dummy; err = $f.err; err$1 = $f.err$1; fd = $f.fd; flags = $f.flags; iov = $f.iov; msg = $f.msg; n = $f.n; oob = $f.oob; p = $f.p; ptr = $f.ptr; salen = $f.salen; sockType = $f.sockType; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + dummy = [dummy]; + iov = [iov]; + msg = [msg]; + n = 0; + err = $ifaceNil; + ptr = 0; + salen = 0; + /* */ if (!($interfaceIsEqual(to, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(to, $ifaceNil))) { */ case 1: + err$1 = $ifaceNil; + _r = to.sockaddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ptr = _tuple[0]; + salen = _tuple[1]; + err$1 = _tuple[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* } */ case 2: + msg[0] = new Msghdr.ptr(ptrType$2.nil, 0, arrayType$9.zero(), ptrType$20.nil, new $Uint64(0, 0), ptrType$2.nil, new $Uint64(0, 0), 0, arrayType$9.zero()); + msg[0].Name = (ptr); + msg[0].Namelen = ((salen >>> 0)); + iov[0] = new Iovec.ptr(ptrType$2.nil, new $Uint64(0, 0)); + if (p.$length > 0) { + iov[0].Base = $indexPtr(p.$array, p.$offset + 0, ptrType$2); + iov[0].SetLen(p.$length); + } + dummy[0] = 0; + if (oob.$length > 0) { + if (p.$length === 0) { + sockType = 0; + _tuple$1 = GetsockoptInt(fd, 1, 3); + sockType = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$2 = 0; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + if (!((sockType === 2))) { + iov[0].Base = (dummy.$ptr || (dummy.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, dummy))); + iov[0].SetLen(1); + } + } + msg[0].Control = $indexPtr(oob.$array, oob.$offset + 0, ptrType$2); + msg[0].SetControllen(oob.$length); + } + msg[0].Iov = iov[0]; + msg[0].Iovlen = new $Uint64(0, 1); + _tuple$2 = sendmsg(fd, msg[0], flags); + n = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$4 = 0; + _tmp$5 = err; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + if (oob.$length > 0 && (p.$length === 0)) { + n = 0; + } + _tmp$6 = n; + _tmp$7 = $ifaceNil; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: SendmsgN }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.dummy = dummy; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.flags = flags; $f.iov = iov; $f.msg = msg; $f.n = n; $f.oob = oob; $f.p = p; $f.ptr = ptr; $f.salen = salen; $f.sockType = sockType; $f.to = to; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.SendmsgN = SendmsgN; + ReadDirent = function(fd, buf) { + var _tuple, buf, err, fd, n; + n = 0; + err = $ifaceNil; + _tuple = Getdents(fd, buf); + n = _tuple[0]; + err = _tuple[1]; + return [n, err]; + }; + $pkg.ReadDirent = ReadDirent; + direntIno = function(buf) { + var buf; + return readInt(buf, 0, 8); + }; + direntReclen = function(buf) { + var buf; + return readInt(buf, 16, 2); + }; + direntNamlen = function(buf) { + var _tuple, buf, ok, reclen; + _tuple = direntReclen(buf); + reclen = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + return [new $Uint64(0, 0), false]; + } + return [new $Uint64(reclen.$high - 0, reclen.$low - 19), true]; + }; + Stat = function(path, stat) { + var err, path, stat; + err = $ifaceNil; + err = fstatat(-100, path, stat, 0); + return err; + }; + $pkg.Stat = Stat; + Lstat = function(path, stat) { + var err, path, stat; + err = $ifaceNil; + err = fstatat(-100, path, stat, 256); + return err; + }; + $pkg.Lstat = Lstat; + Iovec.ptr.prototype.SetLen = function(length) { + var iov, length; + iov = this; + iov.Len = (new $Uint64(0, length)); + }; + Iovec.prototype.SetLen = function(length) { return this.$val.SetLen(length); }; + Msghdr.ptr.prototype.SetControllen = function(length) { + var length, msghdr; + msghdr = this; + msghdr.Controllen = (new $Uint64(0, length)); + }; + Msghdr.prototype.SetControllen = function(length) { return this.$val.SetControllen(length); }; + mmapper.ptr.prototype.Mmap = function(fd, offset, length, prot, flags) { + var _key, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, addr, b, data, err, errno, fd, flags, length, m, offset, p, prot, sl, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; addr = $f.addr; b = $f.b; data = $f.data; err = $f.err; errno = $f.errno; fd = $f.fd; flags = $f.flags; length = $f.length; m = $f.m; offset = $f.offset; p = $f.p; prot = $f.prot; sl = $f.sl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + sl = [sl]; + data = sliceType.nil; + err = $ifaceNil; + m = this; + if (length <= 0) { + _tmp = sliceType.nil; + _tmp$1 = new Errno(22); + data = _tmp; + err = _tmp$1; + $s = -1; return [data, err]; + } + _r = m.mmap(0, ((length >>> 0)), prot, flags, fd, offset); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + addr = _tuple[0]; + errno = _tuple[1]; + if (!($interfaceIsEqual(errno, $ifaceNil))) { + _tmp$2 = sliceType.nil; + _tmp$3 = errno; + data = _tmp$2; + err = _tmp$3; + $s = -1; return [data, err]; + } + sl[0] = new structType.ptr(addr, length, length); + b = sl[0]; + p = $indexPtr(b.$array, b.$offset + (b.$capacity - 1 >> 0), ptrType$2); + $r = m.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(m.Mutex, "Unlock"), []]); + _key = p; (m.active || $throwRuntimeError("assignment to entry in nil map"))[ptrType$2.keyFor(_key)] = { k: _key, v: b }; + _tmp$4 = b; + _tmp$5 = $ifaceNil; + data = _tmp$4; + err = _tmp$5; + $s = -1; return [data, err]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [data, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mmapper.ptr.prototype.Mmap }; } $f._key = _key; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.data = data; $f.err = err; $f.errno = errno; $f.fd = fd; $f.flags = flags; $f.length = length; $f.m = m; $f.offset = offset; $f.p = p; $f.prot = prot; $f.sl = sl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + mmapper.prototype.Mmap = function(fd, offset, length, prot, flags) { return this.$val.Mmap(fd, offset, length, prot, flags); }; + mmapper.ptr.prototype.Munmap = function(data) { + var _entry, _r, b, data, err, errno, m, p, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; b = $f.b; data = $f.data; err = $f.err; errno = $f.errno; m = $f.m; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + err = $ifaceNil; + m = this; + if ((data.$length === 0) || !((data.$length === data.$capacity))) { + err = new Errno(22); + $s = -1; return err; + } + p = $indexPtr(data.$array, data.$offset + (data.$capacity - 1 >> 0), ptrType$2); + $r = m.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(m.Mutex, "Unlock"), []]); + b = (_entry = m.active[ptrType$2.keyFor(p)], _entry !== undefined ? _entry.v : sliceType.nil); + if (b === sliceType.nil || !($indexPtr(b.$array, b.$offset + 0, ptrType$2) === $indexPtr(data.$array, data.$offset + 0, ptrType$2))) { + err = new Errno(22); + $s = -1; return err; + } + _r = m.munmap((($sliceToArray(b))), ((b.$length >>> 0))); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + errno = _r; + if (!($interfaceIsEqual(errno, $ifaceNil))) { + err = errno; + $s = -1; return err; + } + delete m.active[ptrType$2.keyFor(p)]; + err = $ifaceNil; + $s = -1; return err; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mmapper.ptr.prototype.Munmap }; } $f._entry = _entry; $f._r = _r; $f.b = b; $f.data = data; $f.err = err; $f.errno = errno; $f.m = m; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + mmapper.prototype.Munmap = function(data) { return this.$val.Munmap(data); }; + Errno.prototype.Error = function() { + var e, s; + e = this.$val; + if (0 <= ((e >> 0)) && ((e >> 0)) < 133) { + s = ((e < 0 || e >= errors.length) ? ($throwRuntimeError("index out of range"), undefined) : errors[e]); + if (!(s === "")) { + return s; + } + } + return "errno " + itoa(((e >> 0))); + }; + $ptrType(Errno).prototype.Error = function() { return new Errno(this.$get()).Error(); }; + Errno.prototype.Temporary = function() { + var e; + e = this.$val; + return (e === 4) || (e === 24) || new Errno(e).Timeout(); + }; + $ptrType(Errno).prototype.Temporary = function() { return new Errno(this.$get()).Temporary(); }; + Errno.prototype.Timeout = function() { + var e; + e = this.$val; + return (e === 11) || (e === 11) || (e === 110); + }; + $ptrType(Errno).prototype.Timeout = function() { return new Errno(this.$get()).Timeout(); }; + errnoErr = function(e) { + var _1, e; + _1 = e; + if (_1 === (0)) { + return $ifaceNil; + } else if (_1 === (11)) { + return errEAGAIN; + } else if (_1 === (22)) { + return errEINVAL; + } else if (_1 === (2)) { + return errENOENT; + } + return new Errno(e); + }; + Read = function(fd, p) { + var _tuple, err, fd, n, p; + n = 0; + err = $ifaceNil; + _tuple = read(fd, p); + n = _tuple[0]; + err = _tuple[1]; + if (false) { + if (n > 0) { + race.WriteRange(($sliceToArray(p)), n); + } + if ($interfaceIsEqual(err, $ifaceNil)) { + race.Acquire(((ioSync$24ptr || (ioSync$24ptr = new ptrType$23(function() { return ioSync; }, function($v) { ioSync = $v; }))))); + } + } + if (false && n > 0) { + msanWrite(($sliceToArray(p)), n); + } + return [n, err]; + }; + $pkg.Read = Read; + Write = function(fd, p) { + var _tuple, err, fd, n, p; + n = 0; + err = $ifaceNil; + if (false) { + race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$23(function() { return ioSync; }, function($v) { ioSync = $v; }))))); + } + _tuple = write(fd, p); + n = _tuple[0]; + err = _tuple[1]; + if (false && n > 0) { + race.ReadRange(($sliceToArray(p)), n); + } + if (false && n > 0) { + msanRead(($sliceToArray(p)), n); + } + return [n, err]; + }; + $pkg.Write = Write; + Bind = function(fd, sa) { + var _r, _tuple, err, fd, n, ptr, sa, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; ptr = $f.ptr; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + err = $ifaceNil; + _r = sa.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ptr = _tuple[0]; + n = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + err = err; + $s = -1; return err; + } + err = bind(fd, ptr, n); + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: Bind }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.ptr = ptr; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Bind = Bind; + GetsockoptInt = function(fd, level, opt) { + var _tmp, _tmp$1, err, fd, level, n, n$24ptr, opt, vallen, vallen$24ptr, value; + value = 0; + err = $ifaceNil; + n = 0; + vallen = 4; + err = getsockopt(fd, level, opt, ((n$24ptr || (n$24ptr = new ptrType$4(function() { return n; }, function($v) { n = $v; })))), (vallen$24ptr || (vallen$24ptr = new ptrType$19(function() { return vallen; }, function($v) { vallen = $v; })))); + _tmp = ((n >> 0)); + _tmp$1 = err; + value = _tmp; + err = _tmp$1; + return [value, err]; + }; + $pkg.GetsockoptInt = GetsockoptInt; + Recvfrom = function(fd, p, flags) { + var _tuple, _tuple$1, err, fd, flags, from, len, len$24ptr, n, p, rsa; + n = 0; + from = $ifaceNil; + err = $ifaceNil; + rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); + len = 112; + _tuple = recvfrom(fd, p, flags, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; })))); + n = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [n, from, err]; + } + if (!((rsa.Addr.Family === 0))) { + _tuple$1 = anyToSockaddr(rsa); + from = _tuple$1[0]; + err = _tuple$1[1]; + } + return [n, from, err]; + }; + $pkg.Recvfrom = Recvfrom; + Sendto = function(fd, p, flags, to) { + var _r, _tuple, err, fd, flags, n, p, ptr, to, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; flags = $f.flags; n = $f.n; p = $f.p; ptr = $f.ptr; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + err = $ifaceNil; + _r = to.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ptr = _tuple[0]; + n = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + err = err; + $s = -1; return err; + } + err = sendto(fd, p, flags, ptr, n); + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: Sendto }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.flags = flags; $f.n = n; $f.p = p; $f.ptr = ptr; $f.to = to; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Sendto = Sendto; + SetsockoptByte = function(fd, level, opt, value) { + var err, fd, level, opt, value, value$24ptr; + err = $ifaceNil; + err = setsockopt(fd, level, opt, ((value$24ptr || (value$24ptr = new ptrType$2(function() { return value; }, function($v) { value = $v; })))), 1); + return err; + }; + $pkg.SetsockoptByte = SetsockoptByte; + SetsockoptInt = function(fd, level, opt, value) { + var err, fd, level, n, n$24ptr, opt, value; + err = $ifaceNil; + n = ((value >> 0)); + err = setsockopt(fd, level, opt, ((n$24ptr || (n$24ptr = new ptrType$4(function() { return n; }, function($v) { n = $v; })))), 4); + return err; + }; + $pkg.SetsockoptInt = SetsockoptInt; + SetsockoptInet4Addr = function(fd, level, opt, value) { + var err, fd, level, opt, value; + err = $ifaceNil; + err = setsockopt(fd, level, opt, ($sliceToArray(new sliceType(value))), 4); + return err; + }; + $pkg.SetsockoptInet4Addr = SetsockoptInet4Addr; + SetsockoptIPMreq = function(fd, level, opt, mreq) { + var _array, _struct, _view, err, fd, level, mreq, opt; + err = $ifaceNil; + _array = new Uint8Array(8); + err = setsockopt(fd, level, opt, (_array), 8); + _struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Interface = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)); + return err; + }; + $pkg.SetsockoptIPMreq = SetsockoptIPMreq; + SetsockoptIPv6Mreq = function(fd, level, opt, mreq) { + var _array, _struct, _view, err, fd, level, mreq, opt; + err = $ifaceNil; + _array = new Uint8Array(20); + err = setsockopt(fd, level, opt, (_array), 20); + _struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Interface = _view.getUint32(16, true); + return err; + }; + $pkg.SetsockoptIPv6Mreq = SetsockoptIPv6Mreq; + SetsockoptLinger = function(fd, level, opt, l) { + var _array, _struct, _view, err, fd, l, level, opt; + err = $ifaceNil; + _array = new Uint8Array(8); + err = setsockopt(fd, level, opt, (_array), 8); + _struct = l, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Onoff = _view.getInt32(0, true), _struct.Linger = _view.getInt32(4, true); + return err; + }; + $pkg.SetsockoptLinger = SetsockoptLinger; + Socket = function(domain, typ, proto) { + var _tmp, _tmp$1, _tuple, domain, err, fd, proto, typ; + fd = 0; + err = $ifaceNil; + if ((domain === 10) && $pkg.SocketDisableIPv6) { + _tmp = -1; + _tmp$1 = new Errno(97); + fd = _tmp; + err = _tmp$1; + return [fd, err]; + } + _tuple = socket(domain, typ, proto); + fd = _tuple[0]; + err = _tuple[1]; + return [fd, err]; + }; + $pkg.Socket = Socket; + fchmodat = function(dirfd, path, mode) { + var _p0, _tuple, _tuple$1, dirfd, e1, err, mode, path; + err = $ifaceNil; + _p0 = ptrType$2.nil; + _tuple = BytePtrFromString(path); + _p0 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + _tuple$1 = Syscall(268, ((dirfd >>> 0)), ((_p0)), ((mode >>> 0))); + e1 = _tuple$1[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + openat = function(dirfd, path, flags, mode) { + var _p0, _tuple, _tuple$1, dirfd, e1, err, fd, flags, mode, path, r0; + fd = 0; + err = $ifaceNil; + _p0 = ptrType$2.nil; + _tuple = BytePtrFromString(path); + _p0 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [fd, err]; + } + _tuple$1 = Syscall6(257, ((dirfd >>> 0)), ((_p0)), ((flags >>> 0)), ((mode >>> 0)), 0, 0); + r0 = _tuple$1[0]; + e1 = _tuple$1[2]; + fd = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [fd, err]; + }; + Close = function(fd) { + var _tuple, e1, err, fd; + err = $ifaceNil; + _tuple = Syscall(3, ((fd >>> 0)), 0, 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Close = Close; + Dup = function(oldfd) { + var _tuple, e1, err, fd, oldfd, r0; + fd = 0; + err = $ifaceNil; + _tuple = Syscall(32, ((oldfd >>> 0)), 0, 0); + r0 = _tuple[0]; + e1 = _tuple[2]; + fd = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [fd, err]; + }; + $pkg.Dup = Dup; + Fchdir = function(fd) { + var _tuple, e1, err, fd; + err = $ifaceNil; + _tuple = Syscall(81, ((fd >>> 0)), 0, 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Fchdir = Fchdir; + Fchmod = function(fd, mode) { + var _tuple, e1, err, fd, mode; + err = $ifaceNil; + _tuple = Syscall(91, ((fd >>> 0)), ((mode >>> 0)), 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Fchmod = Fchmod; + fcntl = function(fd, cmd, arg) { + var _tuple, arg, cmd, e1, err, fd, r0, val; + val = 0; + err = $ifaceNil; + _tuple = Syscall(72, ((fd >>> 0)), ((cmd >>> 0)), ((arg >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + val = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [val, err]; + }; + Fsync = function(fd) { + var _tuple, e1, err, fd; + err = $ifaceNil; + _tuple = Syscall(74, ((fd >>> 0)), 0, 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Fsync = Fsync; + Getdents = function(fd, buf) { + var _p0, _tuple, buf, e1, err, fd, n, r0; + n = 0; + err = $ifaceNil; + _p0 = 0; + if (buf.$length > 0) { + _p0 = ($sliceToArray(buf)); + } else { + _p0 = (new Uint8Array(0)); + } + _tuple = Syscall(217, ((fd >>> 0)), (_p0), ((buf.$length >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + $pkg.Getdents = Getdents; + read = function(fd, p) { + var _p0, _tuple, e1, err, fd, n, p, r0; + n = 0; + err = $ifaceNil; + _p0 = 0; + if (p.$length > 0) { + _p0 = ($sliceToArray(p)); + } else { + _p0 = (new Uint8Array(0)); + } + _tuple = Syscall(0, ((fd >>> 0)), (_p0), ((p.$length >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + write = function(fd, p) { + var _p0, _tuple, e1, err, fd, n, p, r0; + n = 0; + err = $ifaceNil; + _p0 = 0; + if (p.$length > 0) { + _p0 = ($sliceToArray(p)); + } else { + _p0 = (new Uint8Array(0)); + } + _tuple = Syscall(1, ((fd >>> 0)), (_p0), ((p.$length >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + munmap = function(addr, length) { + var _tuple, addr, e1, err, length; + err = $ifaceNil; + _tuple = Syscall(11, (addr), (length), 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + Fchown = function(fd, uid, gid) { + var _tuple, e1, err, fd, gid, uid; + err = $ifaceNil; + _tuple = Syscall(93, ((fd >>> 0)), ((uid >>> 0)), ((gid >>> 0))); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Fchown = Fchown; + Fstat = function(fd, stat) { + var _array, _struct, _tuple, _view, e1, err, fd, stat; + err = $ifaceNil; + _array = new Uint8Array(144); + _tuple = Syscall(5, ((fd >>> 0)), ((_array)), 0); + _struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength)); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Fstat = Fstat; + Ftruncate = function(fd, length) { + var _tuple, e1, err, fd, length; + err = $ifaceNil; + _tuple = Syscall(77, ((fd >>> 0)), ((length.$low >>> 0)), 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Ftruncate = Ftruncate; + Pread = function(fd, p, offset) { + var _p0, _tuple, e1, err, fd, n, offset, p, r0; + n = 0; + err = $ifaceNil; + _p0 = 0; + if (p.$length > 0) { + _p0 = ($sliceToArray(p)); + } else { + _p0 = (new Uint8Array(0)); + } + _tuple = Syscall6(17, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((offset.$low >>> 0)), 0, 0); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + $pkg.Pread = Pread; + Pwrite = function(fd, p, offset) { + var _p0, _tuple, e1, err, fd, n, offset, p, r0; + n = 0; + err = $ifaceNil; + _p0 = 0; + if (p.$length > 0) { + _p0 = ($sliceToArray(p)); + } else { + _p0 = (new Uint8Array(0)); + } + _tuple = Syscall6(18, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((offset.$low >>> 0)), 0, 0); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + $pkg.Pwrite = Pwrite; + Seek = function(fd, offset, whence) { + var _tuple, e1, err, fd, off, offset, r0, whence; + off = new $Int64(0, 0); + err = $ifaceNil; + _tuple = Syscall(8, ((fd >>> 0)), ((offset.$low >>> 0)), ((whence >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + off = (new $Int64(0, r0.constructor === Number ? r0 : 1)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [off, err]; + }; + $pkg.Seek = Seek; + Shutdown = function(fd, how) { + var _tuple, e1, err, fd, how; + err = $ifaceNil; + _tuple = Syscall(48, ((fd >>> 0)), ((how >>> 0)), 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + $pkg.Shutdown = Shutdown; + accept = function(s, rsa, addrlen) { + var _array, _struct, _tuple, _view, addrlen, e1, err, fd, r0, rsa, s; + fd = 0; + err = $ifaceNil; + _array = new Uint8Array(112); + _tuple = Syscall(43, ((s >>> 0)), ((_array)), ((addrlen))); + _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); + r0 = _tuple[0]; + e1 = _tuple[2]; + fd = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [fd, err]; + }; + accept4 = function(s, rsa, addrlen, flags) { + var _array, _struct, _tuple, _view, addrlen, e1, err, fd, flags, r0, rsa, s; + fd = 0; + err = $ifaceNil; + _array = new Uint8Array(112); + _tuple = Syscall6(288, ((s >>> 0)), ((_array)), ((addrlen)), ((flags >>> 0)), 0, 0); + _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); + r0 = _tuple[0]; + e1 = _tuple[2]; + fd = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [fd, err]; + }; + bind = function(s, addr, addrlen) { + var _tuple, addr, addrlen, e1, err, s; + err = $ifaceNil; + _tuple = Syscall(49, ((s >>> 0)), (addr), ((addrlen >>> 0))); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + fstatat = function(fd, path, stat, flags) { + var _array, _p0, _struct, _tuple, _tuple$1, _view, e1, err, fd, flags, path, stat; + err = $ifaceNil; + _p0 = ptrType$2.nil; + _tuple = BytePtrFromString(path); + _p0 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + _array = new Uint8Array(144); + _tuple$1 = Syscall6(262, ((fd >>> 0)), ((_p0)), ((_array)), ((flags >>> 0)), 0, 0); + _struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength)); + e1 = _tuple$1[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + getsockopt = function(s, level, name, val, vallen) { + var _tuple, e1, err, level, name, s, val, vallen; + err = $ifaceNil; + _tuple = Syscall6(55, ((s >>> 0)), ((level >>> 0)), ((name >>> 0)), (val), ((vallen)), 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + setsockopt = function(s, level, name, val, vallen) { + var _tuple, e1, err, level, name, s, val, vallen; + err = $ifaceNil; + _tuple = Syscall6(54, ((s >>> 0)), ((level >>> 0)), ((name >>> 0)), (val), (vallen), 0); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + socket = function(domain, typ, proto) { + var _tuple, domain, e1, err, fd, proto, r0, typ; + fd = 0; + err = $ifaceNil; + _tuple = RawSyscall(41, ((domain >>> 0)), ((typ >>> 0)), ((proto >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + fd = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [fd, err]; + }; + getsockname = function(fd, rsa, addrlen) { + var _array, _struct, _tuple, _view, addrlen, e1, err, fd, rsa; + err = $ifaceNil; + _array = new Uint8Array(112); + _tuple = RawSyscall(51, ((fd >>> 0)), ((_array)), ((addrlen))); + _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + recvfrom = function(fd, p, flags, from, fromlen) { + var _array, _p0, _struct, _tuple, _view, e1, err, fd, flags, from, fromlen, n, p, r0; + n = 0; + err = $ifaceNil; + _p0 = 0; + if (p.$length > 0) { + _p0 = ($sliceToArray(p)); + } else { + _p0 = (new Uint8Array(0)); + } + _array = new Uint8Array(112); + _tuple = Syscall6(45, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((flags >>> 0)), ((_array)), ((fromlen))); + _struct = from, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + sendto = function(s, buf, flags, to, addrlen) { + var _p0, _tuple, addrlen, buf, e1, err, flags, s, to; + err = $ifaceNil; + _p0 = 0; + if (buf.$length > 0) { + _p0 = ($sliceToArray(buf)); + } else { + _p0 = (new Uint8Array(0)); + } + _tuple = Syscall6(44, ((s >>> 0)), (_p0), ((buf.$length >>> 0)), ((flags >>> 0)), (to), ((addrlen >>> 0))); + e1 = _tuple[2]; + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return err; + }; + recvmsg = function(s, msg, flags) { + var _array, _struct, _tuple, _view, e1, err, flags, msg, n, r0, s; + n = 0; + err = $ifaceNil; + _array = new Uint8Array(48); + _tuple = Syscall(47, ((s >>> 0)), ((_array)), ((flags >>> 0))); + _struct = msg, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Namelen = _view.getUint32(4, true), _struct.Pad_cgo_0 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Iovlen = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Controllen = new $Uint64(_view.getUint32(36, true), _view.getUint32(32, true)), _struct.Flags = _view.getInt32(40, true), _struct.Pad_cgo_1 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + sendmsg = function(s, msg, flags) { + var _array, _struct, _tuple, _view, e1, err, flags, msg, n, r0, s; + n = 0; + err = $ifaceNil; + _array = new Uint8Array(48); + _tuple = Syscall(46, ((s >>> 0)), ((_array)), ((flags >>> 0))); + _struct = msg, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Namelen = _view.getUint32(4, true), _struct.Pad_cgo_0 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Iovlen = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Controllen = new $Uint64(_view.getUint32(36, true), _view.getUint32(32, true)), _struct.Flags = _view.getInt32(40, true), _struct.Pad_cgo_1 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)); + r0 = _tuple[0]; + e1 = _tuple[2]; + n = ((r0 >> 0)); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [n, err]; + }; + mmap = function(addr, length, prot, flags, fd, offset) { + var _tuple, addr, e1, err, fd, flags, length, offset, prot, r0, xaddr; + xaddr = 0; + err = $ifaceNil; + _tuple = Syscall6(9, (addr), (length), ((prot >>> 0)), ((flags >>> 0)), ((fd >>> 0)), ((offset.$low >>> 0))); + r0 = _tuple[0]; + e1 = _tuple[2]; + xaddr = (r0); + if (!((e1 === 0))) { + err = errnoErr(e1); + } + return [xaddr, err]; + }; + ptrType$24.methods = [{prop: "toWireFormat", name: "toWireFormat", pkg: "syscall", typ: $funcType([], [sliceType], false)}]; + ptrType$25.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; + ptrType$12.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; + ptrType$26.methods = [{prop: "Mmap", name: "Mmap", pkg: "", typ: $funcType([$Int, $Int64, $Int, $Int, $Int], [sliceType, $error], false)}, {prop: "Munmap", name: "Munmap", pkg: "", typ: $funcType([sliceType], [$error], false)}]; + Errno.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$27.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; + ptrType$28.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; + ptrType$29.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; + ptrType$30.methods = [{prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64, $Int64], false)}, {prop: "Nano", name: "Nano", pkg: "", typ: $funcType([], [$Int64], false)}]; + ptrType$20.methods = [{prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}]; + ptrType$32.methods = [{prop: "SetControllen", name: "SetControllen", pkg: "", typ: $funcType([$Int], [], false)}]; + RawConn.init([{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$1], [$error], false)}]); + NetlinkRouteRequest.init("", [{prop: "Header", name: "Header", embedded: false, exported: true, typ: NlMsghdr, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: RtGenmsg, tag: ""}]); + NetlinkMessage.init("", [{prop: "Header", name: "Header", embedded: false, exported: true, typ: NlMsghdr, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: sliceType, tag: ""}]); + NetlinkRouteAttr.init("", [{prop: "Attr", name: "Attr", embedded: false, exported: true, typ: RtAttr, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: sliceType, tag: ""}]); + SockaddrLinklayer.init("syscall", [{prop: "Protocol", name: "Protocol", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ifindex", name: "Ifindex", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Hatype", name: "Hatype", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pkttype", name: "Pkttype", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Halen", name: "Halen", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$1, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrLinklayer, tag: ""}]); + SockaddrNetlink.init("syscall", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Groups", name: "Groups", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrNetlink, tag: ""}]); + mmapper.init("syscall", [{prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "active", name: "active", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "mmap", name: "mmap", embedded: false, exported: false, typ: funcType$2, tag: ""}, {prop: "munmap", name: "munmap", embedded: false, exported: false, typ: funcType$3, tag: ""}]); + Sockaddr.init([{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]); + SockaddrInet4.init("syscall", [{prop: "Port", name: "Port", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrInet4, tag: ""}]); + SockaddrInet6.init("syscall", [{prop: "Port", name: "Port", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrInet6, tag: ""}]); + SockaddrUnix.init("syscall", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrUnix, tag: ""}]); + Timespec.init("", [{prop: "Sec", name: "Sec", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Nsec", name: "Nsec", embedded: false, exported: true, typ: $Int64, tag: ""}]); + Stat_t.init("", [{prop: "Dev", name: "Dev", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Ino", name: "Ino", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Nlink", name: "Nlink", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Mode", name: "Mode", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Uid", name: "Uid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Gid", name: "Gid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "X__pad0", name: "X__pad0", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Rdev", name: "Rdev", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Size", name: "Size", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blksize", name: "Blksize", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blocks", name: "Blocks", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Atim", name: "Atim", embedded: false, exported: true, typ: Timespec, tag: ""}, {prop: "Mtim", name: "Mtim", embedded: false, exported: true, typ: Timespec, tag: ""}, {prop: "Ctim", name: "Ctim", embedded: false, exported: true, typ: Timespec, tag: ""}, {prop: "X__unused", name: "X__unused", embedded: false, exported: true, typ: arrayType$5, tag: ""}]); + RawSockaddrInet4.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Zero", name: "Zero", embedded: false, exported: true, typ: arrayType$1, tag: ""}]); + RawSockaddrInet6.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Flowinfo", name: "Flowinfo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "Scope_id", name: "Scope_id", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + RawSockaddrUnix.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: arrayType$8, tag: ""}]); + RawSockaddrLinklayer.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Protocol", name: "Protocol", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ifindex", name: "Ifindex", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hatype", name: "Hatype", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pkttype", name: "Pkttype", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Halen", name: "Halen", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$1, tag: ""}]); + RawSockaddrNetlink.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Groups", name: "Groups", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + RawSockaddr.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: arrayType$10, tag: ""}]); + RawSockaddrAny.init("", [{prop: "Addr", name: "Addr", embedded: false, exported: true, typ: RawSockaddr, tag: ""}, {prop: "Pad", name: "Pad", embedded: false, exported: true, typ: arrayType$11, tag: ""}]); + Linger.init("", [{prop: "Onoff", name: "Onoff", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Linger", name: "Linger", embedded: false, exported: true, typ: $Int32, tag: ""}]); + Iovec.init("", [{prop: "Base", name: "Base", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: $Uint64, tag: ""}]); + IPMreq.init("", [{prop: "Multiaddr", name: "Multiaddr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Interface", name: "Interface", embedded: false, exported: true, typ: arrayType$9, tag: ""}]); + IPMreqn.init("", [{prop: "Multiaddr", name: "Multiaddr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Address", name: "Address", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Ifindex", name: "Ifindex", embedded: false, exported: true, typ: $Int32, tag: ""}]); + IPv6Mreq.init("", [{prop: "Multiaddr", name: "Multiaddr", embedded: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "Interface", name: "Interface", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + Msghdr.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Namelen", name: "Namelen", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Pad_cgo_0", name: "Pad_cgo_0", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Iov", name: "Iov", embedded: false, exported: true, typ: ptrType$20, tag: ""}, {prop: "Iovlen", name: "Iovlen", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Control", name: "Control", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Controllen", name: "Controllen", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Pad_cgo_1", name: "Pad_cgo_1", embedded: false, exported: true, typ: arrayType$9, tag: ""}]); + NlMsghdr.init("", [{prop: "Len", name: "Len", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Seq", name: "Seq", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + RtGenmsg.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint8, tag: ""}]); + RtAttr.init("", [{prop: "Len", name: "Len", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $Uint16, tag: ""}]); + IfInfomsg.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "X__ifi_pad", name: "X__ifi_pad", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Change", name: "Change", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + IfAddrmsg.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Prefixlen", name: "Prefixlen", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Scope", name: "Scope", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lineBuffer = sliceType.nil; + syscallModule = null; + $pkg.ForkLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0); + $pkg.SocketDisableIPv6 = false; + ioSync = new $Int64(0, 0); + warningPrinted = false; + alreadyTriedToLoad = false; + minusOne = -1; + envs = runtime_envs(); + $pkg.Stdin = 0; + $pkg.Stdout = 1; + $pkg.Stderr = 2; + errEAGAIN = new Errno(11); + errEINVAL = new Errno(22); + errENOENT = new Errno(2); + errors = $toNativeArray($kindString, ["", "operation not permitted", "no such file or directory", "no such process", "interrupted system call", "input/output error", "no such device or address", "argument list too long", "exec format error", "bad file descriptor", "no child processes", "resource temporarily unavailable", "cannot allocate memory", "permission denied", "bad address", "block device required", "device or resource busy", "file exists", "invalid cross-device link", "no such device", "not a directory", "is a directory", "invalid argument", "too many open files in system", "too many open files", "inappropriate ioctl for device", "text file busy", "file too large", "no space left on device", "illegal seek", "read-only file system", "too many links", "broken pipe", "numerical argument out of domain", "numerical result out of range", "resource deadlock avoided", "file name too long", "no locks available", "function not implemented", "directory not empty", "too many levels of symbolic links", "", "no message of desired type", "identifier removed", "channel number out of range", "level 2 not synchronized", "level 3 halted", "level 3 reset", "link number out of range", "protocol driver not attached", "no CSI structure available", "level 2 halted", "invalid exchange", "invalid request descriptor", "exchange full", "no anode", "invalid request code", "invalid slot", "", "bad font file format", "device not a stream", "no data available", "timer expired", "out of streams resources", "machine is not on the network", "package not installed", "object is remote", "link has been severed", "advertise error", "srmount error", "communication error on send", "protocol error", "multihop attempted", "RFS specific error", "bad message", "value too large for defined data type", "name not unique on network", "file descriptor in bad state", "remote address changed", "can not access a needed shared library", "accessing a corrupted shared library", ".lib section in a.out corrupted", "attempting to link in too many shared libraries", "cannot exec a shared library directly", "invalid or incomplete multibyte or wide character", "interrupted system call should be restarted", "streams pipe error", "too many users", "socket operation on non-socket", "destination address required", "message too long", "protocol wrong type for socket", "protocol not available", "protocol not supported", "socket type not supported", "operation not supported", "protocol family not supported", "address family not supported by protocol", "address already in use", "cannot assign requested address", "network is down", "network is unreachable", "network dropped connection on reset", "software caused connection abort", "connection reset by peer", "no buffer space available", "transport endpoint is already connected", "transport endpoint is not connected", "cannot send after transport endpoint shutdown", "too many references: cannot splice", "connection timed out", "connection refused", "host is down", "no route to host", "operation already in progress", "operation now in progress", "stale NFS file handle", "structure needs cleaning", "not a XENIX named type file", "no XENIX semaphores available", "is a named type file", "remote I/O error", "disk quota exceeded", "no medium found", "wrong medium type", "operation canceled", "required key not available", "key has expired", "key has been revoked", "key was rejected by service", "owner died", "state not recoverable", "operation not possible due to RF-kill"]); + mapper = new mmapper.ptr(new sync.Mutex.ptr(0, 0), {}, mmap, munmap); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/nosync"] = (function() { + var $pkg = {}, $init, Mutex, Once, Pool, ptrType$1, funcType$1, ptrType$4, sliceType, ptrType$5, funcType$2; + Mutex = $pkg.Mutex = $newType(0, $kindStruct, "nosync.Mutex", true, "github.com/gopherjs/gopherjs/nosync", true, function(locked_) { + this.$val = this; + if (arguments.length === 0) { + this.locked = false; + return; + } + this.locked = locked_; + }); + Once = $pkg.Once = $newType(0, $kindStruct, "nosync.Once", true, "github.com/gopherjs/gopherjs/nosync", true, function(doing_, done_) { + this.$val = this; + if (arguments.length === 0) { + this.doing = false; + this.done = false; + return; + } + this.doing = doing_; + this.done = done_; + }); + Pool = $pkg.Pool = $newType(0, $kindStruct, "nosync.Pool", true, "github.com/gopherjs/gopherjs/nosync", true, function(store_, New_) { + this.$val = this; + if (arguments.length === 0) { + this.store = sliceType.nil; + this.New = $throwNilPointerError; + return; + } + this.store = store_; + this.New = New_; + }); + ptrType$1 = $ptrType(Mutex); + funcType$1 = $funcType([], [], false); + ptrType$4 = $ptrType(Once); + sliceType = $sliceType($emptyInterface); + ptrType$5 = $ptrType(Pool); + funcType$2 = $funcType([], [$emptyInterface], false); + Mutex.ptr.prototype.Lock = function() { + var m; + m = this; + if (m.locked) { + $panic(new $String("nosync: mutex is already locked")); + } + m.locked = true; + }; + Mutex.prototype.Lock = function() { return this.$val.Lock(); }; + Mutex.ptr.prototype.Unlock = function() { + var m; + m = this; + if (!m.locked) { + $panic(new $String("nosync: unlock of unlocked mutex")); + } + m.locked = false; + }; + Mutex.prototype.Unlock = function() { return this.$val.Unlock(); }; + Once.ptr.prototype.Do = function(f) { + var f, o, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + o = [o]; + o[0] = this; + if (o[0].done) { + $s = -1; return; + } + if (o[0].doing) { + $panic(new $String("nosync: Do called within f")); + } + o[0].doing = true; + $deferred.push([(function(o) { return function() { + o[0].doing = false; + o[0].done = true; + }; })(o), []]); + $r = f(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Once.prototype.Do = function(f) { return this.$val.Do(f); }; + Pool.ptr.prototype.Get = function() { + var _r, p, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (p.store.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.store.$length === 0) { */ case 1: + /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(p.New === $throwNilPointerError)) { */ case 3: + _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 2: + x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); + $s = -1; return x$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + Pool.prototype.Get = function() { return this.$val.Get(); }; + Pool.ptr.prototype.Put = function(x) { + var p, x; + p = this; + if ($interfaceIsEqual(x, $ifaceNil)) { + return; + } + p.store = $append(p.store, x); + }; + Pool.prototype.Put = function(x) { return this.$val.Put(x); }; + ptrType$1.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + ptrType$4.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$1], [], false)}]; + ptrType$5.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}]; + Mutex.init("github.com/gopherjs/gopherjs/nosync", [{prop: "locked", name: "locked", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Once.init("github.com/gopherjs/gopherjs/nosync", [{prop: "doing", name: "doing", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Pool.init("github.com/gopherjs/gopherjs/nosync", [{prop: "store", name: "store", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: funcType$2, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["time"] = (function() { + var $pkg = {}, $init, errors, js, nosync, runtime, syscall, runtimeTimer, ParseError, Timer, Ticker, Time, Month, Weekday, Duration, Location, zone, zoneTrans, sliceType, sliceType$1, ptrType, sliceType$2, arrayType, sliceType$3, arrayType$1, arrayType$2, ptrType$2, chanType, arrayType$3, funcType$1, ptrType$3, ptrType$4, ptrType$5, chanType$1, ptrType$6, ptrType$7, zoneSources, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, months, days, daysBefore, startNano, utcLoc, utcLoc$24ptr, localLoc, localLoc$24ptr, localOnce, errLocation, badData, x, init, initLocal, runtimeNano, now, startTimer, stopTimer, indexByte, startsWithLowerCase, nextStdChunk, match, lookup, appendInt, atoi, formatNano, quote, isDigit, getnum, cutspace, skip, Parse, parse, parseTimeZone, parseGMT, parseSignedOffset, parseNanoseconds, leadingInt, when, NewTimer, sendTime, NewTicker, absWeekday, absClock, fmtFrac, fmtInt, lessThanHalf, Until, absDate, daysIn, Now, unixTime, Unix, isLeap, norm, Date, div, FixedZone; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + runtime = $packages["runtime"]; + syscall = $packages["syscall"]; + runtimeTimer = $pkg.runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", true, "time", false, function(i_, when_, period_, f_, arg_, timeout_, active_) { + this.$val = this; + if (arguments.length === 0) { + this.i = 0; + this.when = new $Int64(0, 0); + this.period = new $Int64(0, 0); + this.f = $throwNilPointerError; + this.arg = $ifaceNil; + this.timeout = null; + this.active = false; + return; + } + this.i = i_; + this.when = when_; + this.period = period_; + this.f = f_; + this.arg = arg_; + this.timeout = timeout_; + this.active = active_; + }); + ParseError = $pkg.ParseError = $newType(0, $kindStruct, "time.ParseError", true, "time", true, function(Layout_, Value_, LayoutElem_, ValueElem_, Message_) { + this.$val = this; + if (arguments.length === 0) { + this.Layout = ""; + this.Value = ""; + this.LayoutElem = ""; + this.ValueElem = ""; + this.Message = ""; + return; + } + this.Layout = Layout_; + this.Value = Value_; + this.LayoutElem = LayoutElem_; + this.ValueElem = ValueElem_; + this.Message = Message_; + }); + Timer = $pkg.Timer = $newType(0, $kindStruct, "time.Timer", true, "time", true, function(C_, r_) { + this.$val = this; + if (arguments.length === 0) { + this.C = $chanNil; + this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false); + return; + } + this.C = C_; + this.r = r_; + }); + Ticker = $pkg.Ticker = $newType(0, $kindStruct, "time.Ticker", true, "time", true, function(C_, r_) { + this.$val = this; + if (arguments.length === 0) { + this.C = $chanNil; + this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false); + return; + } + this.C = C_; + this.r = r_; + }); + Time = $pkg.Time = $newType(0, $kindStruct, "time.Time", true, "time", true, function(wall_, ext_, loc_) { + this.$val = this; + if (arguments.length === 0) { + this.wall = new $Uint64(0, 0); + this.ext = new $Int64(0, 0); + this.loc = ptrType$2.nil; + return; + } + this.wall = wall_; + this.ext = ext_; + this.loc = loc_; + }); + Month = $pkg.Month = $newType(4, $kindInt, "time.Month", true, "time", true, null); + Weekday = $pkg.Weekday = $newType(4, $kindInt, "time.Weekday", true, "time", true, null); + Duration = $pkg.Duration = $newType(8, $kindInt64, "time.Duration", true, "time", true, null); + Location = $pkg.Location = $newType(0, $kindStruct, "time.Location", true, "time", true, function(name_, zone_, tx_, cacheStart_, cacheEnd_, cacheZone_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.zone = sliceType.nil; + this.tx = sliceType$1.nil; + this.cacheStart = new $Int64(0, 0); + this.cacheEnd = new $Int64(0, 0); + this.cacheZone = ptrType.nil; + return; + } + this.name = name_; + this.zone = zone_; + this.tx = tx_; + this.cacheStart = cacheStart_; + this.cacheEnd = cacheEnd_; + this.cacheZone = cacheZone_; + }); + zone = $pkg.zone = $newType(0, $kindStruct, "time.zone", true, "time", false, function(name_, offset_, isDST_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.offset = 0; + this.isDST = false; + return; + } + this.name = name_; + this.offset = offset_; + this.isDST = isDST_; + }); + zoneTrans = $pkg.zoneTrans = $newType(0, $kindStruct, "time.zoneTrans", true, "time", false, function(when_, index_, isstd_, isutc_) { + this.$val = this; + if (arguments.length === 0) { + this.when = new $Int64(0, 0); + this.index = 0; + this.isstd = false; + this.isutc = false; + return; + } + this.when = when_; + this.index = index_; + this.isstd = isstd_; + this.isutc = isutc_; + }); + sliceType = $sliceType(zone); + sliceType$1 = $sliceType(zoneTrans); + ptrType = $ptrType(zone); + sliceType$2 = $sliceType($String); + arrayType = $arrayType($Uint8, 20); + sliceType$3 = $sliceType($Uint8); + arrayType$1 = $arrayType($Uint8, 9); + arrayType$2 = $arrayType($Uint8, 64); + ptrType$2 = $ptrType(Location); + chanType = $chanType(Time, false, false); + arrayType$3 = $arrayType($Uint8, 32); + funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false); + ptrType$3 = $ptrType(js.Object); + ptrType$4 = $ptrType(ParseError); + ptrType$5 = $ptrType(Timer); + chanType$1 = $chanType(Time, false, true); + ptrType$6 = $ptrType(Ticker); + ptrType$7 = $ptrType(Time); + init = function() { + $unused(Unix(new $Int64(0, 0), new $Int64(0, 0))); + }; + initLocal = function() { + var d, i, j, s; + d = new ($global.Date)(); + s = $internalize(d, $String); + i = indexByte(s, 40); + j = indexByte(s, 41); + if ((i === -1) || (j === -1)) { + localLoc.name = "UTC"; + return; + } + localLoc.name = $substring(s, (i + 1 >> 0), j); + localLoc.zone = new sliceType([new zone.ptr(localLoc.name, $imul(($parseInt(d.getTimezoneOffset()) >> 0), -60), false)]); + }; + runtimeNano = function() { + return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000)); + }; + now = function() { + var _tmp, _tmp$1, _tmp$2, mono, n, nsec, sec, x$1; + sec = new $Int64(0, 0); + nsec = 0; + mono = new $Int64(0, 0); + n = runtimeNano(); + _tmp = $div64(n, new $Int64(0, 1000000000), false); + _tmp$1 = (((x$1 = $div64(n, new $Int64(0, 1000000000), true), x$1.$low + ((x$1.$high >> 31) * 4294967296)) >> 0)); + _tmp$2 = n; + sec = _tmp; + nsec = _tmp$1; + mono = _tmp$2; + return [sec, nsec, mono]; + }; + startTimer = function(t) { + var diff, t, x$1, x$2; + t.active = true; + diff = $div64(((x$1 = t.when, x$2 = runtimeNano(), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low))), new $Int64(0, 1000000), false); + if ((diff.$high > 0 || (diff.$high === 0 && diff.$low > 2147483647))) { + return; + } + if ((diff.$high < 0 || (diff.$high === 0 && diff.$low < 0))) { + diff = new $Int64(0, 0); + } + t.timeout = $setTimeout((function() { + var x$3, x$4, x$5; + t.active = false; + if (!((x$3 = t.period, (x$3.$high === 0 && x$3.$low === 0)))) { + t.when = (x$4 = t.when, x$5 = t.period, new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); + startTimer(t); + } + $go(t.f, [t.arg, 0]); + }), $externalize(new $Int64(diff.$high + 0, diff.$low + 1), $Int64)); + }; + stopTimer = function(t) { + var t, wasActive; + $global.clearTimeout(t.timeout); + wasActive = t.active; + t.active = false; + return wasActive; + }; + indexByte = function(s, c) { + var c, s; + return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0; + }; + startsWithLowerCase = function(str) { + var c, str; + if (str.length === 0) { + return false; + } + c = str.charCodeAt(0); + return 97 <= c && c <= 122; + }; + nextStdChunk = function(layout) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$6, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$7, _tmp$70, _tmp$71, _tmp$72, _tmp$73, _tmp$74, _tmp$75, _tmp$76, _tmp$77, _tmp$78, _tmp$79, _tmp$8, _tmp$80, _tmp$81, _tmp$82, _tmp$83, _tmp$84, _tmp$85, _tmp$86, _tmp$9, c, ch, i, j, layout, prefix, std, std$1, suffix, x$1; + prefix = ""; + std = 0; + suffix = ""; + i = 0; + while (true) { + if (!(i < layout.length)) { break; } + c = ((layout.charCodeAt(i) >> 0)); + _1 = c; + if (_1 === (74)) { + if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Jan") { + if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "January") { + _tmp = $substring(layout, 0, i); + _tmp$1 = 257; + _tmp$2 = $substring(layout, (i + 7 >> 0)); + prefix = _tmp; + std = _tmp$1; + suffix = _tmp$2; + return [prefix, std, suffix]; + } + if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) { + _tmp$3 = $substring(layout, 0, i); + _tmp$4 = 258; + _tmp$5 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$3; + std = _tmp$4; + suffix = _tmp$5; + return [prefix, std, suffix]; + } + } + } else if (_1 === (77)) { + if (layout.length >= (i + 3 >> 0)) { + if ($substring(layout, i, (i + 3 >> 0)) === "Mon") { + if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Monday") { + _tmp$6 = $substring(layout, 0, i); + _tmp$7 = 261; + _tmp$8 = $substring(layout, (i + 6 >> 0)); + prefix = _tmp$6; + std = _tmp$7; + suffix = _tmp$8; + return [prefix, std, suffix]; + } + if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) { + _tmp$9 = $substring(layout, 0, i); + _tmp$10 = 262; + _tmp$11 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$9; + std = _tmp$10; + suffix = _tmp$11; + return [prefix, std, suffix]; + } + } + if ($substring(layout, i, (i + 3 >> 0)) === "MST") { + _tmp$12 = $substring(layout, 0, i); + _tmp$13 = 21; + _tmp$14 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$12; + std = _tmp$13; + suffix = _tmp$14; + return [prefix, std, suffix]; + } + } + } else if (_1 === (48)) { + if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) { + _tmp$15 = $substring(layout, 0, i); + _tmp$16 = (x$1 = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x$1 < 0 || x$1 >= std0x.length) ? ($throwRuntimeError("index out of range"), undefined) : std0x[x$1])); + _tmp$17 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$15; + std = _tmp$16; + suffix = _tmp$17; + return [prefix, std, suffix]; + } + } else if (_1 === (49)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) { + _tmp$18 = $substring(layout, 0, i); + _tmp$19 = 522; + _tmp$20 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$18; + std = _tmp$19; + suffix = _tmp$20; + return [prefix, std, suffix]; + } + _tmp$21 = $substring(layout, 0, i); + _tmp$22 = 259; + _tmp$23 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$21; + std = _tmp$22; + suffix = _tmp$23; + return [prefix, std, suffix]; + } else if (_1 === (50)) { + if (layout.length >= (i + 4 >> 0) && $substring(layout, i, (i + 4 >> 0)) === "2006") { + _tmp$24 = $substring(layout, 0, i); + _tmp$25 = 273; + _tmp$26 = $substring(layout, (i + 4 >> 0)); + prefix = _tmp$24; + std = _tmp$25; + suffix = _tmp$26; + return [prefix, std, suffix]; + } + _tmp$27 = $substring(layout, 0, i); + _tmp$28 = 263; + _tmp$29 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$27; + std = _tmp$28; + suffix = _tmp$29; + return [prefix, std, suffix]; + } else if (_1 === (95)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) { + if (layout.length >= (i + 5 >> 0) && $substring(layout, (i + 1 >> 0), (i + 5 >> 0)) === "2006") { + _tmp$30 = $substring(layout, 0, (i + 1 >> 0)); + _tmp$31 = 273; + _tmp$32 = $substring(layout, (i + 5 >> 0)); + prefix = _tmp$30; + std = _tmp$31; + suffix = _tmp$32; + return [prefix, std, suffix]; + } + _tmp$33 = $substring(layout, 0, i); + _tmp$34 = 264; + _tmp$35 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$33; + std = _tmp$34; + suffix = _tmp$35; + return [prefix, std, suffix]; + } + } else if (_1 === (51)) { + _tmp$36 = $substring(layout, 0, i); + _tmp$37 = 523; + _tmp$38 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$36; + std = _tmp$37; + suffix = _tmp$38; + return [prefix, std, suffix]; + } else if (_1 === (52)) { + _tmp$39 = $substring(layout, 0, i); + _tmp$40 = 525; + _tmp$41 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$39; + std = _tmp$40; + suffix = _tmp$41; + return [prefix, std, suffix]; + } else if (_1 === (53)) { + _tmp$42 = $substring(layout, 0, i); + _tmp$43 = 527; + _tmp$44 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$42; + std = _tmp$43; + suffix = _tmp$44; + return [prefix, std, suffix]; + } else if (_1 === (80)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) { + _tmp$45 = $substring(layout, 0, i); + _tmp$46 = 531; + _tmp$47 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$45; + std = _tmp$46; + suffix = _tmp$47; + return [prefix, std, suffix]; + } + } else if (_1 === (112)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) { + _tmp$48 = $substring(layout, 0, i); + _tmp$49 = 532; + _tmp$50 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$48; + std = _tmp$49; + suffix = _tmp$50; + return [prefix, std, suffix]; + } + } else if (_1 === (45)) { + if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "-070000") { + _tmp$51 = $substring(layout, 0, i); + _tmp$52 = 28; + _tmp$53 = $substring(layout, (i + 7 >> 0)); + prefix = _tmp$51; + std = _tmp$52; + suffix = _tmp$53; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "-07:00:00") { + _tmp$54 = $substring(layout, 0, i); + _tmp$55 = 31; + _tmp$56 = $substring(layout, (i + 9 >> 0)); + prefix = _tmp$54; + std = _tmp$55; + suffix = _tmp$56; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "-0700") { + _tmp$57 = $substring(layout, 0, i); + _tmp$58 = 27; + _tmp$59 = $substring(layout, (i + 5 >> 0)); + prefix = _tmp$57; + std = _tmp$58; + suffix = _tmp$59; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "-07:00") { + _tmp$60 = $substring(layout, 0, i); + _tmp$61 = 30; + _tmp$62 = $substring(layout, (i + 6 >> 0)); + prefix = _tmp$60; + std = _tmp$61; + suffix = _tmp$62; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "-07") { + _tmp$63 = $substring(layout, 0, i); + _tmp$64 = 29; + _tmp$65 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$63; + std = _tmp$64; + suffix = _tmp$65; + return [prefix, std, suffix]; + } + } else if (_1 === (90)) { + if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "Z070000") { + _tmp$66 = $substring(layout, 0, i); + _tmp$67 = 23; + _tmp$68 = $substring(layout, (i + 7 >> 0)); + prefix = _tmp$66; + std = _tmp$67; + suffix = _tmp$68; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "Z07:00:00") { + _tmp$69 = $substring(layout, 0, i); + _tmp$70 = 26; + _tmp$71 = $substring(layout, (i + 9 >> 0)); + prefix = _tmp$69; + std = _tmp$70; + suffix = _tmp$71; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "Z0700") { + _tmp$72 = $substring(layout, 0, i); + _tmp$73 = 22; + _tmp$74 = $substring(layout, (i + 5 >> 0)); + prefix = _tmp$72; + std = _tmp$73; + suffix = _tmp$74; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Z07:00") { + _tmp$75 = $substring(layout, 0, i); + _tmp$76 = 25; + _tmp$77 = $substring(layout, (i + 6 >> 0)); + prefix = _tmp$75; + std = _tmp$76; + suffix = _tmp$77; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Z07") { + _tmp$78 = $substring(layout, 0, i); + _tmp$79 = 24; + _tmp$80 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$78; + std = _tmp$79; + suffix = _tmp$80; + return [prefix, std, suffix]; + } + } else if (_1 === (46)) { + if ((i + 1 >> 0) < layout.length && ((layout.charCodeAt((i + 1 >> 0)) === 48) || (layout.charCodeAt((i + 1 >> 0)) === 57))) { + ch = layout.charCodeAt((i + 1 >> 0)); + j = i + 1 >> 0; + while (true) { + if (!(j < layout.length && (layout.charCodeAt(j) === ch))) { break; } + j = j + (1) >> 0; + } + if (!isDigit(layout, j)) { + std$1 = 32; + if (layout.charCodeAt((i + 1 >> 0)) === 57) { + std$1 = 33; + } + std$1 = std$1 | ((((j - ((i + 1 >> 0)) >> 0)) << 16 >> 0)); + _tmp$81 = $substring(layout, 0, i); + _tmp$82 = std$1; + _tmp$83 = $substring(layout, j); + prefix = _tmp$81; + std = _tmp$82; + suffix = _tmp$83; + return [prefix, std, suffix]; + } + } + } + i = i + (1) >> 0; + } + _tmp$84 = layout; + _tmp$85 = 0; + _tmp$86 = ""; + prefix = _tmp$84; + std = _tmp$85; + suffix = _tmp$86; + return [prefix, std, suffix]; + }; + match = function(s1, s2) { + var c1, c2, i, s1, s2; + i = 0; + while (true) { + if (!(i < s1.length)) { break; } + c1 = s1.charCodeAt(i); + c2 = s2.charCodeAt(i); + if (!((c1 === c2))) { + c1 = (c1 | (32)) >>> 0; + c2 = (c2 | (32)) >>> 0; + if (!((c1 === c2)) || c1 < 97 || c1 > 122) { + return false; + } + } + i = i + (1) >> 0; + } + return true; + }; + lookup = function(tab, val) { + var _i, _ref, i, tab, v, val; + _ref = tab; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (val.length >= v.length && match($substring(val, 0, v.length), v)) { + return [i, $substring(val, v.length), $ifaceNil]; + } + _i++; + } + return [-1, val, errBad]; + }; + appendInt = function(b, x$1, width) { + var _q, b, buf, i, q, u, w, width, x$1; + u = ((x$1 >>> 0)); + if (x$1 < 0) { + b = $append(b, 45); + u = ((-x$1 >>> 0)); + } + buf = arrayType.zero(); + i = 20; + while (true) { + if (!(u >= 10)) { break; } + i = i - (1) >> 0; + q = (_q = u / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + u >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24))); + u = q; + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + u >>> 0) << 24 >>> 24))); + w = 20 - i >> 0; + while (true) { + if (!(w < width)) { break; } + b = $append(b, 48); + w = w + (1) >> 0; + } + return $appendSlice(b, $subslice(new sliceType$3(buf), i)); + }; + atoi = function(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, neg, q, rem, s, x$1; + x$1 = 0; + err = $ifaceNil; + neg = false; + if (!(s === "") && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) { + neg = s.charCodeAt(0) === 45; + s = $substring(s, 1); + } + _tuple = leadingInt(s); + q = _tuple[0]; + rem = _tuple[1]; + err = _tuple[2]; + x$1 = (((q.$low + ((q.$high >> 31) * 4294967296)) >> 0)); + if (!($interfaceIsEqual(err, $ifaceNil)) || !(rem === "")) { + _tmp = 0; + _tmp$1 = atoiError; + x$1 = _tmp; + err = _tmp$1; + return [x$1, err]; + } + if (neg) { + x$1 = -x$1; + } + _tmp$2 = x$1; + _tmp$3 = $ifaceNil; + x$1 = _tmp$2; + err = _tmp$3; + return [x$1, err]; + }; + formatNano = function(b, nanosec, n, trim) { + var _q, _r, b, buf, n, nanosec, start, trim, u, x$1; + u = nanosec; + buf = arrayType$1.zero(); + start = 9; + while (true) { + if (!(start > 0)) { break; } + start = start - (1) >> 0; + ((start < 0 || start >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[start] = ((((_r = u % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24))); + u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + } + if (n > 9) { + n = 9; + } + if (trim) { + while (true) { + if (!(n > 0 && ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x$1])) === 48))) { break; } + n = n - (1) >> 0; + } + if (n === 0) { + return b; + } + } + b = $append(b, 46); + return $appendSlice(b, $subslice(new sliceType$3(buf), 0, n)); + }; + Time.ptr.prototype.String = function() { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, m0, m1, m2, s, sign, t, wid, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; buf = $f.buf; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; s = $f.s; sign = $f.sign; t = $f.t; wid = $f.wid; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).Format("2006-01-02 15:04:05.999999999 -0700 MST"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + m2 = ((x$3 = t.ext, new $Uint64(x$3.$high, x$3.$low))); + sign = 43; + if ((x$4 = t.ext, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 0)))) { + sign = 45; + m2 = new $Uint64(-m2.$high, -m2.$low); + } + _tmp = $div64(m2, new $Uint64(0, 1000000000), false); + _tmp$1 = $div64(m2, new $Uint64(0, 1000000000), true); + m1 = _tmp; + m2 = _tmp$1; + _tmp$2 = $div64(m1, new $Uint64(0, 1000000000), false); + _tmp$3 = $div64(m1, new $Uint64(0, 1000000000), true); + m0 = _tmp$2; + m1 = _tmp$3; + buf = sliceType$3.nil; + buf = $appendSlice(buf, " m="); + buf = $append(buf, sign); + wid = 0; + if (!((m0.$high === 0 && m0.$low === 0))) { + buf = appendInt(buf, ((m0.$low >> 0)), 0); + wid = 9; + } + buf = appendInt(buf, ((m1.$low >> 0)), wid); + buf = $append(buf, 46); + buf = appendInt(buf, ((m2.$low >> 0)), 9); + s = s + (($bytesToString(buf))); + } + $s = -1; return s; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.String }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.buf = buf; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.s = s; $f.sign = sign; $f.t = t; $f.wid = wid; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.String = function() { return this.$val.String(); }; + Time.ptr.prototype.Format = function(layout) { + var _r, b, buf, layout, max, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; buf = $f.buf; layout = $f.layout; max = $f.max; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + b = sliceType$3.nil; + max = layout.length + 10 >> 0; + if (max < 64) { + buf = arrayType$2.zero(); + b = $subslice(new sliceType$3(buf), 0, 0); + } else { + b = $makeSlice(sliceType$3, 0, max); + } + _r = $clone(t, Time).AppendFormat(b, layout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return ($bytesToString(b)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Format }; } $f._r = _r; $f.b = b; $f.buf = buf; $f.layout = layout; $f.max = max; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Format = function(layout) { return this.$val.Format(layout); }; + Time.ptr.prototype.AppendFormat = function(b, layout) { + var _1, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, _tuple$3, abs, absoffset, b, day, hour, hr, hr$1, layout, m, min, month, name, offset, prefix, s, sec, std, suffix, t, y, year, zone$1, zone$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; abs = $f.abs; absoffset = $f.absoffset; b = $f.b; day = $f.day; hour = $f.hour; hr = $f.hr; hr$1 = $f.hr$1; layout = $f.layout; m = $f.m; min = $f.min; month = $f.month; name = $f.name; offset = $f.offset; prefix = $f.prefix; s = $f.s; sec = $f.sec; std = $f.std; suffix = $f.suffix; t = $f.t; y = $f.y; year = $f.year; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + name = _tuple[0]; + offset = _tuple[1]; + abs = _tuple[2]; + year = -1; + month = 0; + day = 0; + hour = -1; + min = 0; + sec = 0; + while (true) { + if (!(!(layout === ""))) { break; } + _tuple$1 = nextStdChunk(layout); + prefix = _tuple$1[0]; + std = _tuple$1[1]; + suffix = _tuple$1[2]; + if (!(prefix === "")) { + b = $appendSlice(b, prefix); + } + if (std === 0) { + break; + } + layout = suffix; + if (year < 0 && !(((std & 256) === 0))) { + _tuple$2 = absDate(abs, true); + year = _tuple$2[0]; + month = _tuple$2[1]; + day = _tuple$2[2]; + } + if (hour < 0 && !(((std & 512) === 0))) { + _tuple$3 = absClock(abs); + hour = _tuple$3[0]; + min = _tuple$3[1]; + sec = _tuple$3[2]; + } + switch (0) { default: + _1 = std & 65535; + if (_1 === (274)) { + y = year; + if (y < 0) { + y = -y; + } + b = appendInt(b, (_r$1 = y % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")), 2); + } else if (_1 === (273)) { + b = appendInt(b, year, 4); + } else if (_1 === (258)) { + b = $appendSlice(b, $substring(new Month(month).String(), 0, 3)); + } else if (_1 === (257)) { + m = new Month(month).String(); + b = $appendSlice(b, m); + } else if (_1 === (259)) { + b = appendInt(b, ((month >> 0)), 0); + } else if (_1 === (260)) { + b = appendInt(b, ((month >> 0)), 2); + } else if (_1 === (262)) { + b = $appendSlice(b, $substring(new Weekday(absWeekday(abs)).String(), 0, 3)); + } else if (_1 === (261)) { + s = new Weekday(absWeekday(abs)).String(); + b = $appendSlice(b, s); + } else if (_1 === (263)) { + b = appendInt(b, day, 0); + } else if (_1 === (264)) { + if (day < 10) { + b = $append(b, 32); + } + b = appendInt(b, day, 0); + } else if (_1 === (265)) { + b = appendInt(b, day, 2); + } else if (_1 === (522)) { + b = appendInt(b, hour, 2); + } else if (_1 === (523)) { + hr = (_r$2 = hour % 12, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")); + if (hr === 0) { + hr = 12; + } + b = appendInt(b, hr, 0); + } else if (_1 === (524)) { + hr$1 = (_r$3 = hour % 12, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")); + if (hr$1 === 0) { + hr$1 = 12; + } + b = appendInt(b, hr$1, 2); + } else if (_1 === (525)) { + b = appendInt(b, min, 0); + } else if (_1 === (526)) { + b = appendInt(b, min, 2); + } else if (_1 === (527)) { + b = appendInt(b, sec, 0); + } else if (_1 === (528)) { + b = appendInt(b, sec, 2); + } else if (_1 === (531)) { + if (hour >= 12) { + b = $appendSlice(b, "PM"); + } else { + b = $appendSlice(b, "AM"); + } + } else if (_1 === (532)) { + if (hour >= 12) { + b = $appendSlice(b, "pm"); + } else { + b = $appendSlice(b, "am"); + } + } else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (30)) || (_1 === (28)) || (_1 === (29)) || (_1 === (31))) { + if ((offset === 0) && ((std === 22) || (std === 25) || (std === 23) || (std === 24) || (std === 26))) { + b = $append(b, 90); + break; + } + zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + absoffset = offset; + if (zone$1 < 0) { + b = $append(b, 45); + zone$1 = -zone$1; + absoffset = -absoffset; + } else { + b = $append(b, 43); + } + b = appendInt(b, (_q$1 = zone$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2); + if ((std === 25) || (std === 30) || (std === 26) || (std === 31)) { + b = $append(b, 58); + } + if (!((std === 29)) && !((std === 24))) { + b = appendInt(b, (_r$4 = zone$1 % 60, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")), 2); + } + if ((std === 23) || (std === 28) || (std === 31) || (std === 26)) { + if ((std === 31) || (std === 26)) { + b = $append(b, 58); + } + b = appendInt(b, (_r$5 = absoffset % 60, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")), 2); + } + } else if (_1 === (21)) { + if (!(name === "")) { + b = $appendSlice(b, name); + break; + } + zone$2 = (_q$2 = offset / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")); + if (zone$2 < 0) { + b = $append(b, 45); + zone$2 = -zone$2; + } else { + b = $append(b, 43); + } + b = appendInt(b, (_q$3 = zone$2 / 60, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")), 2); + b = appendInt(b, (_r$6 = zone$2 % 60, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")), 2); + } else if ((_1 === (32)) || (_1 === (33))) { + b = formatNano(b, (($clone(t, Time).Nanosecond() >>> 0)), std >> 16 >> 0, (std & 65535) === 33); + } + } + } + $s = -1; return b; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AppendFormat }; } $f._1 = _1; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.abs = abs; $f.absoffset = absoffset; $f.b = b; $f.day = day; $f.hour = hour; $f.hr = hr; $f.hr$1 = hr$1; $f.layout = layout; $f.m = m; $f.min = min; $f.month = month; $f.name = name; $f.offset = offset; $f.prefix = prefix; $f.s = s; $f.sec = sec; $f.std = std; $f.suffix = suffix; $f.t = t; $f.y = y; $f.year = year; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.AppendFormat = function(b, layout) { return this.$val.AppendFormat(b, layout); }; + quote = function(s) { + var s; + return "\"" + s + "\""; + }; + ParseError.ptr.prototype.Error = function() { + var e; + e = this; + if (e.Message === "") { + return "parsing time " + quote(e.Value) + " as " + quote(e.Layout) + ": cannot parse " + quote(e.ValueElem) + " as " + quote(e.LayoutElem); + } + return "parsing time " + quote(e.Value) + e.Message; + }; + ParseError.prototype.Error = function() { return this.$val.Error(); }; + isDigit = function(s, i) { + var c, i, s; + if (s.length <= i) { + return false; + } + c = s.charCodeAt(i); + return 48 <= c && c <= 57; + }; + getnum = function(s, fixed) { + var fixed, s; + if (!isDigit(s, 0)) { + return [0, s, errBad]; + } + if (!isDigit(s, 1)) { + if (fixed) { + return [0, s, errBad]; + } + return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), $substring(s, 1), $ifaceNil]; + } + return [($imul((((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), 10)) + (((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0)) >> 0, $substring(s, 2), $ifaceNil]; + }; + cutspace = function(s) { + var s; + while (true) { + if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; } + s = $substring(s, 1); + } + return s; + }; + skip = function(value, prefix) { + var prefix, value; + while (true) { + if (!(prefix.length > 0)) { break; } + if (prefix.charCodeAt(0) === 32) { + if (value.length > 0 && !((value.charCodeAt(0) === 32))) { + return [value, errBad]; + } + prefix = cutspace(prefix); + value = cutspace(value); + continue; + } + if ((value.length === 0) || !((value.charCodeAt(0) === prefix.charCodeAt(0)))) { + return [value, errBad]; + } + prefix = $substring(prefix, 1); + value = $substring(value, 1); + } + return [value, $ifaceNil]; + }; + Parse = function(layout, value) { + var _r, layout, value, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; layout = $f.layout; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = parse(layout, value, $pkg.UTC, $pkg.Local); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._r = _r; $f.layout = layout; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Parse = Parse; + parse = function(layout, value, defaultLocation, local) { + var _1, _2, _3, _4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, alayout, amSet, avalue, day, defaultLocation, err, hour, hour$1, hr, i, layout, local, min, min$1, mm, month, n, n$1, name, ndigit, nsec, offset, offset$1, ok, ok$1, p, pmSet, prefix, rangeErrString, sec, seconds, sign, ss, std, stdstr, suffix, t, t$1, value, x$1, x$2, year, z, zoneName, zoneOffset, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$39 = $f._tmp$39; _tmp$4 = $f._tmp$4; _tmp$40 = $f._tmp$40; _tmp$41 = $f._tmp$41; _tmp$42 = $f._tmp$42; _tmp$43 = $f._tmp$43; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$21 = $f._tuple$21; _tuple$22 = $f._tuple$22; _tuple$23 = $f._tuple$23; _tuple$24 = $f._tuple$24; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; alayout = $f.alayout; amSet = $f.amSet; avalue = $f.avalue; day = $f.day; defaultLocation = $f.defaultLocation; err = $f.err; hour = $f.hour; hour$1 = $f.hour$1; hr = $f.hr; i = $f.i; layout = $f.layout; local = $f.local; min = $f.min; min$1 = $f.min$1; mm = $f.mm; month = $f.month; n = $f.n; n$1 = $f.n$1; name = $f.name; ndigit = $f.ndigit; nsec = $f.nsec; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; pmSet = $f.pmSet; prefix = $f.prefix; rangeErrString = $f.rangeErrString; sec = $f.sec; seconds = $f.seconds; sign = $f.sign; ss = $f.ss; std = $f.std; stdstr = $f.stdstr; suffix = $f.suffix; t = $f.t; t$1 = $f.t$1; value = $f.value; x$1 = $f.x$1; x$2 = $f.x$2; year = $f.year; z = $f.z; zoneName = $f.zoneName; zoneOffset = $f.zoneOffset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tmp = layout; + _tmp$1 = value; + alayout = _tmp; + avalue = _tmp$1; + rangeErrString = ""; + amSet = false; + pmSet = false; + year = 0; + month = 1; + day = 1; + hour = 0; + min = 0; + sec = 0; + nsec = 0; + z = ptrType$2.nil; + zoneOffset = -1; + zoneName = ""; + while (true) { + err = $ifaceNil; + _tuple = nextStdChunk(layout); + prefix = _tuple[0]; + std = _tuple[1]; + suffix = _tuple[2]; + stdstr = $substring(layout, prefix.length, (layout.length - suffix.length >> 0)); + _tuple$1 = skip(value, prefix); + value = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, prefix, value, "")]; + } + if (std === 0) { + if (!((value.length === 0))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, "", value, ": extra text: " + value)]; + } + break; + } + layout = suffix; + p = ""; + switch (0) { default: + _1 = std & 65535; + if (_1 === (274)) { + if (value.length < 2) { + err = errBad; + break; + } + _tmp$2 = $substring(value, 0, 2); + _tmp$3 = $substring(value, 2); + p = _tmp$2; + value = _tmp$3; + _tuple$2 = atoi(p); + year = _tuple$2[0]; + err = _tuple$2[1]; + if (year >= 69) { + year = year + (1900) >> 0; + } else { + year = year + (2000) >> 0; + } + } else if (_1 === (273)) { + if (value.length < 4 || !isDigit(value, 0)) { + err = errBad; + break; + } + _tmp$4 = $substring(value, 0, 4); + _tmp$5 = $substring(value, 4); + p = _tmp$4; + value = _tmp$5; + _tuple$3 = atoi(p); + year = _tuple$3[0]; + err = _tuple$3[1]; + } else if (_1 === (258)) { + _tuple$4 = lookup(shortMonthNames, value); + month = _tuple$4[0]; + value = _tuple$4[1]; + err = _tuple$4[2]; + month = month + (1) >> 0; + } else if (_1 === (257)) { + _tuple$5 = lookup(longMonthNames, value); + month = _tuple$5[0]; + value = _tuple$5[1]; + err = _tuple$5[2]; + month = month + (1) >> 0; + } else if ((_1 === (259)) || (_1 === (260))) { + _tuple$6 = getnum(value, std === 260); + month = _tuple$6[0]; + value = _tuple$6[1]; + err = _tuple$6[2]; + if (month <= 0 || 12 < month) { + rangeErrString = "month"; + } + } else if (_1 === (262)) { + _tuple$7 = lookup(shortDayNames, value); + value = _tuple$7[1]; + err = _tuple$7[2]; + } else if (_1 === (261)) { + _tuple$8 = lookup(longDayNames, value); + value = _tuple$8[1]; + err = _tuple$8[2]; + } else if ((_1 === (263)) || (_1 === (264)) || (_1 === (265))) { + if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) { + value = $substring(value, 1); + } + _tuple$9 = getnum(value, std === 265); + day = _tuple$9[0]; + value = _tuple$9[1]; + err = _tuple$9[2]; + if (day < 0) { + rangeErrString = "day"; + } + } else if (_1 === (522)) { + _tuple$10 = getnum(value, false); + hour = _tuple$10[0]; + value = _tuple$10[1]; + err = _tuple$10[2]; + if (hour < 0 || 24 <= hour) { + rangeErrString = "hour"; + } + } else if ((_1 === (523)) || (_1 === (524))) { + _tuple$11 = getnum(value, std === 524); + hour = _tuple$11[0]; + value = _tuple$11[1]; + err = _tuple$11[2]; + if (hour < 0 || 12 < hour) { + rangeErrString = "hour"; + } + } else if ((_1 === (525)) || (_1 === (526))) { + _tuple$12 = getnum(value, std === 526); + min = _tuple$12[0]; + value = _tuple$12[1]; + err = _tuple$12[2]; + if (min < 0 || 60 <= min) { + rangeErrString = "minute"; + } + } else if ((_1 === (527)) || (_1 === (528))) { + _tuple$13 = getnum(value, std === 528); + sec = _tuple$13[0]; + value = _tuple$13[1]; + err = _tuple$13[2]; + if (sec < 0 || 60 <= sec) { + rangeErrString = "second"; + break; + } + if (value.length >= 2 && (value.charCodeAt(0) === 46) && isDigit(value, 1)) { + _tuple$14 = nextStdChunk(layout); + std = _tuple$14[1]; + std = std & (65535); + if ((std === 32) || (std === 33)) { + break; + } + n = 2; + while (true) { + if (!(n < value.length && isDigit(value, n))) { break; } + n = n + (1) >> 0; + } + _tuple$15 = parseNanoseconds(value, n); + nsec = _tuple$15[0]; + rangeErrString = _tuple$15[1]; + err = _tuple$15[2]; + value = $substring(value, n); + } + } else if (_1 === (531)) { + if (value.length < 2) { + err = errBad; + break; + } + _tmp$6 = $substring(value, 0, 2); + _tmp$7 = $substring(value, 2); + p = _tmp$6; + value = _tmp$7; + _2 = p; + if (_2 === ("PM")) { + pmSet = true; + } else if (_2 === ("AM")) { + amSet = true; + } else { + err = errBad; + } + } else if (_1 === (532)) { + if (value.length < 2) { + err = errBad; + break; + } + _tmp$8 = $substring(value, 0, 2); + _tmp$9 = $substring(value, 2); + p = _tmp$8; + value = _tmp$9; + _3 = p; + if (_3 === ("pm")) { + pmSet = true; + } else if (_3 === ("am")) { + amSet = true; + } else { + err = errBad; + } + } else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (29)) || (_1 === (30)) || (_1 === (28)) || (_1 === (31))) { + if (((std === 22) || (std === 24) || (std === 25)) && value.length >= 1 && (value.charCodeAt(0) === 90)) { + value = $substring(value, 1); + z = $pkg.UTC; + break; + } + _tmp$10 = ""; + _tmp$11 = ""; + _tmp$12 = ""; + _tmp$13 = ""; + sign = _tmp$10; + hour$1 = _tmp$11; + min$1 = _tmp$12; + seconds = _tmp$13; + if ((std === 25) || (std === 30)) { + if (value.length < 6) { + err = errBad; + break; + } + if (!((value.charCodeAt(3) === 58))) { + err = errBad; + break; + } + _tmp$14 = $substring(value, 0, 1); + _tmp$15 = $substring(value, 1, 3); + _tmp$16 = $substring(value, 4, 6); + _tmp$17 = "00"; + _tmp$18 = $substring(value, 6); + sign = _tmp$14; + hour$1 = _tmp$15; + min$1 = _tmp$16; + seconds = _tmp$17; + value = _tmp$18; + } else if ((std === 29) || (std === 24)) { + if (value.length < 3) { + err = errBad; + break; + } + _tmp$19 = $substring(value, 0, 1); + _tmp$20 = $substring(value, 1, 3); + _tmp$21 = "00"; + _tmp$22 = "00"; + _tmp$23 = $substring(value, 3); + sign = _tmp$19; + hour$1 = _tmp$20; + min$1 = _tmp$21; + seconds = _tmp$22; + value = _tmp$23; + } else if ((std === 26) || (std === 31)) { + if (value.length < 9) { + err = errBad; + break; + } + if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) { + err = errBad; + break; + } + _tmp$24 = $substring(value, 0, 1); + _tmp$25 = $substring(value, 1, 3); + _tmp$26 = $substring(value, 4, 6); + _tmp$27 = $substring(value, 7, 9); + _tmp$28 = $substring(value, 9); + sign = _tmp$24; + hour$1 = _tmp$25; + min$1 = _tmp$26; + seconds = _tmp$27; + value = _tmp$28; + } else if ((std === 23) || (std === 28)) { + if (value.length < 7) { + err = errBad; + break; + } + _tmp$29 = $substring(value, 0, 1); + _tmp$30 = $substring(value, 1, 3); + _tmp$31 = $substring(value, 3, 5); + _tmp$32 = $substring(value, 5, 7); + _tmp$33 = $substring(value, 7); + sign = _tmp$29; + hour$1 = _tmp$30; + min$1 = _tmp$31; + seconds = _tmp$32; + value = _tmp$33; + } else { + if (value.length < 5) { + err = errBad; + break; + } + _tmp$34 = $substring(value, 0, 1); + _tmp$35 = $substring(value, 1, 3); + _tmp$36 = $substring(value, 3, 5); + _tmp$37 = "00"; + _tmp$38 = $substring(value, 5); + sign = _tmp$34; + hour$1 = _tmp$35; + min$1 = _tmp$36; + seconds = _tmp$37; + value = _tmp$38; + } + _tmp$39 = 0; + _tmp$40 = 0; + _tmp$41 = 0; + hr = _tmp$39; + mm = _tmp$40; + ss = _tmp$41; + _tuple$16 = atoi(hour$1); + hr = _tuple$16[0]; + err = _tuple$16[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + _tuple$17 = atoi(min$1); + mm = _tuple$17[0]; + err = _tuple$17[1]; + } + if ($interfaceIsEqual(err, $ifaceNil)) { + _tuple$18 = atoi(seconds); + ss = _tuple$18[0]; + err = _tuple$18[1]; + } + zoneOffset = ($imul(((($imul(hr, 60)) + mm >> 0)), 60)) + ss >> 0; + _4 = sign.charCodeAt(0); + if (_4 === (43)) { + } else if (_4 === (45)) { + zoneOffset = -zoneOffset; + } else { + err = errBad; + } + } else if (_1 === (21)) { + if (value.length >= 3 && $substring(value, 0, 3) === "UTC") { + z = $pkg.UTC; + value = $substring(value, 3); + break; + } + _tuple$19 = parseTimeZone(value); + n$1 = _tuple$19[0]; + ok = _tuple$19[1]; + if (!ok) { + err = errBad; + break; + } + _tmp$42 = $substring(value, 0, n$1); + _tmp$43 = $substring(value, n$1); + zoneName = _tmp$42; + value = _tmp$43; + } else if (_1 === (32)) { + ndigit = 1 + ((std >> 16 >> 0)) >> 0; + if (value.length < ndigit) { + err = errBad; + break; + } + _tuple$20 = parseNanoseconds(value, ndigit); + nsec = _tuple$20[0]; + rangeErrString = _tuple$20[1]; + err = _tuple$20[2]; + value = $substring(value, ndigit); + } else if (_1 === (33)) { + if (value.length < 2 || !((value.charCodeAt(0) === 46)) || value.charCodeAt(1) < 48 || 57 < value.charCodeAt(1)) { + break; + } + i = 0; + while (true) { + if (!(i < 9 && (i + 1 >> 0) < value.length && 48 <= value.charCodeAt((i + 1 >> 0)) && value.charCodeAt((i + 1 >> 0)) <= 57)) { break; } + i = i + (1) >> 0; + } + _tuple$21 = parseNanoseconds(value, 1 + i >> 0); + nsec = _tuple$21[0]; + rangeErrString = _tuple$21[1]; + err = _tuple$21[2]; + value = $substring(value, (1 + i >> 0)); + } + } + if (!(rangeErrString === "")) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, stdstr, value, ": " + rangeErrString + " out of range")]; + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, stdstr, value, "")]; + } + } + if (pmSet && hour < 12) { + hour = hour + (12) >> 0; + } else if (amSet && (hour === 12)) { + hour = 0; + } + if (day < 1 || day > daysIn(((month >> 0)), year)) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, "", value, ": day out of range")]; + } + /* */ if (!(z === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(z === ptrType$2.nil)) { */ case 1: + _r = Date(year, ((month >> 0)), day, hour, min, sec, nsec, z); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return [_r, $ifaceNil]; + /* } */ case 2: + /* */ if (!((zoneOffset === -1))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((zoneOffset === -1))) { */ case 4: + _r$1 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = $clone(_r$1, Time); + t.addSec((x$1 = (new $Int64(0, zoneOffset)), new $Int64(-x$1.$high, -x$1.$low))); + _r$2 = local.lookup(t.unixSec()); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$22 = _r$2; + name = _tuple$22[0]; + offset = _tuple$22[1]; + if ((offset === zoneOffset) && (zoneName === "" || name === zoneName)) { + t.setLoc(local); + $s = -1; return [t, $ifaceNil]; + } + t.setLoc(FixedZone(zoneName, zoneOffset)); + $s = -1; return [t, $ifaceNil]; + /* } */ case 5: + /* */ if (!(zoneName === "")) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(zoneName === "")) { */ case 8: + _r$3 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + t$1 = $clone(_r$3, Time); + _r$4 = local.lookupName(zoneName, t$1.unixSec()); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$23 = _r$4; + offset$1 = _tuple$23[0]; + ok$1 = _tuple$23[1]; + if (ok$1) { + t$1.addSec((x$2 = (new $Int64(0, offset$1)), new $Int64(-x$2.$high, -x$2.$low))); + t$1.setLoc(local); + $s = -1; return [t$1, $ifaceNil]; + } + if (zoneName.length > 3 && $substring(zoneName, 0, 3) === "GMT") { + _tuple$24 = atoi($substring(zoneName, 3)); + offset$1 = _tuple$24[0]; + offset$1 = $imul(offset$1, (3600)); + } + t$1.setLoc(FixedZone(zoneName, offset$1)); + $s = -1; return [t$1, $ifaceNil]; + /* } */ case 9: + _r$5 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, defaultLocation); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $s = -1; return [_r$5, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$39 = _tmp$39; $f._tmp$4 = _tmp$4; $f._tmp$40 = _tmp$40; $f._tmp$41 = _tmp$41; $f._tmp$42 = _tmp$42; $f._tmp$43 = _tmp$43; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$21 = _tuple$21; $f._tuple$22 = _tuple$22; $f._tuple$23 = _tuple$23; $f._tuple$24 = _tuple$24; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.alayout = alayout; $f.amSet = amSet; $f.avalue = avalue; $f.day = day; $f.defaultLocation = defaultLocation; $f.err = err; $f.hour = hour; $f.hour$1 = hour$1; $f.hr = hr; $f.i = i; $f.layout = layout; $f.local = local; $f.min = min; $f.min$1 = min$1; $f.mm = mm; $f.month = month; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.ndigit = ndigit; $f.nsec = nsec; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.pmSet = pmSet; $f.prefix = prefix; $f.rangeErrString = rangeErrString; $f.sec = sec; $f.seconds = seconds; $f.sign = sign; $f.ss = ss; $f.std = std; $f.stdstr = stdstr; $f.suffix = suffix; $f.t = t; $f.t$1 = t$1; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.year = year; $f.z = z; $f.zoneName = zoneName; $f.zoneOffset = zoneOffset; $f.$s = $s; $f.$r = $r; return $f; + }; + parseTimeZone = function(value) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, length, nUpper, ok, ok$1, value; + length = 0; + ok = false; + if (value.length < 3) { + _tmp = 0; + _tmp$1 = false; + length = _tmp; + ok = _tmp$1; + return [length, ok]; + } + if (value.length >= 4 && ($substring(value, 0, 4) === "ChST" || $substring(value, 0, 4) === "MeST")) { + _tmp$2 = 4; + _tmp$3 = true; + length = _tmp$2; + ok = _tmp$3; + return [length, ok]; + } + if ($substring(value, 0, 3) === "GMT") { + length = parseGMT(value); + _tmp$4 = length; + _tmp$5 = true; + length = _tmp$4; + ok = _tmp$5; + return [length, ok]; + } + if ((value.charCodeAt(0) === 43) || (value.charCodeAt(0) === 45)) { + length = parseSignedOffset(value); + ok$1 = length > 0; + _tmp$6 = length; + _tmp$7 = ok$1; + length = _tmp$6; + ok = _tmp$7; + return [length, ok]; + } + nUpper = 0; + nUpper = 0; + while (true) { + if (!(nUpper < 6)) { break; } + if (nUpper >= value.length) { + break; + } + c = value.charCodeAt(nUpper); + if (c < 65 || 90 < c) { + break; + } + nUpper = nUpper + (1) >> 0; + } + _1 = nUpper; + if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (6))) { + _tmp$8 = 0; + _tmp$9 = false; + length = _tmp$8; + ok = _tmp$9; + return [length, ok]; + } else if (_1 === (5)) { + if (value.charCodeAt(4) === 84) { + _tmp$10 = 5; + _tmp$11 = true; + length = _tmp$10; + ok = _tmp$11; + return [length, ok]; + } + } else if (_1 === (4)) { + if ((value.charCodeAt(3) === 84) || $substring(value, 0, 4) === "WITA") { + _tmp$12 = 4; + _tmp$13 = true; + length = _tmp$12; + ok = _tmp$13; + return [length, ok]; + } + } else if (_1 === (3)) { + _tmp$14 = 3; + _tmp$15 = true; + length = _tmp$14; + ok = _tmp$15; + return [length, ok]; + } + _tmp$16 = 0; + _tmp$17 = false; + length = _tmp$16; + ok = _tmp$17; + return [length, ok]; + }; + parseGMT = function(value) { + var value; + value = $substring(value, 3); + if (value.length === 0) { + return 3; + } + return 3 + parseSignedOffset(value) >> 0; + }; + parseSignedOffset = function(value) { + var _tuple, err, rem, sign, value, x$1; + sign = value.charCodeAt(0); + if (!((sign === 45)) && !((sign === 43))) { + return 0; + } + _tuple = leadingInt($substring(value, 1)); + x$1 = _tuple[0]; + rem = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil)) || $substring(value, 1) === rem) { + return 0; + } + if (sign === 45) { + x$1 = new $Int64(-x$1.$high, -x$1.$low); + } + if ((x$1.$high < -1 || (x$1.$high === -1 && x$1.$low < 4294967273)) || (0 < x$1.$high || (0 === x$1.$high && 23 < x$1.$low))) { + return 0; + } + return value.length - rem.length >> 0; + }; + parseNanoseconds = function(value, nbytes) { + var _tuple, err, i, nbytes, ns, rangeErrString, scaleDigits, value; + ns = 0; + rangeErrString = ""; + err = $ifaceNil; + if (!((value.charCodeAt(0) === 46))) { + err = errBad; + return [ns, rangeErrString, err]; + } + _tuple = atoi($substring(value, 1, nbytes)); + ns = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [ns, rangeErrString, err]; + } + if (ns < 0 || 1000000000 <= ns) { + rangeErrString = "fractional second"; + return [ns, rangeErrString, err]; + } + scaleDigits = 10 - nbytes >> 0; + i = 0; + while (true) { + if (!(i < scaleDigits)) { break; } + ns = $imul(ns, (10)); + i = i + (1) >> 0; + } + return [ns, rangeErrString, err]; + }; + leadingInt = function(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, c, err, i, rem, s, x$1, x$2, x$3, x$4; + x$1 = new $Int64(0, 0); + rem = ""; + err = $ifaceNil; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (c < 48 || c > 57) { + break; + } + if ((x$1.$high > 214748364 || (x$1.$high === 214748364 && x$1.$low > 3435973836))) { + _tmp = new $Int64(0, 0); + _tmp$1 = ""; + _tmp$2 = errLeadingInt; + x$1 = _tmp; + rem = _tmp$1; + err = _tmp$2; + return [x$1, rem, err]; + } + x$1 = (x$2 = (x$3 = $mul64(x$1, new $Int64(0, 10)), x$4 = (new $Int64(0, c)), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), new $Int64(x$2.$high - 0, x$2.$low - 48)); + if ((x$1.$high < 0 || (x$1.$high === 0 && x$1.$low < 0))) { + _tmp$3 = new $Int64(0, 0); + _tmp$4 = ""; + _tmp$5 = errLeadingInt; + x$1 = _tmp$3; + rem = _tmp$4; + err = _tmp$5; + return [x$1, rem, err]; + } + i = i + (1) >> 0; + } + _tmp$6 = x$1; + _tmp$7 = $substring(s, i); + _tmp$8 = $ifaceNil; + x$1 = _tmp$6; + rem = _tmp$7; + err = _tmp$8; + return [x$1, rem, err]; + }; + when = function(d) { + var d, t, x$1, x$2; + if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { + return runtimeNano(); + } + t = (x$1 = runtimeNano(), x$2 = (new $Int64(d.$high, d.$low)), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + if ((t.$high < 0 || (t.$high === 0 && t.$low < 0))) { + t = new $Int64(2147483647, 4294967295); + } + return t; + }; + Timer.ptr.prototype.Stop = function() { + var t; + t = this; + if (t.r.f === $throwNilPointerError) { + $panic(new $String("time: Stop called on uninitialized Timer")); + } + return stopTimer(t.r); + }; + Timer.prototype.Stop = function() { return this.$val.Stop(); }; + NewTimer = function(d) { + var c, d, t; + c = new $Chan(Time, 1); + t = new Timer.ptr(c, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), sendTime, new chanType(c), null, false)); + startTimer(t.r); + return t; + }; + $pkg.NewTimer = NewTimer; + Timer.ptr.prototype.Reset = function(d) { + var active, d, t, w; + t = this; + if (t.r.f === $throwNilPointerError) { + $panic(new $String("time: Reset called on uninitialized Timer")); + } + w = when(d); + active = stopTimer(t.r); + t.r.when = w; + startTimer(t.r); + return active; + }; + Timer.prototype.Reset = function(d) { return this.$val.Reset(d); }; + sendTime = function(c, seq) { + var _selection, c, seq, $r; + /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; c = $f.c; seq = $f.seq; $r = $f.$r; } + _selection = $select([[$assertType(c, chanType), $clone(Now(), Time)], []]); + if (_selection[0] === 0) { + } else if (_selection[0] === 1) { + } + /* */ if ($f === undefined) { $f = { $blk: sendTime }; } $f._selection = _selection; $f.c = c; $f.seq = seq; $f.$r = $r; return $f; + }; + NewTicker = function(d) { + var c, d, t; + if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { + $panic(errors.New("non-positive interval for NewTicker")); + } + c = new $Chan(Time, 1); + t = new Ticker.ptr(c, new runtimeTimer.ptr(0, when(d), (new $Int64(d.$high, d.$low)), sendTime, new chanType(c), null, false)); + startTimer(t.r); + return t; + }; + $pkg.NewTicker = NewTicker; + Ticker.ptr.prototype.Stop = function() { + var t; + t = this; + stopTimer(t.r); + }; + Ticker.prototype.Stop = function() { return this.$val.Stop(); }; + Time.ptr.prototype.nsec = function() { + var t, x$1; + t = this; + return (((x$1 = t.wall, new $Uint64(x$1.$high & 0, (x$1.$low & 1073741823) >>> 0)).$low >> 0)); + }; + Time.prototype.nsec = function() { return this.$val.nsec(); }; + Time.ptr.prototype.sec = function() { + var t, x$1, x$2, x$3, x$4; + t = this; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$3 = ((x$4 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$4.$high, x$4.$low))), new $Int64(13 + x$3.$high, 3618733952 + x$3.$low)); + } + return t.ext; + }; + Time.prototype.sec = function() { return this.$val.sec(); }; + Time.ptr.prototype.unixSec = function() { + var t, x$1; + t = this; + return (x$1 = t.sec(), new $Int64(x$1.$high + -15, x$1.$low + 2288912640)); + }; + Time.prototype.unixSec = function() { return this.$val.unixSec(); }; + Time.ptr.prototype.addSec = function(d) { + var d, dsec, sec, t, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + sec = ((x$3 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$3.$high, x$3.$low))); + dsec = new $Int64(sec.$high + d.$high, sec.$low + d.$low); + if ((0 < dsec.$high || (0 === dsec.$high && 0 <= dsec.$low)) && (dsec.$high < 1 || (dsec.$high === 1 && dsec.$low <= 4294967295))) { + t.wall = (x$4 = (x$5 = (x$6 = t.wall, new $Uint64(x$6.$high & 0, (x$6.$low & 1073741823) >>> 0)), x$7 = $shiftLeft64((new $Uint64(dsec.$high, dsec.$low)), 30), new $Uint64(x$5.$high | x$7.$high, (x$5.$low | x$7.$low) >>> 0)), new $Uint64(x$4.$high | 2147483648, (x$4.$low | 0) >>> 0)); + return; + } + t.stripMono(); + } + t.ext = (x$8 = t.ext, x$9 = d, new $Int64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)); + }; + Time.prototype.addSec = function(d) { return this.$val.addSec(d); }; + Time.ptr.prototype.setLoc = function(loc) { + var loc, t; + t = this; + if (loc === utcLoc) { + loc = ptrType$2.nil; + } + t.stripMono(); + t.loc = loc; + }; + Time.prototype.setLoc = function(loc) { return this.$val.setLoc(loc); }; + Time.ptr.prototype.stripMono = function() { + var t, x$1, x$2, x$3, x$4; + t = this; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + t.ext = t.sec(); + t.wall = (x$3 = t.wall, x$4 = new $Uint64(0, 1073741823), new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)); + } + }; + Time.prototype.stripMono = function() { return this.$val.stripMono(); }; + Time.ptr.prototype.After = function(u) { + var t, ts, u, us, x$1, x$2, x$3, x$4, x$5, x$6; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$5 = t.ext, x$6 = u.ext, (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low))); + } + ts = t.sec(); + us = u.sec(); + return (ts.$high > us.$high || (ts.$high === us.$high && ts.$low > us.$low)) || (ts.$high === us.$high && ts.$low === us.$low) && t.nsec() > u.nsec(); + }; + Time.prototype.After = function(u) { return this.$val.After(u); }; + Time.ptr.prototype.Before = function(u) { + var t, u, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$5 = t.ext, x$6 = u.ext, (x$5.$high < x$6.$high || (x$5.$high === x$6.$high && x$5.$low < x$6.$low))); + } + return (x$7 = t.sec(), x$8 = u.sec(), (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low < x$8.$low))) || (x$9 = t.sec(), x$10 = u.sec(), (x$9.$high === x$10.$high && x$9.$low === x$10.$low)) && t.nsec() < u.nsec(); + }; + Time.prototype.Before = function(u) { return this.$val.Before(u); }; + Time.ptr.prototype.Equal = function(u) { + var t, u, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$5 = t.ext, x$6 = u.ext, (x$5.$high === x$6.$high && x$5.$low === x$6.$low)); + } + return (x$7 = t.sec(), x$8 = u.sec(), (x$7.$high === x$8.$high && x$7.$low === x$8.$low)) && (t.nsec() === u.nsec()); + }; + Time.prototype.Equal = function(u) { return this.$val.Equal(u); }; + Month.prototype.String = function() { + var buf, m, n, x$1; + m = this.$val; + if (1 <= m && m <= 12) { + return (x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= months.length) ? ($throwRuntimeError("index out of range"), undefined) : months[x$1])); + } + buf = $makeSlice(sliceType$3, 20); + n = fmtInt(buf, (new $Uint64(0, m))); + return "%!Month(" + ($bytesToString($subslice(buf, n))) + ")"; + }; + $ptrType(Month).prototype.String = function() { return new Month(this.$get()).String(); }; + Weekday.prototype.String = function() { + var buf, d, n; + d = this.$val; + if (0 <= d && d <= 6) { + return ((d < 0 || d >= days.length) ? ($throwRuntimeError("index out of range"), undefined) : days[d]); + } + buf = $makeSlice(sliceType$3, 20); + n = fmtInt(buf, (new $Uint64(0, d))); + return "%!Weekday(" + ($bytesToString($subslice(buf, n))) + ")"; + }; + $ptrType(Weekday).prototype.String = function() { return new Weekday(this.$get()).String(); }; + Time.ptr.prototype.IsZero = function() { + var t, x$1; + t = this; + return (x$1 = t.sec(), (x$1.$high === 0 && x$1.$low === 0)) && (t.nsec() === 0); + }; + Time.prototype.IsZero = function() { return this.$val.IsZero(); }; + Time.ptr.prototype.abs = function() { + var _r, _r$1, _tuple, l, offset, sec, t, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; l = $f.l; offset = $f.offset; sec = $f.sec; t = $f.t; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + l = t.loc; + /* */ if (l === ptrType$2.nil || l === localLoc) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l === ptrType$2.nil || l === localLoc) { */ case 1: + _r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + l = _r; + /* } */ case 2: + sec = t.unixSec(); + /* */ if (!(l === utcLoc)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(l === utcLoc)) { */ case 4: + /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 6: + sec = (x$3 = (new $Int64(0, l.cacheZone.offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low)); + $s = 8; continue; + /* } else { */ case 7: + _r$1 = l.lookup(sec); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + offset = _tuple[1]; + sec = (x$4 = (new $Int64(0, offset)), new $Int64(sec.$high + x$4.$high, sec.$low + x$4.$low)); + /* } */ case 8: + /* } */ case 5: + $s = -1; return ((x$5 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$5.$high, x$5.$low))); + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.abs }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.l = l; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.abs = function() { return this.$val.abs(); }; + Time.ptr.prototype.locabs = function() { + var _r, _r$1, _tuple, abs, l, name, offset, sec, t, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; abs = $f.abs; l = $f.l; name = $f.name; offset = $f.offset; sec = $f.sec; t = $f.t; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + name = ""; + offset = 0; + abs = new $Uint64(0, 0); + t = this; + l = t.loc; + /* */ if (l === ptrType$2.nil || l === localLoc) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l === ptrType$2.nil || l === localLoc) { */ case 1: + _r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + l = _r; + /* } */ case 2: + sec = t.unixSec(); + /* */ if (!(l === utcLoc)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(l === utcLoc)) { */ case 4: + /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 7: + name = l.cacheZone.name; + offset = l.cacheZone.offset; + $s = 9; continue; + /* } else { */ case 8: + _r$1 = l.lookup(sec); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + name = _tuple[0]; + offset = _tuple[1]; + /* } */ case 9: + sec = (x$3 = (new $Int64(0, offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low)); + $s = 6; continue; + /* } else { */ case 5: + name = "UTC"; + /* } */ case 6: + abs = ((x$4 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$4.$high, x$4.$low))); + $s = -1; return [name, offset, abs]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.locabs }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.abs = abs; $f.l = l; $f.name = name; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.locabs = function() { return this.$val.locabs(); }; + Time.ptr.prototype.Date = function() { + var _r, _tuple, day, month, t, year, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; day = $f.day; month = $f.month; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + year = 0; + month = 0; + day = 0; + t = this; + _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + $s = -1; return [year, month, day]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Date }; } $f._r = _r; $f._tuple = _tuple; $f.day = day; $f.month = month; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Date = function() { return this.$val.Date(); }; + Time.ptr.prototype.Year = function() { + var _r, _tuple, t, year, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + year = _tuple[0]; + $s = -1; return year; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Year }; } $f._r = _r; $f._tuple = _tuple; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Year = function() { return this.$val.Year(); }; + Time.ptr.prototype.Month = function() { + var _r, _tuple, month, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; month = $f.month; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + month = _tuple[1]; + $s = -1; return month; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Month }; } $f._r = _r; $f._tuple = _tuple; $f.month = month; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Month = function() { return this.$val.Month(); }; + Time.ptr.prototype.Day = function() { + var _r, _tuple, day, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; day = $f.day; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + day = _tuple[2]; + $s = -1; return day; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Day }; } $f._r = _r; $f._tuple = _tuple; $f.day = day; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Day = function() { return this.$val.Day(); }; + Time.ptr.prototype.Weekday = function() { + var _r, _r$1, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = absWeekday(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Weekday }; } $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Weekday = function() { return this.$val.Weekday(); }; + absWeekday = function(abs) { + var _q, abs, sec; + sec = $div64((new $Uint64(abs.$high + 0, abs.$low + 86400)), new $Uint64(0, 604800), true); + return (((_q = ((sec.$low >> 0)) / 86400, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + }; + Time.ptr.prototype.ISOWeek = function() { + var _q, _r, _r$1, _r$2, _r$3, _r$4, _tuple, day, dec31wday, jan1wday, month, t, wday, week, yday, year, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; day = $f.day; dec31wday = $f.dec31wday; jan1wday = $f.jan1wday; month = $f.month; t = $f.t; wday = $f.wday; week = $f.week; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + year = 0; + week = 0; + t = this; + _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + yday = _tuple[3]; + _r$2 = $clone(t, Time).Weekday(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + wday = (_r$1 = (((_r$2 + 6 >> 0) >> 0)) % 7, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); + week = (_q = (((yday - wday >> 0) + 7 >> 0)) / 7, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + jan1wday = (_r$3 = (((wday - yday >> 0) + 371 >> 0)) % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")); + if (1 <= jan1wday && jan1wday <= 3) { + week = week + (1) >> 0; + } + if (week === 0) { + year = year - (1) >> 0; + week = 52; + if ((jan1wday === 4) || ((jan1wday === 5) && isLeap(year))) { + week = week + (1) >> 0; + } + } + if ((month === 12) && day >= 29 && wday < 3) { + dec31wday = (_r$4 = (((wday + 31 >> 0) - day >> 0)) % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); + if (0 <= dec31wday && dec31wday <= 2) { + year = year + (1) >> 0; + week = 1; + } + } + $s = -1; return [year, week]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.ISOWeek }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.day = day; $f.dec31wday = dec31wday; $f.jan1wday = jan1wday; $f.month = month; $f.t = t; $f.wday = wday; $f.week = week; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.ISOWeek = function() { return this.$val.ISOWeek(); }; + Time.ptr.prototype.Clock = function() { + var _r, _r$1, _tuple, hour, min, sec, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; hour = $f.hour; min = $f.min; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + hour = 0; + min = 0; + sec = 0; + t = this; + _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = absClock(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + hour = _tuple[0]; + min = _tuple[1]; + sec = _tuple[2]; + $s = -1; return [hour, min, sec]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Clock }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.hour = hour; $f.min = min; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Clock = function() { return this.$val.Clock(); }; + absClock = function(abs) { + var _q, _q$1, abs, hour, min, sec; + hour = 0; + min = 0; + sec = 0; + sec = (($div64(abs, new $Uint64(0, 86400), true).$low >> 0)); + hour = (_q = sec / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + sec = sec - (($imul(hour, 3600))) >> 0; + min = (_q$1 = sec / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + sec = sec - (($imul(min, 60))) >> 0; + return [hour, min, sec]; + }; + Time.ptr.prototype.Hour = function() { + var _q, _r, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return (_q = (($div64(_r, new $Uint64(0, 86400), true).$low >> 0)) / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Hour }; } $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Hour = function() { return this.$val.Hour(); }; + Time.ptr.prototype.Minute = function() { + var _q, _r, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return (_q = (($div64(_r, new $Uint64(0, 3600), true).$low >> 0)) / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Minute }; } $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Minute = function() { return this.$val.Minute(); }; + Time.ptr.prototype.Second = function() { + var _r, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return (($div64(_r, new $Uint64(0, 60), true).$low >> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Second }; } $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Second = function() { return this.$val.Second(); }; + Time.ptr.prototype.Nanosecond = function() { + var t; + t = this; + return ((t.nsec() >> 0)); + }; + Time.prototype.Nanosecond = function() { return this.$val.Nanosecond(); }; + Time.ptr.prototype.YearDay = function() { + var _r, _tuple, t, yday, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; t = $f.t; yday = $f.yday; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + yday = _tuple[3]; + $s = -1; return yday + 1 >> 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.YearDay }; } $f._r = _r; $f._tuple = _tuple; $f.t = t; $f.yday = yday; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.YearDay = function() { return this.$val.YearDay(); }; + Duration.prototype.String = function() { + var _tuple, _tuple$1, buf, d, neg, prec, u, w; + d = this; + buf = arrayType$3.zero(); + w = 32; + u = (new $Uint64(d.$high, d.$low)); + neg = (d.$high < 0 || (d.$high === 0 && d.$low < 0)); + if (neg) { + u = new $Uint64(-u.$high, -u.$low); + } + if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000000))) { + prec = 0; + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115); + w = w - (1) >> 0; + if ((u.$high === 0 && u.$low === 0)) { + return "0s"; + } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) { + prec = 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 110); + } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000))) { + prec = 3; + w = w - (1) >> 0; + $copyString($subslice(new sliceType$3(buf), w), "\xC2\xB5"); + } else { + prec = 6; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109); + } + _tuple = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, prec); + w = _tuple[0]; + u = _tuple[1]; + w = fmtInt($subslice(new sliceType$3(buf), 0, w), u); + } else { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115); + _tuple$1 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, 9); + w = _tuple$1[0]; + u = _tuple$1[1]; + w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true)); + u = $div64(u, (new $Uint64(0, 60)), false); + if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109); + w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true)); + u = $div64(u, (new $Uint64(0, 60)), false); + if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 104); + w = fmtInt($subslice(new sliceType$3(buf), 0, w), u); + } + } + } + if (neg) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); + } + return ($bytesToString($subslice(new sliceType$3(buf), w))); + }; + $ptrType(Duration).prototype.String = function() { return this.$get().String(); }; + fmtFrac = function(buf, v, prec) { + var _tmp, _tmp$1, buf, digit, i, nv, nw, prec, print, v, w; + nw = 0; + nv = new $Uint64(0, 0); + w = buf.$length; + print = false; + i = 0; + while (true) { + if (!(i < prec)) { break; } + digit = $div64(v, new $Uint64(0, 10), true); + print = print || !((digit.$high === 0 && digit.$low === 0)); + if (print) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = (((digit.$low << 24 >>> 24)) + 48 << 24 >>> 24)); + } + v = $div64(v, (new $Uint64(0, 10)), false); + i = i + (1) >> 0; + } + if (print) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); + } + _tmp = w; + _tmp$1 = v; + nw = _tmp; + nv = _tmp$1; + return [nw, nv]; + }; + fmtInt = function(buf, v) { + var buf, v, w; + w = buf.$length; + if ((v.$high === 0 && v.$low === 0)) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48); + } else { + while (true) { + if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = ((($div64(v, new $Uint64(0, 10), true).$low << 24 >>> 24)) + 48 << 24 >>> 24)); + v = $div64(v, (new $Uint64(0, 10)), false); + } + } + return w; + }; + Duration.prototype.Nanoseconds = function() { + var d; + d = this; + return (new $Int64(d.$high, d.$low)); + }; + $ptrType(Duration).prototype.Nanoseconds = function() { return this.$get().Nanoseconds(); }; + Duration.prototype.Seconds = function() { + var d, nsec, sec; + d = this; + sec = $div64(d, new Duration(0, 1000000000), false); + nsec = $div64(d, new Duration(0, 1000000000), true); + return ($flatten64(sec)) + ($flatten64(nsec)) / 1e+09; + }; + $ptrType(Duration).prototype.Seconds = function() { return this.$get().Seconds(); }; + Duration.prototype.Minutes = function() { + var d, min, nsec; + d = this; + min = $div64(d, new Duration(13, 4165425152), false); + nsec = $div64(d, new Duration(13, 4165425152), true); + return ($flatten64(min)) + ($flatten64(nsec)) / 6e+10; + }; + $ptrType(Duration).prototype.Minutes = function() { return this.$get().Minutes(); }; + Duration.prototype.Hours = function() { + var d, hour, nsec; + d = this; + hour = $div64(d, new Duration(838, 817405952), false); + nsec = $div64(d, new Duration(838, 817405952), true); + return ($flatten64(hour)) + ($flatten64(nsec)) / 3.6e+12; + }; + $ptrType(Duration).prototype.Hours = function() { return this.$get().Hours(); }; + Duration.prototype.Truncate = function(m) { + var d, m, x$1; + d = this; + if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) { + return d; + } + return (x$1 = $div64(d, m, true), new Duration(d.$high - x$1.$high, d.$low - x$1.$low)); + }; + $ptrType(Duration).prototype.Truncate = function(m) { return this.$get().Truncate(m); }; + lessThanHalf = function(x$1, y) { + var x$1, x$2, x$3, x$4, x$5, y; + return (x$2 = (x$3 = (new $Uint64(x$1.$high, x$1.$low)), x$4 = (new $Uint64(x$1.$high, x$1.$low)), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), x$5 = (new $Uint64(y.$high, y.$low)), (x$2.$high < x$5.$high || (x$2.$high === x$5.$high && x$2.$low < x$5.$low))); + }; + Duration.prototype.Round = function(m) { + var d, d1, d1$1, m, r, x$1, x$2; + d = this; + if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) { + return d; + } + r = $div64(d, m, true); + if ((d.$high < 0 || (d.$high === 0 && d.$low < 0))) { + r = new Duration(-r.$high, -r.$low); + if (lessThanHalf(r, m)) { + return new Duration(d.$high + r.$high, d.$low + r.$low); + } + d1 = (x$1 = new Duration(d.$high - m.$high, d.$low - m.$low), new Duration(x$1.$high + r.$high, x$1.$low + r.$low)); + if ((d1.$high < d.$high || (d1.$high === d.$high && d1.$low < d.$low))) { + return d1; + } + return new Duration(-2147483648, 0); + } + if (lessThanHalf(r, m)) { + return new Duration(d.$high - r.$high, d.$low - r.$low); + } + d1$1 = (x$2 = new Duration(d.$high + m.$high, d.$low + m.$low), new Duration(x$2.$high - r.$high, x$2.$low - r.$low)); + if ((d1$1.$high > d.$high || (d1$1.$high === d.$high && d1$1.$low > d.$low))) { + return d1$1; + } + return new Duration(2147483647, 4294967295); + }; + $ptrType(Duration).prototype.Round = function(m) { return this.$get().Round(m); }; + Time.ptr.prototype.Add = function(d) { + var d, dsec, nsec, t, te, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + dsec = ((x$1 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$1.$high, x$1.$low))); + nsec = t.nsec() + (((x$2 = $div64(d, new Duration(0, 1000000000), true), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)) >> 0; + if (nsec >= 1000000000) { + dsec = (x$3 = new $Int64(0, 1), new $Int64(dsec.$high + x$3.$high, dsec.$low + x$3.$low)); + nsec = nsec - (1000000000) >> 0; + } else if (nsec < 0) { + dsec = (x$4 = new $Int64(0, 1), new $Int64(dsec.$high - x$4.$high, dsec.$low - x$4.$low)); + nsec = nsec + (1000000000) >> 0; + } + t.wall = (x$5 = (x$6 = t.wall, new $Uint64(x$6.$high & ~0, (x$6.$low & ~1073741823) >>> 0)), x$7 = (new $Uint64(0, nsec)), new $Uint64(x$5.$high | x$7.$high, (x$5.$low | x$7.$low) >>> 0)); + t.addSec(dsec); + if (!((x$8 = (x$9 = t.wall, new $Uint64(x$9.$high & 2147483648, (x$9.$low & 0) >>> 0)), (x$8.$high === 0 && x$8.$low === 0)))) { + te = (x$10 = t.ext, x$11 = (new $Int64(d.$high, d.$low)), new $Int64(x$10.$high + x$11.$high, x$10.$low + x$11.$low)); + if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (x$12 = t.ext, (te.$high > x$12.$high || (te.$high === x$12.$high && te.$low > x$12.$low))) || (d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (x$13 = t.ext, (te.$high < x$13.$high || (te.$high === x$13.$high && te.$low < x$13.$low)))) { + t.stripMono(); + } else { + t.ext = te; + } + } + return t; + }; + Time.prototype.Add = function(d) { return this.$val.Add(d); }; + Time.ptr.prototype.Sub = function(u) { + var d, d$1, t, te, u, ue, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + te = t.ext; + ue = u.ext; + d = ((x$5 = new $Int64(te.$high - ue.$high, te.$low - ue.$low), new Duration(x$5.$high, x$5.$low))); + if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (te.$high > ue.$high || (te.$high === ue.$high && te.$low > ue.$low))) { + return new Duration(2147483647, 4294967295); + } + if ((d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (te.$high < ue.$high || (te.$high === ue.$high && te.$low < ue.$low))) { + return new Duration(-2147483648, 0); + } + return d; + } + d$1 = (x$6 = $mul64(((x$7 = (x$8 = t.sec(), x$9 = u.sec(), new $Int64(x$8.$high - x$9.$high, x$8.$low - x$9.$low)), new Duration(x$7.$high, x$7.$low))), new Duration(0, 1000000000)), x$10 = (new Duration(0, (t.nsec() - u.nsec() >> 0))), new Duration(x$6.$high + x$10.$high, x$6.$low + x$10.$low)); + if ($clone($clone(u, Time).Add(d$1), Time).Equal($clone(t, Time))) { + return d$1; + } else if ($clone(t, Time).Before($clone(u, Time))) { + return new Duration(-2147483648, 0); + } else { + return new Duration(2147483647, 4294967295); + } + }; + Time.prototype.Sub = function(u) { return this.$val.Sub(u); }; + Until = function(t) { + var now$1, t, x$1, x$2, x$3; + now$1 = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil); + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + Time.copy(now$1, new Time.ptr(new $Uint64(2147483648, 0), (x$3 = runtimeNano(), new $Int64(x$3.$high - startNano.$high, x$3.$low - startNano.$low)), ptrType$2.nil)); + } else { + Time.copy(now$1, Now()); + } + return $clone(t, Time).Sub($clone(now$1, Time)); + }; + $pkg.Until = Until; + Time.ptr.prototype.AddDate = function(years, months$1, days$1) { + var _r, _r$1, _r$2, _tuple, _tuple$1, day, days$1, hour, min, month, months$1, sec, t, year, years, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; day = $f.day; days$1 = $f.days$1; hour = $f.hour; min = $f.min; month = $f.month; months$1 = $f.months$1; sec = $f.sec; t = $f.t; year = $f.year; years = $f.years; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + _r$1 = $clone(t, Time).Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + hour = _tuple$1[0]; + min = _tuple$1[1]; + sec = _tuple$1[2]; + _r$2 = Date(year + years >> 0, month + ((months$1 >> 0)) >> 0, day + days$1 >> 0, hour, min, sec, ((t.nsec() >> 0)), $clone(t, Time).Location()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AddDate }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.day = day; $f.days$1 = days$1; $f.hour = hour; $f.min = min; $f.month = month; $f.months$1 = months$1; $f.sec = sec; $f.t = t; $f.year = year; $f.years = years; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.AddDate = function(years, months$1, days$1) { return this.$val.AddDate(years, months$1, days$1); }; + Time.ptr.prototype.date = function(full) { + var _r, _r$1, _tuple, day, full, month, t, yday, year, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; day = $f.day; full = $f.full; month = $f.month; t = $f.t; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + year = 0; + month = 0; + day = 0; + yday = 0; + t = this; + _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = absDate(_r, full); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + yday = _tuple[3]; + $s = -1; return [year, month, day, yday]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.date }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.day = day; $f.full = full; $f.month = month; $f.t = t; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.date = function(full) { return this.$val.date(full); }; + absDate = function(abs, full) { + var _q, abs, begin, d, day, end, full, month, n, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, yday, year; + year = 0; + month = 0; + day = 0; + yday = 0; + d = $div64(abs, new $Uint64(0, 86400), false); + n = $div64(d, new $Uint64(0, 146097), false); + y = $mul64(new $Uint64(0, 400), n); + d = (x$1 = $mul64(new $Uint64(0, 146097), n), new $Uint64(d.$high - x$1.$high, d.$low - x$1.$low)); + n = $div64(d, new $Uint64(0, 36524), false); + n = (x$2 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$2.$high, n.$low - x$2.$low)); + y = (x$3 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high + x$3.$high, y.$low + x$3.$low)); + d = (x$4 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high - x$4.$high, d.$low - x$4.$low)); + n = $div64(d, new $Uint64(0, 1461), false); + y = (x$5 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high + x$5.$high, y.$low + x$5.$low)); + d = (x$6 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high - x$6.$high, d.$low - x$6.$low)); + n = $div64(d, new $Uint64(0, 365), false); + n = (x$7 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$7.$high, n.$low - x$7.$low)); + y = (x$8 = n, new $Uint64(y.$high + x$8.$high, y.$low + x$8.$low)); + d = (x$9 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high - x$9.$high, d.$low - x$9.$low)); + year = (((x$10 = (x$11 = (new $Int64(y.$high, y.$low)), new $Int64(x$11.$high + -69, x$11.$low + 4075721025)), x$10.$low + ((x$10.$high >> 31) * 4294967296)) >> 0)); + yday = ((d.$low >> 0)); + if (!full) { + return [year, month, day, yday]; + } + day = yday; + if (isLeap(year)) { + if (day > 59) { + day = day - (1) >> 0; + } else if ((day === 59)) { + month = 2; + day = 29; + return [year, month, day, yday]; + } + } + month = (((_q = day / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + end = (((x$12 = month + 1 >> 0, ((x$12 < 0 || x$12 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$12])) >> 0)); + begin = 0; + if (day >= end) { + month = month + (1) >> 0; + begin = end; + } else { + begin = ((((month < 0 || month >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[month]) >> 0)); + } + month = month + (1) >> 0; + day = (day - begin >> 0) + 1 >> 0; + return [year, month, day, yday]; + }; + daysIn = function(m, year) { + var m, x$1, year; + if ((m === 2) && isLeap(year)) { + return 29; + } + return (((((m < 0 || m >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[m]) - (x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$1])) >> 0) >> 0)); + }; + Now = function() { + var _tuple, mono, nsec, sec, x$1, x$2, x$3, x$4, x$5, x$6; + _tuple = now(); + sec = _tuple[0]; + nsec = _tuple[1]; + mono = _tuple[2]; + mono = (x$1 = startNano, new $Int64(mono.$high - x$1.$high, mono.$low - x$1.$low)); + sec = (x$2 = new $Int64(0, 2682288000), new $Int64(sec.$high + x$2.$high, sec.$low + x$2.$low)); + if (!((x$3 = $shiftRightUint64((new $Uint64(sec.$high, sec.$low)), 33), (x$3.$high === 0 && x$3.$low === 0)))) { + return new Time.ptr((new $Uint64(0, nsec)), new $Int64(sec.$high + 13, sec.$low + 3618733952), $pkg.Local); + } + return new Time.ptr((x$4 = (x$5 = $shiftLeft64((new $Uint64(sec.$high, sec.$low)), 30), new $Uint64(2147483648 | x$5.$high, (0 | x$5.$low) >>> 0)), x$6 = (new $Uint64(0, nsec)), new $Uint64(x$4.$high | x$6.$high, (x$4.$low | x$6.$low) >>> 0)), mono, $pkg.Local); + }; + $pkg.Now = Now; + unixTime = function(sec, nsec) { + var nsec, sec; + return new Time.ptr((new $Uint64(0, nsec)), new $Int64(sec.$high + 14, sec.$low + 2006054656), $pkg.Local); + }; + Time.ptr.prototype.UTC = function() { + var t; + t = this; + t.setLoc(utcLoc); + return t; + }; + Time.prototype.UTC = function() { return this.$val.UTC(); }; + Time.ptr.prototype.Local = function() { + var t; + t = this; + t.setLoc($pkg.Local); + return t; + }; + Time.prototype.Local = function() { return this.$val.Local(); }; + Time.ptr.prototype.In = function(loc) { + var loc, t; + t = this; + if (loc === ptrType$2.nil) { + $panic(new $String("time: missing Location in call to Time.In")); + } + t.setLoc(loc); + return t; + }; + Time.prototype.In = function(loc) { return this.$val.In(loc); }; + Time.ptr.prototype.Location = function() { + var l, t; + t = this; + l = t.loc; + if (l === ptrType$2.nil) { + l = $pkg.UTC; + } + return l; + }; + Time.prototype.Location = function() { return this.$val.Location(); }; + Time.ptr.prototype.Zone = function() { + var _r, _tuple, name, offset, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; name = $f.name; offset = $f.offset; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + name = ""; + offset = 0; + t = this; + _r = t.loc.lookup(t.unixSec()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + name = _tuple[0]; + offset = _tuple[1]; + $s = -1; return [name, offset]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Zone }; } $f._r = _r; $f._tuple = _tuple; $f.name = name; $f.offset = offset; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.Zone = function() { return this.$val.Zone(); }; + Time.ptr.prototype.Unix = function() { + var t; + t = this; + return t.unixSec(); + }; + Time.prototype.Unix = function() { return this.$val.Unix(); }; + Time.ptr.prototype.UnixNano = function() { + var t, x$1, x$2; + t = this; + return (x$1 = $mul64((t.unixSec()), new $Int64(0, 1000000000)), x$2 = (new $Int64(0, t.nsec())), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + }; + Time.prototype.UnixNano = function() { return this.$val.UnixNano(); }; + Time.ptr.prototype.MarshalBinary = function() { + var _q, _r, _r$1, _tuple, enc, nsec, offset, offsetMin, sec, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; enc = $f.enc; nsec = $f.nsec; offset = $f.offset; offsetMin = $f.offsetMin; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + offsetMin = 0; + /* */ if ($clone(t, Time).Location() === $pkg.UTC) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($clone(t, Time).Location() === $pkg.UTC) { */ case 1: + offsetMin = -1; + $s = 3; continue; + /* } else { */ case 2: + _r = $clone(t, Time).Zone(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + offset = _tuple[1]; + if (!(((_r$1 = offset % 60, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0))) { + $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: zone offset has fractional minute")]; + } + offset = (_q = offset / (60), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (offset < -32768 || (offset === -1) || offset > 32767) { + $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: unexpected zone offset")]; + } + offsetMin = ((offset << 16 >> 16)); + /* } */ case 3: + sec = t.sec(); + nsec = t.nsec(); + enc = new sliceType$3([1, (($shiftRightInt64(sec, 56).$low << 24 >>> 24)), (($shiftRightInt64(sec, 48).$low << 24 >>> 24)), (($shiftRightInt64(sec, 40).$low << 24 >>> 24)), (($shiftRightInt64(sec, 32).$low << 24 >>> 24)), (($shiftRightInt64(sec, 24).$low << 24 >>> 24)), (($shiftRightInt64(sec, 16).$low << 24 >>> 24)), (($shiftRightInt64(sec, 8).$low << 24 >>> 24)), ((sec.$low << 24 >>> 24)), (((nsec >> 24 >> 0) << 24 >>> 24)), (((nsec >> 16 >> 0) << 24 >>> 24)), (((nsec >> 8 >> 0) << 24 >>> 24)), ((nsec << 24 >>> 24)), (((offsetMin >> 8 << 16 >> 16) << 24 >>> 24)), ((offsetMin << 24 >>> 24))]); + $s = -1; return [enc, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalBinary }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.enc = enc; $f.nsec = nsec; $f.offset = offset; $f.offsetMin = offsetMin; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); }; + Time.ptr.prototype.UnmarshalBinary = function(data) { + var _r, _tuple, buf, data, localoff, nsec, offset, sec, t, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; data = $f.data; localoff = $f.localoff; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; t = $f.t; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + buf = data; + if (buf.$length === 0) { + $s = -1; return errors.New("Time.UnmarshalBinary: no data"); + } + if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) { + $s = -1; return errors.New("Time.UnmarshalBinary: unsupported version"); + } + if (!((buf.$length === 15))) { + $s = -1; return errors.New("Time.UnmarshalBinary: invalid length"); + } + buf = $subslice(buf, 1); + sec = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (x$7 = (new $Int64(0, (7 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 7]))), x$8 = $shiftLeft64((new $Int64(0, (6 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 6]))), 8), new $Int64(x$7.$high | x$8.$high, (x$7.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Int64(0, (5 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 5]))), 16), new $Int64(x$6.$high | x$9.$high, (x$6.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Int64(0, (4 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 4]))), 24), new $Int64(x$5.$high | x$10.$high, (x$5.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Int64(0, (3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]))), 32), new $Int64(x$4.$high | x$11.$high, (x$4.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Int64(0, (2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]))), 40), new $Int64(x$3.$high | x$12.$high, (x$3.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Int64(0, (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]))), 48), new $Int64(x$2.$high | x$13.$high, (x$2.$low | x$13.$low) >>> 0)), x$14 = $shiftLeft64((new $Int64(0, (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))), 56), new $Int64(x$1.$high | x$14.$high, (x$1.$low | x$14.$low) >>> 0)); + buf = $subslice(buf, 8); + nsec = (((((3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]) >> 0)) | ((((2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]) >> 0)) << 8 >> 0)) | ((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) >> 0)) << 16 >> 0)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >> 0)) << 24 >> 0); + buf = $subslice(buf, 4); + offset = $imul(((((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) << 16 >> 16)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) << 16 >> 16)) << 8 << 16 >> 16)) >> 0)), 60); + Time.copy(t, new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil)); + t.wall = (new $Uint64(0, nsec)); + t.ext = sec; + /* */ if (offset === -60) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (offset === -60) { */ case 1: + t.setLoc(utcLoc); + $s = 3; continue; + /* } else { */ case 2: + _r = $pkg.Local.lookup(t.unixSec()); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + localoff = _tuple[1]; + if (offset === localoff) { + t.setLoc($pkg.Local); + } else { + t.setLoc(FixedZone("", offset)); + } + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalBinary }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.data = data; $f.localoff = localoff; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.UnmarshalBinary = function(data) { return this.$val.UnmarshalBinary(data); }; + Time.ptr.prototype.GobEncode = function() { + var _r, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobEncode }; } $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.GobEncode = function() { return this.$val.GobEncode(); }; + Time.ptr.prototype.GobDecode = function(data) { + var _r, data, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = t.UnmarshalBinary(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobDecode }; } $f._r = _r; $f.data = data; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.GobDecode = function(data) { return this.$val.GobDecode(data); }; + Time.ptr.prototype.MarshalJSON = function() { + var _r, _r$1, b, t, y, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + y = _r; + if (y < 0 || y >= 10000) { + $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")]; + } + b = $makeSlice(sliceType$3, 0, 37); + b = $append(b, 34); + _r$1 = $clone(t, Time).AppendFormat(b, "2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + b = _r$1; + b = $append(b, 34); + $s = -1; return [b, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalJSON }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); }; + Time.ptr.prototype.UnmarshalJSON = function(data) { + var _r, _tuple, data, err, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + if (($bytesToString(data)) === "null") { + $s = -1; return $ifaceNil; + } + err = $ifaceNil; + _r = Parse("\"2006-01-02T15:04:05Z07:00\"", ($bytesToString(data))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + Time.copy(t, _tuple[0]); + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalJSON }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.UnmarshalJSON = function(data) { return this.$val.UnmarshalJSON(data); }; + Time.ptr.prototype.MarshalText = function() { + var _r, _r$1, b, t, y, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + _r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + y = _r; + if (y < 0 || y >= 10000) { + $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalText: year outside of range [0,9999]")]; + } + b = $makeSlice(sliceType$3, 0, 35); + _r$1 = $clone(t, Time).AppendFormat(b, "2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return [_r$1, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalText }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.MarshalText = function() { return this.$val.MarshalText(); }; + Time.ptr.prototype.UnmarshalText = function(data) { + var _r, _tuple, data, err, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this; + err = $ifaceNil; + _r = Parse("2006-01-02T15:04:05Z07:00", ($bytesToString(data))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + Time.copy(t, _tuple[0]); + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalText }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Time.prototype.UnmarshalText = function(data) { return this.$val.UnmarshalText(data); }; + Unix = function(sec, nsec) { + var n, nsec, sec, x$1, x$2, x$3, x$4; + if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0)) || (nsec.$high > 0 || (nsec.$high === 0 && nsec.$low >= 1000000000))) { + n = $div64(nsec, new $Int64(0, 1000000000), false); + sec = (x$1 = n, new $Int64(sec.$high + x$1.$high, sec.$low + x$1.$low)); + nsec = (x$2 = $mul64(n, new $Int64(0, 1000000000)), new $Int64(nsec.$high - x$2.$high, nsec.$low - x$2.$low)); + if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0))) { + nsec = (x$3 = new $Int64(0, 1000000000), new $Int64(nsec.$high + x$3.$high, nsec.$low + x$3.$low)); + sec = (x$4 = new $Int64(0, 1), new $Int64(sec.$high - x$4.$high, sec.$low - x$4.$low)); + } + } + return unixTime(sec, (((nsec.$low + ((nsec.$high >> 31) * 4294967296)) >> 0))); + }; + $pkg.Unix = Unix; + isLeap = function(year) { + var _r, _r$1, _r$2, year; + return ((_r = year % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) && (!(((_r$1 = year % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0)) || ((_r$2 = year % 400, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0)); + }; + norm = function(hi, lo, base) { + var _q, _q$1, _tmp, _tmp$1, base, hi, lo, n, n$1, nhi, nlo; + nhi = 0; + nlo = 0; + if (lo < 0) { + n = (_q = ((-lo - 1 >> 0)) / base, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; + hi = hi - (n) >> 0; + lo = lo + (($imul(n, base))) >> 0; + } + if (lo >= base) { + n$1 = (_q$1 = lo / base, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + hi = hi + (n$1) >> 0; + lo = lo - (($imul(n$1, base))) >> 0; + } + _tmp = hi; + _tmp$1 = lo; + nhi = _tmp; + nlo = _tmp$1; + return [nhi, nlo]; + }; + Date = function(year, month, day, hour, min, sec, nsec, loc) { + var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, abs, d, day, end, hour, loc, m, min, month, n, nsec, offset, sec, start, t, unix, utc, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, year, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; abs = $f.abs; d = $f.d; day = $f.day; end = $f.end; hour = $f.hour; loc = $f.loc; m = $f.m; min = $f.min; month = $f.month; n = $f.n; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; start = $f.start; t = $f.t; unix = $f.unix; utc = $f.utc; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (loc === ptrType$2.nil) { + $panic(new $String("time: missing Location in call to Date")); + } + m = ((month >> 0)) - 1 >> 0; + _tuple = norm(year, m, 12); + year = _tuple[0]; + m = _tuple[1]; + month = ((m >> 0)) + 1 >> 0; + _tuple$1 = norm(sec, nsec, 1000000000); + sec = _tuple$1[0]; + nsec = _tuple$1[1]; + _tuple$2 = norm(min, sec, 60); + min = _tuple$2[0]; + sec = _tuple$2[1]; + _tuple$3 = norm(hour, min, 60); + hour = _tuple$3[0]; + min = _tuple$3[1]; + _tuple$4 = norm(day, hour, 24); + day = _tuple$4[0]; + hour = _tuple$4[1]; + y = ((x$1 = (x$2 = (new $Int64(0, year)), new $Int64(x$2.$high - -69, x$2.$low - 4075721025)), new $Uint64(x$1.$high, x$1.$low))); + n = $div64(y, new $Uint64(0, 400), false); + y = (x$3 = $mul64(new $Uint64(0, 400), n), new $Uint64(y.$high - x$3.$high, y.$low - x$3.$low)); + d = $mul64(new $Uint64(0, 146097), n); + n = $div64(y, new $Uint64(0, 100), false); + y = (x$4 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high - x$4.$high, y.$low - x$4.$low)); + d = (x$5 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high + x$5.$high, d.$low + x$5.$low)); + n = $div64(y, new $Uint64(0, 4), false); + y = (x$6 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high - x$6.$high, y.$low - x$6.$low)); + d = (x$7 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high + x$7.$high, d.$low + x$7.$low)); + n = y; + d = (x$8 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high + x$8.$high, d.$low + x$8.$low)); + d = (x$9 = (new $Uint64(0, (x$10 = month - 1 >> 0, ((x$10 < 0 || x$10 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$10])))), new $Uint64(d.$high + x$9.$high, d.$low + x$9.$low)); + if (isLeap(year) && month >= 3) { + d = (x$11 = new $Uint64(0, 1), new $Uint64(d.$high + x$11.$high, d.$low + x$11.$low)); + } + d = (x$12 = (new $Uint64(0, (day - 1 >> 0))), new $Uint64(d.$high + x$12.$high, d.$low + x$12.$low)); + abs = $mul64(d, new $Uint64(0, 86400)); + abs = (x$13 = (new $Uint64(0, ((($imul(hour, 3600)) + ($imul(min, 60)) >> 0) + sec >> 0))), new $Uint64(abs.$high + x$13.$high, abs.$low + x$13.$low)); + unix = (x$14 = (new $Int64(abs.$high, abs.$low)), new $Int64(x$14.$high + -2147483647, x$14.$low + 3844486912)); + _r = loc.lookup(unix); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$5 = _r; + offset = _tuple$5[1]; + start = _tuple$5[2]; + end = _tuple$5[3]; + /* */ if (!((offset === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((offset === 0))) { */ case 2: + utc = (x$15 = (new $Int64(0, offset)), new $Int64(unix.$high - x$15.$high, unix.$low - x$15.$low)); + /* */ if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { $s = 5; continue; } + /* */ if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { */ case 5: + _r$1 = loc.lookup(new $Int64(start.$high - 0, start.$low - 1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$6 = _r$1; + offset = _tuple$6[1]; + $s = 7; continue; + /* } else if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 6: + _r$2 = loc.lookup(end); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$7 = _r$2; + offset = _tuple$7[1]; + /* } */ case 7: + case 4: + unix = (x$16 = (new $Int64(0, offset)), new $Int64(unix.$high - x$16.$high, unix.$low - x$16.$low)); + /* } */ case 3: + t = $clone(unixTime(unix, ((nsec >> 0))), Time); + t.setLoc(loc); + $s = -1; return t; + /* */ } return; } if ($f === undefined) { $f = { $blk: Date }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.abs = abs; $f.d = d; $f.day = day; $f.end = end; $f.hour = hour; $f.loc = loc; $f.m = m; $f.min = min; $f.month = month; $f.n = n; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.start = start; $f.t = t; $f.unix = unix; $f.utc = utc; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Date = Date; + Time.ptr.prototype.Truncate = function(d) { + var _tuple, d, r, t; + t = this; + t.stripMono(); + if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { + return t; + } + _tuple = div($clone(t, Time), d); + r = _tuple[1]; + return $clone(t, Time).Add(new Duration(-r.$high, -r.$low)); + }; + Time.prototype.Truncate = function(d) { return this.$val.Truncate(d); }; + Time.ptr.prototype.Round = function(d) { + var _tuple, d, r, t; + t = this; + t.stripMono(); + if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { + return t; + } + _tuple = div($clone(t, Time), d); + r = _tuple[1]; + if (lessThanHalf(r, d)) { + return $clone(t, Time).Add(new Duration(-r.$high, -r.$low)); + } + return $clone(t, Time).Add(new Duration(d.$high - r.$high, d.$low - r.$low)); + }; + Time.prototype.Round = function(d) { return this.$val.Round(d); }; + div = function(t, d) { + var _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, d0, d1, d1$1, neg, nsec, qmod2, r, sec, sec$1, t, tmp, u0, u0x, u1, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + qmod2 = 0; + r = new Duration(0, 0); + neg = false; + nsec = t.nsec(); + sec = t.sec(); + if ((sec.$high < 0 || (sec.$high === 0 && sec.$low < 0))) { + neg = true; + sec = new $Int64(-sec.$high, -sec.$low); + nsec = -nsec; + if (nsec < 0) { + nsec = nsec + (1000000000) >> 0; + sec = (x$1 = new $Int64(0, 1), new $Int64(sec.$high - x$1.$high, sec.$low - x$1.$low)); + } + } + if ((d.$high < 0 || (d.$high === 0 && d.$low < 1000000000)) && (x$2 = $div64(new Duration(0, 1000000000), (new Duration(d.$high + d.$high, d.$low + d.$low)), true), (x$2.$high === 0 && x$2.$low === 0))) { + qmod2 = (((_q = nsec / (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) & 1; + r = (new Duration(0, (_r = nsec % (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), _r === _r ? _r : $throwRuntimeError("integer divide by zero")))); + } else if ((x$3 = $div64(d, new Duration(0, 1000000000), true), (x$3.$high === 0 && x$3.$low === 0))) { + d1 = ((x$4 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$4.$high, x$4.$low))); + qmod2 = (((x$5 = $div64(sec, d1, false), x$5.$low + ((x$5.$high >> 31) * 4294967296)) >> 0)) & 1; + r = (x$6 = $mul64(((x$7 = $div64(sec, d1, true), new Duration(x$7.$high, x$7.$low))), new Duration(0, 1000000000)), x$8 = (new Duration(0, nsec)), new Duration(x$6.$high + x$8.$high, x$6.$low + x$8.$low)); + } else { + sec$1 = (new $Uint64(sec.$high, sec.$low)); + tmp = $mul64(($shiftRightUint64(sec$1, 32)), new $Uint64(0, 1000000000)); + u1 = $shiftRightUint64(tmp, 32); + u0 = $shiftLeft64(tmp, 32); + tmp = $mul64((new $Uint64(sec$1.$high & 0, (sec$1.$low & 4294967295) >>> 0)), new $Uint64(0, 1000000000)); + _tmp = u0; + _tmp$1 = new $Uint64(u0.$high + tmp.$high, u0.$low + tmp.$low); + u0x = _tmp; + u0 = _tmp$1; + if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) { + u1 = (x$9 = new $Uint64(0, 1), new $Uint64(u1.$high + x$9.$high, u1.$low + x$9.$low)); + } + _tmp$2 = u0; + _tmp$3 = (x$10 = (new $Uint64(0, nsec)), new $Uint64(u0.$high + x$10.$high, u0.$low + x$10.$low)); + u0x = _tmp$2; + u0 = _tmp$3; + if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) { + u1 = (x$11 = new $Uint64(0, 1), new $Uint64(u1.$high + x$11.$high, u1.$low + x$11.$low)); + } + d1$1 = (new $Uint64(d.$high, d.$low)); + while (true) { + if (!(!((x$12 = $shiftRightUint64(d1$1, 63), (x$12.$high === 0 && x$12.$low === 1))))) { break; } + d1$1 = $shiftLeft64(d1$1, (1)); + } + d0 = new $Uint64(0, 0); + while (true) { + qmod2 = 0; + if ((u1.$high > d1$1.$high || (u1.$high === d1$1.$high && u1.$low > d1$1.$low)) || (u1.$high === d1$1.$high && u1.$low === d1$1.$low) && (u0.$high > d0.$high || (u0.$high === d0.$high && u0.$low >= d0.$low))) { + qmod2 = 1; + _tmp$4 = u0; + _tmp$5 = new $Uint64(u0.$high - d0.$high, u0.$low - d0.$low); + u0x = _tmp$4; + u0 = _tmp$5; + if ((u0.$high > u0x.$high || (u0.$high === u0x.$high && u0.$low > u0x.$low))) { + u1 = (x$13 = new $Uint64(0, 1), new $Uint64(u1.$high - x$13.$high, u1.$low - x$13.$low)); + } + u1 = (x$14 = d1$1, new $Uint64(u1.$high - x$14.$high, u1.$low - x$14.$low)); + } + if ((d1$1.$high === 0 && d1$1.$low === 0) && (x$15 = (new $Uint64(d.$high, d.$low)), (d0.$high === x$15.$high && d0.$low === x$15.$low))) { + break; + } + d0 = $shiftRightUint64(d0, (1)); + d0 = (x$16 = $shiftLeft64((new $Uint64(d1$1.$high & 0, (d1$1.$low & 1) >>> 0)), 63), new $Uint64(d0.$high | x$16.$high, (d0.$low | x$16.$low) >>> 0)); + d1$1 = $shiftRightUint64(d1$1, (1)); + } + r = (new Duration(u0.$high, u0.$low)); + } + if (neg && !((r.$high === 0 && r.$low === 0))) { + qmod2 = (qmod2 ^ (1)) >> 0; + r = new Duration(d.$high - r.$high, d.$low - r.$low); + } + return [qmod2, r]; + }; + Location.ptr.prototype.get = function() { + var l, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + if (l === ptrType$2.nil) { + $s = -1; return utcLoc; + } + /* */ if (l === localLoc) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l === localLoc) { */ case 1: + $r = localOnce.Do(initLocal); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return l; + /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.get }; } $f.l = l; $f.$s = $s; $f.$r = $r; return $f; + }; + Location.prototype.get = function() { return this.$val.get(); }; + Location.ptr.prototype.String = function() { + var _r, l, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r.name; + /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.String }; } $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f; + }; + Location.prototype.String = function() { return this.$val.String(); }; + FixedZone = function(name, offset) { + var l, name, offset, x$1; + l = new Location.ptr(name, new sliceType([new zone.ptr(name, offset, false)]), new sliceType$1([new zoneTrans.ptr(new $Int64(-2147483648, 0), 0, false, false)]), new $Int64(-2147483648, 0), new $Int64(2147483647, 4294967295), ptrType.nil); + l.cacheZone = (x$1 = l.zone, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + return l; + }; + $pkg.FixedZone = FixedZone; + Location.ptr.prototype.lookup = function(sec) { + var _q, _r, end, hi, l, lim, lo, m, name, offset, sec, start, tx, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, zone$1, zone$2, zone$3, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; end = $f.end; hi = $f.hi; l = $f.l; lim = $f.lim; lo = $f.lo; m = $f.m; name = $f.name; offset = $f.offset; sec = $f.sec; start = $f.start; tx = $f.tx; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; zone$1 = $f.zone$1; zone$2 = $f.zone$2; zone$3 = $f.zone$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + name = ""; + offset = 0; + start = new $Int64(0, 0); + end = new $Int64(0, 0); + l = this; + _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + l = _r; + if (l.zone.$length === 0) { + name = "UTC"; + offset = 0; + start = new $Int64(-2147483648, 0); + end = new $Int64(2147483647, 4294967295); + $s = -1; return [name, offset, start, end]; + } + zone$1 = l.cacheZone; + if (!(zone$1 === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { + name = zone$1.name; + offset = zone$1.offset; + start = l.cacheStart; + end = l.cacheEnd; + $s = -1; return [name, offset, start, end]; + } + if ((l.tx.$length === 0) || (x$3 = (x$4 = l.tx, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).when, (sec.$high < x$3.$high || (sec.$high === x$3.$high && sec.$low < x$3.$low)))) { + zone$2 = (x$5 = l.zone, x$6 = l.lookupFirstZone(), ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])); + name = zone$2.name; + offset = zone$2.offset; + start = new $Int64(-2147483648, 0); + if (l.tx.$length > 0) { + end = (x$7 = l.tx, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).when; + } else { + end = new $Int64(2147483647, 4294967295); + } + $s = -1; return [name, offset, start, end]; + } + tx = l.tx; + end = new $Int64(2147483647, 4294967295); + lo = 0; + hi = tx.$length; + while (true) { + if (!((hi - lo >> 0) > 1)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + lim = ((m < 0 || m >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + m]).when; + if ((sec.$high < lim.$high || (sec.$high === lim.$high && sec.$low < lim.$low))) { + end = lim; + hi = m; + } else { + lo = m; + } + } + zone$3 = (x$8 = l.zone, x$9 = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).index, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])); + name = zone$3.name; + offset = zone$3.offset; + start = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).when; + $s = -1; return [name, offset, start, end]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookup }; } $f._q = _q; $f._r = _r; $f.end = end; $f.hi = hi; $f.l = l; $f.lim = lim; $f.lo = lo; $f.m = m; $f.name = name; $f.offset = offset; $f.sec = sec; $f.start = start; $f.tx = tx; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.zone$3 = zone$3; $f.$s = $s; $f.$r = $r; return $f; + }; + Location.prototype.lookup = function(sec) { return this.$val.lookup(sec); }; + Location.ptr.prototype.lookupFirstZone = function() { + var _i, _ref, l, x$1, x$2, x$3, x$4, x$5, x$6, zi, zi$1; + l = this; + if (!l.firstZoneUsed()) { + return 0; + } + if (l.tx.$length > 0 && (x$1 = l.zone, x$2 = (x$3 = l.tx, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).index, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).isDST) { + zi = (((x$4 = l.tx, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).index >> 0)) - 1 >> 0; + while (true) { + if (!(zi >= 0)) { break; } + if (!(x$5 = l.zone, ((zi < 0 || zi >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + zi])).isDST) { + return zi; + } + zi = zi - (1) >> 0; + } + } + _ref = l.zone; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + zi$1 = _i; + if (!(x$6 = l.zone, ((zi$1 < 0 || zi$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + zi$1])).isDST) { + return zi$1; + } + _i++; + } + return 0; + }; + Location.prototype.lookupFirstZone = function() { return this.$val.lookupFirstZone(); }; + Location.ptr.prototype.firstZoneUsed = function() { + var _i, _ref, l, tx; + l = this; + _ref = l.tx; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + tx = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), zoneTrans); + if (tx.index === 0) { + return true; + } + _i++; + } + return false; + }; + Location.prototype.firstZoneUsed = function() { return this.$val.firstZoneUsed(); }; + Location.ptr.prototype.lookupName = function(name, unix) { + var _i, _i$1, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, i, i$1, l, nam, name, offset, offset$1, ok, unix, x$1, x$2, x$3, zone$1, zone$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; i = $f.i; i$1 = $f.i$1; l = $f.l; nam = $f.nam; name = $f.name; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; unix = $f.unix; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + offset = 0; + ok = false; + l = this; + _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + l = _r; + _ref = l.zone; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + zone$1 = (x$1 = l.zone, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + /* */ if (zone$1.name === name) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (zone$1.name === name) { */ case 4: + _r$1 = l.lookup((x$2 = (new $Int64(0, zone$1.offset)), new $Int64(unix.$high - x$2.$high, unix.$low - x$2.$low))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + nam = _tuple[0]; + offset$1 = _tuple[1]; + if (nam === zone$1.name) { + _tmp = offset$1; + _tmp$1 = true; + offset = _tmp; + ok = _tmp$1; + $s = -1; return [offset, ok]; + } + /* } */ case 5: + _i++; + /* } */ $s = 2; continue; case 3: + _ref$1 = l.zone; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + zone$2 = (x$3 = l.zone, ((i$1 < 0 || i$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$1])); + if (zone$2.name === name) { + _tmp$2 = zone$2.offset; + _tmp$3 = true; + offset = _tmp$2; + ok = _tmp$3; + $s = -1; return [offset, ok]; + } + _i$1++; + } + $s = -1; return [offset, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookupName }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.i = i; $f.i$1 = i$1; $f.l = l; $f.nam = nam; $f.name = name; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.unix = unix; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f; + }; + Location.prototype.lookupName = function(name, unix) { return this.$val.lookupName(name, unix); }; + ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$5.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}]; + ptrType$6.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}]; + Time.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "AppendFormat", name: "AppendFormat", pkg: "", typ: $funcType([sliceType$3, $String], [sliceType$3], false)}, {prop: "After", name: "After", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Before", name: "Before", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "abs", name: "abs", pkg: "time", typ: $funcType([], [$Uint64], false)}, {prop: "locabs", name: "locabs", pkg: "time", typ: $funcType([], [$String, $Int, $Uint64], false)}, {prop: "Date", name: "Date", pkg: "", typ: $funcType([], [$Int, Month, $Int], false)}, {prop: "Year", name: "Year", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Month", name: "Month", pkg: "", typ: $funcType([], [Month], false)}, {prop: "Day", name: "Day", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Weekday", name: "Weekday", pkg: "", typ: $funcType([], [Weekday], false)}, {prop: "ISOWeek", name: "ISOWeek", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "Clock", name: "Clock", pkg: "", typ: $funcType([], [$Int, $Int, $Int], false)}, {prop: "Hour", name: "Hour", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Minute", name: "Minute", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Second", name: "Second", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Nanosecond", name: "Nanosecond", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "YearDay", name: "YearDay", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([Time], [Duration], false)}, {prop: "AddDate", name: "AddDate", pkg: "", typ: $funcType([$Int, $Int, $Int], [Time], false)}, {prop: "date", name: "date", pkg: "time", typ: $funcType([$Bool], [$Int, Month, $Int, $Int], false)}, {prop: "UTC", name: "UTC", pkg: "", typ: $funcType([], [Time], false)}, {prop: "Local", name: "Local", pkg: "", typ: $funcType([], [Time], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([ptrType$2], [Time], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "Zone", name: "Zone", pkg: "", typ: $funcType([], [$String, $Int], false)}, {prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixNano", name: "UnixNano", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Time], false)}]; + ptrType$7.methods = [{prop: "nsec", name: "nsec", pkg: "time", typ: $funcType([], [$Int32], false)}, {prop: "sec", name: "sec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "unixSec", name: "unixSec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "addSec", name: "addSec", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "setLoc", name: "setLoc", pkg: "time", typ: $funcType([ptrType$2], [], false)}, {prop: "stripMono", name: "stripMono", pkg: "time", typ: $funcType([], [], false)}, {prop: "setMono", name: "setMono", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "mono", name: "mono", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$3], [$error], false)}]; + Month.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Weekday.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Duration.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seconds", name: "Seconds", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Minutes", name: "Minutes", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Hours", name: "Hours", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Duration], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Duration], false)}]; + ptrType$2.methods = [{prop: "get", name: "get", pkg: "time", typ: $funcType([], [ptrType$2], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "lookup", name: "lookup", pkg: "time", typ: $funcType([$Int64], [$String, $Int, $Int64, $Int64], false)}, {prop: "lookupFirstZone", name: "lookupFirstZone", pkg: "time", typ: $funcType([], [$Int], false)}, {prop: "firstZoneUsed", name: "firstZoneUsed", pkg: "time", typ: $funcType([], [$Bool], false)}, {prop: "lookupName", name: "lookupName", pkg: "time", typ: $funcType([$String, $Int64], [$Int, $Bool], false)}]; + runtimeTimer.init("time", [{prop: "i", name: "i", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "when", name: "when", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "period", name: "period", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "f", name: "f", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "timeout", name: "timeout", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "active", name: "active", embedded: false, exported: false, typ: $Bool, tag: ""}]); + ParseError.init("", [{prop: "Layout", name: "Layout", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Message", name: "Message", embedded: false, exported: true, typ: $String, tag: ""}]); + Timer.init("time", [{prop: "C", name: "C", embedded: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: runtimeTimer, tag: ""}]); + Ticker.init("time", [{prop: "C", name: "C", embedded: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: runtimeTimer, tag: ""}]); + Time.init("time", [{prop: "wall", name: "wall", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "ext", name: "ext", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "loc", name: "loc", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + Location.init("time", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "zone", name: "zone", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "tx", name: "tx", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "cacheStart", name: "cacheStart", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", embedded: false, exported: false, typ: ptrType, tag: ""}]); + zone.init("time", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", embedded: false, exported: false, typ: $Bool, tag: ""}]); + zoneTrans.init("time", [{prop: "when", name: "when", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", embedded: false, exported: false, typ: $Bool, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + localLoc = new Location.ptr("", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil); + localOnce = new nosync.Once.ptr(false, false); + zoneSources = new sliceType$2([runtime.GOROOT() + "/lib/time/zoneinfo.zip"]); + std0x = $toNativeArray($kindInt, [260, 265, 524, 526, 528, 274]); + longDayNames = new sliceType$2(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); + shortDayNames = new sliceType$2(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]); + shortMonthNames = new sliceType$2(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]); + longMonthNames = new sliceType$2(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]); + atoiError = errors.New("time: invalid number"); + errBad = errors.New("bad value for field"); + errLeadingInt = errors.New("time: bad [0-9]*"); + months = $toNativeArray($kindString, ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]); + days = $toNativeArray($kindString, ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); + daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]); + startNano = (x = runtimeNano(), new $Int64(x.$high - 0, x.$low - 1)); + utcLoc = new Location.ptr("UTC", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil); + $pkg.UTC = utcLoc; + $pkg.Local = localLoc; + errLocation = errors.New("time: invalid location name"); + badData = errors.New("malformed time zone information"); + $unused(new sliceType$2(["/usr/share/zoneinfo/", "/usr/share/lib/zoneinfo/", "/usr/lib/locale/TZ/", runtime.GOROOT() + "/lib/time/zoneinfo.zip"])); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/poll"] = (function() { + var $pkg = {}, $init, errors, io, runtime, atomic, syscall, time, pollDesc, TimeoutError, fdMutex, FD, ptrType, chanType, sliceType, ptrType$1, ptrType$2, arrayType, sliceType$2, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$3, ptrType$12, funcType, funcType$1, ptrType$13, ptrType$14, ptrType$15, ptrType$16, sliceType$4, ptrType$17, semWaiters, tryDupCloexec, tryDupCloexec$24ptr, runtime_Semacquire, runtime_Semrelease, errClosing, consume, fcntl, DupCloseOnExec, dupCloseOnExecOld, writev, accept; + errors = $packages["errors"]; + io = $packages["io"]; + runtime = $packages["runtime"]; + atomic = $packages["sync/atomic"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + pollDesc = $pkg.pollDesc = $newType(0, $kindStruct, "poll.pollDesc", true, "internal/poll", false, function(closing_) { + this.$val = this; + if (arguments.length === 0) { + this.closing = false; + return; + } + this.closing = closing_; + }); + TimeoutError = $pkg.TimeoutError = $newType(0, $kindStruct, "poll.TimeoutError", true, "internal/poll", true, function() { + this.$val = this; + if (arguments.length === 0) { + return; + } + }); + fdMutex = $pkg.fdMutex = $newType(0, $kindStruct, "poll.fdMutex", true, "internal/poll", false, function(state_, rsema_, wsema_) { + this.$val = this; + if (arguments.length === 0) { + this.state = new $Uint64(0, 0); + this.rsema = 0; + this.wsema = 0; + return; + } + this.state = state_; + this.rsema = rsema_; + this.wsema = wsema_; + }); + FD = $pkg.FD = $newType(0, $kindStruct, "poll.FD", true, "internal/poll", true, function(fdmu_, Sysfd_, pd_, iovecs_, csema_, isBlocking_, IsStream_, ZeroReadIsEOF_, isFile_) { + this.$val = this; + if (arguments.length === 0) { + this.fdmu = new fdMutex.ptr(new $Uint64(0, 0), 0, 0); + this.Sysfd = 0; + this.pd = new pollDesc.ptr(false); + this.iovecs = ptrType$6.nil; + this.csema = 0; + this.isBlocking = 0; + this.IsStream = false; + this.ZeroReadIsEOF = false; + this.isFile = false; + return; + } + this.fdmu = fdmu_; + this.Sysfd = Sysfd_; + this.pd = pd_; + this.iovecs = iovecs_; + this.csema = csema_; + this.isBlocking = isBlocking_; + this.IsStream = IsStream_; + this.ZeroReadIsEOF = ZeroReadIsEOF_; + this.isFile = isFile_; + }); + ptrType = $ptrType($Uint32); + chanType = $chanType($Bool, false, false); + sliceType = $sliceType(chanType); + ptrType$1 = $ptrType($Uint64); + ptrType$2 = $ptrType($Int32); + arrayType = $arrayType($Uint8, 4); + sliceType$2 = $sliceType(syscall.Iovec); + ptrType$6 = $ptrType(sliceType$2); + ptrType$7 = $ptrType($Uint8); + ptrType$8 = $ptrType(FD); + ptrType$9 = $ptrType(pollDesc); + ptrType$10 = $ptrType(TimeoutError); + ptrType$11 = $ptrType(fdMutex); + sliceType$3 = $sliceType($Uint8); + ptrType$12 = $ptrType(syscall.Stat_t); + funcType = $funcType([$Uintptr], [], false); + funcType$1 = $funcType([$Uintptr], [$Bool], false); + ptrType$13 = $ptrType(syscall.Linger); + ptrType$14 = $ptrType(syscall.IPMreqn); + ptrType$15 = $ptrType(syscall.IPMreq); + ptrType$16 = $ptrType(syscall.IPv6Mreq); + sliceType$4 = $sliceType(sliceType$3); + ptrType$17 = $ptrType(sliceType$4); + pollDesc.ptr.prototype.init = function(fd) { + var fd, pd; + pd = this; + return $ifaceNil; + }; + pollDesc.prototype.init = function(fd) { return this.$val.init(fd); }; + pollDesc.ptr.prototype.close = function() { + var pd; + pd = this; + }; + pollDesc.prototype.close = function() { return this.$val.close(); }; + pollDesc.ptr.prototype.evict = function() { + var pd; + pd = this; + pd.closing = true; + }; + pollDesc.prototype.evict = function() { return this.$val.evict(); }; + pollDesc.ptr.prototype.prepare = function(mode, isFile) { + var isFile, mode, pd; + pd = this; + if (pd.closing) { + return errClosing(isFile); + } + return $ifaceNil; + }; + pollDesc.prototype.prepare = function(mode, isFile) { return this.$val.prepare(mode, isFile); }; + pollDesc.ptr.prototype.prepareRead = function(isFile) { + var isFile, pd; + pd = this; + return pd.prepare(114, isFile); + }; + pollDesc.prototype.prepareRead = function(isFile) { return this.$val.prepareRead(isFile); }; + pollDesc.ptr.prototype.prepareWrite = function(isFile) { + var isFile, pd; + pd = this; + return pd.prepare(119, isFile); + }; + pollDesc.prototype.prepareWrite = function(isFile) { return this.$val.prepareWrite(isFile); }; + pollDesc.ptr.prototype.wait = function(mode, isFile) { + var isFile, mode, pd; + pd = this; + if (pd.closing) { + return errClosing(isFile); + } + return $pkg.ErrTimeout; + }; + pollDesc.prototype.wait = function(mode, isFile) { return this.$val.wait(mode, isFile); }; + pollDesc.ptr.prototype.waitRead = function(isFile) { + var isFile, pd; + pd = this; + return pd.wait(114, isFile); + }; + pollDesc.prototype.waitRead = function(isFile) { return this.$val.waitRead(isFile); }; + pollDesc.ptr.prototype.waitWrite = function(isFile) { + var isFile, pd; + pd = this; + return pd.wait(119, isFile); + }; + pollDesc.prototype.waitWrite = function(isFile) { return this.$val.waitWrite(isFile); }; + pollDesc.ptr.prototype.pollable = function() { + return true; + }; + pollDesc.prototype.pollable = function() { return this.$val.pollable(); }; + FD.ptr.prototype.SetDeadline = function(t) { + var t; + return $ifaceNil; + }; + FD.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; + FD.ptr.prototype.SetReadDeadline = function(t) { + var t; + return $ifaceNil; + }; + FD.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; + FD.ptr.prototype.SetWriteDeadline = function(t) { + var t; + return $ifaceNil; + }; + FD.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; + runtime_Semacquire = function(s) { + var _entry, _key, _r, ch, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r = $f._r; ch = $f.ch; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ if (s.$get() === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.$get() === 0) { */ case 1: + ch = new $Chan($Bool, 0); + _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType.keyFor(_key)] = { k: _key, v: $append((_entry = semWaiters[ptrType.keyFor(s)], _entry !== undefined ? _entry.v : sliceType.nil), ch) }; + _r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r[0]; + /* } */ case 2: + s.$set(s.$get() - (1) >>> 0); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semacquire }; } $f._entry = _entry; $f._key = _key; $f._r = _r; $f.ch = ch; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + runtime_Semrelease = function(s) { + var _entry, _key, ch, s, w, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; ch = $f.ch; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s.$set(s.$get() + (1) >>> 0); + w = (_entry = semWaiters[ptrType.keyFor(s)], _entry !== undefined ? _entry.v : sliceType.nil); + if (w.$length === 0) { + $s = -1; return; + } + ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]); + w = $subslice(w, 1); + _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType.keyFor(_key)] = { k: _key, v: w }; + if (w.$length === 0) { + delete semWaiters[ptrType.keyFor(s)]; + } + $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f._entry = _entry; $f._key = _key; $f.ch = ch; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; + }; + errClosing = function(isFile) { + var isFile; + if (isFile) { + return $pkg.ErrFileClosing; + } + return $pkg.ErrNetClosing; + }; + TimeoutError.ptr.prototype.Error = function() { + var e; + e = this; + return "i/o timeout"; + }; + TimeoutError.prototype.Error = function() { return this.$val.Error(); }; + TimeoutError.ptr.prototype.Timeout = function() { + var e; + e = this; + return true; + }; + TimeoutError.prototype.Timeout = function() { return this.$val.Timeout(); }; + TimeoutError.ptr.prototype.Temporary = function() { + var e; + e = this; + return true; + }; + TimeoutError.prototype.Temporary = function() { return this.$val.Temporary(); }; + consume = function(v, n) { + var ln0, n, v, x, x$1, x$2, x$3; + while (true) { + if (!(v.$get().$length > 0)) { break; } + ln0 = (new $Int64(0, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).$length)); + if ((ln0.$high > n.$high || (ln0.$high === n.$high && ln0.$low > n.$low))) { + (x$2 = v.$get(), (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = v.$get(), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $flatten64(n)))); + return; + } + n = (x$3 = ln0, new $Int64(n.$high - x$3.$high, n.$low - x$3.$low)); + v.$set($subslice((v.$get()), 1)); + } + }; + FD.ptr.prototype.Fsync = function() { + var err, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Fsync(fd.Sysfd); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fsync }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Fsync = function() { return this.$val.Fsync(); }; + fcntl = function(fd, cmd, arg) { + var _tuple, arg, cmd, e, fd, r; + _tuple = syscall.Syscall(72, ((fd >>> 0)), ((cmd >>> 0)), ((arg >>> 0))); + r = _tuple[0]; + e = _tuple[2]; + if (!((e === 0))) { + return [((r >> 0)), new syscall.Errno((e))]; + } + return [((r >> 0)), $ifaceNil]; + }; + fdMutex.ptr.prototype.incref = function() { + var mu, new$1, old, x, x$1; + mu = this; + while (true) { + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { + return false; + } + new$1 = new $Uint64(old.$high + 0, old.$low + 8); + if ((x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { + return true; + } + } + }; + fdMutex.prototype.incref = function() { return this.$val.incref(); }; + fdMutex.ptr.prototype.increfAndClose = function() { + var mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; mu = $f.mu; new$1 = $f.new$1; old = $f.old; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + mu = this; + /* while (true) { */ case 1: + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { + $s = -1; return false; + } + new$1 = (x$1 = new $Uint64(old.$high | 0, (old.$low | 1) >>> 0), new $Uint64(x$1.$high + 0, x$1.$low + 8)); + if ((x$2 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$2.$high === 0 && x$2.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + new$1 = (x$3 = new $Uint64(2147483647, 4286578688), new $Uint64(new$1.$high & ~x$3.$high, (new$1.$low & ~x$3.$low) >>> 0)); + /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: + /* while (true) { */ case 5: + /* if (!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { break; } */ if(!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { $s = 6; continue; } + old = (x$5 = new $Uint64(0, 8388608), new $Uint64(old.$high - x$5.$high, old.$low - x$5.$low)); + $r = runtime_Semrelease((mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ $s = 5; continue; case 6: + /* while (true) { */ case 8: + /* if (!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { break; } */ if(!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { $s = 9; continue; } + old = (x$7 = new $Uint64(2048, 0), new $Uint64(old.$high - x$7.$high, old.$low - x$7.$low)); + $r = runtime_Semrelease((mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ $s = 8; continue; case 9: + $s = -1; return true; + /* } */ case 4: + /* } */ $s = 1; continue; case 2: + $s = -1; return false; + /* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.increfAndClose }; } $f.mu = mu; $f.new$1 = new$1; $f.old = old; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; + }; + fdMutex.prototype.increfAndClose = function() { return this.$val.increfAndClose(); }; + fdMutex.ptr.prototype.decref = function() { + var mu, new$1, old, x, x$1; + mu = this; + while (true) { + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if ((x = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x.$high === 0 && x.$low === 0))) { + $panic(new $String("inconsistent poll.fdMutex")); + } + new$1 = new $Uint64(old.$high - 0, old.$low - 8); + if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { + return (x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$1.$high === 0 && x$1.$low === 1)); + } + } + }; + fdMutex.prototype.decref = function() { return this.$val.decref(); }; + fdMutex.ptr.prototype.rwlock = function(read) { + var _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; mu = $f.mu; mutexBit = $f.mutexBit; mutexMask = $f.mutexMask; mutexSema = $f.mutexSema; mutexWait = $f.mutexWait; new$1 = $f.new$1; old = $f.old; read = $f.read; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + mu = this; + _tmp = new $Uint64(0, 0); + _tmp$1 = new $Uint64(0, 0); + _tmp$2 = new $Uint64(0, 0); + mutexBit = _tmp; + mutexWait = _tmp$1; + mutexMask = _tmp$2; + mutexSema = ptrType.nil; + if (read) { + mutexBit = new $Uint64(0, 2); + mutexWait = new $Uint64(0, 8388608); + mutexMask = new $Uint64(2047, 4286578688); + mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))); + } else { + mutexBit = new $Uint64(0, 4); + mutexWait = new $Uint64(2048, 0); + mutexMask = new $Uint64(2147481600, 0); + mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))); + } + /* while (true) { */ case 1: + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { + $s = -1; return false; + } + new$1 = new $Uint64(0, 0); + if ((x$1 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { + new$1 = (x$2 = new $Uint64(old.$high | mutexBit.$high, (old.$low | mutexBit.$low) >>> 0), new $Uint64(x$2.$high + 0, x$2.$low + 8)); + if ((x$3 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$3.$high === 0 && x$3.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + } else { + new$1 = new $Uint64(old.$high + mutexWait.$high, old.$low + mutexWait.$low); + if ((x$4 = new $Uint64(new$1.$high & mutexMask.$high, (new$1.$low & mutexMask.$low) >>> 0), (x$4.$high === 0 && x$4.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + } + /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: + if ((x$5 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0))) { + $s = -1; return true; + } + $r = runtime_Semacquire(mutexSema); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + /* } */ $s = 1; continue; case 2: + $s = -1; return false; + /* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.rwlock }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.mu = mu; $f.mutexBit = mutexBit; $f.mutexMask = mutexMask; $f.mutexSema = mutexSema; $f.mutexWait = mutexWait; $f.new$1 = new$1; $f.old = old; $f.read = read; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + fdMutex.prototype.rwlock = function(read) { return this.$val.rwlock(read); }; + fdMutex.ptr.prototype.rwunlock = function(read) { + var _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; mu = $f.mu; mutexBit = $f.mutexBit; mutexMask = $f.mutexMask; mutexSema = $f.mutexSema; mutexWait = $f.mutexWait; new$1 = $f.new$1; old = $f.old; read = $f.read; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + mu = this; + _tmp = new $Uint64(0, 0); + _tmp$1 = new $Uint64(0, 0); + _tmp$2 = new $Uint64(0, 0); + mutexBit = _tmp; + mutexWait = _tmp$1; + mutexMask = _tmp$2; + mutexSema = ptrType.nil; + if (read) { + mutexBit = new $Uint64(0, 2); + mutexWait = new $Uint64(0, 8388608); + mutexMask = new $Uint64(2047, 4286578688); + mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))); + } else { + mutexBit = new $Uint64(0, 4); + mutexWait = new $Uint64(2048, 0); + mutexMask = new $Uint64(2147481600, 0); + mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))); + } + /* while (true) { */ case 1: + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if ((x = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x.$high === 0 && x.$low === 0)) || (x$1 = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { + $panic(new $String("inconsistent poll.fdMutex")); + } + new$1 = (x$2 = new $Uint64(old.$high & ~mutexBit.$high, (old.$low & ~mutexBit.$low) >>> 0), new $Uint64(x$2.$high - 0, x$2.$low - 8)); + if (!((x$3 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) { + new$1 = (x$4 = mutexWait, new $Uint64(new$1.$high - x$4.$high, new$1.$low - x$4.$low)); + } + /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: + /* */ if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { */ case 5: + $r = runtime_Semrelease(mutexSema); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return (x$6 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$6.$high === 0 && x$6.$low === 1)); + /* } */ case 4: + /* } */ $s = 1; continue; case 2: + $s = -1; return false; + /* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.rwunlock }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.mu = mu; $f.mutexBit = mutexBit; $f.mutexMask = mutexMask; $f.mutexSema = mutexSema; $f.mutexWait = mutexWait; $f.new$1 = new$1; $f.old = old; $f.read = read; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f; + }; + fdMutex.prototype.rwunlock = function(read) { return this.$val.rwunlock(read); }; + FD.ptr.prototype.incref = function() { + var fd; + fd = this; + if (!fd.fdmu.incref()) { + return errClosing(fd.isFile); + } + return $ifaceNil; + }; + FD.prototype.incref = function() { return this.$val.incref(); }; + FD.ptr.prototype.decref = function() { + var _r, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + /* */ if (fd.fdmu.decref()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (fd.fdmu.decref()) { */ case 1: + _r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.decref }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.decref = function() { return this.$val.decref(); }; + FD.ptr.prototype.readLock = function() { + var _r, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return errClosing(fd.isFile); + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.readLock }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.readLock = function() { return this.$val.readLock(); }; + FD.ptr.prototype.readUnlock = function() { + var _r, _r$1, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwunlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.readUnlock }; } $f._r = _r; $f._r$1 = _r$1; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.readUnlock = function() { return this.$val.readUnlock(); }; + FD.ptr.prototype.writeLock = function() { + var _r, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return errClosing(fd.isFile); + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.writeLock }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.writeLock = function() { return this.$val.writeLock(); }; + FD.ptr.prototype.writeUnlock = function() { + var _r, _r$1, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwunlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.writeUnlock }; } $f._r = _r; $f._r$1 = _r$1; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.writeUnlock = function() { return this.$val.writeUnlock(); }; + FD.ptr.prototype.eofError = function(n, err) { + var err, fd, n; + fd = this; + if ((n === 0) && $interfaceIsEqual(err, $ifaceNil) && fd.ZeroReadIsEOF) { + return io.EOF; + } + return err; + }; + FD.prototype.eofError = function(n, err) { return this.$val.eofError(n, err); }; + FD.ptr.prototype.Fchmod = function(mode) { + var err, fd, mode, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; mode = $f.mode; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Fchmod(fd.Sysfd, mode); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchmod }; } $f.err = err; $f.fd = fd; $f.mode = mode; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Fchmod = function(mode) { return this.$val.Fchmod(mode); }; + FD.ptr.prototype.Fchown = function(uid, gid) { + var err, fd, gid, uid, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; gid = $f.gid; uid = $f.uid; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Fchown(fd.Sysfd, uid, gid); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchown }; } $f.err = err; $f.fd = fd; $f.gid = gid; $f.uid = uid; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Fchown = function(uid, gid) { return this.$val.Fchown(uid, gid); }; + FD.ptr.prototype.Ftruncate = function(size) { + var err, fd, size, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; size = $f.size; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Ftruncate(fd.Sysfd, size); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Ftruncate }; } $f.err = err; $f.fd = fd; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Ftruncate = function(size) { return this.$val.Ftruncate(size); }; + FD.ptr.prototype.Init = function(net, pollable) { + var err, fd, net, pollable; + fd = this; + if (net === "file") { + fd.isFile = true; + } + if (!pollable) { + fd.isBlocking = 1; + return $ifaceNil; + } + err = fd.pd.init(fd); + if (!($interfaceIsEqual(err, $ifaceNil))) { + fd.isBlocking = 1; + } + return err; + }; + FD.prototype.Init = function(net, pollable) { return this.$val.Init(net, pollable); }; + FD.ptr.prototype.destroy = function() { + var _r, err, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + fd.pd.close(); + _r = $pkg.CloseFunc(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + fd.Sysfd = -1; + $r = runtime_Semrelease((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.destroy }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.destroy = function() { return this.$val.destroy(); }; + FD.ptr.prototype.Close = function() { + var _r, _r$1, err, fd, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.increfAndClose(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return errClosing(fd.isFile); + /* } */ case 2: + fd.pd.evict(); + _r$1 = fd.decref(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + /* */ if (fd.isBlocking === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (fd.isBlocking === 0) { */ case 5: + $r = runtime_Semacquire((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Close }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.Close = function() { return this.$val.Close(); }; + FD.ptr.prototype.Shutdown = function(how) { + var err, fd, how, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; how = $f.how; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Shutdown(fd.Sysfd, how); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Shutdown }; } $f.err = err; $f.fd = fd; $f.how = how; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Shutdown = function(how) { return this.$val.Shutdown(how); }; + FD.ptr.prototype.SetBlocking = function() { + var err, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + atomic.StoreUint32((fd.$ptr_isBlocking || (fd.$ptr_isBlocking = new ptrType(function() { return this.$target.isBlocking; }, function($v) { this.$target.isBlocking = $v; }, fd))), 1); + $s = -1; return syscall.SetNonblock(fd.Sysfd, false); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetBlocking }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetBlocking = function() { return this.$val.SetBlocking(); }; + FD.ptr.prototype.Read = function(p) { + var _r, _tuple, err, err$1, err$2, fd, n, p, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + if (p.$length === 0) { + $s = -1; return [0, $ifaceNil]; + } + err$1 = fd.pd.prepareRead(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, err$1]; + } + if (fd.IsStream && p.$length > 1073741824) { + p = $subslice(p, 0, 1073741824); + } + while (true) { + _tuple = syscall.Read(fd.Sysfd, p); + n = _tuple[0]; + err$2 = _tuple[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + n = 0; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + continue; + } + } + if (false && $interfaceIsEqual(err$2, new syscall.Errno(4))) { + continue; + } + } + err$2 = fd.eofError(n, err$2); + $s = -1; return [n, err$2]; + } + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Read }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Read = function(p) { return this.$val.Read(p); }; + FD.ptr.prototype.Pread = function(p, off) { + var _r, _tuple, err, err$1, fd, n, off, p, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; off = $f.off; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + if (fd.IsStream && p.$length > 1073741824) { + p = $subslice(p, 0, 1073741824); + } + _tuple = syscall.Pread(fd.Sysfd, p, off); + n = _tuple[0]; + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + n = 0; + } + _r = fd.decref(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + err$1 = fd.eofError(n, err$1); + $s = -1; return [n, err$1]; + /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Pread }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.off = off; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.prototype.Pread = function(p, off) { return this.$val.Pread(p, off); }; + FD.ptr.prototype.ReadFrom = function(p) { + var _r, _tuple, err, err$1, err$2, fd, n, p, sa, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, $ifaceNil, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, $ifaceNil, err$1]; + } + while (true) { + _tuple = syscall.Recvfrom(fd.Sysfd, p, 0); + n = _tuple[0]; + sa = _tuple[1]; + err$2 = _tuple[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + n = 0; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $s = -1; return [n, sa, err$2]; + } + $s = -1; return [0, $ifaceNil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadFrom }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.ReadFrom = function(p) { return this.$val.ReadFrom(p); }; + FD.ptr.prototype.ReadMsg = function(p, oob) { + var _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, 0, $ifaceNil, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, 0, 0, $ifaceNil, err$1]; + } + while (true) { + _tuple = syscall.Recvmsg(fd.Sysfd, p, oob, 0); + n = _tuple[0]; + oobn = _tuple[1]; + flags = _tuple[2]; + sa = _tuple[3]; + err$2 = _tuple[4]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $s = -1; return [n, oobn, flags, sa, err$2]; + } + $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadMsg }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.ReadMsg = function(p, oob) { return this.$val.ReadMsg(p, oob); }; + FD.ptr.prototype.Write = function(p) { + var _r, _tuple, err, err$1, err$2, fd, max, n, nn, p, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; max = $f.max; n = $f.n; nn = $f.nn; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, err$1]; + } + nn = 0; + while (true) { + max = p.$length; + if (fd.IsStream && (max - nn >> 0) > 1073741824) { + max = nn + 1073741824 >> 0; + } + _tuple = syscall.Write(fd.Sysfd, $subslice(p, nn, max)); + n = _tuple[0]; + err$2 = _tuple[1]; + if (n > 0) { + nn = nn + (n) >> 0; + } + if (nn === p.$length) { + $s = -1; return [nn, err$2]; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + continue; + } + } + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return [nn, err$2]; + } + if (n === 0) { + $s = -1; return [nn, io.ErrUnexpectedEOF]; + } + } + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Write }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.max = max; $f.n = n; $f.nn = nn; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Write = function(p) { return this.$val.Write(p); }; + FD.ptr.prototype.Pwrite = function(p, off) { + var _tuple, err, err$1, fd, max, n, nn, off, p, x, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; fd = $f.fd; max = $f.max; n = $f.n; nn = $f.nn; off = $f.off; p = $f.p; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + nn = 0; + while (true) { + max = p.$length; + if (fd.IsStream && (max - nn >> 0) > 1073741824) { + max = nn + 1073741824 >> 0; + } + _tuple = syscall.Pwrite(fd.Sysfd, $subslice(p, nn, max), (x = (new $Int64(0, nn)), new $Int64(off.$high + x.$high, off.$low + x.$low))); + n = _tuple[0]; + err$1 = _tuple[1]; + if (n > 0) { + nn = nn + (n) >> 0; + } + if (nn === p.$length) { + $s = -1; return [nn, err$1]; + } + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [nn, err$1]; + } + if (n === 0) { + $s = -1; return [nn, io.ErrUnexpectedEOF]; + } + } + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Pwrite }; } $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.max = max; $f.n = n; $f.nn = nn; $f.off = off; $f.p = p; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Pwrite = function(p, off) { return this.$val.Pwrite(p, off); }; + FD.ptr.prototype.WriteTo = function(p, sa) { + var _r, _r$1, err, err$1, err$2, fd, p, sa, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, err$1]; + } + /* while (true) { */ case 2: + _r$1 = syscall.Sendto(fd.Sysfd, p, 0, sa); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$2 = _r$1; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 2; continue; + } + } + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return [0, err$2]; + } + $s = -1; return [p.$length, $ifaceNil]; + /* } */ $s = 2; continue; case 3: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteTo }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.WriteTo = function(p, sa) { return this.$val.WriteTo(p, sa); }; + FD.ptr.prototype.WriteMsg = function(p, oob, sa) { + var _r, _r$1, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; oob = $f.oob; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, 0, err$1]; + } + /* while (true) { */ case 2: + _r$1 = syscall.SendmsgN(fd.Sysfd, p, oob, sa, 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err$2 = _tuple[1]; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 2; continue; + } + } + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return [n, 0, err$2]; + } + $s = -1; return [n, oob.$length, err$2]; + /* } */ $s = 2; continue; case 3: + $s = -1; return [0, 0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteMsg }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.oob = oob; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.WriteMsg = function(p, oob, sa) { return this.$val.WriteMsg(p, oob, sa); }; + FD.ptr.prototype.Accept = function() { + var _1, _r, _r$1, _tuple, err, err$1, err$2, errcall, fd, rsa, s, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; errcall = $f.errcall; fd = $f.fd; rsa = $f.rsa; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, $ifaceNil, "", err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [-1, $ifaceNil, "", err$1]; + } + /* while (true) { */ case 2: + _r$1 = accept(fd.Sysfd); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + s = _tuple[0]; + rsa = _tuple[1]; + errcall = _tuple[2]; + err$2 = _tuple[3]; + if ($interfaceIsEqual(err$2, $ifaceNil)) { + $s = -1; return [s, rsa, "", err$2]; + } + _1 = err$2; + if ($interfaceIsEqual(_1, new syscall.Errno((11)))) { + if (fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 2; continue; + } + } + } else if ($interfaceIsEqual(_1, new syscall.Errno((103)))) { + /* continue; */ $s = 2; continue; + } + $s = -1; return [-1, $ifaceNil, errcall, err$2]; + /* } */ $s = 2; continue; case 3: + $s = -1; return [0, $ifaceNil, "", $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Accept }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.errcall = errcall; $f.fd = fd; $f.rsa = rsa; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Accept = function() { return this.$val.Accept(); }; + FD.ptr.prototype.Seek = function(offset, whence) { + var err, fd, offset, whence, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; offset = $f.offset; whence = $f.whence; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new $Int64(0, 0), err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Seek(fd.Sysfd, offset, whence); + /* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Seek }; } $f.err = err; $f.fd = fd; $f.offset = offset; $f.whence = whence; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); }; + FD.ptr.prototype.ReadDirent = function(buf) { + var _tuple, buf, err, err$1, fd, n, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + while (true) { + _tuple = syscall.ReadDirent(fd.Sysfd, buf); + n = _tuple[0]; + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + n = 0; + if ($interfaceIsEqual(err$1, new syscall.Errno(11)) && fd.pd.pollable()) { + err$1 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$1, $ifaceNil)) { + continue; + } + } + } + $s = -1; return [n, err$1]; + } + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadDirent }; } $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.ReadDirent = function(buf) { return this.$val.ReadDirent(buf); }; + FD.ptr.prototype.Fchdir = function() { + var err, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Fchdir(fd.Sysfd); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchdir }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Fchdir = function() { return this.$val.Fchdir(); }; + FD.ptr.prototype.Fstat = function(s) { + var err, fd, s, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.Fstat(fd.Sysfd, s); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fstat }; } $f.err = err; $f.fd = fd; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Fstat = function(s) { return this.$val.Fstat(s); }; + DupCloseOnExec = function(fd) { + var _1, _r, _tuple, e1, fd, r0, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; e1 = $f.e1; fd = $f.fd; r0 = $f.r0; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (atomic.LoadInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$2(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; })))) === 1) { + _tuple = fcntl(fd, 1030, 0); + r0 = _tuple[0]; + e1 = _tuple[1]; + if ($interfaceIsEqual(e1, $ifaceNil)) { + $s = -1; return [r0, "", $ifaceNil]; + } + _1 = $assertType(e1, syscall.Errno); + if ((_1 === (22)) || (_1 === (38))) { + atomic.StoreInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$2(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; }))), 0); + } else { + $s = -1; return [-1, "fcntl", e1]; + } + } + _r = dupCloseOnExecOld(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: DupCloseOnExec }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.e1 = e1; $f.fd = fd; $f.r0 = r0; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.DupCloseOnExec = DupCloseOnExec; + dupCloseOnExecOld = function(fd) { + var _tuple, err, fd, newfd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; err = $f.err; fd = $f.fd; newfd = $f.newfd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + $r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(syscall.ForkLock, "RUnlock"), []]); + _tuple = syscall.Dup(fd); + newfd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, "dup", err]; + } + syscall.CloseOnExec(newfd); + $s = -1; return [newfd, "", $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dupCloseOnExecOld }; } $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.newfd = newfd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.ptr.prototype.Dup = function() { + var _r, err, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, "", err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + _r = DupCloseOnExec(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Dup }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Dup = function() { return this.$val.Dup(); }; + FD.ptr.prototype.WaitWrite = function() { + var fd; + fd = this; + return fd.pd.waitWrite(fd.isFile); + }; + FD.prototype.WaitWrite = function() { return this.$val.WaitWrite(); }; + FD.ptr.prototype.WriteOnce = function(p) { + var _r, err, fd, p, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + $s = -1; return syscall.Write(fd.Sysfd, p); + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteOnce }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.WriteOnce = function(p) { return this.$val.WriteOnce(p); }; + FD.ptr.prototype.RawControl = function(f) { + var err, f, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $r = f(((fd.Sysfd >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawControl }; } $f.err = err; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.RawControl = function(f) { return this.$val.RawControl(f); }; + FD.ptr.prototype.RawRead = function(f) { + var _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + /* while (true) { */ case 2: + _r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 5: + err$2 = fd.pd.waitRead(fd.isFile); + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return err$2; + } + /* } */ $s = 2; continue; case 3: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawRead }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.RawRead = function(f) { return this.$val.RawRead(f); }; + FD.ptr.prototype.RawWrite = function(f) { + var _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + /* while (true) { */ case 2: + _r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 5: + err$2 = fd.pd.waitWrite(fd.isFile); + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return err$2; + } + /* } */ $s = 2; continue; case 3: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawWrite }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.RawWrite = function(f) { return this.$val.RawWrite(f); }; + writev = function(fd, iovecs) { + var _tuple, e, fd, iovecs, r; + _tuple = syscall.Syscall(20, ((fd >>> 0)), (($sliceToArray(iovecs))), ((iovecs.$length >>> 0))); + r = _tuple[0]; + e = _tuple[2]; + if (!((e === 0))) { + return [r, new syscall.Errno((e))]; + } + return [r, $ifaceNil]; + }; + accept = function(s) { + var _1, _r, _r$1, _r$2, _tuple, _tuple$1, err, ns, s, sa, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; ns = $f.ns; s = $f.s; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = $pkg.Accept4Func(s, 526336); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ns = _tuple[0]; + sa = _tuple[1]; + err = _tuple[2]; + _1 = err; + if ($interfaceIsEqual(_1, $ifaceNil)) { + $s = -1; return [ns, sa, "", $ifaceNil]; + } else if ($interfaceIsEqual(_1, new syscall.Errno((38)))) { + } else if ($interfaceIsEqual(_1, new syscall.Errno((22)))) { + } else if ($interfaceIsEqual(_1, new syscall.Errno((13)))) { + } else if ($interfaceIsEqual(_1, new syscall.Errno((14)))) { + } else { + $s = -1; return [-1, sa, "accept4", err]; + } + _r$1 = $pkg.AcceptFunc(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + ns = _tuple$1[0]; + sa = _tuple$1[1]; + err = _tuple$1[2]; + if ($interfaceIsEqual(err, $ifaceNil)) { + syscall.CloseOnExec(ns); + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, $ifaceNil, "accept", err]; + } + err = syscall.SetNonblock(ns, true); + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3: + _r$2 = $pkg.CloseFunc(ns); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return [-1, $ifaceNil, "setnonblock", err]; + /* } */ case 4: + $s = -1; return [ns, sa, "", $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: accept }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.ns = ns; $f.s = s; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f; + }; + FD.ptr.prototype.SetsockoptInt = function(level, name, arg) { + var arg, err, fd, level, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptInt(fd.Sysfd, level, name, arg); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptInt }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptInt = function(level, name, arg) { return this.$val.SetsockoptInt(level, name, arg); }; + FD.ptr.prototype.SetsockoptInet4Addr = function(level, name, arg) { + var arg, err, fd, level, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptInet4Addr(fd.Sysfd, level, name, $clone(arg, arrayType)); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptInet4Addr }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptInet4Addr = function(level, name, arg) { return this.$val.SetsockoptInet4Addr(level, name, arg); }; + FD.ptr.prototype.SetsockoptLinger = function(level, name, l) { + var err, fd, l, level, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; l = $f.l; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptLinger(fd.Sysfd, level, name, l); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptLinger }; } $f.err = err; $f.fd = fd; $f.l = l; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptLinger = function(level, name, l) { return this.$val.SetsockoptLinger(level, name, l); }; + FD.ptr.prototype.SetsockoptIPMreqn = function(level, name, mreq) { + var err, fd, level, mreq, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptIPMreqn(fd.Sysfd, level, name, mreq); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPMreqn }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptIPMreqn = function(level, name, mreq) { return this.$val.SetsockoptIPMreqn(level, name, mreq); }; + FD.ptr.prototype.SetsockoptByte = function(level, name, arg) { + var arg, err, fd, level, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptByte(fd.Sysfd, level, name, arg); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptByte }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptByte = function(level, name, arg) { return this.$val.SetsockoptByte(level, name, arg); }; + FD.ptr.prototype.SetsockoptIPMreq = function(level, name, mreq) { + var err, fd, level, mreq, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptIPMreq(fd.Sysfd, level, name, mreq); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPMreq }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptIPMreq = function(level, name, mreq) { return this.$val.SetsockoptIPMreq(level, name, mreq); }; + FD.ptr.prototype.SetsockoptIPv6Mreq = function(level, name, mreq) { + var err, fd, level, mreq, name, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $s = -1; return syscall.SetsockoptIPv6Mreq(fd.Sysfd, level, name, mreq); + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPv6Mreq }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.SetsockoptIPv6Mreq = function(level, name, mreq) { return this.$val.SetsockoptIPv6Mreq(level, name, mreq); }; + FD.ptr.prototype.Writev = function(v) { + var _i, _r, _ref, _tuple, chunk, err, err$1, err$2, fd, iovecs, maxVec, n, v, wrote, x, x$1, x$2, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; chunk = $f.chunk; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; iovecs = $f.iovecs; maxVec = $f.maxVec; n = $f.n; v = $f.v; wrote = $f.wrote; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + iovecs = [iovecs]; + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new $Int64(0, 0), err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [new $Int64(0, 0), err$1]; + } + iovecs[0] = sliceType$2.nil; + if (!(fd.iovecs === ptrType$6.nil)) { + iovecs[0] = fd.iovecs.$get(); + } + maxVec = 1024; + n = new $Int64(0, 0); + err$2 = $ifaceNil; + /* while (true) { */ case 2: + /* if (!(v.$get().$length > 0)) { break; } */ if(!(v.$get().$length > 0)) { $s = 3; continue; } + iovecs[0] = $subslice(iovecs[0], 0, 0); + _ref = v.$get(); + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + chunk = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (chunk.$length === 0) { + _i++; + /* continue; */ $s = 4; continue; + } + iovecs[0] = $append(iovecs[0], new syscall.Iovec.ptr($indexPtr(chunk.$array, chunk.$offset + 0, ptrType$7), new $Uint64(0, 0))); + if (fd.IsStream && chunk.$length > 1073741824) { + (x = iovecs[0].$length - 1 >> 0, ((x < 0 || x >= iovecs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : iovecs[0].$array[iovecs[0].$offset + x])).SetLen(1073741824); + /* break; */ $s = 5; continue; + } + (x$1 = iovecs[0].$length - 1 >> 0, ((x$1 < 0 || x$1 >= iovecs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : iovecs[0].$array[iovecs[0].$offset + x$1])).SetLen(chunk.$length); + if (iovecs[0].$length === maxVec) { + /* break; */ $s = 5; continue; + } + _i++; + /* } */ $s = 4; continue; case 5: + if (iovecs[0].$length === 0) { + /* break; */ $s = 3; continue; + } + fd.iovecs = (iovecs.$ptr || (iovecs.$ptr = new ptrType$6(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, iovecs))); + wrote = 0; + _tuple = writev(fd.Sysfd, iovecs[0]); + wrote = _tuple[0]; + err$2 = _tuple[1]; + if (wrote === 4294967295) { + wrote = 0; + } + $r = $pkg.TestHookDidWritev(((wrote >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + n = (x$2 = (new $Int64(0, wrote.constructor === Number ? wrote : 1)), new $Int64(n.$high + x$2.$high, n.$low + x$2.$low)); + consume(v, (new $Int64(0, wrote.constructor === Number ? wrote : 1))); + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($assertType(err$2, syscall.Errno) === 11) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 2; continue; + } + } + /* break; */ $s = 3; continue; + } + if ((n.$high === 0 && n.$low === 0)) { + err$2 = io.ErrUnexpectedEOF; + /* break; */ $s = 3; continue; + } + /* } */ $s = 2; continue; case 3: + $s = -1; return [n, err$2]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Writev }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.chunk = chunk; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.iovecs = iovecs; $f.maxVec = maxVec; $f.n = n; $f.v = v; $f.wrote = wrote; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + FD.prototype.Writev = function(v) { return this.$val.Writev(v); }; + ptrType$9.methods = [{prop: "init", name: "init", pkg: "internal/poll", typ: $funcType([ptrType$8], [$error], false)}, {prop: "close", name: "close", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "evict", name: "evict", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "prepare", name: "prepare", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "prepareRead", name: "prepareRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "prepareWrite", name: "prepareWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "wait", name: "wait", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitWrite", name: "waitWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitCanceled", name: "waitCanceled", pkg: "internal/poll", typ: $funcType([$Int], [], false)}, {prop: "pollable", name: "pollable", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}]; + ptrType$10.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$11.methods = [{prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "increfAndClose", name: "increfAndClose", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "rwlock", name: "rwlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}, {prop: "rwunlock", name: "rwunlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}]; + ptrType$8.methods = [{prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "Fsync", name: "Fsync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readLock", name: "readLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readUnlock", name: "readUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "writeLock", name: "writeLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "writeUnlock", name: "writeUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "eofError", name: "eofError", pkg: "internal/poll", typ: $funcType([$Int, $error], [$error], false)}, {prop: "Fchmod", name: "Fchmod", pkg: "", typ: $funcType([$Uint32], [$error], false)}, {prop: "Fchown", name: "Fchown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Ftruncate", name: "Ftruncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Init", name: "Init", pkg: "", typ: $funcType([$String, $Bool], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Shutdown", name: "Shutdown", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetBlocking", name: "SetBlocking", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Pread", name: "Pread", pkg: "", typ: $funcType([sliceType$3, $Int64], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$3], [$Int, syscall.Sockaddr, $error], false)}, {prop: "ReadMsg", name: "ReadMsg", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Pwrite", name: "Pwrite", pkg: "", typ: $funcType([sliceType$3, $Int64], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$3, syscall.Sockaddr], [$Int, $error], false)}, {prop: "WriteMsg", name: "WriteMsg", pkg: "", typ: $funcType([sliceType$3, sliceType$3, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [$Int, syscall.Sockaddr, $String, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadDirent", name: "ReadDirent", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Fchdir", name: "Fchdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Fstat", name: "Fstat", pkg: "", typ: $funcType([ptrType$12], [$error], false)}, {prop: "Dup", name: "Dup", pkg: "", typ: $funcType([], [$Int, $String, $error], false)}, {prop: "WaitWrite", name: "WaitWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteOnce", name: "WriteOnce", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "RawControl", name: "RawControl", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "RawRead", name: "RawRead", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "RawWrite", name: "RawWrite", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "SetsockoptInt", name: "SetsockoptInt", pkg: "", typ: $funcType([$Int, $Int, $Int], [$error], false)}, {prop: "SetsockoptInet4Addr", name: "SetsockoptInet4Addr", pkg: "", typ: $funcType([$Int, $Int, arrayType], [$error], false)}, {prop: "SetsockoptLinger", name: "SetsockoptLinger", pkg: "", typ: $funcType([$Int, $Int, ptrType$13], [$error], false)}, {prop: "SetsockoptIPMreqn", name: "SetsockoptIPMreqn", pkg: "", typ: $funcType([$Int, $Int, ptrType$14], [$error], false)}, {prop: "SetsockoptByte", name: "SetsockoptByte", pkg: "", typ: $funcType([$Int, $Int, $Uint8], [$error], false)}, {prop: "SetsockoptIPMreq", name: "SetsockoptIPMreq", pkg: "", typ: $funcType([$Int, $Int, ptrType$15], [$error], false)}, {prop: "SetsockoptIPv6Mreq", name: "SetsockoptIPv6Mreq", pkg: "", typ: $funcType([$Int, $Int, ptrType$16], [$error], false)}, {prop: "Writev", name: "Writev", pkg: "", typ: $funcType([ptrType$17], [$Int64, $error], false)}]; + pollDesc.init("internal/poll", [{prop: "closing", name: "closing", embedded: false, exported: false, typ: $Bool, tag: ""}]); + TimeoutError.init("", []); + fdMutex.init("internal/poll", [{prop: "state", name: "state", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + FD.init("internal/poll", [{prop: "fdmu", name: "fdmu", embedded: false, exported: false, typ: fdMutex, tag: ""}, {prop: "Sysfd", name: "Sysfd", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "pd", name: "pd", embedded: false, exported: false, typ: pollDesc, tag: ""}, {prop: "iovecs", name: "iovecs", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "csema", name: "csema", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "isBlocking", name: "isBlocking", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "IsStream", name: "IsStream", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "ZeroReadIsEOF", name: "ZeroReadIsEOF", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "isFile", name: "isFile", embedded: false, exported: false, typ: $Bool, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + semWaiters = {}; + $pkg.ErrNetClosing = errors.New("use of closed network connection"); + $pkg.ErrFileClosing = errors.New("use of closed file"); + $pkg.ErrNoDeadline = errors.New("file type does not support deadline"); + $pkg.ErrTimeout = new TimeoutError.ptr(); + $pkg.TestHookDidWritev = (function(wrote) { + var wrote; + }); + tryDupCloexec = 1; + $pkg.Accept4Func = syscall.Accept4; + $pkg.CloseFunc = syscall.Close; + $pkg.AcceptFunc = syscall.Accept; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/syscall/unix"] = (function() { + var $pkg = {}, $init, atomic, syscall, IsNonblock; + atomic = $packages["sync/atomic"]; + syscall = $packages["syscall"]; + IsNonblock = function(fd) { + var _tmp, _tmp$1, err, fd, nonblocking; + nonblocking = false; + err = $ifaceNil; + _tmp = false; + _tmp$1 = $ifaceNil; + nonblocking = _tmp; + err = _tmp$1; + return [nonblocking, err]; + }; + $pkg.IsNonblock = IsNonblock; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = atomic.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/testlog"] = (function() { + var $pkg = {}, $init, atomic, Interface, ptrType, logger, Logger, Open, Stat; + atomic = $packages["sync/atomic"]; + Interface = $pkg.Interface = $newType(8, $kindInterface, "testlog.Interface", true, "internal/testlog", true, null); + ptrType = $ptrType(Interface); + Logger = function() { + var impl; + impl = logger.Load(); + if ($interfaceIsEqual(impl, $ifaceNil)) { + return $ifaceNil; + } + return $assertType(impl, ptrType).$get(); + }; + $pkg.Logger = Logger; + Open = function(name) { + var log, name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + log = Logger(); + /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: + $r = log.Open(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Open }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Open = Open; + Stat = function(name) { + var log, name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + log = Logger(); + /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: + $r = log.Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Stat = Stat; + Interface.init([{prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Getenv", name: "Getenv", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([$String], [], false)}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = atomic.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + logger = new atomic.Value.ptr($ifaceNil); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["os"] = (function() { + var $pkg = {}, $init, errors, js, poll, unix, testlog, io, runtime, sync, atomic, syscall, time, dirInfo, timeout, PathError, SyscallError, LinkError, file, rawConn, File, FileInfo, FileMode, fileStat, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, sliceType$5, ptrType$12, arrayType$1, ptrType$13, funcType$1, ptrType$15, arrayType$6, ptrType$16, funcType$2, funcType$3, ptrType$18, errFinished, lstat, runtime_args, init, runtime_beforeExit, NewSyscallError, IsNotExist, underlyingError, wrapSyscallError, isNotExist, setStickyBit, Open, OpenFile, Chmod, sigpipe, syscallMode, chmod, fixLongPath, NewFile, newFile, epipecheck, openFileNolog, basename, init$1, Exit, newRawConn, Stat, Lstat, fillFileStatFromSys, timespecToTime, statNolog, lstatNolog; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + poll = $packages["internal/poll"]; + unix = $packages["internal/syscall/unix"]; + testlog = $packages["internal/testlog"]; + io = $packages["io"]; + runtime = $packages["runtime"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + dirInfo = $pkg.dirInfo = $newType(0, $kindStruct, "os.dirInfo", true, "os", false, function(buf_, nbuf_, bufp_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = sliceType$2.nil; + this.nbuf = 0; + this.bufp = 0; + return; + } + this.buf = buf_; + this.nbuf = nbuf_; + this.bufp = bufp_; + }); + timeout = $pkg.timeout = $newType(8, $kindInterface, "os.timeout", true, "os", false, null); + PathError = $pkg.PathError = $newType(0, $kindStruct, "os.PathError", true, "os", true, function(Op_, Path_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.Path = ""; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.Path = Path_; + this.Err = Err_; + }); + SyscallError = $pkg.SyscallError = $newType(0, $kindStruct, "os.SyscallError", true, "os", true, function(Syscall_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Syscall = ""; + this.Err = $ifaceNil; + return; + } + this.Syscall = Syscall_; + this.Err = Err_; + }); + LinkError = $pkg.LinkError = $newType(0, $kindStruct, "os.LinkError", true, "os", true, function(Op_, Old_, New_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.Old = ""; + this.New = ""; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.Old = Old_; + this.New = New_; + this.Err = Err_; + }); + file = $pkg.file = $newType(0, $kindStruct, "os.file", true, "os", false, function(pfd_, name_, dirinfo_, nonblock_, stdoutOrErr_) { + this.$val = this; + if (arguments.length === 0) { + this.pfd = new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), 0, new poll.pollDesc.ptr(false), ptrType$12.nil, 0, 0, false, false, false); + this.name = ""; + this.dirinfo = ptrType$1.nil; + this.nonblock = false; + this.stdoutOrErr = false; + return; + } + this.pfd = pfd_; + this.name = name_; + this.dirinfo = dirinfo_; + this.nonblock = nonblock_; + this.stdoutOrErr = stdoutOrErr_; + }); + rawConn = $pkg.rawConn = $newType(0, $kindStruct, "os.rawConn", true, "os", false, function(file_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType.nil; + return; + } + this.file = file_; + }); + File = $pkg.File = $newType(0, $kindStruct, "os.File", true, "os", true, function(file_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType$13.nil; + return; + } + this.file = file_; + }); + FileInfo = $pkg.FileInfo = $newType(8, $kindInterface, "os.FileInfo", true, "os", true, null); + FileMode = $pkg.FileMode = $newType(4, $kindUint32, "os.FileMode", true, "os", true, null); + fileStat = $pkg.fileStat = $newType(0, $kindStruct, "os.fileStat", true, "os", false, function(name_, size_, mode_, modTime_, sys_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.size = new $Int64(0, 0); + this.mode = 0; + this.modTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil); + this.sys = new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero()); + return; + } + this.name = name_; + this.size = size_; + this.mode = mode_; + this.modTime = modTime_; + this.sys = sys_; + }); + sliceType = $sliceType($String); + ptrType = $ptrType(File); + sliceType$1 = $sliceType(FileInfo); + ptrType$1 = $ptrType(dirInfo); + sliceType$2 = $sliceType($Uint8); + ptrType$2 = $ptrType(PathError); + ptrType$3 = $ptrType(LinkError); + ptrType$4 = $ptrType(SyscallError); + sliceType$5 = $sliceType(syscall.Iovec); + ptrType$12 = $ptrType(sliceType$5); + arrayType$1 = $arrayType($Int64, 3); + ptrType$13 = $ptrType(file); + funcType$1 = $funcType([ptrType$13], [$error], false); + ptrType$15 = $ptrType(time.Location); + arrayType$6 = $arrayType($Uint8, 32); + ptrType$16 = $ptrType(fileStat); + funcType$2 = $funcType([$Uintptr], [], false); + funcType$3 = $funcType([$Uintptr], [$Bool], false); + ptrType$18 = $ptrType(rawConn); + runtime_args = function() { + return $pkg.Args; + }; + init = function() { + var argv, i, process; + process = $global.process; + if (!(process === undefined)) { + argv = process.argv; + $pkg.Args = $makeSlice(sliceType, ($parseInt(argv.length) - 1 >> 0)); + i = 0; + while (true) { + if (!(i < ($parseInt(argv.length) - 1 >> 0))) { break; } + ((i < 0 || i >= $pkg.Args.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Args.$array[$pkg.Args.$offset + i] = $internalize(argv[(i + 1 >> 0)], $String)); + i = i + (1) >> 0; + } + } + if ($pkg.Args.$length === 0) { + $pkg.Args = new sliceType(["?"]); + } + }; + runtime_beforeExit = function() { + }; + File.ptr.prototype.Readdir = function(n) { + var _r, f, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType.nil) { + $s = -1; return [sliceType$1.nil, $pkg.ErrInvalid]; + } + _r = f.readdir(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdir }; } $f._r = _r; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Readdir = function(n) { return this.$val.Readdir(n); }; + File.ptr.prototype.Readdirnames = function(n) { + var _r, _tmp, _tmp$1, _tuple, err, f, n, names, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + names = sliceType.nil; + err = $ifaceNil; + f = this; + if (f === ptrType.nil) { + _tmp = sliceType.nil; + _tmp$1 = $pkg.ErrInvalid; + names = _tmp; + err = _tmp$1; + $s = -1; return [names, err]; + } + _r = f.readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + names = _tuple[0]; + err = _tuple[1]; + $s = -1; return [names, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdirnames }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Readdirnames = function(n) { return this.$val.Readdirnames(n); }; + dirInfo.ptr.prototype.close = function() { + var d; + d = this; + }; + dirInfo.prototype.close = function() { return this.$val.close(); }; + File.ptr.prototype.readdirnames = function(n) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, d, err, errno, f, n, names, nb, nc, size, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; d = $f.d; err = $f.err; errno = $f.errno; f = $f.f; n = $f.n; names = $f.names; nb = $f.nb; nc = $f.nc; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + names = sliceType.nil; + err = $ifaceNil; + f = this; + if (f.file.dirinfo === ptrType$1.nil) { + f.file.dirinfo = new dirInfo.ptr(sliceType$2.nil, 0, 0); + f.file.dirinfo.buf = $makeSlice(sliceType$2, 8192); + } + d = f.file.dirinfo; + size = n; + if (size <= 0) { + size = 100; + n = -1; + } + names = $makeSlice(sliceType, 0, size); + /* while (true) { */ case 1: + /* if (!(!((n === 0)))) { break; } */ if(!(!((n === 0)))) { $s = 2; continue; } + /* */ if (d.bufp >= d.nbuf) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (d.bufp >= d.nbuf) { */ case 3: + d.bufp = 0; + errno = $ifaceNil; + _r = f.file.pfd.ReadDirent(d.buf); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + d.nbuf = _tuple[0]; + errno = _tuple[1]; + runtime.KeepAlive(f); + if (!($interfaceIsEqual(errno, $ifaceNil))) { + _tmp = names; + _tmp$1 = wrapSyscallError("readdirent", errno); + names = _tmp; + err = _tmp$1; + $s = -1; return [names, err]; + } + if (d.nbuf <= 0) { + /* break; */ $s = 2; continue; + } + /* } */ case 4: + _tmp$2 = 0; + _tmp$3 = 0; + nb = _tmp$2; + nc = _tmp$3; + _tuple$1 = syscall.ParseDirent($subslice(d.buf, d.bufp, d.nbuf), n, names); + nb = _tuple$1[0]; + nc = _tuple$1[1]; + names = _tuple$1[2]; + d.bufp = d.bufp + (nb) >> 0; + n = n - (nc) >> 0; + /* } */ $s = 1; continue; case 2: + if (n >= 0 && (names.$length === 0)) { + _tmp$4 = names; + _tmp$5 = io.EOF; + names = _tmp$4; + err = _tmp$5; + $s = -1; return [names, err]; + } + _tmp$6 = names; + _tmp$7 = $ifaceNil; + names = _tmp$6; + err = _tmp$7; + $s = -1; return [names, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdirnames }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.d = d; $f.err = err; $f.errno = errno; $f.f = f; $f.n = n; $f.names = names; $f.nb = nb; $f.nc = nc; $f.size = size; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.readdirnames = function(n) { return this.$val.readdirnames(n); }; + PathError.ptr.prototype.Error = function() { + var _r, e, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return e.Op + " " + e.Path + ": " + _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; + }; + PathError.prototype.Error = function() { return this.$val.Error(); }; + PathError.ptr.prototype.Timeout = function() { + var _r, _tuple, _v, e, ok, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, timeout, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $s = -1; return _v; + /* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + PathError.prototype.Timeout = function() { return this.$val.Timeout(); }; + SyscallError.ptr.prototype.Error = function() { + var _r, e, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return e.Syscall + ": " + _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; + }; + SyscallError.prototype.Error = function() { return this.$val.Error(); }; + SyscallError.ptr.prototype.Timeout = function() { + var _r, _tuple, _v, e, ok, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, timeout, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $s = -1; return _v; + /* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + SyscallError.prototype.Timeout = function() { return this.$val.Timeout(); }; + NewSyscallError = function(syscall$1, err) { + var err, syscall$1; + if ($interfaceIsEqual(err, $ifaceNil)) { + return $ifaceNil; + } + return new SyscallError.ptr(syscall$1, err); + }; + $pkg.NewSyscallError = NewSyscallError; + IsNotExist = function(err) { + var err; + return isNotExist(err); + }; + $pkg.IsNotExist = IsNotExist; + underlyingError = function(err) { + var _ref, err, err$1, err$2, err$3; + _ref = err; + if ($assertType(_ref, ptrType$2, true)[1]) { + err$1 = _ref.$val; + return err$1.Err; + } else if ($assertType(_ref, ptrType$3, true)[1]) { + err$2 = _ref.$val; + return err$2.Err; + } else if ($assertType(_ref, ptrType$4, true)[1]) { + err$3 = _ref.$val; + return err$3.Err; + } + return err; + }; + wrapSyscallError = function(name, err) { + var _tuple, err, name, ok; + _tuple = $assertType(err, syscall.Errno, true); + ok = _tuple[1]; + if (ok) { + err = NewSyscallError(name, err); + } + return err; + }; + isNotExist = function(err) { + var err; + err = underlyingError(err); + return $interfaceIsEqual(err, new syscall.Errno(2)) || $interfaceIsEqual(err, $pkg.ErrNotExist); + }; + File.ptr.prototype.Name = function() { + var f; + f = this; + return f.file.name; + }; + File.prototype.Name = function() { return this.$val.Name(); }; + LinkError.ptr.prototype.Error = function() { + var _r, e, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return e.Op + " " + e.Old + " " + e.New + ": " + _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: LinkError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; + }; + LinkError.prototype.Error = function() { return this.$val.Error(); }; + File.ptr.prototype.Read = function(b) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("read"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _r = f.read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + e = _tuple[1]; + _tmp$2 = n; + _tmp$3 = f.wrapErr("read", e); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Read = function(b) { return this.$val.Read(b); }; + File.ptr.prototype.ReadAt = function(b, off) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("read"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp$2 = 0; + _tmp$3 = new PathError.ptr("readat", f.file.name, errors.New("negative offset")); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } + _r = f.pread(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + e = _tuple[1]; + if (!($interfaceIsEqual(e, $ifaceNil))) { + err = f.wrapErr("read", e); + /* break; */ $s = 2; continue; + } + n = n + (m) >> 0; + b = $subslice(b, m); + off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low)); + /* } */ $s = 1; continue; case 2: + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.ReadAt }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); }; + File.ptr.prototype.Write = function(b) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("write"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _r = f.write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + e = _tuple[1]; + if (n < 0) { + n = 0; + } + if (!((n === b.$length))) { + err = io.ErrShortWrite; + } + epipecheck(f, e); + if (!($interfaceIsEqual(e, $ifaceNil))) { + err = f.wrapErr("write", e); + } + _tmp$2 = n; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Write = function(b) { return this.$val.Write(b); }; + File.ptr.prototype.WriteAt = function(b, off) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("write"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp$2 = 0; + _tmp$3 = new PathError.ptr("writeat", f.file.name, errors.New("negative offset")); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } + _r = f.pwrite(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + e = _tuple[1]; + if (!($interfaceIsEqual(e, $ifaceNil))) { + err = f.wrapErr("write", e); + /* break; */ $s = 2; continue; + } + n = n + (m) >> 0; + b = $subslice(b, m); + off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low)); + /* } */ $s = 1; continue; case 2: + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteAt }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.WriteAt = function(b, off) { return this.$val.WriteAt(b, off); }; + File.ptr.prototype.Seek = function(offset, whence) { + var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, err$1, f, offset, r, ret, whence, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; offset = $f.offset; r = $f.r; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + ret = new $Int64(0, 0); + err = $ifaceNil; + f = this; + err$1 = f.checkValid("seek"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = new $Int64(0, 0); + _tmp$1 = err$1; + ret = _tmp; + err = _tmp$1; + $s = -1; return [ret, err]; + } + _r = f.seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + e = _tuple[1]; + if ($interfaceIsEqual(e, $ifaceNil) && !(f.file.dirinfo === ptrType$1.nil) && !((r.$high === 0 && r.$low === 0))) { + e = new syscall.Errno(21); + } + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tmp$2 = new $Int64(0, 0); + _tmp$3 = f.wrapErr("seek", e); + ret = _tmp$2; + err = _tmp$3; + $s = -1; return [ret, err]; + } + _tmp$4 = r; + _tmp$5 = $ifaceNil; + ret = _tmp$4; + err = _tmp$5; + $s = -1; return [ret, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Seek }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.offset = offset; $f.r = r; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); }; + File.ptr.prototype.WriteString = function(s) { + var _r, _tuple, err, f, n, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r = f.Write((new sliceType$2($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteString }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.WriteString = function(s) { return this.$val.WriteString(s); }; + setStickyBit = function(name) { + var _arg, _arg$1, _r, _r$1, _r$2, _tuple, err, fi, name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; fi = $f.fi; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + fi = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _arg = name; + _r$1 = fi.Mode(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = (_r$1 | 1048576) >>> 0; + _r$2 = Chmod(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: setStickyBit }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.fi = fi; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + Open = function(name) { + var _r, name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = OpenFile(name, 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Open }; } $f._r = _r; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Open = Open; + OpenFile = function(name, flag, perm) { + var _r, flag, name, perm, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; flag = $f.flag; name = $f.name; perm = $f.perm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = testlog.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = openFileNolog(name, flag, perm); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: OpenFile }; } $f._r = _r; $f.flag = flag; $f.name = name; $f.perm = perm; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.OpenFile = OpenFile; + File.ptr.prototype.wrapErr = function(op, err) { + var err, f, op; + f = this; + if ($interfaceIsEqual(err, $ifaceNil) || $interfaceIsEqual(err, io.EOF)) { + return err; + } + if ($interfaceIsEqual(err, poll.ErrFileClosing)) { + err = $pkg.ErrClosed; + } + return new PathError.ptr(op, f.file.name, err); + }; + File.prototype.wrapErr = function(op, err) { return this.$val.wrapErr(op, err); }; + Chmod = function(name, mode) { + var mode, name; + return chmod(name, mode); + }; + $pkg.Chmod = Chmod; + File.ptr.prototype.Chmod = function(mode) { + var _r, f, mode, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; mode = $f.mode; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + _r = f.chmod(mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chmod }; } $f._r = _r; $f.f = f; $f.mode = mode; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Chmod = function(mode) { return this.$val.Chmod(mode); }; + File.ptr.prototype.SetDeadline = function(t) { + var f, t; + f = this; + return f.setDeadline($clone(t, time.Time)); + }; + File.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; + File.ptr.prototype.SetReadDeadline = function(t) { + var f, t; + f = this; + return f.setReadDeadline($clone(t, time.Time)); + }; + File.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; + File.ptr.prototype.SetWriteDeadline = function(t) { + var f, t; + f = this; + return f.setWriteDeadline($clone(t, time.Time)); + }; + File.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; + File.ptr.prototype.SyscallConn = function() { + var _returncast, err, f; + f = this; + err = f.checkValid("SyscallConn"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [$ifaceNil, err]; + } + _returncast = newRawConn(f); + return [_returncast[0], _returncast[1]]; + }; + File.prototype.SyscallConn = function() { return this.$val.SyscallConn(); }; + sigpipe = function() { + $throwRuntimeError("native function not implemented: os.sigpipe"); + }; + syscallMode = function(i) { + var i, o; + o = 0; + o = (o | (((new FileMode(i).Perm() >>> 0)))) >>> 0; + if (!((((i & 8388608) >>> 0) === 0))) { + o = (o | (2048)) >>> 0; + } + if (!((((i & 4194304) >>> 0) === 0))) { + o = (o | (1024)) >>> 0; + } + if (!((((i & 1048576) >>> 0) === 0))) { + o = (o | (512)) >>> 0; + } + return o; + }; + chmod = function(name, mode) { + var e, mode, name; + e = syscall.Chmod(fixLongPath(name), syscallMode(mode)); + if (!($interfaceIsEqual(e, $ifaceNil))) { + return new PathError.ptr("chmod", name, e); + } + return $ifaceNil; + }; + File.ptr.prototype.chmod = function(mode) { + var _r, e, err, f, mode, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; mode = $f.mode; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("chmod"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = f.file.pfd.Fchmod(syscallMode(mode)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("chmod", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.chmod }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.mode = mode; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.chmod = function(mode) { return this.$val.chmod(mode); }; + File.ptr.prototype.Chown = function(uid, gid) { + var _r, e, err, f, gid, uid, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; gid = $f.gid; uid = $f.uid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("chown"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = f.file.pfd.Fchown(uid, gid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("chown", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chown }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.gid = gid; $f.uid = uid; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Chown = function(uid, gid) { return this.$val.Chown(uid, gid); }; + File.ptr.prototype.Truncate = function(size) { + var _r, e, err, f, size, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("truncate"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = f.file.pfd.Ftruncate(size); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("truncate", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Truncate }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.size = size; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Truncate = function(size) { return this.$val.Truncate(size); }; + File.ptr.prototype.Sync = function() { + var _r, e, err, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("sync"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = f.file.pfd.Fsync(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("sync", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Sync }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Sync = function() { return this.$val.Sync(); }; + File.ptr.prototype.Chdir = function() { + var _r, e, err, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("chdir"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = f.file.pfd.Fchdir(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("chdir", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chdir }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Chdir = function() { return this.$val.Chdir(); }; + File.ptr.prototype.setDeadline = function(t) { + var err, f, t; + f = this; + err = f.checkValid("SetDeadline"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + return f.file.pfd.SetDeadline($clone(t, time.Time)); + }; + File.prototype.setDeadline = function(t) { return this.$val.setDeadline(t); }; + File.ptr.prototype.setReadDeadline = function(t) { + var err, f, t; + f = this; + err = f.checkValid("SetReadDeadline"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + return f.file.pfd.SetReadDeadline($clone(t, time.Time)); + }; + File.prototype.setReadDeadline = function(t) { return this.$val.setReadDeadline(t); }; + File.ptr.prototype.setWriteDeadline = function(t) { + var err, f, t; + f = this; + err = f.checkValid("SetWriteDeadline"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + return f.file.pfd.SetWriteDeadline($clone(t, time.Time)); + }; + File.prototype.setWriteDeadline = function(t) { return this.$val.setWriteDeadline(t); }; + File.ptr.prototype.checkValid = function(op) { + var f, op; + f = this; + if (f === ptrType.nil) { + return $pkg.ErrInvalid; + } + return $ifaceNil; + }; + File.prototype.checkValid = function(op) { return this.$val.checkValid(op); }; + fixLongPath = function(path) { + var path; + return path; + }; + File.ptr.prototype.Fd = function() { + var _r, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType.nil) { + $s = -1; return 4294967295; + } + /* */ if (f.file.nonblock) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.file.nonblock) { */ case 1: + _r = f.file.pfd.SetBlocking(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 2: + $s = -1; return ((f.file.pfd.Sysfd >>> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Fd }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Fd = function() { return this.$val.Fd(); }; + NewFile = function(fd, name) { + var _tuple, err, fd, kind, name, nb; + kind = 0; + _tuple = unix.IsNonblock(((fd >> 0))); + nb = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && nb) { + kind = 3; + } + return newFile(fd, name, kind); + }; + $pkg.NewFile = NewFile; + newFile = function(fd, name, kind) { + var _1, err, err$1, err$2, err$3, f, fd, fdi, kind, name, pollable, st; + fdi = ((fd >> 0)); + if (fdi < 0) { + return ptrType.nil; + } + f = new File.ptr(new file.ptr(new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), fdi, new poll.pollDesc.ptr(false), ptrType$12.nil, 0, 0, true, true, false), name, ptrType$1.nil, false, (fdi === 1) || (fdi === 2))); + pollable = (kind === 1) || (kind === 2) || (kind === 3); + if (kind === 1) { + st = new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero()); + _1 = "linux"; + if (_1 === ("freebsd")) { + pollable = false; + } else if (_1 === ("dragonfly") || _1 === ("netbsd") || _1 === ("openbsd")) { + err = syscall.Fstat(fdi, st); + if ($interfaceIsEqual(err, $ifaceNil) && (((st.Mode & 61440) >>> 0) === 32768)) { + pollable = false; + } + } else if (_1 === ("darwin")) { + err$1 = syscall.Fstat(fdi, st); + if ($interfaceIsEqual(err$1, $ifaceNil) && ((((st.Mode & 61440) >>> 0) === 4096) || (((st.Mode & 61440) >>> 0) === 32768))) { + pollable = false; + } + } + } + err$2 = f.file.pfd.Init("file", pollable); + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + } else if (pollable) { + err$3 = syscall.SetNonblock(fdi, true); + if ($interfaceIsEqual(err$3, $ifaceNil)) { + f.file.nonblock = true; + } + } + runtime.SetFinalizer(f.file, new funcType$1($methodExpr(ptrType$13, "close"))); + return f; + }; + epipecheck = function(file$1, e) { + var e, file$1; + if ($interfaceIsEqual(e, new syscall.Errno(32)) && file$1.file.stdoutOrErr) { + sigpipe(); + } + }; + openFileNolog = function(name, flag, perm) { + var _r, _r$1, _tuple, _tuple$1, e, err, flag, name, perm, r, setSticky, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; err = $f.err; flag = $f.flag; name = $f.name; perm = $f.perm; r = $f.r; setSticky = $f.setSticky; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + setSticky = false; + /* */ if (false && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { */ case 1: + _r = Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + if (IsNotExist(err)) { + setSticky = true; + } + /* } */ case 2: + r = 0; + /* while (true) { */ case 4: + e = $ifaceNil; + _tuple$1 = syscall.Open(name, flag | 524288, syscallMode(perm)); + r = _tuple$1[0]; + e = _tuple$1[1]; + if ($interfaceIsEqual(e, $ifaceNil)) { + /* break; */ $s = 5; continue; + } + if (false && $interfaceIsEqual(e, new syscall.Errno(4))) { + /* continue; */ $s = 4; continue; + } + $s = -1; return [ptrType.nil, new PathError.ptr("open", name, e)]; + /* } */ $s = 4; continue; case 5: + /* */ if (setSticky) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (setSticky) { */ case 6: + _r$1 = setStickyBit(name); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 7: + if (false) { + syscall.CloseOnExec(r); + } + $s = -1; return [newFile(((r >>> 0)), name, 1), $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: openFileNolog }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.err = err; $f.flag = flag; $f.name = name; $f.perm = perm; $f.r = r; $f.setSticky = setSticky; $f.$s = $s; $f.$r = $r; return $f; + }; + File.ptr.prototype.Close = function() { + var _r, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType.nil) { + $s = -1; return $pkg.ErrInvalid; + } + _r = f.file.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Close }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Close = function() { return this.$val.Close(); }; + file.ptr.prototype.close = function() { + var _r, e, err, file$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; file$1 = $f.file$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + file$1 = this; + if (file$1 === ptrType$13.nil) { + $s = -1; return new syscall.Errno(22); + } + if (!(file$1.dirinfo === ptrType$1.nil)) { + file$1.dirinfo.close(); + } + err = $ifaceNil; + _r = file$1.pfd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + if (!($interfaceIsEqual(e, $ifaceNil))) { + if ($interfaceIsEqual(e, poll.ErrFileClosing)) { + e = $pkg.ErrClosed; + } + err = new PathError.ptr("close", file$1.name, e); + } + runtime.SetFinalizer(file$1, $ifaceNil); + $s = -1; return err; + /* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.close }; } $f._r = _r; $f.e = e; $f.err = err; $f.file$1 = file$1; $f.$s = $s; $f.$r = $r; return $f; + }; + file.prototype.close = function() { return this.$val.close(); }; + File.ptr.prototype.read = function(b) { + var _r, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r = f.file.pfd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.read = function(b) { return this.$val.read(b); }; + File.ptr.prototype.pread = function(b, off) { + var _r, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r = f.file.pfd.Pread(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.pread }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.off = off; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.pread = function(b, off) { return this.$val.pread(b, off); }; + File.ptr.prototype.write = function(b) { + var _r, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r = f.file.pfd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.write = function(b) { return this.$val.write(b); }; + File.ptr.prototype.pwrite = function(b, off) { + var _r, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r = f.file.pfd.Pwrite(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.pwrite }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.off = off; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.pwrite = function(b, off) { return this.$val.pwrite(b, off); }; + File.ptr.prototype.seek = function(offset, whence) { + var _r, _tmp, _tmp$1, _tuple, err, f, offset, ret, whence, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; offset = $f.offset; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + ret = new $Int64(0, 0); + err = $ifaceNil; + f = this; + _r = f.file.pfd.Seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ret = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = ret; + _tmp$1 = err; + ret = _tmp; + err = _tmp$1; + $s = -1; return [ret, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.seek }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.offset = offset; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.seek = function(offset, whence) { return this.$val.seek(offset, whence); }; + File.ptr.prototype.readdir = function(n) { + var _i, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, dirname, err, f, fi, filename, fip, lerr, n, names, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dirname = $f.dirname; err = $f.err; f = $f.f; fi = $f.fi; filename = $f.filename; fip = $f.fip; lerr = $f.lerr; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fi = sliceType$1.nil; + err = $ifaceNil; + f = this; + dirname = f.file.name; + if (dirname === "") { + dirname = "."; + } + _r = f.Readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + names = _tuple[0]; + err = _tuple[1]; + fi = $makeSlice(sliceType$1, 0, names.$length); + _ref = names; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + filename = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = lstat(dirname + "/" + filename); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + fip = _tuple$1[0]; + lerr = _tuple$1[1]; + if (IsNotExist(lerr)) { + _i++; + /* continue; */ $s = 2; continue; + } + if (!($interfaceIsEqual(lerr, $ifaceNil))) { + _tmp = fi; + _tmp$1 = lerr; + fi = _tmp; + err = _tmp$1; + $s = -1; return [fi, err]; + } + fi = $append(fi, fip); + _i++; + /* } */ $s = 2; continue; case 3: + if ((fi.$length === 0) && $interfaceIsEqual(err, $ifaceNil) && n > 0) { + err = io.EOF; + } + _tmp$2 = fi; + _tmp$3 = err; + fi = _tmp$2; + err = _tmp$3; + $s = -1; return [fi, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdir }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dirname = dirname; $f.err = err; $f.f = f; $f.fi = fi; $f.filename = filename; $f.fip = fip; $f.lerr = lerr; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.readdir = function(n) { return this.$val.readdir(n); }; + basename = function(name) { + var i, name; + i = name.length - 1 >> 0; + while (true) { + if (!(i > 0 && (name.charCodeAt(i) === 47))) { break; } + name = $substring(name, 0, i); + i = i - (1) >> 0; + } + i = i - (1) >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (name.charCodeAt(i) === 47) { + name = $substring(name, (i + 1 >> 0)); + break; + } + i = i - (1) >> 0; + } + return name; + }; + init$1 = function() { + if (false) { + return; + } + $pkg.Args = runtime_args(); + }; + Exit = function(code) { + var code; + if (code === 0) { + runtime_beforeExit(); + } + syscall.Exit(code); + }; + $pkg.Exit = Exit; + rawConn.ptr.prototype.Control = function(f) { + var _r, c, err, err$1, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; err$1 = $f.err$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + err = c.file.checkValid("SyscallConn.Control"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = c.file.file.pfd.RawControl(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err$1 = _r; + runtime.KeepAlive(c.file); + $s = -1; return err$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Control }; } $f._r = _r; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + rawConn.prototype.Control = function(f) { return this.$val.Control(f); }; + rawConn.ptr.prototype.Read = function(f) { + var _r, c, err, err$1, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; err$1 = $f.err$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + err = c.file.checkValid("SyscallConn.Read"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = c.file.file.pfd.RawRead(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err$1 = _r; + runtime.KeepAlive(c.file); + $s = -1; return err$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Read }; } $f._r = _r; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + rawConn.prototype.Read = function(f) { return this.$val.Read(f); }; + rawConn.ptr.prototype.Write = function(f) { + var _r, c, err, err$1, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; err$1 = $f.err$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + err = c.file.checkValid("SyscallConn.Write"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = c.file.file.pfd.RawWrite(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err$1 = _r; + runtime.KeepAlive(c.file); + $s = -1; return err$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Write }; } $f._r = _r; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + rawConn.prototype.Write = function(f) { return this.$val.Write(f); }; + newRawConn = function(file$1) { + var file$1; + return [new rawConn.ptr(file$1), $ifaceNil]; + }; + Stat = function(name) { + var name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return statNolog(name); + /* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Stat = Stat; + Lstat = function(name) { + var name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return lstatNolog(name); + /* */ } return; } if ($f === undefined) { $f = { $blk: Lstat }; } $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Lstat = Lstat; + fillFileStatFromSys = function(fs, name) { + var _1, fs, name; + fs.name = basename(name); + fs.size = fs.sys.Size; + time.Time.copy(fs.modTime, timespecToTime($clone(fs.sys.Mtim, syscall.Timespec))); + fs.mode = ((((fs.sys.Mode & 511) >>> 0) >>> 0)); + _1 = (fs.sys.Mode & 61440) >>> 0; + if (_1 === (24576)) { + fs.mode = (fs.mode | (67108864)) >>> 0; + } else if (_1 === (8192)) { + fs.mode = (fs.mode | (69206016)) >>> 0; + } else if (_1 === (16384)) { + fs.mode = (fs.mode | (2147483648)) >>> 0; + } else if (_1 === (4096)) { + fs.mode = (fs.mode | (33554432)) >>> 0; + } else if (_1 === (40960)) { + fs.mode = (fs.mode | (134217728)) >>> 0; + } else if (_1 === (32768)) { + } else if (_1 === (49152)) { + fs.mode = (fs.mode | (16777216)) >>> 0; + } + if (!((((fs.sys.Mode & 1024) >>> 0) === 0))) { + fs.mode = (fs.mode | (4194304)) >>> 0; + } + if (!((((fs.sys.Mode & 2048) >>> 0) === 0))) { + fs.mode = (fs.mode | (8388608)) >>> 0; + } + if (!((((fs.sys.Mode & 512) >>> 0) === 0))) { + fs.mode = (fs.mode | (1048576)) >>> 0; + } + }; + timespecToTime = function(ts) { + var ts; + return time.Unix((ts.Sec), (ts.Nsec)); + }; + File.ptr.prototype.Stat = function() { + var _r, err, f, fs, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; f = $f.f; fs = $f.fs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fs = [fs]; + f = this; + if (f === ptrType.nil) { + $s = -1; return [$ifaceNil, $pkg.ErrInvalid]; + } + fs[0] = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero())); + _r = f.file.pfd.Fstat(fs[0].sys); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, new PathError.ptr("stat", f.file.name, err)]; + } + fillFileStatFromSys(fs[0], f.file.name); + $s = -1; return [fs[0], $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Stat }; } $f._r = _r; $f.err = err; $f.f = f; $f.fs = fs; $f.$s = $s; $f.$r = $r; return $f; + }; + File.prototype.Stat = function() { return this.$val.Stat(); }; + statNolog = function(name) { + var err, fs, name; + fs = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero())); + err = syscall.Stat(name, fs.sys); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [$ifaceNil, new PathError.ptr("stat", name, err)]; + } + fillFileStatFromSys(fs, name); + return [fs, $ifaceNil]; + }; + lstatNolog = function(name) { + var err, fs, name; + fs = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero())); + err = syscall.Lstat(name, fs.sys); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [$ifaceNil, new PathError.ptr("lstat", name, err)]; + } + fillFileStatFromSys(fs, name); + return [fs, $ifaceNil]; + }; + FileMode.prototype.String = function() { + var _i, _i$1, _ref, _ref$1, _rune, _rune$1, buf, c, c$1, i, i$1, m, w, y, y$1; + m = this.$val; + buf = arrayType$6.zero(); + w = 0; + _ref = "dalTLDpSugct?"; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if (!((((m & (((y = (((31 - i >> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c << 24 >>> 24))); + w = w + (1) >> 0; + } + _i += _rune[1]; + } + if (w === 0) { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); + w = w + (1) >> 0; + } + _ref$1 = "rwxrwxrwx"; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.length)) { break; } + _rune$1 = $decodeRune(_ref$1, _i$1); + i$1 = _i$1; + c$1 = _rune$1[0]; + if (!((((m & (((y$1 = (((8 - i$1 >> 0) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0) === 0))) { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c$1 << 24 >>> 24))); + } else { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); + } + w = w + (1) >> 0; + _i$1 += _rune$1[1]; + } + return ($bytesToString($subslice(new sliceType$2(buf), 0, w))); + }; + $ptrType(FileMode).prototype.String = function() { return new FileMode(this.$get()).String(); }; + FileMode.prototype.IsDir = function() { + var m; + m = this.$val; + return !((((m & 2147483648) >>> 0) === 0)); + }; + $ptrType(FileMode).prototype.IsDir = function() { return new FileMode(this.$get()).IsDir(); }; + FileMode.prototype.IsRegular = function() { + var m; + m = this.$val; + return ((m & 2401763328) >>> 0) === 0; + }; + $ptrType(FileMode).prototype.IsRegular = function() { return new FileMode(this.$get()).IsRegular(); }; + FileMode.prototype.Perm = function() { + var m; + m = this.$val; + return (m & 511) >>> 0; + }; + $ptrType(FileMode).prototype.Perm = function() { return new FileMode(this.$get()).Perm(); }; + fileStat.ptr.prototype.Name = function() { + var fs; + fs = this; + return fs.name; + }; + fileStat.prototype.Name = function() { return this.$val.Name(); }; + fileStat.ptr.prototype.IsDir = function() { + var fs; + fs = this; + return new FileMode(fs.Mode()).IsDir(); + }; + fileStat.prototype.IsDir = function() { return this.$val.IsDir(); }; + fileStat.ptr.prototype.Size = function() { + var fs; + fs = this; + return fs.size; + }; + fileStat.prototype.Size = function() { return this.$val.Size(); }; + fileStat.ptr.prototype.Mode = function() { + var fs; + fs = this; + return fs.mode; + }; + fileStat.prototype.Mode = function() { return this.$val.Mode(); }; + fileStat.ptr.prototype.ModTime = function() { + var fs; + fs = this; + return fs.modTime; + }; + fileStat.prototype.ModTime = function() { return this.$val.ModTime(); }; + fileStat.ptr.prototype.Sys = function() { + var fs; + fs = this; + return fs.sys; + }; + fileStat.prototype.Sys = function() { return this.$val.Sys(); }; + ptrType$1.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [], false)}]; + ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$13.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [$error], false)}]; + ptrType$18.methods = [{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType$2], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$3], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$3], [$error], false)}]; + ptrType.methods = [{prop: "Readdir", name: "Readdir", pkg: "", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Readdirnames", name: "Readdirnames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "readdirnames", name: "readdirnames", pkg: "os", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "wrapErr", name: "wrapErr", pkg: "os", typ: $funcType([$String, $error], [$error], false)}, {prop: "Chmod", name: "Chmod", pkg: "", typ: $funcType([FileMode], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "chmod", name: "chmod", pkg: "os", typ: $funcType([FileMode], [$error], false)}, {prop: "Chown", name: "Chown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Sync", name: "Sync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "setDeadline", name: "setDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setReadDeadline", name: "setReadDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setWriteDeadline", name: "setWriteDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "checkValid", name: "checkValid", pkg: "os", typ: $funcType([$String], [$error], false)}, {prop: "Fd", name: "Fd", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "seek", name: "seek", pkg: "os", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "readdir", name: "readdir", pkg: "os", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [FileInfo, $error], false)}]; + FileMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsRegular", name: "IsRegular", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([], [FileMode], false)}]; + ptrType$16.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]; + dirInfo.init("os", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "nbuf", name: "nbuf", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "bufp", name: "bufp", embedded: false, exported: false, typ: $Int, tag: ""}]); + timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); + PathError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + SyscallError.init("", [{prop: "Syscall", name: "Syscall", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + LinkError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Old", name: "Old", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + file.init("os", [{prop: "pfd", name: "pfd", embedded: false, exported: false, typ: poll.FD, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "nonblock", name: "nonblock", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stdoutOrErr", name: "stdoutOrErr", embedded: false, exported: false, typ: $Bool, tag: ""}]); + rawConn.init("os", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType, tag: ""}]); + File.init("os", [{prop: "file", name: "file", embedded: true, exported: false, typ: ptrType$13, tag: ""}]); + FileInfo.init([{prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]); + fileStat.init("os", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: FileMode, tag: ""}, {prop: "modTime", name: "modTime", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "sys", name: "sys", embedded: false, exported: false, typ: syscall.Stat_t, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = poll.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unix.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = testlog.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.Args = sliceType.nil; + $pkg.ErrInvalid = errors.New("invalid argument"); + $pkg.ErrPermission = errors.New("permission denied"); + $pkg.ErrExist = errors.New("file already exists"); + $pkg.ErrNotExist = errors.New("file does not exist"); + $pkg.ErrClosed = errors.New("file already closed"); + errFinished = errors.New("os: process already finished"); + $pkg.Stdin = NewFile(((syscall.Stdin >>> 0)), "/dev/stdin"); + $pkg.Stdout = NewFile(((syscall.Stdout >>> 0)), "/dev/stdout"); + $pkg.Stderr = NewFile(((syscall.Stderr >>> 0)), "/dev/stderr"); + lstat = Lstat; + init(); + init$1(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["fmt"] = (function() { + var $pkg = {}, $init, errors, fmtsort, io, math, os, reflect, strconv, sync, utf8, fmtFlags, fmt, State, Formatter, Stringer, GoStringer, buffer, pp, scanError, ss, ssave, sliceType, ptrType, ptrType$1, arrayType, arrayType$1, sliceType$1, sliceType$2, arrayType$2, ptrType$2, ptrType$5, ptrType$25, funcType, ppFree, space, ssFree, complexError, boolError, newPrinter, Sprintf, Errorf, Sprint, Fprintln, Println, Sprintln, getField, tooLarge, parsenum, intFromArg, parseArgNumber, isSpace, notSpace, indexRune; + errors = $packages["errors"]; + fmtsort = $packages["internal/fmtsort"]; + io = $packages["io"]; + math = $packages["math"]; + os = $packages["os"]; + reflect = $packages["reflect"]; + strconv = $packages["strconv"]; + sync = $packages["sync"]; + utf8 = $packages["unicode/utf8"]; + fmtFlags = $pkg.fmtFlags = $newType(0, $kindStruct, "fmt.fmtFlags", true, "fmt", false, function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, zero_, plusV_, sharpV_) { + this.$val = this; + if (arguments.length === 0) { + this.widPresent = false; + this.precPresent = false; + this.minus = false; + this.plus = false; + this.sharp = false; + this.space = false; + this.zero = false; + this.plusV = false; + this.sharpV = false; + return; + } + this.widPresent = widPresent_; + this.precPresent = precPresent_; + this.minus = minus_; + this.plus = plus_; + this.sharp = sharp_; + this.space = space_; + this.zero = zero_; + this.plusV = plusV_; + this.sharpV = sharpV_; + }); + fmt = $pkg.fmt = $newType(0, $kindStruct, "fmt.fmt", true, "fmt", false, function(buf_, fmtFlags_, wid_, prec_, intbuf_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = ptrType$1.nil; + this.fmtFlags = new fmtFlags.ptr(false, false, false, false, false, false, false, false, false); + this.wid = 0; + this.prec = 0; + this.intbuf = arrayType.zero(); + return; + } + this.buf = buf_; + this.fmtFlags = fmtFlags_; + this.wid = wid_; + this.prec = prec_; + this.intbuf = intbuf_; + }); + State = $pkg.State = $newType(8, $kindInterface, "fmt.State", true, "fmt", true, null); + Formatter = $pkg.Formatter = $newType(8, $kindInterface, "fmt.Formatter", true, "fmt", true, null); + Stringer = $pkg.Stringer = $newType(8, $kindInterface, "fmt.Stringer", true, "fmt", true, null); + GoStringer = $pkg.GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", true, "fmt", true, null); + buffer = $pkg.buffer = $newType(12, $kindSlice, "fmt.buffer", true, "fmt", false, null); + pp = $pkg.pp = $newType(0, $kindStruct, "fmt.pp", true, "fmt", false, function(buf_, arg_, value_, fmt_, reordered_, goodArgNum_, panicking_, erroring_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = buffer.nil; + this.arg = $ifaceNil; + this.value = new reflect.Value.ptr(ptrType.nil, 0, 0); + this.fmt = new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero()); + this.reordered = false; + this.goodArgNum = false; + this.panicking = false; + this.erroring = false; + return; + } + this.buf = buf_; + this.arg = arg_; + this.value = value_; + this.fmt = fmt_; + this.reordered = reordered_; + this.goodArgNum = goodArgNum_; + this.panicking = panicking_; + this.erroring = erroring_; + }); + scanError = $pkg.scanError = $newType(0, $kindStruct, "fmt.scanError", true, "fmt", false, function(err_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + return; + } + this.err = err_; + }); + ss = $pkg.ss = $newType(0, $kindStruct, "fmt.ss", true, "fmt", false, function(rs_, buf_, count_, atEOF_, ssave_) { + this.$val = this; + if (arguments.length === 0) { + this.rs = $ifaceNil; + this.buf = buffer.nil; + this.count = 0; + this.atEOF = false; + this.ssave = new ssave.ptr(false, false, false, 0, 0, 0); + return; + } + this.rs = rs_; + this.buf = buf_; + this.count = count_; + this.atEOF = atEOF_; + this.ssave = ssave_; + }); + ssave = $pkg.ssave = $newType(0, $kindStruct, "fmt.ssave", true, "fmt", false, function(validSave_, nlIsEnd_, nlIsSpace_, argLimit_, limit_, maxWid_) { + this.$val = this; + if (arguments.length === 0) { + this.validSave = false; + this.nlIsEnd = false; + this.nlIsSpace = false; + this.argLimit = 0; + this.limit = 0; + this.maxWid = 0; + return; + } + this.validSave = validSave_; + this.nlIsEnd = nlIsEnd_; + this.nlIsSpace = nlIsSpace_; + this.argLimit = argLimit_; + this.limit = limit_; + this.maxWid = maxWid_; + }); + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(reflect.rtype); + ptrType$1 = $ptrType(buffer); + arrayType = $arrayType($Uint8, 68); + arrayType$1 = $arrayType($Uint16, 2); + sliceType$1 = $sliceType(arrayType$1); + sliceType$2 = $sliceType($Uint8); + arrayType$2 = $arrayType($Uint8, 5); + ptrType$2 = $ptrType(pp); + ptrType$5 = $ptrType(ss); + ptrType$25 = $ptrType(fmt); + funcType = $funcType([$Int32], [$Bool], false); + fmt.ptr.prototype.clearflags = function() { + var f; + f = this; + fmtFlags.copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false)); + }; + fmt.prototype.clearflags = function() { return this.$val.clearflags(); }; + fmt.ptr.prototype.init = function(buf) { + var buf, f; + f = this; + f.buf = buf; + f.clearflags(); + }; + fmt.prototype.init = function(buf) { return this.$val.init(buf); }; + fmt.ptr.prototype.writePadding = function(n) { + var _i, _ref, buf, f, i, n, newLen, oldLen, padByte, padding; + f = this; + if (n <= 0) { + return; + } + buf = f.buf.$get(); + oldLen = buf.$length; + newLen = oldLen + n >> 0; + if (newLen > buf.$capacity) { + buf = $makeSlice(buffer, (($imul(buf.$capacity, 2)) + n >> 0)); + $copySlice(buf, f.buf.$get()); + } + padByte = 32; + if (f.fmtFlags.zero) { + padByte = 48; + } + padding = $subslice(buf, oldLen, newLen); + _ref = padding; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= padding.$length) ? ($throwRuntimeError("index out of range"), undefined) : padding.$array[padding.$offset + i] = padByte); + _i++; + } + f.buf.$set($subslice(buf, 0, newLen)); + }; + fmt.prototype.writePadding = function(n) { return this.$val.writePadding(n); }; + fmt.ptr.prototype.pad = function(b) { + var b, f, width; + f = this; + if (!f.fmtFlags.widPresent || (f.wid === 0)) { + f.buf.Write(b); + return; + } + width = f.wid - utf8.RuneCount(b) >> 0; + if (!f.fmtFlags.minus) { + f.writePadding(width); + f.buf.Write(b); + } else { + f.buf.Write(b); + f.writePadding(width); + } + }; + fmt.prototype.pad = function(b) { return this.$val.pad(b); }; + fmt.ptr.prototype.padString = function(s) { + var f, s, width; + f = this; + if (!f.fmtFlags.widPresent || (f.wid === 0)) { + f.buf.WriteString(s); + return; + } + width = f.wid - utf8.RuneCountInString(s) >> 0; + if (!f.fmtFlags.minus) { + f.writePadding(width); + f.buf.WriteString(s); + } else { + f.buf.WriteString(s); + f.writePadding(width); + } + }; + fmt.prototype.padString = function(s) { return this.$val.padString(s); }; + fmt.ptr.prototype.fmtBoolean = function(v) { + var f, v; + f = this; + if (v) { + f.padString("true"); + } else { + f.padString("false"); + } + }; + fmt.prototype.fmtBoolean = function(v) { return this.$val.fmtBoolean(v); }; + fmt.ptr.prototype.fmtUnicode = function(u) { + var buf, f, i, oldZero, prec, u, width; + f = this; + buf = $subslice(new sliceType$2(f.intbuf), 0); + prec = 4; + if (f.fmtFlags.precPresent && f.prec > 4) { + prec = f.prec; + width = (((2 + prec >> 0) + 2 >> 0) + 4 >> 0) + 1 >> 0; + if (width > buf.$length) { + buf = $makeSlice(sliceType$2, width); + } + } + i = buf.$length; + if (f.fmtFlags.sharp && (u.$high < 0 || (u.$high === 0 && u.$low <= 1114111)) && strconv.IsPrint(((u.$low >> 0)))) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39); + i = i - (utf8.RuneLen(((u.$low >> 0)))) >> 0; + utf8.EncodeRune($subslice(buf, i), ((u.$low >> 0))); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32); + } + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0)))); + prec = prec - (1) >> 0; + u = $shiftRightUint64(u, (4)); + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(u))); + prec = prec - (1) >> 0; + while (true) { + if (!(prec > 0)) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + prec = prec - (1) >> 0; + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 85); + oldZero = f.fmtFlags.zero; + f.fmtFlags.zero = false; + f.pad($subslice(buf, i)); + f.fmtFlags.zero = oldZero; + }; + fmt.prototype.fmtUnicode = function(u) { return this.$val.fmtUnicode(u); }; + fmt.ptr.prototype.fmtInteger = function(u, base, isSigned, digits) { + var _1, _2, base, buf, digits, f, i, isSigned, negative, next, oldZero, oldZero$1, prec, u, width, x, x$1, x$2, x$3, x$4; + f = this; + negative = isSigned && (x = (new $Int64(u.$high, u.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0))); + if (negative) { + u = new $Uint64(-u.$high, -u.$low); + } + buf = $subslice(new sliceType$2(f.intbuf), 0); + if (f.fmtFlags.widPresent || f.fmtFlags.precPresent) { + width = (3 + f.wid >> 0) + f.prec >> 0; + if (width > buf.$length) { + buf = $makeSlice(sliceType$2, width); + } + } + prec = 0; + if (f.fmtFlags.precPresent) { + prec = f.prec; + if ((prec === 0) && (u.$high === 0 && u.$low === 0)) { + oldZero = f.fmtFlags.zero; + f.fmtFlags.zero = false; + f.writePadding(f.wid); + f.fmtFlags.zero = oldZero; + return; + } + } else if (f.fmtFlags.zero && f.fmtFlags.widPresent) { + prec = f.wid; + if (negative || f.fmtFlags.plus || f.fmtFlags.space) { + prec = prec - (1) >> 0; + } + } + i = buf.$length; + _1 = base; + if (_1 === (10)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 10)))) { break; } + i = i - (1) >> 0; + next = $div64(u, new $Uint64(0, 10), false); + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$1 = new $Uint64(0 + u.$high, 48 + u.$low), x$2 = $mul64(next, new $Uint64(0, 10)), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)).$low << 24 >>> 24))); + u = next; + } + } else if (_1 === (16)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0)))); + u = $shiftRightUint64(u, (4)); + } + } else if (_1 === (8)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 8)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$3 = new $Uint64(u.$high & 0, (u.$low & 7) >>> 0), new $Uint64(0 + x$3.$high, 48 + x$3.$low)).$low << 24 >>> 24))); + u = $shiftRightUint64(u, (3)); + } + } else if (_1 === (2)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 2)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$4 = new $Uint64(u.$high & 0, (u.$low & 1) >>> 0), new $Uint64(0 + x$4.$high, 48 + x$4.$low)).$low << 24 >>> 24))); + u = $shiftRightUint64(u, (1)); + } + } else { + $panic(new $String("fmt: unknown base; can't happen")); + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(u))); + while (true) { + if (!(i > 0 && prec > (buf.$length - i >> 0))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + if (f.fmtFlags.sharp) { + _2 = base; + if (_2 === (8)) { + if (!((((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 48))) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + } else if (_2 === (16)) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt(16)); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + } + if (negative) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 45); + } else if (f.fmtFlags.plus) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43); + } else if (f.fmtFlags.space) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32); + } + oldZero$1 = f.fmtFlags.zero; + f.fmtFlags.zero = false; + f.pad($subslice(buf, i)); + f.fmtFlags.zero = oldZero$1; + }; + fmt.prototype.fmtInteger = function(u, base, isSigned, digits) { return this.$val.fmtInteger(u, base, isSigned, digits); }; + fmt.ptr.prototype.truncateString = function(s) { + var _i, _ref, _rune, f, i, n, s; + f = this; + if (f.fmtFlags.precPresent) { + n = f.prec; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + n = n - (1) >> 0; + if (n < 0) { + return $substring(s, 0, i); + } + _i += _rune[1]; + } + } + return s; + }; + fmt.prototype.truncateString = function(s) { return this.$val.truncateString(s); }; + fmt.ptr.prototype.truncate = function(b) { + var _tuple, b, f, i, n, wid; + f = this; + if (f.fmtFlags.precPresent) { + n = f.prec; + i = 0; + while (true) { + if (!(i < b.$length)) { break; } + n = n - (1) >> 0; + if (n < 0) { + return $subslice(b, 0, i); + } + wid = 1; + if (((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) >= 128) { + _tuple = utf8.DecodeRune($subslice(b, i)); + wid = _tuple[1]; + } + i = i + (wid) >> 0; + } + } + return b; + }; + fmt.prototype.truncate = function(b) { return this.$val.truncate(b); }; + fmt.ptr.prototype.fmtS = function(s) { + var f, s; + f = this; + s = f.truncateString(s); + f.padString(s); + }; + fmt.prototype.fmtS = function(s) { return this.$val.fmtS(s); }; + fmt.ptr.prototype.fmtBs = function(b) { + var b, f; + f = this; + b = f.truncate(b); + f.pad(b); + }; + fmt.prototype.fmtBs = function(b) { return this.$val.fmtBs(b); }; + fmt.ptr.prototype.fmtSbx = function(s, b, digits) { + var b, buf, c, digits, f, i, length, s, width; + f = this; + length = b.$length; + if (b === sliceType$2.nil) { + length = s.length; + } + if (f.fmtFlags.precPresent && f.prec < length) { + length = f.prec; + } + width = $imul(2, length); + if (width > 0) { + if (f.fmtFlags.space) { + if (f.fmtFlags.sharp) { + width = $imul(width, (2)); + } + width = width + ((length - 1 >> 0)) >> 0; + } else if (f.fmtFlags.sharp) { + width = width + (2) >> 0; + } + } else { + if (f.fmtFlags.widPresent) { + f.writePadding(f.wid); + } + return; + } + if (f.fmtFlags.widPresent && f.wid > width && !f.fmtFlags.minus) { + f.writePadding(f.wid - width >> 0); + } + buf = f.buf.$get(); + if (f.fmtFlags.sharp) { + buf = $append(buf, 48, digits.charCodeAt(16)); + } + c = 0; + i = 0; + while (true) { + if (!(i < length)) { break; } + if (f.fmtFlags.space && i > 0) { + buf = $append(buf, 32); + if (f.fmtFlags.sharp) { + buf = $append(buf, 48, digits.charCodeAt(16)); + } + } + if (!(b === sliceType$2.nil)) { + c = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]); + } else { + c = s.charCodeAt(i); + } + buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0))); + i = i + (1) >> 0; + } + f.buf.$set(buf); + if (f.fmtFlags.widPresent && f.wid > width && f.fmtFlags.minus) { + f.writePadding(f.wid - width >> 0); + } + }; + fmt.prototype.fmtSbx = function(s, b, digits) { return this.$val.fmtSbx(s, b, digits); }; + fmt.ptr.prototype.fmtSx = function(s, digits) { + var digits, f, s; + f = this; + f.fmtSbx(s, sliceType$2.nil, digits); + }; + fmt.prototype.fmtSx = function(s, digits) { return this.$val.fmtSx(s, digits); }; + fmt.ptr.prototype.fmtBx = function(b, digits) { + var b, digits, f; + f = this; + f.fmtSbx("", b, digits); + }; + fmt.prototype.fmtBx = function(b, digits) { return this.$val.fmtBx(b, digits); }; + fmt.ptr.prototype.fmtQ = function(s) { + var buf, f, s; + f = this; + s = f.truncateString(s); + if (f.fmtFlags.sharp && strconv.CanBackquote(s)) { + f.padString("`" + s + "`"); + return; + } + buf = $subslice(new sliceType$2(f.intbuf), 0, 0); + if (f.fmtFlags.plus) { + f.pad(strconv.AppendQuoteToASCII(buf, s)); + } else { + f.pad(strconv.AppendQuote(buf, s)); + } + }; + fmt.prototype.fmtQ = function(s) { return this.$val.fmtQ(s); }; + fmt.ptr.prototype.fmtC = function(c) { + var buf, c, f, r, w; + f = this; + r = ((c.$low >> 0)); + if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) { + r = 65533; + } + buf = $subslice(new sliceType$2(f.intbuf), 0, 0); + w = utf8.EncodeRune($subslice(buf, 0, 4), r); + f.pad($subslice(buf, 0, w)); + }; + fmt.prototype.fmtC = function(c) { return this.$val.fmtC(c); }; + fmt.ptr.prototype.fmtQc = function(c) { + var buf, c, f, r; + f = this; + r = ((c.$low >> 0)); + if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) { + r = 65533; + } + buf = $subslice(new sliceType$2(f.intbuf), 0, 0); + if (f.fmtFlags.plus) { + f.pad(strconv.AppendQuoteRuneToASCII(buf, r)); + } else { + f.pad(strconv.AppendQuoteRune(buf, r)); + } + }; + fmt.prototype.fmtQc = function(c) { return this.$val.fmtQc(c); }; + fmt.ptr.prototype.fmtFloat = function(v, size, verb, prec) { + var _1, _2, digits, f, hasDecimalPoint, i, num, oldZero, prec, size, tail, tailBuf, v, verb; + f = this; + if (f.fmtFlags.precPresent) { + prec = f.prec; + } + num = strconv.AppendFloat($subslice(new sliceType$2(f.intbuf), 0, 1), v, ((verb << 24 >>> 24)), prec, size); + if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 45) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 43)) { + num = $subslice(num, 1); + } else { + (0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 43); + } + if (f.fmtFlags.space && ((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43) && !f.fmtFlags.plus) { + (0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 32); + } + if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 73) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78)) { + oldZero = f.fmtFlags.zero; + f.fmtFlags.zero = false; + if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78) && !f.fmtFlags.space && !f.fmtFlags.plus) { + num = $subslice(num, 1); + } + f.pad(num); + f.fmtFlags.zero = oldZero; + return; + } + if (f.fmtFlags.sharp && !((verb === 98))) { + digits = 0; + _1 = verb; + if ((_1 === (118)) || (_1 === (103)) || (_1 === (71))) { + digits = prec; + if (digits === -1) { + digits = 6; + } + } + tailBuf = arrayType$2.zero(); + tail = $subslice(new sliceType$2(tailBuf), 0, 0); + hasDecimalPoint = false; + i = 1; + while (true) { + if (!(i < num.$length)) { break; } + _2 = ((i < 0 || i >= num.$length) ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + i]); + if (_2 === (46)) { + hasDecimalPoint = true; + } else if ((_2 === (101)) || (_2 === (69))) { + tail = $appendSlice(tail, $subslice(num, i)); + num = $subslice(num, 0, i); + } else { + digits = digits - (1) >> 0; + } + i = i + (1) >> 0; + } + if (!hasDecimalPoint) { + num = $append(num, 46); + } + while (true) { + if (!(digits > 0)) { break; } + num = $append(num, 48); + digits = digits - (1) >> 0; + } + num = $appendSlice(num, tail); + } + if (f.fmtFlags.plus || !(((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43))) { + if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) { + f.buf.WriteByte((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0])); + f.writePadding(f.wid - num.$length >> 0); + f.buf.Write($subslice(num, 1)); + return; + } + f.pad(num); + return; + } + f.pad($subslice(num, 1)); + }; + fmt.prototype.fmtFloat = function(v, size, verb, prec) { return this.$val.fmtFloat(v, size, verb, prec); }; + $ptrType(buffer).prototype.Write = function(p) { + var b, p; + b = this; + b.$set($appendSlice(b.$get(), p)); + }; + $ptrType(buffer).prototype.WriteString = function(s) { + var b, s; + b = this; + b.$set($appendSlice(b.$get(), s)); + }; + $ptrType(buffer).prototype.WriteByte = function(c) { + var b, c; + b = this; + b.$set($append(b.$get(), c)); + }; + $ptrType(buffer).prototype.WriteRune = function(r) { + var b, bp, n, r, w, x; + bp = this; + if (r < 128) { + bp.$set($append(bp.$get(), ((r << 24 >>> 24)))); + return; + } + b = bp.$get(); + n = b.$length; + while (true) { + if (!((n + 4 >> 0) > b.$capacity)) { break; } + b = $append(b, 0); + } + w = utf8.EncodeRune((x = $subslice(b, n, (n + 4 >> 0)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length)), r); + bp.$set($subslice(b, 0, (n + w >> 0))); + }; + newPrinter = function() { + var _r, p, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = $assertType(_r, ptrType$2); + p.panicking = false; + p.erroring = false; + p.fmt.init((p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p)))); + $s = -1; return p; + /* */ } return; } if ($f === undefined) { $f = { $blk: newPrinter }; } $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.ptr.prototype.free = function() { + var p; + p = this; + if (p.buf.$capacity > 65536) { + return; + } + p.buf = $subslice(p.buf, 0, 0); + p.arg = $ifaceNil; + p.value = new reflect.Value.ptr(ptrType.nil, 0, 0); + ppFree.Put(p); + }; + pp.prototype.free = function() { return this.$val.free(); }; + pp.ptr.prototype.Width = function() { + var _tmp, _tmp$1, ok, p, wid; + wid = 0; + ok = false; + p = this; + _tmp = p.fmt.wid; + _tmp$1 = p.fmt.fmtFlags.widPresent; + wid = _tmp; + ok = _tmp$1; + return [wid, ok]; + }; + pp.prototype.Width = function() { return this.$val.Width(); }; + pp.ptr.prototype.Precision = function() { + var _tmp, _tmp$1, ok, p, prec; + prec = 0; + ok = false; + p = this; + _tmp = p.fmt.prec; + _tmp$1 = p.fmt.fmtFlags.precPresent; + prec = _tmp; + ok = _tmp$1; + return [prec, ok]; + }; + pp.prototype.Precision = function() { return this.$val.Precision(); }; + pp.ptr.prototype.Flag = function(b) { + var _1, b, p; + p = this; + _1 = b; + if (_1 === (45)) { + return p.fmt.fmtFlags.minus; + } else if (_1 === (43)) { + return p.fmt.fmtFlags.plus || p.fmt.fmtFlags.plusV; + } else if (_1 === (35)) { + return p.fmt.fmtFlags.sharp || p.fmt.fmtFlags.sharpV; + } else if (_1 === (32)) { + return p.fmt.fmtFlags.space; + } else if (_1 === (48)) { + return p.fmt.fmtFlags.zero; + } + return false; + }; + pp.prototype.Flag = function(b) { return this.$val.Flag(b); }; + pp.ptr.prototype.Write = function(b) { + var _tmp, _tmp$1, b, err, p, ret; + ret = 0; + err = $ifaceNil; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(b); + _tmp = b.$length; + _tmp$1 = $ifaceNil; + ret = _tmp; + err = _tmp$1; + return [ret, err]; + }; + pp.prototype.Write = function(b) { return this.$val.Write(b); }; + pp.ptr.prototype.WriteString = function(s) { + var _tmp, _tmp$1, err, p, ret, s; + ret = 0; + err = $ifaceNil; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(s); + _tmp = s.length; + _tmp$1 = $ifaceNil; + ret = _tmp; + err = _tmp$1; + return [ret, err]; + }; + pp.prototype.WriteString = function(s) { return this.$val.WriteString(s); }; + Sprintf = function(format, a) { + var _r, a, format, p, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; format = $f.format; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + p.free(); + $s = -1; return s; + /* */ } return; } if ($f === undefined) { $f = { $blk: Sprintf }; } $f._r = _r; $f.a = a; $f.format = format; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Sprintf = Sprintf; + Errorf = function(format, a) { + var _r, _r$1, a, format, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; a = $f.a; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = Sprintf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = errors.New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.format = format; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Errorf = Errorf; + Sprint = function(a) { + var _r, a, p, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + p.free(); + $s = -1; return s; + /* */ } return; } if ($f === undefined) { $f = { $blk: Sprint }; } $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Sprint = Sprint; + Fprintln = function(w, a) { + var _r, _r$1, _tuple, a, err, n, p, w, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = w.Write((x = p.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err = _tuple[1]; + p.free(); + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Fprintln }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Fprintln = Fprintln; + Println = function(a) { + var _r, _tuple, a, err, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = Fprintln(os.Stdout, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Println }; } $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Println = Println; + Sprintln = function(a) { + var _r, a, p, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + p.free(); + $s = -1; return s; + /* */ } return; } if ($f === undefined) { $f = { $blk: Sprintln }; } $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Sprintln = Sprintln; + getField = function(v, i) { + var _r, _r$1, i, v, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = $clone(v, reflect.Value).Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + val = _r; + /* */ if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { */ case 2: + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ case 3: + $s = -1; return val; + /* */ } return; } if ($f === undefined) { $f = { $blk: getField }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + tooLarge = function(x) { + var x; + return x > 1000000 || x < -1000000; + }; + parsenum = function(s, start, end) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, end, isnum, newi, num, s, start; + num = 0; + isnum = false; + newi = 0; + if (start >= end) { + _tmp = 0; + _tmp$1 = false; + _tmp$2 = end; + num = _tmp; + isnum = _tmp$1; + newi = _tmp$2; + return [num, isnum, newi]; + } + newi = start; + while (true) { + if (!(newi < end && 48 <= s.charCodeAt(newi) && s.charCodeAt(newi) <= 57)) { break; } + if (tooLarge(num)) { + _tmp$3 = 0; + _tmp$4 = false; + _tmp$5 = end; + num = _tmp$3; + isnum = _tmp$4; + newi = _tmp$5; + return [num, isnum, newi]; + } + num = ($imul(num, 10)) + (((s.charCodeAt(newi) - 48 << 24 >>> 24) >> 0)) >> 0; + isnum = true; + newi = newi + (1) >> 0; + } + return [num, isnum, newi]; + }; + pp.ptr.prototype.unknownType = function(v) { + var _r, p, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + if (!$clone(v, reflect.Value).IsValid()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63); + _r = $clone(v, reflect.Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.unknownType }; } $f._r = _r; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.unknownType = function(v) { return this.$val.unknownType(v); }; + pp.ptr.prototype.badVerb = function(verb) { + var _r, _r$1, p, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + p.erroring = true; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40); + /* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 2; continue; } + /* */ if ($clone(p.value, reflect.Value).IsValid()) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 2: + _r = reflect.TypeOf(p.arg).String(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); + $r = p.printArg(p.arg, 118); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else if ($clone(p.value, reflect.Value).IsValid()) { */ case 3: + _r$1 = $clone(p.value, reflect.Value).Type().String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); + $r = p.printValue($clone(p.value, reflect.Value), 118, 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + /* } */ case 5: + case 1: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); + p.erroring = false; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.badVerb }; } $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.badVerb = function(verb) { return this.$val.badVerb(verb); }; + pp.ptr.prototype.fmtBool = function(v, verb) { + var _1, p, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if ((_1 === (116)) || (_1 === (118))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((_1 === (116)) || (_1 === (118))) { */ case 2: + p.fmt.fmtBoolean(v); + $s = 4; continue; + /* } else { */ case 3: + $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBool }; } $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtBool = function(v, verb) { return this.$val.fmtBool(v, verb); }; + pp.ptr.prototype.fmt0x64 = function(v, leading0x) { + var leading0x, p, sharp, v; + p = this; + sharp = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = leading0x; + p.fmt.fmtInteger(v, 16, false, "0123456789abcdefx"); + p.fmt.fmtFlags.sharp = sharp; + }; + pp.prototype.fmt0x64 = function(v, leading0x) { return this.$val.fmt0x64(v, leading0x); }; + pp.ptr.prototype.fmtInteger = function(v, isSigned, verb) { + var _1, isSigned, p, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; isSigned = $f.isSigned; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if (_1 === (118)) { $s = 2; continue; } + /* */ if (_1 === (100)) { $s = 3; continue; } + /* */ if (_1 === (98)) { $s = 4; continue; } + /* */ if (_1 === (111)) { $s = 5; continue; } + /* */ if (_1 === (120)) { $s = 6; continue; } + /* */ if (_1 === (88)) { $s = 7; continue; } + /* */ if (_1 === (99)) { $s = 8; continue; } + /* */ if (_1 === (113)) { $s = 9; continue; } + /* */ if (_1 === (85)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (118)) { */ case 2: + if (p.fmt.fmtFlags.sharpV && !isSigned) { + p.fmt0x64(v, true); + } else { + p.fmt.fmtInteger(v, 10, isSigned, "0123456789abcdefx"); + } + $s = 12; continue; + /* } else if (_1 === (100)) { */ case 3: + p.fmt.fmtInteger(v, 10, isSigned, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (98)) { */ case 4: + p.fmt.fmtInteger(v, 2, isSigned, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (111)) { */ case 5: + p.fmt.fmtInteger(v, 8, isSigned, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (120)) { */ case 6: + p.fmt.fmtInteger(v, 16, isSigned, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (88)) { */ case 7: + p.fmt.fmtInteger(v, 16, isSigned, "0123456789ABCDEFX"); + $s = 12; continue; + /* } else if (_1 === (99)) { */ case 8: + p.fmt.fmtC(v); + $s = 12; continue; + /* } else if (_1 === (113)) { */ case 9: + /* */ if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 13: + p.fmt.fmtQc(v); + $s = 15; continue; + /* } else { */ case 14: + $r = p.badVerb(verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + $s = 12; continue; + /* } else if (_1 === (85)) { */ case 10: + p.fmt.fmtUnicode(v); + $s = 12; continue; + /* } else { */ case 11: + $r = p.badVerb(verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtInteger }; } $f._1 = _1; $f.isSigned = isSigned; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtInteger = function(v, isSigned, verb) { return this.$val.fmtInteger(v, isSigned, verb); }; + pp.ptr.prototype.fmtFloat = function(v, size, verb) { + var _1, p, size, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; size = $f.size; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if (_1 === (118)) { $s = 2; continue; } + /* */ if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { $s = 3; continue; } + /* */ if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { $s = 4; continue; } + /* */ if (_1 === (70)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (118)) { */ case 2: + p.fmt.fmtFloat(v, size, 103, -1); + $s = 7; continue; + /* } else if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { */ case 3: + p.fmt.fmtFloat(v, size, verb, -1); + $s = 7; continue; + /* } else if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { */ case 4: + p.fmt.fmtFloat(v, size, verb, 6); + $s = 7; continue; + /* } else if (_1 === (70)) { */ case 5: + p.fmt.fmtFloat(v, size, 102, 6); + $s = 7; continue; + /* } else { */ case 6: + $r = p.badVerb(verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat }; } $f._1 = _1; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtFloat = function(v, size, verb) { return this.$val.fmtFloat(v, size, verb); }; + pp.ptr.prototype.fmtComplex = function(v, size, verb) { + var _1, _q, _q$1, oldPlus, p, size, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _q$1 = $f._q$1; oldPlus = $f.oldPlus; p = $f.p; size = $f.size; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { */ case 2: + oldPlus = p.fmt.fmtFlags.plus; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40); + $r = p.fmtFloat(v.$real, (_q = size / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.fmt.fmtFlags.plus = true; + $r = p.fmtFloat(v.$imag, (_q$1 = size / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("i)"); + p.fmt.fmtFlags.plus = oldPlus; + $s = 4; continue; + /* } else { */ case 3: + $r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex }; } $f._1 = _1; $f._q = _q; $f._q$1 = _q$1; $f.oldPlus = oldPlus; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtComplex = function(v, size, verb) { return this.$val.fmtComplex(v, size, verb); }; + pp.ptr.prototype.fmtString = function(v, verb) { + var _1, p, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if (_1 === (118)) { $s = 2; continue; } + /* */ if (_1 === (115)) { $s = 3; continue; } + /* */ if (_1 === (120)) { $s = 4; continue; } + /* */ if (_1 === (88)) { $s = 5; continue; } + /* */ if (_1 === (113)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_1 === (118)) { */ case 2: + if (p.fmt.fmtFlags.sharpV) { + p.fmt.fmtQ(v); + } else { + p.fmt.fmtS(v); + } + $s = 8; continue; + /* } else if (_1 === (115)) { */ case 3: + p.fmt.fmtS(v); + $s = 8; continue; + /* } else if (_1 === (120)) { */ case 4: + p.fmt.fmtSx(v, "0123456789abcdefx"); + $s = 8; continue; + /* } else if (_1 === (88)) { */ case 5: + p.fmt.fmtSx(v, "0123456789ABCDEFX"); + $s = 8; continue; + /* } else if (_1 === (113)) { */ case 6: + p.fmt.fmtQ(v); + $s = 8; continue; + /* } else { */ case 7: + $r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtString }; } $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtString = function(v, verb) { return this.$val.fmtString(v, verb); }; + pp.ptr.prototype.fmtBytes = function(v, verb, typeString) { + var _1, _i, _i$1, _r, _ref, _ref$1, c, c$1, i, i$1, p, typeString, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; c = $f.c; c$1 = $f.c$1; i = $f.i; i$1 = $f.i$1; p = $f.p; typeString = $f.typeString; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if ((_1 === (118)) || (_1 === (100))) { $s = 2; continue; } + /* */ if (_1 === (115)) { $s = 3; continue; } + /* */ if (_1 === (120)) { $s = 4; continue; } + /* */ if (_1 === (88)) { $s = 5; continue; } + /* */ if (_1 === (113)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (118)) || (_1 === (100))) { */ case 2: + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(typeString); + if (v === sliceType$2.nil) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); + _ref = v; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); + } + p.fmt0x64((new $Uint64(0, c)), true); + _i++; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91); + _ref$1 = v; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (i$1 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); + } + p.fmt.fmtInteger((new $Uint64(0, c$1)), 10, false, "0123456789abcdefx"); + _i$1++; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93); + } + $s = 8; continue; + /* } else if (_1 === (115)) { */ case 3: + p.fmt.fmtBs(v); + $s = 8; continue; + /* } else if (_1 === (120)) { */ case 4: + p.fmt.fmtBx(v, "0123456789abcdefx"); + $s = 8; continue; + /* } else if (_1 === (88)) { */ case 5: + p.fmt.fmtBx(v, "0123456789ABCDEFX"); + $s = 8; continue; + /* } else if (_1 === (113)) { */ case 6: + p.fmt.fmtQ(($bytesToString(v))); + $s = 8; continue; + /* } else { */ case 7: + _r = reflect.ValueOf(v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r, reflect.Value), verb, 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBytes }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.c = c; $f.c$1 = c$1; $f.i = i; $f.i$1 = i$1; $f.p = p; $f.typeString = typeString; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtBytes = function(v, verb, typeString) { return this.$val.fmtBytes(v, verb, typeString); }; + pp.ptr.prototype.fmtPointer = function(value, verb) { + var _1, _2, _r, p, u, value, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; p = $f.p; u = $f.u; value = $f.value; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + u = 0; + _1 = $clone(value, reflect.Value).Kind(); + /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { */ case 2: + u = $clone(value, reflect.Value).Pointer(); + $s = 4; continue; + /* } else { */ case 3: + $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + case 1: + _2 = verb; + /* */ if (_2 === (118)) { $s = 7; continue; } + /* */ if (_2 === (112)) { $s = 8; continue; } + /* */ if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_2 === (118)) { */ case 7: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 12: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40); + _r = $clone(value, reflect.Value).Type().String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(")("); + if (u === 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("nil"); + } else { + p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), true); + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); + $s = 14; continue; + /* } else { */ case 13: + if (u === 0) { + p.fmt.padString(""); + } else { + p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp); + } + /* } */ case 14: + $s = 11; continue; + /* } else if (_2 === (112)) { */ case 8: + p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp); + $s = 11; continue; + /* } else if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { */ case 9: + $r = p.fmtInteger((new $Uint64(0, u.constructor === Number ? u : 1)), false, verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else { */ case 10: + $r = p.badVerb(verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + case 6: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtPointer }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f.p = p; $f.u = u; $f.value = value; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.fmtPointer = function(value, verb) { return this.$val.fmtPointer(value, verb); }; + pp.ptr.prototype.catchPanic = function(arg, verb, method) { + var _r, arg, err, method, oldFlags, p, v, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; arg = $f.arg; err = $f.err; method = $f.method; oldFlags = $f.oldFlags; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + err = $recover(); + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1: + _r = reflect.ValueOf(arg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + if (($clone(v, reflect.Value).Kind() === 22) && $clone(v, reflect.Value).IsNil()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + $s = -1; return; + } + if (p.panicking) { + $panic(err); + } + oldFlags = $clone(p.fmt.fmtFlags, fmtFlags); + p.fmt.clearflags(); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(PANIC="); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(method); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(" method: "); + p.panicking = true; + $r = p.printArg(err, 118); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.panicking = false; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); + fmtFlags.copy(p.fmt.fmtFlags, oldFlags); + /* } */ case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.catchPanic }; } $f._r = _r; $f.arg = arg; $f.err = err; $f.method = method; $f.oldFlags = oldFlags; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.catchPanic = function(arg, verb, method) { return this.$val.catchPanic(arg, verb, method); }; + pp.ptr.prototype.handleMethods = function(verb) { + var _1, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, formatter, handled, ok, ok$1, p, stringer, v, v$1, verb, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; formatter = $f.formatter; handled = $f.handled; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; stringer = $f.stringer; v = $f.v; v$1 = $f.v$1; verb = $f.verb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + handled = false; + p = this; + if (p.erroring) { + $s = -1; return handled; + } + _tuple = $assertType(p.arg, Formatter, true); + formatter = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "Format"]]); + $r = formatter.Format(p, verb); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return handled; + /* } */ case 2: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 4: + _tuple$1 = $assertType(p.arg, GoStringer, true); + stringer = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (ok$1) { */ case 7: + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "GoString"]]); + _r = stringer.GoString(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.fmt.fmtS(_r); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return handled; + /* } */ case 8: + $s = 6; continue; + /* } else { */ case 5: + _1 = verb; + /* */ if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { */ case 12: + _ref = p.arg; + /* */ if ($assertType(_ref, $error, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, Stringer, true)[1]) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if ($assertType(_ref, $error, true)[1]) { */ case 14: + v = _ref; + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "Error"]]); + _r$1 = v.Error(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = p.fmtString(_r$1, verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return handled; + /* } else if ($assertType(_ref, Stringer, true)[1]) { */ case 15: + v$1 = _ref; + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "String"]]); + _r$2 = v$1.String(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = p.fmtString(_r$2, verb); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return handled; + /* } */ case 16: + /* } */ case 13: + case 11: + /* } */ case 6: + handled = false; + $s = -1; return handled; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return handled; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pp.ptr.prototype.handleMethods }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.formatter = formatter; $f.handled = handled; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.stringer = stringer; $f.v = v; $f.v$1 = v$1; $f.verb = verb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + pp.prototype.handleMethods = function(verb) { return this.$val.handleMethods(verb); }; + pp.ptr.prototype.printArg = function(arg, verb) { + var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, arg, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$19, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, p, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; arg = $f.arg; f = $f.f; f$1 = $f.f$1; f$10 = $f.f$10; f$11 = $f.f$11; f$12 = $f.f$12; f$13 = $f.f$13; f$14 = $f.f$14; f$15 = $f.f$15; f$16 = $f.f$16; f$17 = $f.f$17; f$18 = $f.f$18; f$19 = $f.f$19; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; f$7 = $f.f$7; f$8 = $f.f$8; f$9 = $f.f$9; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + p.arg = arg; + p.value = new reflect.Value.ptr(ptrType.nil, 0, 0); + /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1: + _1 = verb; + /* */ if ((_1 === (84)) || (_1 === (118))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (84)) || (_1 === (118))) { */ case 4: + p.fmt.padString(""); + $s = 6; continue; + /* } else { */ case 5: + $r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + case 3: + $s = -1; return; + /* } */ case 2: + _2 = verb; + /* */ if (_2 === (84)) { $s = 9; continue; } + /* */ if (_2 === (112)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_2 === (84)) { */ case 9: + _r = reflect.TypeOf(arg).String(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.fmt.fmtS(_r); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } else if (_2 === (112)) { */ case 10: + _r$1 = reflect.ValueOf(arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = p.fmtPointer($clone(_r$1, reflect.Value), 112); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 11: + case 8: + _ref = arg; + /* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, $Float32, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, $Float64, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, $Complex64, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, $Complex128, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, $Int, true)[1]) { $s = 21; continue; } + /* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 22; continue; } + /* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 23; continue; } + /* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 24; continue; } + /* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; } + /* */ if ($assertType(_ref, $Uint, true)[1]) { $s = 26; continue; } + /* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 27; continue; } + /* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 28; continue; } + /* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 29; continue; } + /* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 30; continue; } + /* */ if ($assertType(_ref, $Uintptr, true)[1]) { $s = 31; continue; } + /* */ if ($assertType(_ref, $String, true)[1]) { $s = 32; continue; } + /* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 33; continue; } + /* */ if ($assertType(_ref, reflect.Value, true)[1]) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if ($assertType(_ref, $Bool, true)[1]) { */ case 16: + f = _ref.$val; + $r = p.fmtBool(f, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Float32, true)[1]) { */ case 17: + f$1 = _ref.$val; + $r = p.fmtFloat((f$1), 32, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Float64, true)[1]) { */ case 18: + f$2 = _ref.$val; + $r = p.fmtFloat(f$2, 64, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Complex64, true)[1]) { */ case 19: + f$3 = _ref.$val; + $r = p.fmtComplex((new $Complex128(f$3.$real, f$3.$imag)), 64, verb); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Complex128, true)[1]) { */ case 20: + f$4 = _ref.$val; + $r = p.fmtComplex(f$4, 128, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int, true)[1]) { */ case 21: + f$5 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$5)), true, verb); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 22: + f$6 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$6)), true, verb); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 23: + f$7 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$7)), true, verb); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 24: + f$8 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$8)), true, verb); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25: + f$9 = _ref.$val; + $r = p.fmtInteger((new $Uint64(f$9.$high, f$9.$low)), true, verb); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint, true)[1]) { */ case 26: + f$10 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$10)), false, verb); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 27: + f$11 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$11)), false, verb); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 28: + f$12 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$12)), false, verb); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 29: + f$13 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$13)), false, verb); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 30: + f$14 = _ref.$val; + $r = p.fmtInteger(f$14, false, verb); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uintptr, true)[1]) { */ case 31: + f$15 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$15.constructor === Number ? f$15 : 1)), false, verb); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $String, true)[1]) { */ case 32: + f$16 = _ref.$val; + $r = p.fmtString(f$16, verb); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 33: + f$17 = _ref.$val; + $r = p.fmtBytes(f$17, verb, "[]byte"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, reflect.Value, true)[1]) { */ case 34: + f$18 = _ref.$val; + /* */ if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { */ case 55: + _r$2 = $clone(f$18, reflect.Value).Interface(); /* */ $s = 57; case 57: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + p.arg = _r$2; + _r$3 = p.handleMethods(verb); /* */ $s = 60; case 60: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (_r$3) { */ case 58: + $s = -1; return; + /* } */ case 59: + /* } */ case 56: + $r = p.printValue($clone(f$18, reflect.Value), verb, 0); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else { */ case 35: + f$19 = _ref; + _r$4 = p.handleMethods(verb); /* */ $s = 64; case 64: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 62; continue; } + /* */ $s = 63; continue; + /* if (!_r$4) { */ case 62: + _r$5 = reflect.ValueOf(f$19); /* */ $s = 65; case 65: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$5, reflect.Value), verb, 0); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 63: + /* } */ case 36: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printArg }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f.arg = arg; $f.f = f; $f.f$1 = f$1; $f.f$10 = f$10; $f.f$11 = f$11; $f.f$12 = f$12; $f.f$13 = f$13; $f.f$14 = f$14; $f.f$15 = f$15; $f.f$16 = f$16; $f.f$17 = f$17; $f.f$18 = f$18; $f.f$19 = f$19; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.f$7 = f$7; $f.f$8 = f$8; $f.f$9 = f$9; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.printArg = function(arg, verb) { return this.$val.printArg(arg, verb); }; + pp.ptr.prototype.printValue = function(value, verb, depth) { + var _1, _2, _3, _4, _arg, _arg$1, _arg$2, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, a, bytes, depth, f, i, i$1, i$2, i$3, i$4, key, name, p, sorted, t, value, value$1, verb, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; a = $f.a; bytes = $f.bytes; depth = $f.depth; f = $f.f; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; key = $f.key; name = $f.name; p = $f.p; sorted = $f.sorted; t = $f.t; value = $f.value; value$1 = $f.value$1; verb = $f.verb; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { */ case 1: + _r = $clone(value, reflect.Value).Interface(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p.arg = _r; + _r$1 = p.handleMethods(verb); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $s = -1; return; + /* } */ case 5: + /* } */ case 2: + p.arg = $ifaceNil; + p.value = value; + f = value; + _1 = $clone(value, reflect.Value).Kind(); + /* */ if (_1 === (0)) { $s = 8; continue; } + /* */ if (_1 === (1)) { $s = 9; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 10; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 11; continue; } + /* */ if (_1 === (13)) { $s = 12; continue; } + /* */ if (_1 === (14)) { $s = 13; continue; } + /* */ if (_1 === (15)) { $s = 14; continue; } + /* */ if (_1 === (16)) { $s = 15; continue; } + /* */ if (_1 === (24)) { $s = 16; continue; } + /* */ if (_1 === (21)) { $s = 17; continue; } + /* */ if (_1 === (25)) { $s = 18; continue; } + /* */ if (_1 === (20)) { $s = 19; continue; } + /* */ if ((_1 === (17)) || (_1 === (23))) { $s = 20; continue; } + /* */ if (_1 === (22)) { $s = 21; continue; } + /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_1 === (0)) { */ case 8: + /* */ if (depth === 0) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (depth === 0) { */ case 25: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + $s = 27; continue; + /* } else { */ case 26: + _2 = verb; + /* */ if (_2 === (118)) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_2 === (118)) { */ case 29: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + $s = 31; continue; + /* } else { */ case 30: + $r = p.badVerb(verb); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 31: + case 28: + /* } */ case 27: + $s = 24; continue; + /* } else if (_1 === (1)) { */ case 9: + $r = p.fmtBool($clone(f, reflect.Value).Bool(), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 10: + $r = p.fmtInteger(((x = $clone(f, reflect.Value).Int(), new $Uint64(x.$high, x.$low))), true, verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 11: + $r = p.fmtInteger($clone(f, reflect.Value).Uint(), false, verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (13)) { */ case 12: + $r = p.fmtFloat($clone(f, reflect.Value).Float(), 32, verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (14)) { */ case 13: + $r = p.fmtFloat($clone(f, reflect.Value).Float(), 64, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (15)) { */ case 14: + $r = p.fmtComplex($clone(f, reflect.Value).Complex(), 64, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (16)) { */ case 15: + $r = p.fmtComplex($clone(f, reflect.Value).Complex(), 128, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (24)) { */ case 16: + _r$2 = $clone(f, reflect.Value).String(); /* */ $s = 40; case 40: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = p.fmtString(_r$2, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (21)) { */ case 17: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 42: + _r$3 = $clone(f, reflect.Value).Type().String(); /* */ $s = 45; case 45: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$3); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($clone(f, reflect.Value).IsNil()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); + $s = 44; continue; + /* } else { */ case 43: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("map["); + /* } */ case 44: + _r$4 = fmtsort.Sort($clone(f, reflect.Value)); /* */ $s = 47; case 47: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + sorted = _r$4; + _ref = sorted.Key; + _i = 0; + /* while (true) { */ case 48: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 49; continue; } + i = _i; + key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); + } + } + $r = p.printValue($clone(key, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58); + $r = p.printValue($clone((x$1 = sorted.Value, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), reflect.Value), verb, depth + 1 >> 0); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* } */ $s = 48; continue; case 49: + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93); + } + $s = 24; continue; + /* } else if (_1 === (25)) { */ case 18: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 52: + _r$5 = $clone(f, reflect.Value).Type().String(); /* */ $s = 54; case 54: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$5); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 53: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); + i$1 = 0; + /* while (true) { */ case 56: + /* if (!(i$1 < $clone(f, reflect.Value).NumField())) { break; } */ if(!(i$1 < $clone(f, reflect.Value).NumField())) { $s = 57; continue; } + if (i$1 > 0) { + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); + } + } + /* */ if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 58: + _r$6 = $clone(f, reflect.Value).Type().Field(i$1); /* */ $s = 60; case 60: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + name = _r$6.Name; + if (!(name === "")) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(name); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58); + } + /* } */ case 59: + _r$7 = getField($clone(f, reflect.Value), i$1); /* */ $s = 61; case 61: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$7, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + /* } */ $s = 56; continue; case 57: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); + $s = 24; continue; + /* } else if (_1 === (20)) { */ case 19: + _r$8 = $clone(f, reflect.Value).Elem(); /* */ $s = 63; case 63: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + value$1 = _r$8; + /* */ if (!$clone(value$1, reflect.Value).IsValid()) { $s = 64; continue; } + /* */ $s = 65; continue; + /* if (!$clone(value$1, reflect.Value).IsValid()) { */ case 64: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 67: + _r$9 = $clone(f, reflect.Value).Type().String(); /* */ $s = 70; case 70: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$9); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); + $s = 69; continue; + /* } else { */ case 68: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + /* } */ case 69: + $s = 66; continue; + /* } else { */ case 65: + $r = p.printValue($clone(value$1, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 66: + $s = 24; continue; + /* } else if ((_1 === (17)) || (_1 === (23))) { */ case 20: + _3 = verb; + /* */ if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { */ case 74: + t = $clone(f, reflect.Value).Type(); + _r$10 = t.Elem(); /* */ $s = 78; case 78: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = _r$10.Kind(); /* */ $s = 79; case 79: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (_r$11 === 8) { $s = 76; continue; } + /* */ $s = 77; continue; + /* if (_r$11 === 8) { */ case 76: + bytes = sliceType$2.nil; + /* */ if ($clone(f, reflect.Value).Kind() === 23) { $s = 80; continue; } + /* */ if ($clone(f, reflect.Value).CanAddr()) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if ($clone(f, reflect.Value).Kind() === 23) { */ case 80: + _r$12 = $clone(f, reflect.Value).Bytes(); /* */ $s = 84; case 84: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + bytes = _r$12; + $s = 83; continue; + /* } else if ($clone(f, reflect.Value).CanAddr()) { */ case 81: + _r$13 = $clone(f, reflect.Value).Slice(0, $clone(f, reflect.Value).Len()); /* */ $s = 85; case 85: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = $clone(_r$13, reflect.Value).Bytes(); /* */ $s = 86; case 86: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + bytes = _r$14; + $s = 83; continue; + /* } else { */ case 82: + bytes = $makeSlice(sliceType$2, $clone(f, reflect.Value).Len()); + _ref$1 = bytes; + _i$1 = 0; + /* while (true) { */ case 87: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 88; continue; } + i$2 = _i$1; + _r$15 = $clone(f, reflect.Value).Index(i$2); /* */ $s = 89; case 89: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$16 = $clone(_r$15, reflect.Value).Uint(); /* */ $s = 90; case 90: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + ((i$2 < 0 || i$2 >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i$2] = ((_r$16.$low << 24 >>> 24))); + _i$1++; + /* } */ $s = 87; continue; case 88: + /* } */ case 83: + _arg = bytes; + _arg$1 = verb; + _r$17 = t.String(); /* */ $s = 91; case 91: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _arg$2 = _r$17; + $r = p.fmtBytes(_arg, _arg$1, _arg$2); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 77: + /* } */ case 75: + case 73: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 93; continue; } + /* */ $s = 94; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 93: + _r$18 = $clone(f, reflect.Value).Type().String(); /* */ $s = 96; case 96: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$18); /* */ $s = 97; case 97: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (($clone(f, reflect.Value).Kind() === 23) && $clone(f, reflect.Value).IsNil()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); + i$3 = 0; + /* while (true) { */ case 98: + /* if (!(i$3 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$3 < $clone(f, reflect.Value).Len())) { $s = 99; continue; } + if (i$3 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); + } + _r$19 = $clone(f, reflect.Value).Index(i$3); /* */ $s = 100; case 100: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$19, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$3 = i$3 + (1) >> 0; + /* } */ $s = 98; continue; case 99: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); + $s = 95; continue; + /* } else { */ case 94: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91); + i$4 = 0; + /* while (true) { */ case 102: + /* if (!(i$4 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$4 < $clone(f, reflect.Value).Len())) { $s = 103; continue; } + if (i$4 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); + } + _r$20 = $clone(f, reflect.Value).Index(i$4); /* */ $s = 104; case 104: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$20, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$4 = i$4 + (1) >> 0; + /* } */ $s = 102; continue; case 103: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93); + /* } */ case 95: + $s = 24; continue; + /* } else if (_1 === (22)) { */ case 21: + /* */ if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { $s = 106; continue; } + /* */ $s = 107; continue; + /* if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { */ case 106: + _r$21 = $clone(f, reflect.Value).Elem(); /* */ $s = 109; case 109: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + a = _r$21; + _4 = $clone(a, reflect.Value).Kind(); + /* */ if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { $s = 110; continue; } + /* */ $s = 111; continue; + /* if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { */ case 110: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38); + $r = p.printValue($clone(a, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 112; case 112: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 111: + case 108: + /* } */ case 107: + $r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { */ case 22: + $r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 114; case 114: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else { */ case 23: + $r = p.unknownType($clone(f, reflect.Value)); /* */ $s = 115; case 115: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 24: + case 7: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printValue }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f.a = a; $f.bytes = bytes; $f.depth = depth; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.key = key; $f.name = name; $f.p = p; $f.sorted = sorted; $f.t = t; $f.value = value; $f.value$1 = value$1; $f.verb = verb; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.printValue = function(value, verb, depth) { return this.$val.printValue(value, verb, depth); }; + intFromArg = function(a, argNum) { + var _1, _r, _tuple, a, argNum, isInt, n, n$1, newArgNum, num, v, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; a = $f.a; argNum = $f.argNum; isInt = $f.isInt; n = $f.n; n$1 = $f.n$1; newArgNum = $f.newArgNum; num = $f.num; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + num = 0; + isInt = false; + newArgNum = 0; + newArgNum = argNum; + /* */ if (argNum < a.$length) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (argNum < a.$length) { */ case 1: + _tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), $Int, true); + num = _tuple[0]; + isInt = _tuple[1]; + /* */ if (!isInt) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!isInt) { */ case 3: + _r = reflect.ValueOf(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + _1 = $clone(v, reflect.Value).Kind(); + if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { + n = $clone(v, reflect.Value).Int(); + if ((x = (new $Int64(0, (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)))), (x.$high === n.$high && x.$low === n.$low))) { + num = (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)); + isInt = true; + } + } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { + n$1 = $clone(v, reflect.Value).Uint(); + if ((x$1 = (new $Int64(n$1.$high, n$1.$low)), (x$1.$high > 0 || (x$1.$high === 0 && x$1.$low >= 0))) && (x$2 = (new $Uint64(0, ((n$1.$low >> 0)))), (x$2.$high === n$1.$high && x$2.$low === n$1.$low))) { + num = ((n$1.$low >> 0)); + isInt = true; + } + } + case 5: + /* } */ case 4: + newArgNum = argNum + 1 >> 0; + if (tooLarge(num)) { + num = 0; + isInt = false; + } + /* } */ case 2: + $s = -1; return [num, isInt, newArgNum]; + /* */ } return; } if ($f === undefined) { $f = { $blk: intFromArg }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.argNum = argNum; $f.isInt = isInt; $f.n = n; $f.n$1 = n$1; $f.newArgNum = newArgNum; $f.num = num; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + parseArgNumber = function(format) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, format, i, index, newi, ok, ok$1, wid, width; + index = 0; + wid = 0; + ok = false; + if (format.length < 3) { + _tmp = 0; + _tmp$1 = 1; + _tmp$2 = false; + index = _tmp; + wid = _tmp$1; + ok = _tmp$2; + return [index, wid, ok]; + } + i = 1; + while (true) { + if (!(i < format.length)) { break; } + if (format.charCodeAt(i) === 93) { + _tuple = parsenum(format, 1, i); + width = _tuple[0]; + ok$1 = _tuple[1]; + newi = _tuple[2]; + if (!ok$1 || !((newi === i))) { + _tmp$3 = 0; + _tmp$4 = i + 1 >> 0; + _tmp$5 = false; + index = _tmp$3; + wid = _tmp$4; + ok = _tmp$5; + return [index, wid, ok]; + } + _tmp$6 = width - 1 >> 0; + _tmp$7 = i + 1 >> 0; + _tmp$8 = true; + index = _tmp$6; + wid = _tmp$7; + ok = _tmp$8; + return [index, wid, ok]; + } + i = i + (1) >> 0; + } + _tmp$9 = 0; + _tmp$10 = 1; + _tmp$11 = false; + index = _tmp$9; + wid = _tmp$10; + ok = _tmp$11; + return [index, wid, ok]; + }; + pp.ptr.prototype.argNumber = function(argNum, format, i, numArgs) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, argNum, format, found, i, index, newArgNum, newi, numArgs, ok, p, wid; + newArgNum = 0; + newi = 0; + found = false; + p = this; + if (format.length <= i || !((format.charCodeAt(i) === 91))) { + _tmp = argNum; + _tmp$1 = i; + _tmp$2 = false; + newArgNum = _tmp; + newi = _tmp$1; + found = _tmp$2; + return [newArgNum, newi, found]; + } + p.reordered = true; + _tuple = parseArgNumber($substring(format, i)); + index = _tuple[0]; + wid = _tuple[1]; + ok = _tuple[2]; + if (ok && 0 <= index && index < numArgs) { + _tmp$3 = index; + _tmp$4 = i + wid >> 0; + _tmp$5 = true; + newArgNum = _tmp$3; + newi = _tmp$4; + found = _tmp$5; + return [newArgNum, newi, found]; + } + p.goodArgNum = false; + _tmp$6 = argNum; + _tmp$7 = i + wid >> 0; + _tmp$8 = ok; + newArgNum = _tmp$6; + newi = _tmp$7; + found = _tmp$8; + return [newArgNum, newi, found]; + }; + pp.prototype.argNumber = function(argNum, format, i, numArgs) { return this.$val.argNumber(argNum, format, i, numArgs); }; + pp.ptr.prototype.badArgNum = function(verb) { + var p, verb; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(BADINDEX)"); + }; + pp.prototype.badArgNum = function(verb) { return this.$val.badArgNum(verb); }; + pp.ptr.prototype.missingArg = function(verb) { + var p, verb; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(MISSING)"); + }; + pp.prototype.missingArg = function(verb) { return this.$val.missingArg(verb); }; + pp.ptr.prototype.doPrintf = function(format, a) { + var _1, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, argNum, c, end, format, i, i$1, lasti, p, size, verb, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; a = $f.a; afterIndex = $f.afterIndex; arg = $f.arg; argNum = $f.argNum; c = $f.c; end = $f.end; format = $f.format; i = $f.i; i$1 = $f.i$1; lasti = $f.lasti; p = $f.p; size = $f.size; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + end = format.length; + argNum = 0; + afterIndex = false; + p.reordered = false; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 2; continue; } + p.goodArgNum = true; + lasti = i; + while (true) { + if (!(i < end && !((format.charCodeAt(i) === 37)))) { break; } + i = i + (1) >> 0; + } + if (i > lasti) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString($substring(format, lasti, i)); + } + if (i >= end) { + /* break; */ $s = 2; continue; + } + i = i + (1) >> 0; + p.fmt.clearflags(); + /* while (true) { */ case 3: + /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 4; continue; } + c = format.charCodeAt(i); + _1 = c; + /* */ if (_1 === (35)) { $s = 6; continue; } + /* */ if (_1 === (48)) { $s = 7; continue; } + /* */ if (_1 === (43)) { $s = 8; continue; } + /* */ if (_1 === (45)) { $s = 9; continue; } + /* */ if (_1 === (32)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (35)) { */ case 6: + p.fmt.fmtFlags.sharp = true; + $s = 12; continue; + /* } else if (_1 === (48)) { */ case 7: + p.fmt.fmtFlags.zero = !p.fmt.fmtFlags.minus; + $s = 12; continue; + /* } else if (_1 === (43)) { */ case 8: + p.fmt.fmtFlags.plus = true; + $s = 12; continue; + /* } else if (_1 === (45)) { */ case 9: + p.fmt.fmtFlags.minus = true; + p.fmt.fmtFlags.zero = false; + $s = 12; continue; + /* } else if (_1 === (32)) { */ case 10: + p.fmt.fmtFlags.space = true; + $s = 12; continue; + /* } else { */ case 11: + /* */ if (97 <= c && c <= 122 && argNum < a.$length) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (97 <= c && c <= 122 && argNum < a.$length) { */ case 13: + if (c === 118) { + p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = false; + p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; + p.fmt.fmtFlags.plus = false; + } + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), ((c >> 0))); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + i = i + (1) >> 0; + /* continue formatLoop; */ $s = 1; continue s; + /* } */ case 14: + /* break simpleFormat; */ $s = 4; continue s; + /* } */ case 12: + case 5: + i = i + (1) >> 0; + /* } */ $s = 3; continue; case 4: + _tuple = p.argNumber(argNum, format, i, a.$length); + argNum = _tuple[0]; + i = _tuple[1]; + afterIndex = _tuple[2]; + /* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (i < end && (format.charCodeAt(i) === 42)) { */ case 16: + i = i + (1) >> 0; + _r = intFromArg(a, argNum); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + p.fmt.wid = _tuple$1[0]; + p.fmt.fmtFlags.widPresent = _tuple$1[1]; + argNum = _tuple$1[2]; + if (!p.fmt.fmtFlags.widPresent) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADWIDTH)"); + } + if (p.fmt.wid < 0) { + p.fmt.wid = -p.fmt.wid; + p.fmt.fmtFlags.minus = true; + p.fmt.fmtFlags.zero = false; + } + afterIndex = false; + $s = 18; continue; + /* } else { */ case 17: + _tuple$2 = parsenum(format, i, end); + p.fmt.wid = _tuple$2[0]; + p.fmt.fmtFlags.widPresent = _tuple$2[1]; + i = _tuple$2[2]; + if (afterIndex && p.fmt.fmtFlags.widPresent) { + p.goodArgNum = false; + } + /* } */ case 18: + /* */ if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { */ case 20: + i = i + (1) >> 0; + if (afterIndex) { + p.goodArgNum = false; + } + _tuple$3 = p.argNumber(argNum, format, i, a.$length); + argNum = _tuple$3[0]; + i = _tuple$3[1]; + afterIndex = _tuple$3[2]; + /* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (i < end && (format.charCodeAt(i) === 42)) { */ case 22: + i = i + (1) >> 0; + _r$1 = intFromArg(a, argNum); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$4 = _r$1; + p.fmt.prec = _tuple$4[0]; + p.fmt.fmtFlags.precPresent = _tuple$4[1]; + argNum = _tuple$4[2]; + if (p.fmt.prec < 0) { + p.fmt.prec = 0; + p.fmt.fmtFlags.precPresent = false; + } + if (!p.fmt.fmtFlags.precPresent) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADPREC)"); + } + afterIndex = false; + $s = 24; continue; + /* } else { */ case 23: + _tuple$5 = parsenum(format, i, end); + p.fmt.prec = _tuple$5[0]; + p.fmt.fmtFlags.precPresent = _tuple$5[1]; + i = _tuple$5[2]; + if (!p.fmt.fmtFlags.precPresent) { + p.fmt.prec = 0; + p.fmt.fmtFlags.precPresent = true; + } + /* } */ case 24: + /* } */ case 21: + if (!afterIndex) { + _tuple$6 = p.argNumber(argNum, format, i, a.$length); + argNum = _tuple$6[0]; + i = _tuple$6[1]; + afterIndex = _tuple$6[2]; + } + if (i >= end) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(NOVERB)"); + /* break; */ $s = 2; continue; + } + _tmp = ((format.charCodeAt(i) >> 0)); + _tmp$1 = 1; + verb = _tmp; + size = _tmp$1; + if (verb >= 128) { + _tuple$7 = utf8.DecodeRuneInString($substring(format, i)); + verb = _tuple$7[0]; + size = _tuple$7[1]; + } + i = i + (size) >> 0; + /* */ if ((verb === 37)) { $s = 27; continue; } + /* */ if (!p.goodArgNum) { $s = 28; continue; } + /* */ if (argNum >= a.$length) { $s = 29; continue; } + /* */ if ((verb === 118)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if ((verb === 37)) { */ case 27: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(37); + $s = 32; continue; + /* } else if (!p.goodArgNum) { */ case 28: + p.badArgNum(verb); + $s = 32; continue; + /* } else if (argNum >= a.$length) { */ case 29: + p.missingArg(verb); + $s = 32; continue; + /* } else if ((verb === 118)) { */ case 30: + p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = false; + p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; + p.fmt.fmtFlags.plus = false; + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + $s = 32; continue; + /* } else { */ case 31: + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + /* } */ case 32: + case 26: + /* } */ $s = 1; continue; case 2: + /* */ if (!p.reordered && argNum < a.$length) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (!p.reordered && argNum < a.$length) { */ case 35: + p.fmt.clearflags(); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(EXTRA "); + _ref = $subslice(a, argNum); + _i = 0; + /* while (true) { */ case 37: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 38; continue; } + i$1 = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i$1 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); + } + /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 39: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); + $s = 41; continue; + /* } else { */ case 40: + _r$2 = reflect.TypeOf(arg).String(); /* */ $s = 42; case 42: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); + $r = p.printArg(arg, 118); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 41: + _i++; + /* } */ $s = 37; continue; case 38: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); + /* } */ case 36: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintf }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.a = a; $f.afterIndex = afterIndex; $f.arg = arg; $f.argNum = argNum; $f.c = c; $f.end = end; $f.format = format; $f.i = i; $f.i$1 = i$1; $f.lasti = lasti; $f.p = p; $f.size = size; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.doPrintf = function(format, a) { return this.$val.doPrintf(format, a); }; + pp.ptr.prototype.doPrint = function(a) { + var _i, _r, _ref, _v, a, arg, argNum, isString, p, prevString, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _v = $f._v; a = $f.a; arg = $f.arg; argNum = $f.argNum; isString = $f.isString; p = $f.p; prevString = $f.prevString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + prevString = false; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + argNum = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 3; continue s; } + _r = reflect.TypeOf(arg).Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r === 24; case 3: + isString = _v; + if (argNum > 0 && !isString && !prevString) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); + } + $r = p.printArg(arg, 118); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + prevString = isString; + _i++; + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrint }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._v = _v; $f.a = a; $f.arg = arg; $f.argNum = argNum; $f.isString = isString; $f.p = p; $f.prevString = prevString; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.doPrint = function(a) { return this.$val.doPrint(a); }; + pp.ptr.prototype.doPrintln = function(a) { + var _i, _ref, a, arg, argNum, p, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; a = $f.a; arg = $f.arg; argNum = $f.argNum; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + argNum = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (argNum > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); + } + $r = p.printArg(arg, 118); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* } */ $s = 1; continue; case 2: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(10); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintln }; } $f._i = _i; $f._ref = _ref; $f.a = a; $f.arg = arg; $f.argNum = argNum; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; + }; + pp.prototype.doPrintln = function(a) { return this.$val.doPrintln(a); }; + ss.ptr.prototype.Read = function(buf) { + var _tmp, _tmp$1, buf, err, n, s; + n = 0; + err = $ifaceNil; + s = this; + _tmp = 0; + _tmp$1 = errors.New("ScanState's Read should not be called. Use ReadRune"); + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + ss.prototype.Read = function(buf) { return this.$val.Read(buf); }; + ss.ptr.prototype.ReadRune = function() { + var _r, _tuple, err, r, s, size, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = 0; + size = 0; + err = $ifaceNil; + s = this; + if (s.atEOF || s.count >= s.ssave.argLimit) { + err = io.EOF; + $s = -1; return [r, size, err]; + } + _r = s.rs.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + size = _tuple[1]; + err = _tuple[2]; + if ($interfaceIsEqual(err, $ifaceNil)) { + s.count = s.count + (1) >> 0; + if (s.ssave.nlIsEnd && (r === 10)) { + s.atEOF = true; + } + } else if ($interfaceIsEqual(err, io.EOF)) { + s.atEOF = true; + } + $s = -1; return [r, size, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.ReadRune }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.size = size; $f.$s = $s; $f.$r = $r; return $f; + }; + ss.prototype.ReadRune = function() { return this.$val.ReadRune(); }; + ss.ptr.prototype.Width = function() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, ok, s, wid; + wid = 0; + ok = false; + s = this; + if (s.ssave.maxWid === 1073741824) { + _tmp = 0; + _tmp$1 = false; + wid = _tmp; + ok = _tmp$1; + return [wid, ok]; + } + _tmp$2 = s.ssave.maxWid; + _tmp$3 = true; + wid = _tmp$2; + ok = _tmp$3; + return [wid, ok]; + }; + ss.prototype.Width = function() { return this.$val.Width(); }; + ss.ptr.prototype.getRune = function() { + var _r, _tuple, err, r, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = 0; + s = this; + _r = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + r = -1; + $s = -1; return r; + } + s.error(err); + } + $s = -1; return r; + /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.getRune }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + ss.prototype.getRune = function() { return this.$val.getRune(); }; + ss.ptr.prototype.UnreadRune = function() { + var _r, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _r = s.rs.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + s.atEOF = false; + s.count = s.count - (1) >> 0; + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.UnreadRune }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + ss.prototype.UnreadRune = function() { return this.$val.UnreadRune(); }; + ss.ptr.prototype.error = function(err) { + var err, s, x; + s = this; + $panic((x = new scanError.ptr(err), new x.constructor.elem(x))); + }; + ss.prototype.error = function(err) { return this.$val.error(err); }; + ss.ptr.prototype.errorString = function(err) { + var err, s, x; + s = this; + $panic((x = new scanError.ptr(errors.New(err)), new x.constructor.elem(x))); + }; + ss.prototype.errorString = function(err) { return this.$val.errorString(err); }; + ss.ptr.prototype.Token = function(skipSpace, f) { + var _r, err, f, s, skipSpace, tok, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; f = $f.f; s = $f.s; skipSpace = $f.skipSpace; tok = $f.tok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + err = [err]; + tok = sliceType$2.nil; + err[0] = $ifaceNil; + s = this; + $deferred.push([(function(err) { return function() { + var _tuple, e, ok, se; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tuple = $assertType(e, scanError, true); + se = $clone(_tuple[0], scanError); + ok = _tuple[1]; + if (ok) { + err[0] = se.err; + } else { + $panic(e); + } + } + }; })(err), []]); + if (f === $throwNilPointerError) { + f = notSpace; + } + s.buf = $subslice(s.buf, 0, 0); + _r = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tok = _r; + $s = -1; return [tok, err[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [tok, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ss.ptr.prototype.Token }; } $f._r = _r; $f.err = err; $f.f = f; $f.s = s; $f.skipSpace = skipSpace; $f.tok = tok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + ss.prototype.Token = function(skipSpace, f) { return this.$val.Token(skipSpace, f); }; + isSpace = function(r) { + var _i, _ref, r, rng, rx; + if (r >= 65536) { + return false; + } + rx = ((r << 16 >>> 16)); + _ref = space; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + rng = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$1); + if (rx < rng[0]) { + return false; + } + if (rx <= rng[1]) { + return true; + } + _i++; + } + return false; + }; + notSpace = function(r) { + var r; + return !isSpace(r); + }; + ss.ptr.prototype.free = function(old) { + var old, s; + s = this; + if (old.validSave) { + ssave.copy(s.ssave, old); + return; + } + if (s.buf.$capacity > 1024) { + return; + } + s.buf = $subslice(s.buf, 0, 0); + s.rs = $ifaceNil; + ssFree.Put(s); + }; + ss.prototype.free = function(old) { return this.$val.free(old); }; + ss.ptr.prototype.SkipSpace = function() { + var _r, _r$1, _r$2, _v, r, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + /* while (true) { */ case 1: + _r = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + $s = -1; return; + } + if (!(r === 13)) { _v = false; $s = 6; continue s; } + _r$1 = s.peek("\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + /* continue; */ $s = 1; continue; + /* } */ case 5: + /* */ if (r === 10) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (r === 10) { */ case 8: + if (s.ssave.nlIsSpace) { + /* continue; */ $s = 1; continue; + } + s.errorString("unexpected newline"); + $s = -1; return; + /* } */ case 9: + /* */ if (!isSpace(r)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!isSpace(r)) { */ case 10: + _r$2 = s.UnreadRune(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* break; */ $s = 2; continue; + /* } */ case 11: + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.SkipSpace }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + ss.prototype.SkipSpace = function() { return this.$val.SkipSpace(); }; + ss.ptr.prototype.token = function(skipSpace, f) { + var _r, _r$1, _r$2, f, r, s, skipSpace, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; f = $f.f; r = $f.r; s = $f.s; skipSpace = $f.skipSpace; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (skipSpace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (skipSpace) { */ case 1: + $r = s.SkipSpace(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* while (true) { */ case 4: + _r = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + /* break; */ $s = 5; continue; + } + _r$1 = f(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + _r$2 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* break; */ $s = 5; continue; + /* } */ case 8: + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).WriteRune(r); + /* } */ $s = 4; continue; case 5: + $s = -1; return (x = s.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length)); + /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.token }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.f = f; $f.r = r; $f.s = s; $f.skipSpace = skipSpace; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + ss.prototype.token = function(skipSpace, f) { return this.$val.token(skipSpace, f); }; + indexRune = function(s, r) { + var _i, _ref, _rune, c, i, r, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if (c === r) { + return i; + } + _i += _rune[1]; + } + return -1; + }; + ss.ptr.prototype.peek = function(ok) { + var _r, _r$1, ok, r, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; ok = $f.ok; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + /* */ if (!((r === -1))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === -1))) { */ case 2: + _r$1 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 3: + $s = -1; return indexRune(ok, r) >= 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.peek }; } $f._r = _r; $f._r$1 = _r$1; $f.ok = ok; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + ss.prototype.peek = function(ok) { return this.$val.peek(ok); }; + ptrType$25.methods = [{prop: "clearflags", name: "clearflags", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "fmt", typ: $funcType([ptrType$1], [], false)}, {prop: "writePadding", name: "writePadding", pkg: "fmt", typ: $funcType([$Int], [], false)}, {prop: "pad", name: "pad", pkg: "fmt", typ: $funcType([sliceType$2], [], false)}, {prop: "padString", name: "padString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtBoolean", name: "fmtBoolean", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "fmtUnicode", name: "fmtUnicode", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Int, $Bool, $String], [], false)}, {prop: "truncateString", name: "truncateString", pkg: "fmt", typ: $funcType([$String], [$String], false)}, {prop: "truncate", name: "truncate", pkg: "fmt", typ: $funcType([sliceType$2], [sliceType$2], false)}, {prop: "fmtS", name: "fmtS", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtBs", name: "fmtBs", pkg: "fmt", typ: $funcType([sliceType$2], [], false)}, {prop: "fmtSbx", name: "fmtSbx", pkg: "fmt", typ: $funcType([$String, sliceType$2, $String], [], false)}, {prop: "fmtSx", name: "fmtSx", pkg: "fmt", typ: $funcType([$String, $String], [], false)}, {prop: "fmtBx", name: "fmtBx", pkg: "fmt", typ: $funcType([sliceType$2, $String], [], false)}, {prop: "fmtQ", name: "fmtQ", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtC", name: "fmtC", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtQc", name: "fmtQc", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32, $Int], [], false)}]; + ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [], false)}]; + ptrType$2.methods = [{prop: "free", name: "free", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "unknownType", name: "unknownType", pkg: "fmt", typ: $funcType([reflect.Value], [], false)}, {prop: "badVerb", name: "badVerb", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "fmtBool", name: "fmtBool", pkg: "fmt", typ: $funcType([$Bool, $Int32], [], false)}, {prop: "fmt0x64", name: "fmt0x64", pkg: "fmt", typ: $funcType([$Uint64, $Bool], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Bool, $Int32], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32], [], false)}, {prop: "fmtComplex", name: "fmtComplex", pkg: "fmt", typ: $funcType([$Complex128, $Int, $Int32], [], false)}, {prop: "fmtString", name: "fmtString", pkg: "fmt", typ: $funcType([$String, $Int32], [], false)}, {prop: "fmtBytes", name: "fmtBytes", pkg: "fmt", typ: $funcType([sliceType$2, $Int32, $String], [], false)}, {prop: "fmtPointer", name: "fmtPointer", pkg: "fmt", typ: $funcType([reflect.Value, $Int32], [], false)}, {prop: "catchPanic", name: "catchPanic", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32, $String], [], false)}, {prop: "handleMethods", name: "handleMethods", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "printArg", name: "printArg", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32], [], false)}, {prop: "printValue", name: "printValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [], false)}, {prop: "argNumber", name: "argNumber", pkg: "fmt", typ: $funcType([$Int, $String, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "badArgNum", name: "badArgNum", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "missingArg", name: "missingArg", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "doPrintf", name: "doPrintf", pkg: "fmt", typ: $funcType([$String, sliceType], [], false)}, {prop: "doPrint", name: "doPrint", pkg: "fmt", typ: $funcType([sliceType], [], false)}, {prop: "doPrintln", name: "doPrintln", pkg: "fmt", typ: $funcType([sliceType], [], false)}]; + ptrType$5.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "getRune", name: "getRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "mustReadRune", name: "mustReadRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "error", name: "error", pkg: "fmt", typ: $funcType([$error], [], false)}, {prop: "errorString", name: "errorString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType$2, $error], false)}, {prop: "free", name: "free", pkg: "fmt", typ: $funcType([ssave], [], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "token", name: "token", pkg: "fmt", typ: $funcType([$Bool, funcType], [sliceType$2], false)}, {prop: "consume", name: "consume", pkg: "fmt", typ: $funcType([$String, $Bool], [$Bool], false)}, {prop: "peek", name: "peek", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "notEOF", name: "notEOF", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "accept", name: "accept", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "okVerb", name: "okVerb", pkg: "fmt", typ: $funcType([$Int32, $String, $String], [$Bool], false)}, {prop: "scanBool", name: "scanBool", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "getBase", name: "getBase", pkg: "fmt", typ: $funcType([$Int32], [$Int, $String], false)}, {prop: "scanNumber", name: "scanNumber", pkg: "fmt", typ: $funcType([$String, $Bool], [$String], false)}, {prop: "scanRune", name: "scanRune", pkg: "fmt", typ: $funcType([$Int], [$Int64], false)}, {prop: "scanBasePrefix", name: "scanBasePrefix", pkg: "fmt", typ: $funcType([], [$Int, $String, $Bool], false)}, {prop: "scanInt", name: "scanInt", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Int64], false)}, {prop: "scanUint", name: "scanUint", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Uint64], false)}, {prop: "floatToken", name: "floatToken", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "complexTokens", name: "complexTokens", pkg: "fmt", typ: $funcType([], [$String, $String], false)}, {prop: "convertFloat", name: "convertFloat", pkg: "fmt", typ: $funcType([$String, $Int], [$Float64], false)}, {prop: "scanComplex", name: "scanComplex", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Complex128], false)}, {prop: "convertString", name: "convertString", pkg: "fmt", typ: $funcType([$Int32], [$String], false)}, {prop: "quotedString", name: "quotedString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "hexByte", name: "hexByte", pkg: "fmt", typ: $funcType([], [$Uint8, $Bool], false)}, {prop: "hexString", name: "hexString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "scanOne", name: "scanOne", pkg: "fmt", typ: $funcType([$Int32, $emptyInterface], [], false)}, {prop: "doScan", name: "doScan", pkg: "fmt", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "fmt", typ: $funcType([$String], [$Int], false)}, {prop: "doScanf", name: "doScanf", pkg: "fmt", typ: $funcType([$String, sliceType], [$Int, $error], false)}]; + fmtFlags.init("fmt", [{prop: "widPresent", name: "widPresent", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "minus", name: "minus", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "plus", name: "plus", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "space", name: "space", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "zero", name: "zero", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", embedded: false, exported: false, typ: $Bool, tag: ""}]); + fmt.init("fmt", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "fmtFlags", name: "fmtFlags", embedded: true, exported: false, typ: fmtFlags, tag: ""}, {prop: "wid", name: "wid", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prec", name: "prec", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "intbuf", name: "intbuf", embedded: false, exported: false, typ: arrayType, tag: ""}]); + State.init([{prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]); + Formatter.init([{prop: "Format", name: "Format", pkg: "", typ: $funcType([State, $Int32], [], false)}]); + Stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); + GoStringer.init([{prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]); + buffer.init($Uint8); + pp.init("fmt", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: buffer, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: reflect.Value, tag: ""}, {prop: "fmt", name: "fmt", embedded: false, exported: false, typ: fmt, tag: ""}, {prop: "reordered", name: "reordered", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "panicking", name: "panicking", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", embedded: false, exported: false, typ: $Bool, tag: ""}]); + scanError.init("fmt", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + ss.init("fmt", [{prop: "rs", name: "rs", embedded: false, exported: false, typ: io.RuneScanner, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: buffer, tag: ""}, {prop: "count", name: "count", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "ssave", name: "ssave", embedded: true, exported: false, typ: ssave, tag: ""}]); + ssave.init("fmt", [{prop: "validSave", name: "validSave", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "limit", name: "limit", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", embedded: false, exported: false, typ: $Int, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmtsort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ppFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() { + return new pp.ptr(buffer.nil, $ifaceNil, new reflect.Value.ptr(ptrType.nil, 0, 0), new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero()), false, false, false, false); + })); + space = new sliceType$1([$toNativeArray($kindUint16, [9, 13]), $toNativeArray($kindUint16, [32, 32]), $toNativeArray($kindUint16, [133, 133]), $toNativeArray($kindUint16, [160, 160]), $toNativeArray($kindUint16, [5760, 5760]), $toNativeArray($kindUint16, [8192, 8202]), $toNativeArray($kindUint16, [8232, 8233]), $toNativeArray($kindUint16, [8239, 8239]), $toNativeArray($kindUint16, [8287, 8287]), $toNativeArray($kindUint16, [12288, 12288])]); + ssFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() { + return new ss.ptr($ifaceNil, buffer.nil, 0, false, new ssave.ptr(false, false, false, 0, 0, 0)); + })); + complexError = errors.New("syntax error scanning complex number"); + boolError = errors.New("syntax error scanning boolean"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["bytes"] = (function() { + var $pkg = {}, $init, errors, bytealg, io, unicode, utf8, Reader, sliceType, ptrType$2, errNegativeRead, IndexByte, Equal, HasPrefix, Repeat, Index, indexRabinKarp, hashStr, NewReader; + errors = $packages["errors"]; + bytealg = $packages["internal/bytealg"]; + io = $packages["io"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Reader = $pkg.Reader = $newType(0, $kindStruct, "bytes.Reader", true, "bytes", true, function(s_, i_, prevRune_) { + this.$val = this; + if (arguments.length === 0) { + this.s = sliceType.nil; + this.i = new $Int64(0, 0); + this.prevRune = 0; + return; + } + this.s = s_; + this.i = i_; + this.prevRune = prevRune_; + }); + sliceType = $sliceType($Uint8); + ptrType$2 = $ptrType(Reader); + IndexByte = function(s, c) { + var _i, _ref, b, c, i, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (b === c) { + return i; + } + _i++; + } + return -1; + }; + $pkg.IndexByte = IndexByte; + Equal = function(a, b) { + var _i, _ref, a, b, c, i; + if (!((a.$length === b.$length))) { + return false; + } + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { + return false; + } + _i++; + } + return true; + }; + $pkg.Equal = Equal; + HasPrefix = function(s, prefix) { + var prefix, s; + return s.$length >= prefix.$length && Equal($subslice(s, 0, prefix.$length), prefix); + }; + $pkg.HasPrefix = HasPrefix; + Repeat = function(b, count) { + var _q, b, bp, count, nb; + if (count < 0) { + $panic(new $String("bytes: negative Repeat count")); + } else if (count > 0 && !(((_q = ($imul(b.$length, count)) / count, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === b.$length))) { + $panic(new $String("bytes: Repeat count causes overflow")); + } + nb = $makeSlice(sliceType, ($imul(b.$length, count))); + bp = $copySlice(nb, b); + while (true) { + if (!(bp < nb.$length)) { break; } + $copySlice($subslice(nb, bp), $subslice(nb, 0, bp)); + bp = $imul(bp, (2)); + } + return nb; + }; + $pkg.Repeat = Repeat; + Index = function(s, sep) { + var c0, c0$1, c1, c1$1, fails, fails$1, i, i$1, j, n, o, o$1, r, s, sep, t, t$1, x, x$1; + n = sep.$length; + if ((n === 0)) { + return 0; + } else if ((n === 1)) { + return IndexByte(s, (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0])); + } else if ((n === s.$length)) { + if (Equal(sep, s)) { + return 0; + } + return -1; + } else if (n > s.$length) { + return -1; + } else if (n <= bytealg.MaxLen) { + if (s.$length <= 0) { + return bytealg.Index(s, sep); + } + c0 = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]); + c1 = (1 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 1]); + i = 0; + t = (s.$length - n >> 0) + 1 >> 0; + fails = 0; + while (true) { + if (!(i < t)) { break; } + if (!((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === c0))) { + o = IndexByte($subslice(s, i, t), c0); + if (o < 0) { + return -1; + } + i = i + (o) >> 0; + } + if (((x = i + 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) === c1) && Equal($subslice(s, i, (i + n >> 0)), sep)) { + return i; + } + fails = fails + (1) >> 0; + i = i + (1) >> 0; + if (fails > bytealg.Cutover(i)) { + r = bytealg.Index($subslice(s, i), sep); + if (r >= 0) { + return r + i >> 0; + } + return -1; + } + } + return -1; + } + c0$1 = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]); + c1$1 = (1 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 1]); + i$1 = 0; + fails$1 = 0; + t$1 = (s.$length - n >> 0) + 1 >> 0; + while (true) { + if (!(i$1 < t$1)) { break; } + if (!((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) === c0$1))) { + o$1 = IndexByte($subslice(s, i$1, t$1), c0$1); + if (o$1 < 0) { + break; + } + i$1 = i$1 + (o$1) >> 0; + } + if (((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1])) === c1$1) && Equal($subslice(s, i$1, (i$1 + n >> 0)), sep)) { + return i$1; + } + i$1 = i$1 + (1) >> 0; + fails$1 = fails$1 + (1) >> 0; + if (fails$1 >= (4 + (i$1 >> 4 >> 0) >> 0) && i$1 < t$1) { + j = indexRabinKarp($subslice(s, i$1), sep); + if (j < 0) { + return -1; + } + return i$1 + j >> 0; + } + } + return -1; + }; + $pkg.Index = Index; + indexRabinKarp = function(s, sep) { + var _tuple, h, hashsep, i, i$1, n, pow, s, sep, x; + _tuple = hashStr(sep); + hashsep = _tuple[0]; + pow = _tuple[1]; + n = sep.$length; + h = 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + h = ($imul(h, 16777619) >>> 0) + ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >>> 0)) >>> 0; + i = i + (1) >> 0; + } + if ((h === hashsep) && Equal($subslice(s, 0, n), sep)) { + return 0; + } + i$1 = n; + while (true) { + if (!(i$1 < s.$length)) { break; } + h = $imul(h, (16777619)) >>> 0; + h = h + (((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) >>> 0))) >>> 0; + h = h - (($imul(pow, (((x = i$1 - n >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >>> 0))) >>> 0)) >>> 0; + i$1 = i$1 + (1) >> 0; + if ((h === hashsep) && Equal($subslice(s, (i$1 - n >> 0), i$1), sep)) { + return i$1 - n >> 0; + } + } + return -1; + }; + hashStr = function(sep) { + var _tmp, _tmp$1, hash, i, i$1, pow, sep, sq; + hash = 0; + i = 0; + while (true) { + if (!(i < sep.$length)) { break; } + hash = ($imul(hash, 16777619) >>> 0) + ((((i < 0 || i >= sep.$length) ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + i]) >>> 0)) >>> 0; + i = i + (1) >> 0; + } + _tmp = 1; + _tmp$1 = 16777619; + pow = _tmp; + sq = _tmp$1; + i$1 = sep.$length; + while (true) { + if (!(i$1 > 0)) { break; } + if (!(((i$1 & 1) === 0))) { + pow = $imul(pow, (sq)) >>> 0; + } + sq = $imul(sq, (sq)) >>> 0; + i$1 = (i$1 >> $min((1), 31)) >> 0; + } + return [hash, pow]; + }; + Reader.ptr.prototype.Len = function() { + var r, x, x$1, x$2, x$3, x$4; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + return 0; + } + return (((x$2 = (x$3 = (new $Int64(0, r.s.$length)), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + }; + Reader.prototype.Len = function() { return this.$val.Len(); }; + Reader.ptr.prototype.Size = function() { + var r; + r = this; + return (new $Int64(0, r.s.$length)); + }; + Reader.prototype.Size = function() { return this.$val.Size(); }; + Reader.ptr.prototype.Read = function(b) { + var _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3; + n = 0; + err = $ifaceNil; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + _tmp = 0; + _tmp$1 = io.EOF; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + r.prevRune = -1; + n = $copySlice(b, $subslice(r.s, $flatten64(r.i))); + r.i = (x$2 = r.i, x$3 = (new $Int64(0, n)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + return [n, err]; + }; + Reader.prototype.Read = function(b) { return this.$val.Read(b); }; + Reader.ptr.prototype.ReadAt = function(b, off) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x; + n = 0; + err = $ifaceNil; + r = this; + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp = 0; + _tmp$1 = errors.New("bytes.Reader.ReadAt: negative offset"); + n = _tmp; + err = _tmp$1; + return [n, err]; + } + if ((x = (new $Int64(0, r.s.$length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) { + _tmp$2 = 0; + _tmp$3 = io.EOF; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + } + n = $copySlice(b, $subslice(r.s, $flatten64(off))); + if (n < b.$length) { + err = io.EOF; + } + return [n, err]; + }; + Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); }; + Reader.ptr.prototype.ReadByte = function() { + var b, r, x, x$1, x$2, x$3, x$4, x$5; + r = this; + r.prevRune = -1; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + return [0, io.EOF]; + } + b = (x$2 = r.s, x$3 = r.i, (($flatten64(x$3) < 0 || $flatten64(x$3) >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + $flatten64(x$3)])); + r.i = (x$4 = r.i, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); + return [b, $ifaceNil]; + }; + Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); }; + Reader.ptr.prototype.UnreadByte = function() { + var r, x, x$1, x$2; + r = this; + if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + return errors.New("bytes.Reader.UnreadByte: at beginning of slice"); + } + r.prevRune = -1; + r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + return $ifaceNil; + }; + Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); }; + Reader.ptr.prototype.ReadRune = function() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + ch = 0; + size = 0; + err = $ifaceNil; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + r.prevRune = -1; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = io.EOF; + ch = _tmp; + size = _tmp$1; + err = _tmp$2; + return [ch, size, err]; + } + r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + c = (x$3 = r.s, x$4 = r.i, (($flatten64(x$4) < 0 || $flatten64(x$4) >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + $flatten64(x$4)])); + if (c < 128) { + r.i = (x$5 = r.i, x$6 = new $Int64(0, 1), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)); + _tmp$3 = ((c >> 0)); + _tmp$4 = 1; + _tmp$5 = $ifaceNil; + ch = _tmp$3; + size = _tmp$4; + err = _tmp$5; + return [ch, size, err]; + } + _tuple = utf8.DecodeRune($subslice(r.s, $flatten64(r.i))); + ch = _tuple[0]; + size = _tuple[1]; + r.i = (x$7 = r.i, x$8 = (new $Int64(0, size)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)); + return [ch, size, err]; + }; + Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); }; + Reader.ptr.prototype.UnreadRune = function() { + var r, x; + r = this; + if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + return errors.New("bytes.Reader.UnreadRune: at beginning of slice"); + } + if (r.prevRune < 0) { + return errors.New("bytes.Reader.UnreadRune: previous operation was not ReadRune"); + } + r.i = (new $Int64(0, r.prevRune)); + r.prevRune = -1; + return $ifaceNil; + }; + Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); }; + Reader.ptr.prototype.Seek = function(offset, whence) { + var _1, abs, offset, r, whence, x, x$1; + r = this; + r.prevRune = -1; + abs = new $Int64(0, 0); + _1 = whence; + if (_1 === (0)) { + abs = offset; + } else if (_1 === (1)) { + abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); + } else if (_1 === (2)) { + abs = (x$1 = (new $Int64(0, r.s.$length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low)); + } else { + return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: invalid whence")]; + } + if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { + return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: negative position")]; + } + r.i = abs; + return [abs, $ifaceNil]; + }; + Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); }; + Reader.ptr.prototype.WriteTo = function(w) { + var _r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; m = $f.m; n = $f.n; r = $f.r; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + r = this; + r.prevRune = -1; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + _tmp = new $Int64(0, 0); + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + b = $subslice(r.s, $flatten64(r.i)); + _r = w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + err = _tuple[1]; + if (m > b.$length) { + $panic(new $String("bytes.Reader.WriteTo: invalid Write count")); + } + r.i = (x$2 = r.i, x$3 = (new $Int64(0, m)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + n = (new $Int64(0, m)); + if (!((m === b.$length)) && $interfaceIsEqual(err, $ifaceNil)) { + err = io.ErrShortWrite; + } + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f; + }; + Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); }; + Reader.ptr.prototype.Reset = function(b) { + var b, r; + r = this; + Reader.copy(r, new Reader.ptr(b, new $Int64(0, 0), -1)); + }; + Reader.prototype.Reset = function(b) { return this.$val.Reset(b); }; + NewReader = function(b) { + var b; + return new Reader.ptr(b, new $Int64(0, 0), -1); + }; + $pkg.NewReader = NewReader; + ptrType$2.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([sliceType], [], false)}]; + Reader.init("bytes", [{prop: "s", name: "s", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", embedded: false, exported: false, typ: $Int, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrTooLarge = errors.New("bytes.Buffer: too large"); + errNegativeRead = errors.New("bytes.Buffer: reader returned negative count from Read"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["encoding/binary"] = (function() { + var $pkg = {}, $init, errors, io, math, reflect, ByteOrder, littleEndian, bigEndian, decoder, encoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, sliceType$7, sliceType$8, ptrType$9, ptrType$10, overflow, Read, Write, Size, dataSize, sizeof, intDataSize; + errors = $packages["errors"]; + io = $packages["io"]; + math = $packages["math"]; + reflect = $packages["reflect"]; + ByteOrder = $pkg.ByteOrder = $newType(8, $kindInterface, "binary.ByteOrder", true, "encoding/binary", true, null); + littleEndian = $pkg.littleEndian = $newType(0, $kindStruct, "binary.littleEndian", true, "encoding/binary", false, function() { + this.$val = this; + if (arguments.length === 0) { + return; + } + }); + bigEndian = $pkg.bigEndian = $newType(0, $kindStruct, "binary.bigEndian", true, "encoding/binary", false, function() { + this.$val = this; + if (arguments.length === 0) { + return; + } + }); + decoder = $pkg.decoder = $newType(0, $kindStruct, "binary.decoder", true, "encoding/binary", false, function(order_, buf_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.order = $ifaceNil; + this.buf = sliceType.nil; + this.offset = 0; + return; + } + this.order = order_; + this.buf = buf_; + this.offset = offset_; + }); + encoder = $pkg.encoder = $newType(0, $kindStruct, "binary.encoder", true, "encoding/binary", false, function(order_, buf_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.order = $ifaceNil; + this.buf = sliceType.nil; + this.offset = 0; + return; + } + this.order = order_; + this.buf = buf_; + this.offset = offset_; + }); + sliceType = $sliceType($Uint8); + ptrType = $ptrType($Bool); + ptrType$1 = $ptrType($Int8); + ptrType$2 = $ptrType($Uint8); + ptrType$3 = $ptrType($Int16); + ptrType$4 = $ptrType($Uint16); + ptrType$5 = $ptrType($Int32); + ptrType$6 = $ptrType($Uint32); + ptrType$7 = $ptrType($Int64); + ptrType$8 = $ptrType($Uint64); + sliceType$1 = $sliceType($Bool); + sliceType$2 = $sliceType($Int8); + sliceType$3 = $sliceType($Int16); + sliceType$4 = $sliceType($Uint16); + sliceType$5 = $sliceType($Int32); + sliceType$6 = $sliceType($Uint32); + sliceType$7 = $sliceType($Int64); + sliceType$8 = $sliceType($Uint64); + ptrType$9 = $ptrType(decoder); + ptrType$10 = $ptrType(encoder); + littleEndian.ptr.prototype.Uint16 = function(b) { + var b; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; + }; + littleEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); }; + littleEndian.ptr.prototype.PutUint16 = function(b, v) { + var b, v; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); + }; + littleEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); }; + littleEndian.ptr.prototype.Uint32 = function(b) { + var b; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return ((((((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0; + }; + littleEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); }; + littleEndian.ptr.prototype.PutUint32 = function(b, v) { + var b, v; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 >>> 0) << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 16 >>> 0) << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (((v >>> 24 >>> 0) << 24 >>> 24))); + }; + littleEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); }; + littleEndian.ptr.prototype.Uint64 = function(b) { + var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$7 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); + }; + littleEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); }; + littleEndian.ptr.prototype.PutUint64 = function(b, v) { + var b, v; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v.$low << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 8).$low << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 16).$low << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 24).$low << 24 >>> 24))); + (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 32).$low << 24 >>> 24))); + (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 40).$low << 24 >>> 24))); + (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 48).$low << 24 >>> 24))); + (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = (($shiftRightUint64(v, 56).$low << 24 >>> 24))); + }; + littleEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); }; + littleEndian.ptr.prototype.String = function() { + return "LittleEndian"; + }; + littleEndian.prototype.String = function() { return this.$val.String(); }; + littleEndian.ptr.prototype.GoString = function() { + return "binary.LittleEndian"; + }; + littleEndian.prototype.GoString = function() { return this.$val.GoString(); }; + bigEndian.ptr.prototype.Uint16 = function(b) { + var b; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; + }; + bigEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); }; + bigEndian.ptr.prototype.PutUint16 = function(b, v) { + var b, v; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = ((v << 24 >>> 24))); + }; + bigEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); }; + bigEndian.ptr.prototype.Uint32 = function(b) { + var b; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0; + }; + bigEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); }; + bigEndian.ptr.prototype.PutUint32 = function(b, v) { + var b, v; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 24 >>> 0) << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 16 >>> 0) << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 8 >>> 0) << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = ((v << 24 >>> 24))); + }; + bigEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); }; + bigEndian.ptr.prototype.Uint64 = function(b) { + var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); + }; + bigEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); }; + bigEndian.ptr.prototype.PutUint64 = function(b, v) { + var b, v; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24))); + (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24))); + (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24))); + (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24))); + (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = ((v.$low << 24 >>> 24))); + }; + bigEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); }; + bigEndian.ptr.prototype.String = function() { + return "BigEndian"; + }; + bigEndian.prototype.String = function() { return this.$val.String(); }; + bigEndian.ptr.prototype.GoString = function() { + return "binary.BigEndian"; + }; + bigEndian.prototype.GoString = function() { return this.$val.GoString(); }; + Read = function(r, order, data) { + var _1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _tuple, _tuple$1, bs, d, data, data$1, data$10, data$11, data$12, data$13, data$14, data$15, data$16, data$17, data$18, data$2, data$3, data$4, data$5, data$6, data$7, data$8, data$9, err, err$1, i, i$1, i$2, i$3, i$4, i$5, i$6, i$7, n, order, r, size, v, x, x$1, x$2, x$3, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _i$6 = $f._i$6; _i$7 = $f._i$7; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _ref$7 = $f._ref$7; _ref$8 = $f._ref$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bs = $f.bs; d = $f.d; data = $f.data; data$1 = $f.data$1; data$10 = $f.data$10; data$11 = $f.data$11; data$12 = $f.data$12; data$13 = $f.data$13; data$14 = $f.data$14; data$15 = $f.data$15; data$16 = $f.data$16; data$17 = $f.data$17; data$18 = $f.data$18; data$2 = $f.data$2; data$3 = $f.data$3; data$4 = $f.data$4; data$5 = $f.data$5; data$6 = $f.data$6; data$7 = $f.data$7; data$8 = $f.data$8; data$9 = $f.data$9; err = $f.err; err$1 = $f.err$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; i$5 = $f.i$5; i$6 = $f.i$6; i$7 = $f.i$7; n = $f.n; order = $f.order; r = $f.r; size = $f.size; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = intDataSize(data); + /* */ if (!((n === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((n === 0))) { */ case 1: + bs = $makeSlice(sliceType, n); + _r = io.ReadFull(r, bs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _ref = data; + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, sliceType$1, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, sliceType, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, sliceType$3, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, sliceType$4, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, sliceType$5, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, sliceType$6, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, sliceType$7, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, sliceType$8, true)[1]) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if ($assertType(_ref, ptrType, true)[1]) { */ case 4: + data$1 = _ref.$val; + data$1.$set(!(((0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0]) === 0))); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 5: + data$2 = _ref.$val; + data$2.$set((((0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0]) << 24 >> 24))); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 6: + data$3 = _ref.$val; + data$3.$set((0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0])); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 7: + data$4 = _ref.$val; + _r$1 = order.Uint16(bs); /* */ $s = 23; case 23: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + data$4.$set(((_r$1 << 16 >> 16))); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 8: + data$5 = _ref.$val; + _r$2 = order.Uint16(bs); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + data$5.$set(_r$2); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 9: + data$6 = _ref.$val; + _r$3 = order.Uint32(bs); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + data$6.$set(((_r$3 >> 0))); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 10: + data$7 = _ref.$val; + _r$4 = order.Uint32(bs); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + data$7.$set(_r$4); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 11: + data$8 = _ref.$val; + _r$5 = order.Uint64(bs); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + data$8.$set(((x = _r$5, new $Int64(x.$high, x.$low)))); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 12: + data$9 = _ref.$val; + _r$6 = order.Uint64(bs); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + data$9.$set(_r$6); + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$1, true)[1]) { */ case 13: + data$10 = _ref.$val; + _ref$1 = bs; + _i = 0; + while (true) { + if (!(_i < _ref$1.$length)) { break; } + i = _i; + x$1 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + ((i < 0 || i >= data$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$10.$array[data$10.$offset + i] = !((x$1 === 0))); + _i++; + } + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 14: + data$11 = _ref.$val; + _ref$2 = bs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + i$1 = _i$1; + x$2 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + ((i$1 < 0 || i$1 >= data$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$11.$array[data$11.$offset + i$1] = ((x$2 << 24 >> 24))); + _i$1++; + } + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType, true)[1]) { */ case 15: + data$12 = _ref.$val; + $copySlice(data$12, bs); + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$3, true)[1]) { */ case 16: + data$13 = _ref.$val; + _ref$3 = data$13; + _i$2 = 0; + /* while (true) { */ case 29: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 30; continue; } + i$2 = _i$2; + _r$7 = order.Uint16($subslice(bs, ($imul(2, i$2)))); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + ((i$2 < 0 || i$2 >= data$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$13.$array[data$13.$offset + i$2] = ((_r$7 << 16 >> 16))); + _i$2++; + /* } */ $s = 29; continue; case 30: + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$4, true)[1]) { */ case 17: + data$14 = _ref.$val; + _ref$4 = data$14; + _i$3 = 0; + /* while (true) { */ case 32: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 33; continue; } + i$3 = _i$3; + _r$8 = order.Uint16($subslice(bs, ($imul(2, i$3)))); /* */ $s = 34; case 34: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + ((i$3 < 0 || i$3 >= data$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$14.$array[data$14.$offset + i$3] = _r$8); + _i$3++; + /* } */ $s = 32; continue; case 33: + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$5, true)[1]) { */ case 18: + data$15 = _ref.$val; + _ref$5 = data$15; + _i$4 = 0; + /* while (true) { */ case 35: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 36; continue; } + i$4 = _i$4; + _r$9 = order.Uint32($subslice(bs, ($imul(4, i$4)))); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + ((i$4 < 0 || i$4 >= data$15.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$15.$array[data$15.$offset + i$4] = ((_r$9 >> 0))); + _i$4++; + /* } */ $s = 35; continue; case 36: + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$6, true)[1]) { */ case 19: + data$16 = _ref.$val; + _ref$6 = data$16; + _i$5 = 0; + /* while (true) { */ case 38: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 39; continue; } + i$5 = _i$5; + _r$10 = order.Uint32($subslice(bs, ($imul(4, i$5)))); /* */ $s = 40; case 40: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + ((i$5 < 0 || i$5 >= data$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$16.$array[data$16.$offset + i$5] = _r$10); + _i$5++; + /* } */ $s = 38; continue; case 39: + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$7, true)[1]) { */ case 20: + data$17 = _ref.$val; + _ref$7 = data$17; + _i$6 = 0; + /* while (true) { */ case 41: + /* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 42; continue; } + i$6 = _i$6; + _r$11 = order.Uint64($subslice(bs, ($imul(8, i$6)))); /* */ $s = 43; case 43: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + ((i$6 < 0 || i$6 >= data$17.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$17.$array[data$17.$offset + i$6] = ((x$3 = _r$11, new $Int64(x$3.$high, x$3.$low)))); + _i$6++; + /* } */ $s = 41; continue; case 42: + $s = 22; continue; + /* } else if ($assertType(_ref, sliceType$8, true)[1]) { */ case 21: + data$18 = _ref.$val; + _ref$8 = data$18; + _i$7 = 0; + /* while (true) { */ case 44: + /* if (!(_i$7 < _ref$8.$length)) { break; } */ if(!(_i$7 < _ref$8.$length)) { $s = 45; continue; } + i$7 = _i$7; + _r$12 = order.Uint64($subslice(bs, ($imul(8, i$7)))); /* */ $s = 46; case 46: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + ((i$7 < 0 || i$7 >= data$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$18.$array[data$18.$offset + i$7] = _r$12); + _i$7++; + /* } */ $s = 44; continue; case 45: + /* } */ case 22: + $s = -1; return $ifaceNil; + /* } */ case 2: + _r$13 = reflect.ValueOf(data); /* */ $s = 47; case 47: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + v = _r$13; + size = -1; + _1 = $clone(v, reflect.Value).Kind(); + /* */ if (_1 === (22)) { $s = 49; continue; } + /* */ if (_1 === (23)) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (_1 === (22)) { */ case 49: + _r$14 = $clone(v, reflect.Value).Elem(); /* */ $s = 52; case 52: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + v = _r$14; + _r$15 = dataSize($clone(v, reflect.Value)); /* */ $s = 53; case 53: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + size = _r$15; + $s = 51; continue; + /* } else if (_1 === (23)) { */ case 50: + _r$16 = dataSize($clone(v, reflect.Value)); /* */ $s = 54; case 54: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + size = _r$16; + /* } */ case 51: + case 48: + /* */ if (size < 0) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if (size < 0) { */ case 55: + _r$17 = reflect.TypeOf(data).String(); /* */ $s = 57; case 57: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = errors.New("binary.Read: invalid type " + _r$17); /* */ $s = 58; case 58: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $s = -1; return _r$18; + /* } */ case 56: + d = new decoder.ptr(order, $makeSlice(sliceType, size), 0); + _r$19 = io.ReadFull(r, d.buf); /* */ $s = 59; case 59: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _tuple$1 = _r$19; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + $r = d.value($clone(v, reflect.Value)); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Read }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._i$6 = _i$6; $f._i$7 = _i$7; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._ref$7 = _ref$7; $f._ref$8 = _ref$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bs = bs; $f.d = d; $f.data = data; $f.data$1 = data$1; $f.data$10 = data$10; $f.data$11 = data$11; $f.data$12 = data$12; $f.data$13 = data$13; $f.data$14 = data$14; $f.data$15 = data$15; $f.data$16 = data$16; $f.data$17 = data$17; $f.data$18 = data$18; $f.data$2 = data$2; $f.data$3 = data$3; $f.data$4 = data$4; $f.data$5 = data$5; $f.data$6 = data$6; $f.data$7 = data$7; $f.data$8 = data$8; $f.data$9 = data$9; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.i$5 = i$5; $f.i$6 = i$6; $f.i$7 = i$7; $f.n = n; $f.order = order; $f.r = r; $f.size = size; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Read = Read; + Write = function(w, order, data) { + var _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _tuple, _tuple$1, bs, buf, data, e, err, err$1, i, i$1, i$2, i$3, i$4, i$5, i$6, i$7, n, order, size, v, v$1, v$10, v$11, v$12, v$13, v$14, v$15, v$16, v$17, v$18, v$19, v$2, v$20, v$21, v$22, v$23, v$24, v$25, v$26, v$27, v$3, v$4, v$5, v$6, v$7, v$8, v$9, w, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _i$6 = $f._i$6; _i$7 = $f._i$7; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _ref$7 = $f._ref$7; _ref$8 = $f._ref$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bs = $f.bs; buf = $f.buf; data = $f.data; e = $f.e; err = $f.err; err$1 = $f.err$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; i$5 = $f.i$5; i$6 = $f.i$6; i$7 = $f.i$7; n = $f.n; order = $f.order; size = $f.size; v = $f.v; v$1 = $f.v$1; v$10 = $f.v$10; v$11 = $f.v$11; v$12 = $f.v$12; v$13 = $f.v$13; v$14 = $f.v$14; v$15 = $f.v$15; v$16 = $f.v$16; v$17 = $f.v$17; v$18 = $f.v$18; v$19 = $f.v$19; v$2 = $f.v$2; v$20 = $f.v$20; v$21 = $f.v$21; v$22 = $f.v$22; v$23 = $f.v$23; v$24 = $f.v$24; v$25 = $f.v$25; v$26 = $f.v$26; v$27 = $f.v$27; v$3 = $f.v$3; v$4 = $f.v$4; v$5 = $f.v$5; v$6 = $f.v$6; v$7 = $f.v$7; v$8 = $f.v$8; v$9 = $f.v$9; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = intDataSize(data); + /* */ if (!((n === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((n === 0))) { */ case 1: + bs = $makeSlice(sliceType, n); + _ref = data; + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, sliceType$1, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, sliceType, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, sliceType$3, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, sliceType$4, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, sliceType$5, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 21; continue; } + /* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 22; continue; } + /* */ if ($assertType(_ref, sliceType$6, true)[1]) { $s = 23; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 24; continue; } + /* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; } + /* */ if ($assertType(_ref, sliceType$7, true)[1]) { $s = 26; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 27; continue; } + /* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 28; continue; } + /* */ if ($assertType(_ref, sliceType$8, true)[1]) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if ($assertType(_ref, ptrType, true)[1]) { */ case 3: + v = _ref.$val; + if (v.$get()) { + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 1); + } else { + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 0); + } + $s = 30; continue; + /* } else if ($assertType(_ref, $Bool, true)[1]) { */ case 4: + v$1 = _ref.$val; + if (v$1) { + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 1); + } else { + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 0); + } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$1, true)[1]) { */ case 5: + v$2 = _ref.$val; + _ref$1 = v$2; + _i = 0; + while (true) { + if (!(_i < _ref$1.$length)) { break; } + i = _i; + x = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (x) { + ((i < 0 || i >= bs.$length) ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + i] = 1); + } else { + ((i < 0 || i >= bs.$length) ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + i] = 0); + } + _i++; + } + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 6: + v$3 = _ref.$val; + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = ((v$3.$get() << 24 >>> 24))); + $s = 30; continue; + /* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 7: + v$4 = _ref.$val; + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = ((v$4 << 24 >>> 24))); + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 8: + v$5 = _ref.$val; + _ref$2 = v$5; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + i$1 = _i$1; + x$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + ((i$1 < 0 || i$1 >= bs.$length) ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + i$1] = ((x$1 << 24 >>> 24))); + _i$1++; + } + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 9: + v$6 = _ref.$val; + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = v$6.$get()); + $s = 30; continue; + /* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 10: + v$7 = _ref.$val; + (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = v$7); + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType, true)[1]) { */ case 11: + v$8 = _ref.$val; + bs = v$8; + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 12: + v$9 = _ref.$val; + $r = order.PutUint16(bs, ((v$9.$get() << 16 >>> 16))); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 13: + v$10 = _ref.$val; + $r = order.PutUint16(bs, ((v$10 << 16 >>> 16))); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$3, true)[1]) { */ case 14: + v$11 = _ref.$val; + _ref$3 = v$11; + _i$2 = 0; + /* while (true) { */ case 33: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 34; continue; } + i$2 = _i$2; + x$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + $r = order.PutUint16($subslice(bs, ($imul(2, i$2))), ((x$2 << 16 >>> 16))); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + /* } */ $s = 33; continue; case 34: + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 15: + v$12 = _ref.$val; + $r = order.PutUint16(bs, v$12.$get()); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 16: + v$13 = _ref.$val; + $r = order.PutUint16(bs, v$13); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$4, true)[1]) { */ case 17: + v$14 = _ref.$val; + _ref$4 = v$14; + _i$3 = 0; + /* while (true) { */ case 38: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 39; continue; } + i$3 = _i$3; + x$3 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + $r = order.PutUint16($subslice(bs, ($imul(2, i$3))), x$3); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + /* } */ $s = 38; continue; case 39: + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 18: + v$15 = _ref.$val; + $r = order.PutUint32(bs, ((v$15.$get() >>> 0))); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 19: + v$16 = _ref.$val; + $r = order.PutUint32(bs, ((v$16 >>> 0))); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$5, true)[1]) { */ case 20: + v$17 = _ref.$val; + _ref$5 = v$17; + _i$4 = 0; + /* while (true) { */ case 43: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 44; continue; } + i$4 = _i$4; + x$4 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); + $r = order.PutUint32($subslice(bs, ($imul(4, i$4))), ((x$4 >>> 0))); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + /* } */ $s = 43; continue; case 44: + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 21: + v$18 = _ref.$val; + $r = order.PutUint32(bs, v$18.$get()); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 22: + v$19 = _ref.$val; + $r = order.PutUint32(bs, v$19); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$6, true)[1]) { */ case 23: + v$20 = _ref.$val; + _ref$6 = v$20; + _i$5 = 0; + /* while (true) { */ case 48: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 49; continue; } + i$5 = _i$5; + x$5 = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); + $r = order.PutUint32($subslice(bs, ($imul(4, i$5))), x$5); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$5++; + /* } */ $s = 48; continue; case 49: + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 24: + v$21 = _ref.$val; + $r = order.PutUint64(bs, ((x$6 = v$21.$get(), new $Uint64(x$6.$high, x$6.$low)))); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25: + v$22 = _ref.$val; + $r = order.PutUint64(bs, (new $Uint64(v$22.$high, v$22.$low))); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$7, true)[1]) { */ case 26: + v$23 = _ref.$val; + _ref$7 = v$23; + _i$6 = 0; + /* while (true) { */ case 53: + /* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 54; continue; } + i$6 = _i$6; + x$7 = ((_i$6 < 0 || _i$6 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$6]); + $r = order.PutUint64($subslice(bs, ($imul(8, i$6))), (new $Uint64(x$7.$high, x$7.$low))); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$6++; + /* } */ $s = 53; continue; case 54: + $s = 30; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 27: + v$24 = _ref.$val; + $r = order.PutUint64(bs, v$24.$get()); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 28: + v$25 = _ref.$val; + $r = order.PutUint64(bs, v$25); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else if ($assertType(_ref, sliceType$8, true)[1]) { */ case 29: + v$26 = _ref.$val; + _ref$8 = v$26; + _i$7 = 0; + /* while (true) { */ case 58: + /* if (!(_i$7 < _ref$8.$length)) { break; } */ if(!(_i$7 < _ref$8.$length)) { $s = 59; continue; } + i$7 = _i$7; + x$8 = ((_i$7 < 0 || _i$7 >= _ref$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$8.$array[_ref$8.$offset + _i$7]); + $r = order.PutUint64($subslice(bs, ($imul(8, i$7))), x$8); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$7++; + /* } */ $s = 58; continue; case 59: + /* } */ case 30: + _r = w.Write(bs); /* */ $s = 61; case 61: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return err; + /* } */ case 2: + _r$1 = reflect.ValueOf(data); /* */ $s = 62; case 62: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = reflect.Indirect($clone(_r$1, reflect.Value)); /* */ $s = 63; case 63: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v$27 = _r$2; + _r$3 = dataSize($clone(v$27, reflect.Value)); /* */ $s = 64; case 64: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + size = _r$3; + /* */ if (size < 0) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (size < 0) { */ case 65: + _r$4 = reflect.TypeOf(data).String(); /* */ $s = 67; case 67: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = errors.New("binary.Write: invalid type " + _r$4); /* */ $s = 68; case 68: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $s = -1; return _r$5; + /* } */ case 66: + buf = $makeSlice(sliceType, size); + e = new encoder.ptr(order, buf, 0); + $r = e.value($clone(v$27, reflect.Value)); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$6 = w.Write(buf); /* */ $s = 70; case 70: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$1 = _r$6; + err$1 = _tuple$1[1]; + $s = -1; return err$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Write }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._i$6 = _i$6; $f._i$7 = _i$7; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._ref$7 = _ref$7; $f._ref$8 = _ref$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bs = bs; $f.buf = buf; $f.data = data; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.i$5 = i$5; $f.i$6 = i$6; $f.i$7 = i$7; $f.n = n; $f.order = order; $f.size = size; $f.v = v; $f.v$1 = v$1; $f.v$10 = v$10; $f.v$11 = v$11; $f.v$12 = v$12; $f.v$13 = v$13; $f.v$14 = v$14; $f.v$15 = v$15; $f.v$16 = v$16; $f.v$17 = v$17; $f.v$18 = v$18; $f.v$19 = v$19; $f.v$2 = v$2; $f.v$20 = v$20; $f.v$21 = v$21; $f.v$22 = v$22; $f.v$23 = v$23; $f.v$24 = v$24; $f.v$25 = v$25; $f.v$26 = v$26; $f.v$27 = v$27; $f.v$3 = v$3; $f.v$4 = v$4; $f.v$5 = v$5; $f.v$6 = v$6; $f.v$7 = v$7; $f.v$8 = v$8; $f.v$9 = v$9; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Write = Write; + Size = function(v) { + var _r, _r$1, _r$2, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = reflect.Indirect($clone(_r, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = dataSize($clone(_r$1, reflect.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: Size }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Size = Size; + dataSize = function(v) { + var _r, _r$1, _r$2, s, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ if ($clone(v, reflect.Value).Kind() === 23) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($clone(v, reflect.Value).Kind() === 23) { */ case 1: + _r = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = sizeof(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = _r$1; + if (s >= 0) { + $s = -1; return $imul(s, $clone(v, reflect.Value).Len()); + } + $s = -1; return -1; + /* } */ case 2: + _r$2 = sizeof($clone(v, reflect.Value).Type()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: dataSize }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + sizeof = function(t) { + var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, i, n, s, s$1, sum, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; i = $f.i; n = $f.n; s = $f.s; s$1 = $f.s$1; sum = $f.sum; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = t.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _1 = _r; + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (25)) { $s = 4; continue; } + /* */ if ((_1 === (1)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (13)) || (_1 === (14)) || (_1 === (15)) || (_1 === (16))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (17)) { */ case 3: + _r$1 = t.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = sizeof(_r$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + s = _r$2; + /* */ if (s >= 0) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (s >= 0) { */ case 9: + _r$3 = t.Len(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $s = -1; return $imul(s, _r$3); + /* } */ case 10: + $s = 6; continue; + /* } else if (_1 === (25)) { */ case 4: + sum = 0; + _tmp = 0; + _r$4 = t.NumField(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tmp$1 = _r$4; + i = _tmp; + n = _tmp$1; + /* while (true) { */ case 13: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 14; continue; } + _r$5 = t.Field(i); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = sizeof(_r$5.Type); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + s$1 = _r$6; + if (s$1 < 0) { + $s = -1; return -1; + } + sum = sum + (s$1) >> 0; + i = i + (1) >> 0; + /* } */ $s = 13; continue; case 14: + $s = -1; return sum; + /* } else if ((_1 === (1)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (13)) || (_1 === (14)) || (_1 === (15)) || (_1 === (16))) { */ case 5: + _r$7 = t.Size(); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $s = -1; return ((_r$7 >> 0)); + /* } */ case 6: + case 1: + $s = -1; return -1; + /* */ } return; } if ($f === undefined) { $f = { $blk: sizeof }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.i = i; $f.n = n; $f.s = s; $f.s$1 = s$1; $f.sum = sum; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.ptr.prototype.bool = function() { + var d, x, x$1, x$2; + d = this; + x$2 = (x = d.buf, x$1 = d.offset, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + d.offset = d.offset + (1) >> 0; + return !((x$2 === 0)); + }; + decoder.prototype.bool = function() { return this.$val.bool(); }; + encoder.ptr.prototype.bool = function(x) { + var e, x, x$1, x$2, x$3, x$4; + e = this; + if (x) { + (x$1 = e.buf, x$2 = e.offset, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = 1)); + } else { + (x$3 = e.buf, x$4 = e.offset, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4] = 0)); + } + e.offset = e.offset + (1) >> 0; + }; + encoder.prototype.bool = function(x) { return this.$val.bool(x); }; + decoder.ptr.prototype.uint8 = function() { + var d, x, x$1, x$2; + d = this; + x$2 = (x = d.buf, x$1 = d.offset, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + d.offset = d.offset + (1) >> 0; + return x$2; + }; + decoder.prototype.uint8 = function() { return this.$val.uint8(); }; + encoder.ptr.prototype.uint8 = function(x) { + var e, x, x$1, x$2; + e = this; + (x$1 = e.buf, x$2 = e.offset, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = x)); + e.offset = e.offset + (1) >> 0; + }; + encoder.prototype.uint8 = function(x) { return this.$val.uint8(x); }; + decoder.ptr.prototype.uint16 = function() { + var _r, d, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = d.order.Uint16($subslice(d.buf, d.offset, (d.offset + 2 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + d.offset = d.offset + (2) >> 0; + $s = -1; return x; + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.uint16 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.uint16 = function() { return this.$val.uint16(); }; + encoder.ptr.prototype.uint16 = function(x) { + var e, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + $r = e.order.PutUint16($subslice(e.buf, e.offset, (e.offset + 2 >> 0)), x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + e.offset = e.offset + (2) >> 0; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.uint16 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.uint16 = function(x) { return this.$val.uint16(x); }; + decoder.ptr.prototype.uint32 = function() { + var _r, d, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = d.order.Uint32($subslice(d.buf, d.offset, (d.offset + 4 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + d.offset = d.offset + (4) >> 0; + $s = -1; return x; + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.uint32 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.uint32 = function() { return this.$val.uint32(); }; + encoder.ptr.prototype.uint32 = function(x) { + var e, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + $r = e.order.PutUint32($subslice(e.buf, e.offset, (e.offset + 4 >> 0)), x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + e.offset = e.offset + (4) >> 0; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.uint32 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.uint32 = function(x) { return this.$val.uint32(x); }; + decoder.ptr.prototype.uint64 = function() { + var _r, d, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = d.order.Uint64($subslice(d.buf, d.offset, (d.offset + 8 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + d.offset = d.offset + (8) >> 0; + $s = -1; return x; + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.uint64 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.uint64 = function() { return this.$val.uint64(); }; + encoder.ptr.prototype.uint64 = function(x) { + var e, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + $r = e.order.PutUint64($subslice(e.buf, e.offset, (e.offset + 8 >> 0)), x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + e.offset = e.offset + (8) >> 0; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.uint64 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.uint64 = function(x) { return this.$val.uint64(x); }; + decoder.ptr.prototype.int8 = function() { + var d; + d = this; + return ((d.uint8() << 24 >> 24)); + }; + decoder.prototype.int8 = function() { return this.$val.int8(); }; + encoder.ptr.prototype.int8 = function(x) { + var e, x; + e = this; + e.uint8(((x << 24 >>> 24))); + }; + encoder.prototype.int8 = function(x) { return this.$val.int8(x); }; + decoder.ptr.prototype.int16 = function() { + var _r, d, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = d.uint16(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return ((_r << 16 >> 16)); + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.int16 }; } $f._r = _r; $f.d = d; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.int16 = function() { return this.$val.int16(); }; + encoder.ptr.prototype.int16 = function(x) { + var e, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + $r = e.uint16(((x << 16 >>> 16))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.int16 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.int16 = function(x) { return this.$val.int16(x); }; + decoder.ptr.prototype.int32 = function() { + var _r, d, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = d.uint32(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return ((_r >> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.int32 }; } $f._r = _r; $f.d = d; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.int32 = function() { return this.$val.int32(); }; + encoder.ptr.prototype.int32 = function(x) { + var e, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + $r = e.uint32(((x >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.int32 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.int32 = function(x) { return this.$val.int32(x); }; + decoder.ptr.prototype.int64 = function() { + var _r, d, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = d.uint64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return ((x = _r, new $Int64(x.$high, x.$low))); + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.int64 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.int64 = function() { return this.$val.int64(); }; + encoder.ptr.prototype.int64 = function(x) { + var e, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + $r = e.uint64((new $Uint64(x.$high, x.$low))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.int64 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.int64 = function(x) { return this.$val.int64(x); }; + decoder.ptr.prototype.value = function(v) { + var _1, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, d, i, i$1, i$2, l, l$1, l$2, t, v, v$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; d = $f.d; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; l = $f.l; l$1 = $f.l$1; l$2 = $f.l$2; t = $f.t; v = $f.v; v$1 = $f.v$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _1 = $clone(v, reflect.Value).Kind(); + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (25)) { $s = 3; continue; } + /* */ if (_1 === (23)) { $s = 4; continue; } + /* */ if (_1 === (1)) { $s = 5; continue; } + /* */ if (_1 === (3)) { $s = 6; continue; } + /* */ if (_1 === (4)) { $s = 7; continue; } + /* */ if (_1 === (5)) { $s = 8; continue; } + /* */ if (_1 === (6)) { $s = 9; continue; } + /* */ if (_1 === (8)) { $s = 10; continue; } + /* */ if (_1 === (9)) { $s = 11; continue; } + /* */ if (_1 === (10)) { $s = 12; continue; } + /* */ if (_1 === (11)) { $s = 13; continue; } + /* */ if (_1 === (13)) { $s = 14; continue; } + /* */ if (_1 === (14)) { $s = 15; continue; } + /* */ if (_1 === (15)) { $s = 16; continue; } + /* */ if (_1 === (16)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_1 === (17)) { */ case 2: + l = $clone(v, reflect.Value).Len(); + i = 0; + /* while (true) { */ case 19: + /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 20; continue; } + _r = $clone(v, reflect.Value).Index(i); /* */ $s = 21; case 21: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = d.value($clone(_r, reflect.Value)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + /* } */ $s = 19; continue; case 20: + $s = 18; continue; + /* } else if (_1 === (25)) { */ case 3: + t = $clone(v, reflect.Value).Type(); + l$1 = $clone(v, reflect.Value).NumField(); + i$1 = 0; + /* while (true) { */ case 23: + /* if (!(i$1 < l$1)) { break; } */ if(!(i$1 < l$1)) { $s = 24; continue; } + _r$1 = $clone(v, reflect.Value).Field(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v$1 = _r$1; + if ($clone(v$1, reflect.Value).CanSet()) { _v = true; $s = 29; continue s; } + _r$2 = t.Field(i$1); /* */ $s = 30; case 30: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !(_r$2.Name === "_"); case 29: + /* */ if (_v) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_v) { */ case 26: + $r = d.value($clone(v$1, reflect.Value)); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 28; continue; + /* } else { */ case 27: + $r = d.skip($clone(v$1, reflect.Value)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 28: + i$1 = i$1 + (1) >> 0; + /* } */ $s = 23; continue; case 24: + $s = 18; continue; + /* } else if (_1 === (23)) { */ case 4: + l$2 = $clone(v, reflect.Value).Len(); + i$2 = 0; + /* while (true) { */ case 33: + /* if (!(i$2 < l$2)) { break; } */ if(!(i$2 < l$2)) { $s = 34; continue; } + _r$3 = $clone(v, reflect.Value).Index(i$2); /* */ $s = 35; case 35: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = d.value($clone(_r$3, reflect.Value)); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$2 = i$2 + (1) >> 0; + /* } */ $s = 33; continue; case 34: + $s = 18; continue; + /* } else if (_1 === (1)) { */ case 5: + $clone(v, reflect.Value).SetBool(d.bool()); + $s = 18; continue; + /* } else if (_1 === (3)) { */ case 6: + $clone(v, reflect.Value).SetInt((new $Int64(0, d.int8()))); + $s = 18; continue; + /* } else if (_1 === (4)) { */ case 7: + _r$4 = d.int16(); /* */ $s = 37; case 37: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetInt((new $Int64(0, _r$4))); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (5)) { */ case 8: + _r$5 = d.int32(); /* */ $s = 39; case 39: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetInt((new $Int64(0, _r$5))); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (6)) { */ case 9: + _r$6 = d.int64(); /* */ $s = 41; case 41: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetInt(_r$6); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (8)) { */ case 10: + $clone(v, reflect.Value).SetUint((new $Uint64(0, d.uint8()))); + $s = 18; continue; + /* } else if (_1 === (9)) { */ case 11: + _r$7 = d.uint16(); /* */ $s = 43; case 43: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetUint((new $Uint64(0, _r$7))); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (10)) { */ case 12: + _r$8 = d.uint32(); /* */ $s = 45; case 45: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetUint((new $Uint64(0, _r$8))); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (11)) { */ case 13: + _r$9 = d.uint64(); /* */ $s = 47; case 47: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetUint(_r$9); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (13)) { */ case 14: + _r$10 = d.uint32(); /* */ $s = 49; case 49: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = math.Float32frombits(_r$10); /* */ $s = 50; case 50: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetFloat((_r$11)); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (14)) { */ case 15: + _r$12 = d.uint64(); /* */ $s = 52; case 52: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$13 = math.Float64frombits(_r$12); /* */ $s = 53; case 53: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).SetFloat(_r$13); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (15)) { */ case 16: + _r$14 = d.uint32(); /* */ $s = 55; case 55: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _r$15 = math.Float32frombits(_r$14); /* */ $s = 56; case 56: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _arg = (_r$15); + _r$16 = d.uint32(); /* */ $s = 57; case 57: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$17 = math.Float32frombits(_r$16); /* */ $s = 58; case 58: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _arg$1 = (_r$17); + $r = $clone(v, reflect.Value).SetComplex(new $Complex128(_arg, _arg$1)); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (16)) { */ case 17: + _r$18 = d.uint64(); /* */ $s = 60; case 60: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _r$19 = math.Float64frombits(_r$18); /* */ $s = 61; case 61: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _arg$2 = _r$19; + _r$20 = d.uint64(); /* */ $s = 62; case 62: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _r$21 = math.Float64frombits(_r$20); /* */ $s = 63; case 63: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _arg$3 = _r$21; + $r = $clone(v, reflect.Value).SetComplex(new $Complex128(_arg$2, _arg$3)); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.value }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f.d = d; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.l = l; $f.l$1 = l$1; $f.l$2 = l$2; $f.t = t; $f.v = v; $f.v$1 = v$1; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.value = function(v) { return this.$val.value(v); }; + encoder.ptr.prototype.value = function(v) { + var _1, _2, _3, _4, _5, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, e, i, i$1, i$2, l, l$1, l$2, t, v, v$1, x, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _v = $f._v; e = $f.e; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; l = $f.l; l$1 = $f.l$1; l$2 = $f.l$2; t = $f.t; v = $f.v; v$1 = $f.v$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _1 = $clone(v, reflect.Value).Kind(); + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (25)) { $s = 3; continue; } + /* */ if (_1 === (23)) { $s = 4; continue; } + /* */ if (_1 === (1)) { $s = 5; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 6; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 7; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 8; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_1 === (17)) { */ case 2: + l = $clone(v, reflect.Value).Len(); + i = 0; + /* while (true) { */ case 11: + /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 12; continue; } + _r = $clone(v, reflect.Value).Index(i); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = e.value($clone(_r, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + /* } */ $s = 11; continue; case 12: + $s = 10; continue; + /* } else if (_1 === (25)) { */ case 3: + t = $clone(v, reflect.Value).Type(); + l$1 = $clone(v, reflect.Value).NumField(); + i$1 = 0; + /* while (true) { */ case 15: + /* if (!(i$1 < l$1)) { break; } */ if(!(i$1 < l$1)) { $s = 16; continue; } + _r$1 = $clone(v, reflect.Value).Field(i$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v$1 = _r$1; + if ($clone(v$1, reflect.Value).CanSet()) { _v = true; $s = 21; continue s; } + _r$2 = t.Field(i$1); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !(_r$2.Name === "_"); case 21: + /* */ if (_v) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_v) { */ case 18: + $r = e.value($clone(v$1, reflect.Value)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else { */ case 19: + $r = e.skip($clone(v$1, reflect.Value)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + i$1 = i$1 + (1) >> 0; + /* } */ $s = 15; continue; case 16: + $s = 10; continue; + /* } else if (_1 === (23)) { */ case 4: + l$2 = $clone(v, reflect.Value).Len(); + i$2 = 0; + /* while (true) { */ case 25: + /* if (!(i$2 < l$2)) { break; } */ if(!(i$2 < l$2)) { $s = 26; continue; } + _r$3 = $clone(v, reflect.Value).Index(i$2); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = e.value($clone(_r$3, reflect.Value)); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$2 = i$2 + (1) >> 0; + /* } */ $s = 25; continue; case 26: + $s = 10; continue; + /* } else if (_1 === (1)) { */ case 5: + e.bool($clone(v, reflect.Value).Bool()); + $s = 10; continue; + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 6: + _r$4 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _2 = _r$4; + /* */ if (_2 === (3)) { $s = 31; continue; } + /* */ if (_2 === (4)) { $s = 32; continue; } + /* */ if (_2 === (5)) { $s = 33; continue; } + /* */ if (_2 === (6)) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (_2 === (3)) { */ case 31: + e.int8((((x = $clone(v, reflect.Value).Int(), x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24))); + $s = 35; continue; + /* } else if (_2 === (4)) { */ case 32: + $r = e.int16((((x$1 = $clone(v, reflect.Value).Int(), x$1.$low + ((x$1.$high >> 31) * 4294967296)) << 16 >> 16))); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 35; continue; + /* } else if (_2 === (5)) { */ case 33: + $r = e.int32((((x$2 = $clone(v, reflect.Value).Int(), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0))); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 35; continue; + /* } else if (_2 === (6)) { */ case 34: + $r = e.int64($clone(v, reflect.Value).Int()); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 35: + case 29: + $s = 10; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 7: + _r$5 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 40; case 40: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _3 = _r$5; + /* */ if (_3 === (8)) { $s = 41; continue; } + /* */ if (_3 === (9)) { $s = 42; continue; } + /* */ if (_3 === (10)) { $s = 43; continue; } + /* */ if (_3 === (11)) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (_3 === (8)) { */ case 41: + e.uint8((($clone(v, reflect.Value).Uint().$low << 24 >>> 24))); + $s = 45; continue; + /* } else if (_3 === (9)) { */ case 42: + $r = e.uint16((($clone(v, reflect.Value).Uint().$low << 16 >>> 16))); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 45; continue; + /* } else if (_3 === (10)) { */ case 43: + $r = e.uint32((($clone(v, reflect.Value).Uint().$low >>> 0))); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 45; continue; + /* } else if (_3 === (11)) { */ case 44: + $r = e.uint64($clone(v, reflect.Value).Uint()); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 45: + case 39: + $s = 10; continue; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 8: + _r$6 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 50; case 50: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _4 = _r$6; + /* */ if (_4 === (13)) { $s = 51; continue; } + /* */ if (_4 === (14)) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (_4 === (13)) { */ case 51: + $r = e.uint32(math.Float32bits(($fround($clone(v, reflect.Value).Float())))); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 53; continue; + /* } else if (_4 === (14)) { */ case 52: + $r = e.uint64(math.Float64bits($clone(v, reflect.Value).Float())); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 53: + case 49: + $s = 10; continue; + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 9: + _r$7 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 57; case 57: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _5 = _r$7; + /* */ if (_5 === (15)) { $s = 58; continue; } + /* */ if (_5 === (16)) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (_5 === (15)) { */ case 58: + x$3 = $clone(v, reflect.Value).Complex(); + $r = e.uint32(math.Float32bits(($fround(x$3.$real)))); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = e.uint32(math.Float32bits(($fround(x$3.$imag)))); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 60; continue; + /* } else if (_5 === (16)) { */ case 59: + x$4 = $clone(v, reflect.Value).Complex(); + $r = e.uint64(math.Float64bits(x$4.$real)); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = e.uint64(math.Float64bits(x$4.$imag)); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 60: + case 56: + /* } */ case 10: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.value }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._v = _v; $f.e = e; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.l = l; $f.l$1 = l$1; $f.l$2 = l$2; $f.t = t; $f.v = v; $f.v$1 = v$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.value = function(v) { return this.$val.value(v); }; + decoder.ptr.prototype.skip = function(v) { + var _r, d, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + d = this; + _r = dataSize($clone(v, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + d.offset = d.offset + (_r) >> 0; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.skip }; } $f._r = _r; $f.d = d; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + decoder.prototype.skip = function(v) { return this.$val.skip(v); }; + encoder.ptr.prototype.skip = function(v) { + var _i, _r, _ref, e, i, n, v, zero, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; e = $f.e; i = $f.i; n = $f.n; v = $f.v; zero = $f.zero; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _r = dataSize($clone(v, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + zero = $subslice(e.buf, e.offset, (e.offset + n >> 0)); + _ref = zero; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= zero.$length) ? ($throwRuntimeError("index out of range"), undefined) : zero.$array[zero.$offset + i] = 0); + _i++; + } + e.offset = e.offset + (n) >> 0; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.skip }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.e = e; $f.i = i; $f.n = n; $f.v = v; $f.zero = zero; $f.$s = $s; $f.$r = $r; return $f; + }; + encoder.prototype.skip = function(v) { return this.$val.skip(v); }; + intDataSize = function(data) { + var _ref, data, data$1, data$10, data$11, data$12, data$13, data$2, data$3, data$4, data$5, data$6, data$7, data$8, data$9; + _ref = data; + if ($assertType(_ref, $Bool, true)[1] || $assertType(_ref, $Int8, true)[1] || $assertType(_ref, $Uint8, true)[1] || $assertType(_ref, ptrType, true)[1] || $assertType(_ref, ptrType$1, true)[1] || $assertType(_ref, ptrType$2, true)[1]) { + data$1 = _ref; + return 1; + } else if ($assertType(_ref, sliceType$1, true)[1]) { + data$2 = _ref.$val; + return data$2.$length; + } else if ($assertType(_ref, sliceType$2, true)[1]) { + data$3 = _ref.$val; + return data$3.$length; + } else if ($assertType(_ref, sliceType, true)[1]) { + data$4 = _ref.$val; + return data$4.$length; + } else if ($assertType(_ref, $Int16, true)[1] || $assertType(_ref, $Uint16, true)[1] || $assertType(_ref, ptrType$3, true)[1] || $assertType(_ref, ptrType$4, true)[1]) { + data$5 = _ref; + return 2; + } else if ($assertType(_ref, sliceType$3, true)[1]) { + data$6 = _ref.$val; + return $imul(2, data$6.$length); + } else if ($assertType(_ref, sliceType$4, true)[1]) { + data$7 = _ref.$val; + return $imul(2, data$7.$length); + } else if ($assertType(_ref, $Int32, true)[1] || $assertType(_ref, $Uint32, true)[1] || $assertType(_ref, ptrType$5, true)[1] || $assertType(_ref, ptrType$6, true)[1]) { + data$8 = _ref; + return 4; + } else if ($assertType(_ref, sliceType$5, true)[1]) { + data$9 = _ref.$val; + return $imul(4, data$9.$length); + } else if ($assertType(_ref, sliceType$6, true)[1]) { + data$10 = _ref.$val; + return $imul(4, data$10.$length); + } else if ($assertType(_ref, $Int64, true)[1] || $assertType(_ref, $Uint64, true)[1] || $assertType(_ref, ptrType$7, true)[1] || $assertType(_ref, ptrType$8, true)[1]) { + data$11 = _ref; + return 8; + } else if ($assertType(_ref, sliceType$7, true)[1]) { + data$12 = _ref.$val; + return $imul(8, data$12.$length); + } else if ($assertType(_ref, sliceType$8, true)[1]) { + data$13 = _ref.$val; + return $imul(8, data$13.$length); + } + return 0; + }; + littleEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]; + bigEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$9.methods = [{prop: "bool", name: "bool", pkg: "encoding/binary", typ: $funcType([], [$Bool], false)}, {prop: "uint8", name: "uint8", pkg: "encoding/binary", typ: $funcType([], [$Uint8], false)}, {prop: "uint16", name: "uint16", pkg: "encoding/binary", typ: $funcType([], [$Uint16], false)}, {prop: "uint32", name: "uint32", pkg: "encoding/binary", typ: $funcType([], [$Uint32], false)}, {prop: "uint64", name: "uint64", pkg: "encoding/binary", typ: $funcType([], [$Uint64], false)}, {prop: "int8", name: "int8", pkg: "encoding/binary", typ: $funcType([], [$Int8], false)}, {prop: "int16", name: "int16", pkg: "encoding/binary", typ: $funcType([], [$Int16], false)}, {prop: "int32", name: "int32", pkg: "encoding/binary", typ: $funcType([], [$Int32], false)}, {prop: "int64", name: "int64", pkg: "encoding/binary", typ: $funcType([], [$Int64], false)}, {prop: "value", name: "value", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}, {prop: "skip", name: "skip", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}]; + ptrType$10.methods = [{prop: "bool", name: "bool", pkg: "encoding/binary", typ: $funcType([$Bool], [], false)}, {prop: "uint8", name: "uint8", pkg: "encoding/binary", typ: $funcType([$Uint8], [], false)}, {prop: "uint16", name: "uint16", pkg: "encoding/binary", typ: $funcType([$Uint16], [], false)}, {prop: "uint32", name: "uint32", pkg: "encoding/binary", typ: $funcType([$Uint32], [], false)}, {prop: "uint64", name: "uint64", pkg: "encoding/binary", typ: $funcType([$Uint64], [], false)}, {prop: "int8", name: "int8", pkg: "encoding/binary", typ: $funcType([$Int8], [], false)}, {prop: "int16", name: "int16", pkg: "encoding/binary", typ: $funcType([$Int16], [], false)}, {prop: "int32", name: "int32", pkg: "encoding/binary", typ: $funcType([$Int32], [], false)}, {prop: "int64", name: "int64", pkg: "encoding/binary", typ: $funcType([$Int64], [], false)}, {prop: "value", name: "value", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}, {prop: "skip", name: "skip", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}]; + ByteOrder.init([{prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}]); + littleEndian.init("", []); + bigEndian.init("", []); + decoder.init("encoding/binary", [{prop: "order", name: "order", embedded: false, exported: false, typ: ByteOrder, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]); + encoder.init("encoding/binary", [{prop: "order", name: "order", embedded: false, exported: false, typ: ByteOrder, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.LittleEndian = new littleEndian.ptr(); + $pkg.BigEndian = new bigEndian.ptr(); + overflow = errors.New("binary: varint overflows a 64-bit integer"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["strings"] = (function() { + var $pkg = {}, $init, errors, js, bytealg, io, sync, unicode, utf8, Builder, asciiSet, ptrType, sliceType, sliceType$1, ptrType$5, arrayType$3, IndexByte, Index, LastIndex, Count, explode, Contains, ContainsRune, IndexRune, IndexAny, LastIndexByte, genSplit, SplitN, Split, Join, HasPrefix, HasSuffix, Map, ToLower, makeASCIISet, TrimPrefix; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bytealg = $packages["internal/bytealg"]; + io = $packages["io"]; + sync = $packages["sync"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Builder = $pkg.Builder = $newType(0, $kindStruct, "strings.Builder", true, "strings", true, function(addr_, buf_) { + this.$val = this; + if (arguments.length === 0) { + this.addr = ptrType.nil; + this.buf = sliceType.nil; + return; + } + this.addr = addr_; + this.buf = buf_; + }); + asciiSet = $pkg.asciiSet = $newType(32, $kindArray, "strings.asciiSet", true, "strings", false, null); + ptrType = $ptrType(Builder); + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType($String); + ptrType$5 = $ptrType(asciiSet); + arrayType$3 = $arrayType($Uint32, 8); + IndexByte = function(s, c) { + var c, s; + return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0; + }; + $pkg.IndexByte = IndexByte; + Index = function(s, sep) { + var s, sep; + return $parseInt(s.indexOf(sep)) >> 0; + }; + $pkg.Index = Index; + LastIndex = function(s, sep) { + var s, sep; + return $parseInt(s.lastIndexOf(sep)) >> 0; + }; + $pkg.LastIndex = LastIndex; + Count = function(s, sep) { + var n, pos, s, sep; + n = 0; + if ((sep.length === 0)) { + return utf8.RuneCountInString(s) + 1 >> 0; + } else if (sep.length > s.length) { + return 0; + } else if ((sep.length === s.length)) { + if (sep === s) { + return 1; + } + return 0; + } + while (true) { + pos = Index(s, sep); + if (pos === -1) { + break; + } + n = n + (1) >> 0; + s = $substring(s, (pos + sep.length >> 0)); + } + return n; + }; + $pkg.Count = Count; + Builder.ptr.prototype.String = function() { + var b; + b = this; + return ($bytesToString(b.buf)); + }; + Builder.prototype.String = function() { return this.$val.String(); }; + Builder.ptr.prototype.copyCheck = function() { + var b; + b = this; + if (b.addr === ptrType.nil) { + b.addr = b; + } else if (!(b.addr === b)) { + $panic(new $String("strings: illegal use of non-zero Builder copied by value")); + } + }; + Builder.prototype.copyCheck = function() { return this.$val.copyCheck(); }; + Builder.ptr.prototype.Len = function() { + var b; + b = this; + return b.buf.$length; + }; + Builder.prototype.Len = function() { return this.$val.Len(); }; + Builder.ptr.prototype.Cap = function() { + var b; + b = this; + return b.buf.$capacity; + }; + Builder.prototype.Cap = function() { return this.$val.Cap(); }; + Builder.ptr.prototype.Reset = function() { + var b; + b = this; + b.addr = ptrType.nil; + b.buf = sliceType.nil; + }; + Builder.prototype.Reset = function() { return this.$val.Reset(); }; + Builder.ptr.prototype.grow = function(n) { + var b, buf, n; + b = this; + buf = $makeSlice(sliceType, b.buf.$length, (($imul(2, b.buf.$capacity)) + n >> 0)); + $copySlice(buf, b.buf); + b.buf = buf; + }; + Builder.prototype.grow = function(n) { return this.$val.grow(n); }; + Builder.ptr.prototype.Grow = function(n) { + var b, n; + b = this; + b.copyCheck(); + if (n < 0) { + $panic(new $String("strings.Builder.Grow: negative count")); + } + if ((b.buf.$capacity - b.buf.$length >> 0) < n) { + b.grow(n); + } + }; + Builder.prototype.Grow = function(n) { return this.$val.Grow(n); }; + Builder.ptr.prototype.Write = function(p) { + var b, p; + b = this; + b.copyCheck(); + b.buf = $appendSlice(b.buf, p); + return [p.$length, $ifaceNil]; + }; + Builder.prototype.Write = function(p) { return this.$val.Write(p); }; + Builder.ptr.prototype.WriteByte = function(c) { + var b, c; + b = this; + b.copyCheck(); + b.buf = $append(b.buf, c); + return $ifaceNil; + }; + Builder.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); }; + Builder.ptr.prototype.WriteRune = function(r) { + var b, l, n, r; + b = this; + b.copyCheck(); + if (r < 128) { + b.buf = $append(b.buf, ((r << 24 >>> 24))); + return [1, $ifaceNil]; + } + l = b.buf.$length; + if ((b.buf.$capacity - l >> 0) < 4) { + b.grow(4); + } + n = utf8.EncodeRune($subslice(b.buf, l, (l + 4 >> 0)), r); + b.buf = $subslice(b.buf, 0, (l + n >> 0)); + return [n, $ifaceNil]; + }; + Builder.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); }; + Builder.ptr.prototype.WriteString = function(s) { + var b, s; + b = this; + b.copyCheck(); + b.buf = $appendSlice(b.buf, s); + return [s.length, $ifaceNil]; + }; + Builder.prototype.WriteString = function(s) { return this.$val.WriteString(s); }; + explode = function(s, n) { + var _tuple, a, ch, i, l, n, s, size, x; + l = utf8.RuneCountInString(s); + if (n < 0 || n > l) { + n = l; + } + a = $makeSlice(sliceType$1, n); + i = 0; + while (true) { + if (!(i < (n - 1 >> 0))) { break; } + _tuple = utf8.DecodeRuneInString(s); + ch = _tuple[0]; + size = _tuple[1]; + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, size)); + s = $substring(s, size); + if (ch === 65533) { + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = "\xEF\xBF\xBD"); + } + i = i + (1) >> 0; + } + if (n > 0) { + (x = n - 1 >> 0, ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x] = s)); + } + return a; + }; + Contains = function(s, substr) { + var s, substr; + return Index(s, substr) >= 0; + }; + $pkg.Contains = Contains; + ContainsRune = function(s, r) { + var r, s; + return IndexRune(s, r) >= 0; + }; + $pkg.ContainsRune = ContainsRune; + IndexRune = function(s, r) { + var _i, _ref, _rune, i, r, r$1, s; + if (0 <= r && r < 128) { + return IndexByte(s, ((r << 24 >>> 24))); + } else if ((r === 65533)) { + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + r$1 = _rune[0]; + if (r$1 === 65533) { + return i; + } + _i += _rune[1]; + } + return -1; + } else if (!utf8.ValidRune(r)) { + return -1; + } else { + return Index(s, ($encodeRune(r))); + } + }; + $pkg.IndexRune = IndexRune; + IndexAny = function(s, chars) { + var _i, _i$1, _ref, _ref$1, _rune, _rune$1, _tuple, as, c, chars, i, i$1, isASCII, m, s; + if (chars === "") { + return -1; + } + if (s.length > 8) { + _tuple = makeASCIISet(chars); + as = $clone(_tuple[0], asciiSet); + isASCII = _tuple[1]; + if (isASCII) { + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (new ptrType$5(as).contains(s.charCodeAt(i))) { + return i; + } + i = i + (1) >> 0; + } + return -1; + } + } + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i$1 = _i; + c = _rune[0]; + _ref$1 = chars; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.length)) { break; } + _rune$1 = $decodeRune(_ref$1, _i$1); + m = _rune$1[0]; + if (c === m) { + return i$1; + } + _i$1 += _rune$1[1]; + } + _i += _rune[1]; + } + return -1; + }; + $pkg.IndexAny = IndexAny; + LastIndexByte = function(s, c) { + var c, i, s; + i = s.length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (s.charCodeAt(i) === c) { + return i; + } + i = i - (1) >> 0; + } + return -1; + }; + $pkg.LastIndexByte = LastIndexByte; + genSplit = function(s, sep, sepSave, n) { + var a, i, m, n, s, sep, sepSave; + if (n === 0) { + return sliceType$1.nil; + } + if (sep === "") { + return explode(s, n); + } + if (n < 0) { + n = Count(s, sep) + 1 >> 0; + } + a = $makeSlice(sliceType$1, n); + n = n - (1) >> 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + m = Index(s, sep); + if (m < 0) { + break; + } + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, (m + sepSave >> 0))); + s = $substring(s, (m + sep.length >> 0)); + i = i + (1) >> 0; + } + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = s); + return $subslice(a, 0, (i + 1 >> 0)); + }; + SplitN = function(s, sep, n) { + var n, s, sep; + return genSplit(s, sep, 0, n); + }; + $pkg.SplitN = SplitN; + Split = function(s, sep) { + var s, sep; + return genSplit(s, sep, 0, -1); + }; + $pkg.Split = Split; + Join = function(a, sep) { + var _1, _i, _ref, a, b, i, n, s, sep; + _1 = a.$length; + if (_1 === (0)) { + return ""; + } else if (_1 === (1)) { + return (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]); + } + n = $imul(sep.length, ((a.$length - 1 >> 0))); + i = 0; + while (true) { + if (!(i < a.$length)) { break; } + n = n + (((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]).length) >> 0; + i = i + (1) >> 0; + } + b = new Builder.ptr(ptrType.nil, sliceType.nil); + b.Grow(n); + b.WriteString((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0])); + _ref = $subslice(a, 1); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + b.WriteString(sep); + b.WriteString(s); + _i++; + } + return b.String(); + }; + $pkg.Join = Join; + HasPrefix = function(s, prefix) { + var prefix, s; + return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix; + }; + $pkg.HasPrefix = HasPrefix; + HasSuffix = function(s, suffix) { + var s, suffix; + return s.length >= suffix.length && $substring(s, (s.length - suffix.length >> 0)) === suffix; + }; + $pkg.HasSuffix = HasSuffix; + Map = function(mapping, s) { + var _i, _i$1, _r, _r$1, _ref, _ref$1, _rune, _rune$1, _tuple, b, c, c$1, i, mapping, r, r$1, s, width, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _rune = $f._rune; _rune$1 = $f._rune$1; _tuple = $f._tuple; b = $f.b; c = $f.c; c$1 = $f.c$1; i = $f.i; mapping = $f.mapping; r = $f.r; r$1 = $f.r$1; s = $f.s; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + b = new Builder.ptr(ptrType.nil, sliceType.nil); + _ref = s; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + _r = mapping(c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if ((r === c) && !((c === 65533))) { + _i += _rune[1]; + /* continue; */ $s = 1; continue; + } + width = 0; + if (c === 65533) { + _tuple = utf8.DecodeRuneInString($substring(s, i)); + c = _tuple[0]; + width = _tuple[1]; + if (!((width === 1)) && (r === c)) { + _i += _rune[1]; + /* continue; */ $s = 1; continue; + } + } else { + width = utf8.RuneLen(c); + } + b.Grow(s.length + 4 >> 0); + b.WriteString($substring(s, 0, i)); + if (r >= 0) { + b.WriteRune(r); + } + s = $substring(s, (i + width >> 0)); + /* break; */ $s = 2; continue; + /* } */ $s = 1; continue; case 2: + if (b.Cap() === 0) { + $s = -1; return s; + } + _ref$1 = s; + _i$1 = 0; + /* while (true) { */ case 4: + /* if (!(_i$1 < _ref$1.length)) { break; } */ if(!(_i$1 < _ref$1.length)) { $s = 5; continue; } + _rune$1 = $decodeRune(_ref$1, _i$1); + c$1 = _rune$1[0]; + _r$1 = mapping(c$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r$1 = _r$1; + if (r$1 >= 0) { + if (r$1 < 128) { + b.WriteByte(((r$1 << 24 >>> 24))); + } else { + b.WriteRune(r$1); + } + } + _i$1 += _rune$1[1]; + /* } */ $s = 4; continue; case 5: + $s = -1; return b.String(); + /* */ } return; } if ($f === undefined) { $f = { $blk: Map }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._rune = _rune; $f._rune$1 = _rune$1; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.i = i; $f.mapping = mapping; $f.r = r; $f.r$1 = r$1; $f.s = s; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Map = Map; + ToLower = function(s) { + var _r, _tmp, _tmp$1, b, c, c$1, hasUpper, i, i$1, isASCII, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; b = $f.b; c = $f.c; c$1 = $f.c$1; hasUpper = $f.hasUpper; i = $f.i; i$1 = $f.i$1; isASCII = $f.isASCII; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tmp = true; + _tmp$1 = false; + isASCII = _tmp; + hasUpper = _tmp$1; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (c >= 128) { + isASCII = false; + break; + } + hasUpper = hasUpper || (c >= 65 && c <= 90); + i = i + (1) >> 0; + } + if (isASCII) { + if (!hasUpper) { + $s = -1; return s; + } + b = new Builder.ptr(ptrType.nil, sliceType.nil); + b.Grow(s.length); + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + c$1 = s.charCodeAt(i$1); + if (c$1 >= 65 && c$1 <= 90) { + c$1 = c$1 + (32) << 24 >>> 24; + } + b.WriteByte(c$1); + i$1 = i$1 + (1) >> 0; + } + $s = -1; return b.String(); + } + _r = Map(unicode.ToLower, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: ToLower }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.hasUpper = hasUpper; $f.i = i; $f.i$1 = i$1; $f.isASCII = isASCII; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.ToLower = ToLower; + makeASCIISet = function(chars) { + var _index, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y; + as = arrayType$3.zero(); + ok = false; + i = 0; + while (true) { + if (!(i < chars.length)) { break; } + c = chars.charCodeAt(i); + if (c >= 128) { + _tmp = $clone(as, asciiSet); + _tmp$1 = false; + asciiSet.copy(as, _tmp); + ok = _tmp$1; + return [as, ok]; + } + _index = c >>> 5 << 24 >>> 24; + ((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index] = ((((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index]) | (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)); + i = i + (1) >> 0; + } + _tmp$2 = $clone(as, asciiSet); + _tmp$3 = true; + asciiSet.copy(as, _tmp$2); + ok = _tmp$3; + return [as, ok]; + }; + asciiSet.prototype.contains = function(c) { + var as, c, x, y; + as = this.$val; + return !((((((x = c >>> 5 << 24 >>> 24, (as.nilCheck, ((x < 0 || x >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[x]))) & (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)) === 0)); + }; + $ptrType(asciiSet).prototype.contains = function(c) { return (new asciiSet(this.$get())).contains(c); }; + TrimPrefix = function(s, prefix) { + var prefix, s; + if (HasPrefix(s, prefix)) { + return $substring(s, prefix.length); + } + return s; + }; + $pkg.TrimPrefix = TrimPrefix; + ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "copyCheck", name: "copyCheck", pkg: "strings", typ: $funcType([], [], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "grow", name: "grow", pkg: "strings", typ: $funcType([$Int], [], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]; + ptrType$5.methods = [{prop: "contains", name: "contains", pkg: "strings", typ: $funcType([$Uint8], [$Bool], false)}]; + Builder.init("strings", [{prop: "addr", name: "addr", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}]); + asciiSet.init($Uint32, 8); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["regexp/syntax"] = (function() { + var $pkg = {}, $init, sort, strconv, strings, unicode, utf8, patchList, frag, compiler, Error, ErrorCode, Flags, parser, charGroup, ranges, Prog, InstOp, EmptyOp, Inst, Regexp, Op, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, sliceType$4, ptrType$1, sliceType$5, arrayType, arrayType$1, ptrType$2, ptrType$3, ptrType$4, sliceType$6, ptrType$5, ptrType$6, ptrType$7, ptrType$8, anyRuneNotNL, anyRune, _Op_index_0, anyTable, code1, code2, code3, perlGroup, code4, code5, code6, code7, code8, code9, code10, code11, code12, code13, code14, code15, code16, code17, posixGroup, instOpNames, Compile, minFoldRune, repeatIsValid, cleanAlt, literalRegexp, Parse, isValidCaptureName, isCharClass, matchRune, mergeCharClass, unicodeTable, cleanClass, appendLiteral, appendRange, appendFoldedRange, appendClass, appendFoldedClass, appendNegatedClass, appendTable, appendNegatedTable, negateClass, checkUTF8, nextRune, isalnum, unhex, IsWordChar, bw, dumpProg, u32, dumpInst, writeRegexp, escape, simplify1; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + patchList = $pkg.patchList = $newType(4, $kindUint32, "syntax.patchList", true, "regexp/syntax", false, null); + frag = $pkg.frag = $newType(0, $kindStruct, "syntax.frag", true, "regexp/syntax", false, function(i_, out_) { + this.$val = this; + if (arguments.length === 0) { + this.i = 0; + this.out = 0; + return; + } + this.i = i_; + this.out = out_; + }); + compiler = $pkg.compiler = $newType(0, $kindStruct, "syntax.compiler", true, "regexp/syntax", false, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = ptrType.nil; + return; + } + this.p = p_; + }); + Error = $pkg.Error = $newType(0, $kindStruct, "syntax.Error", true, "regexp/syntax", true, function(Code_, Expr_) { + this.$val = this; + if (arguments.length === 0) { + this.Code = ""; + this.Expr = ""; + return; + } + this.Code = Code_; + this.Expr = Expr_; + }); + ErrorCode = $pkg.ErrorCode = $newType(8, $kindString, "syntax.ErrorCode", true, "regexp/syntax", true, null); + Flags = $pkg.Flags = $newType(2, $kindUint16, "syntax.Flags", true, "regexp/syntax", true, null); + parser = $pkg.parser = $newType(0, $kindStruct, "syntax.parser", true, "regexp/syntax", false, function(flags_, stack_, free_, numCap_, wholeRegexp_, tmpClass_) { + this.$val = this; + if (arguments.length === 0) { + this.flags = 0; + this.stack = sliceType$5.nil; + this.free = ptrType$1.nil; + this.numCap = 0; + this.wholeRegexp = ""; + this.tmpClass = sliceType.nil; + return; + } + this.flags = flags_; + this.stack = stack_; + this.free = free_; + this.numCap = numCap_; + this.wholeRegexp = wholeRegexp_; + this.tmpClass = tmpClass_; + }); + charGroup = $pkg.charGroup = $newType(0, $kindStruct, "syntax.charGroup", true, "regexp/syntax", false, function(sign_, class$1_) { + this.$val = this; + if (arguments.length === 0) { + this.sign = 0; + this.class$1 = sliceType.nil; + return; + } + this.sign = sign_; + this.class$1 = class$1_; + }); + ranges = $pkg.ranges = $newType(0, $kindStruct, "syntax.ranges", true, "regexp/syntax", false, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = ptrType$2.nil; + return; + } + this.p = p_; + }); + Prog = $pkg.Prog = $newType(0, $kindStruct, "syntax.Prog", true, "regexp/syntax", true, function(Inst_, Start_, NumCap_) { + this.$val = this; + if (arguments.length === 0) { + this.Inst = sliceType$4.nil; + this.Start = 0; + this.NumCap = 0; + return; + } + this.Inst = Inst_; + this.Start = Start_; + this.NumCap = NumCap_; + }); + InstOp = $pkg.InstOp = $newType(1, $kindUint8, "syntax.InstOp", true, "regexp/syntax", true, null); + EmptyOp = $pkg.EmptyOp = $newType(1, $kindUint8, "syntax.EmptyOp", true, "regexp/syntax", true, null); + Inst = $pkg.Inst = $newType(0, $kindStruct, "syntax.Inst", true, "regexp/syntax", true, function(Op_, Out_, Arg_, Rune_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = 0; + this.Out = 0; + this.Arg = 0; + this.Rune = sliceType.nil; + return; + } + this.Op = Op_; + this.Out = Out_; + this.Arg = Arg_; + this.Rune = Rune_; + }); + Regexp = $pkg.Regexp = $newType(0, $kindStruct, "syntax.Regexp", true, "regexp/syntax", true, function(Op_, Flags_, Sub_, Sub0_, Rune_, Rune0_, Min_, Max_, Cap_, Name_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = 0; + this.Flags = 0; + this.Sub = sliceType$5.nil; + this.Sub0 = arrayType.zero(); + this.Rune = sliceType.nil; + this.Rune0 = arrayType$1.zero(); + this.Min = 0; + this.Max = 0; + this.Cap = 0; + this.Name = ""; + return; + } + this.Op = Op_; + this.Flags = Flags_; + this.Sub = Sub_; + this.Sub0 = Sub0_; + this.Rune = Rune_; + this.Rune0 = Rune0_; + this.Min = Min_; + this.Max = Max_; + this.Cap = Cap_; + this.Name = Name_; + }); + Op = $pkg.Op = $newType(1, $kindUint8, "syntax.Op", true, "regexp/syntax", true, null); + sliceType = $sliceType($Int32); + sliceType$1 = $sliceType(unicode.Range16); + sliceType$2 = $sliceType(unicode.Range32); + sliceType$3 = $sliceType($String); + ptrType = $ptrType(Prog); + sliceType$4 = $sliceType(Inst); + ptrType$1 = $ptrType(Regexp); + sliceType$5 = $sliceType(ptrType$1); + arrayType = $arrayType(ptrType$1, 1); + arrayType$1 = $arrayType($Int32, 2); + ptrType$2 = $ptrType(sliceType); + ptrType$3 = $ptrType(unicode.RangeTable); + ptrType$4 = $ptrType(strings.Builder); + sliceType$6 = $sliceType($Uint8); + ptrType$5 = $ptrType(compiler); + ptrType$6 = $ptrType(Error); + ptrType$7 = $ptrType(parser); + ptrType$8 = $ptrType(Inst); + patchList.prototype.next = function(p) { + var i, l, p, x, x$1; + l = this.$val; + i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (((l & 1) >>> 0) === 0) { + return ((i.Out >>> 0)); + } + return ((i.Arg >>> 0)); + }; + $ptrType(patchList).prototype.next = function(p) { return new patchList(this.$get()).next(p); }; + patchList.prototype.patch = function(p, val) { + var i, l, p, val, x, x$1; + l = this.$val; + while (true) { + if (!(!((l === 0)))) { break; } + i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (((l & 1) >>> 0) === 0) { + l = ((i.Out >>> 0)); + i.Out = val; + } else { + l = ((i.Arg >>> 0)); + i.Arg = val; + } + } + }; + $ptrType(patchList).prototype.patch = function(p, val) { return new patchList(this.$get()).patch(p, val); }; + patchList.prototype.append = function(p, l2) { + var i, l1, l2, last, next, p, x, x$1; + l1 = this.$val; + if (l1 === 0) { + return l2; + } + if (l2 === 0) { + return l1; + } + last = l1; + while (true) { + next = new patchList(last).next(p); + if (next === 0) { + break; + } + last = next; + } + i = (x = p.Inst, x$1 = last >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (((last & 1) >>> 0) === 0) { + i.Out = ((l2 >>> 0)); + } else { + i.Arg = ((l2 >>> 0)); + } + return l1; + }; + $ptrType(patchList).prototype.append = function(p, l2) { return new patchList(this.$get()).append(p, l2); }; + Compile = function(re) { + var c, f, re; + c = new compiler.ptr(ptrType.nil); + c.init(); + f = $clone(c.compile(re), frag); + new patchList(f.out).patch(c.p, c.inst(4).i); + c.p.Start = ((f.i >> 0)); + return [c.p, $ifaceNil]; + }; + $pkg.Compile = Compile; + compiler.ptr.prototype.init = function() { + var c; + c = this; + c.p = new Prog.ptr(sliceType$4.nil, 0, 0); + c.p.NumCap = 2; + c.inst(5); + }; + compiler.prototype.init = function() { return this.$val.init(); }; + compiler.ptr.prototype.compile = function(re) { + var _1, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, bra, c, f, f$1, f$2, f1, i, j, ket, re, sub, sub$1, sub$2, x, x$1, x$2, x$3; + c = this; + _1 = re.Op; + if (_1 === (1)) { + return c.fail(); + } else if (_1 === (2)) { + return c.nop(); + } else if (_1 === (3)) { + if (re.Rune.$length === 0) { + return c.nop(); + } + f = new frag.ptr(0, 0); + _ref = re.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + f1 = $clone(c.rune($subslice(re.Rune, j, (j + 1 >> 0)), re.Flags), frag); + if (j === 0) { + frag.copy(f, f1); + } else { + frag.copy(f, c.cat($clone(f, frag), $clone(f1, frag))); + } + _i++; + } + return f; + } else if (_1 === (4)) { + return c.rune(re.Rune, re.Flags); + } else if (_1 === (5)) { + return c.rune(anyRuneNotNL, 0); + } else if (_1 === (6)) { + return c.rune(anyRune, 0); + } else if (_1 === (7)) { + return c.empty(1); + } else if (_1 === (8)) { + return c.empty(2); + } else if (_1 === (9)) { + return c.empty(4); + } else if (_1 === (10)) { + return c.empty(8); + } else if (_1 === (11)) { + return c.empty(16); + } else if (_1 === (12)) { + return c.empty(32); + } else if (_1 === (13)) { + bra = $clone(c.cap((((re.Cap << 1 >> 0) >>> 0))), frag); + sub = $clone(c.compile((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))), frag); + ket = $clone(c.cap(((((re.Cap << 1 >> 0) | 1) >>> 0))), frag); + return c.cat($clone(c.cat($clone(bra, frag), $clone(sub, frag)), frag), $clone(ket, frag)); + } else if (_1 === (14)) { + return c.star($clone(c.compile((x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); + } else if (_1 === (15)) { + return c.plus($clone(c.compile((x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); + } else if (_1 === (16)) { + return c.quest($clone(c.compile((x$3 = re.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); + } else if (_1 === (18)) { + if (re.Sub.$length === 0) { + return c.nop(); + } + f$1 = new frag.ptr(0, 0); + _ref$1 = re.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i = _i$1; + sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (i === 0) { + frag.copy(f$1, c.compile(sub$1)); + } else { + frag.copy(f$1, c.cat($clone(f$1, frag), $clone(c.compile(sub$1), frag))); + } + _i$1++; + } + return f$1; + } else if (_1 === (19)) { + f$2 = new frag.ptr(0, 0); + _ref$2 = re.Sub; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + sub$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + frag.copy(f$2, c.alt($clone(f$2, frag), $clone(c.compile(sub$2), frag))); + _i$2++; + } + return f$2; + } + $panic(new $String("regexp: unhandled case in compile")); + }; + compiler.prototype.compile = function(re) { return this.$val.compile(re); }; + compiler.ptr.prototype.inst = function(op) { + var c, f, op; + c = this; + f = new frag.ptr(((c.p.Inst.$length >>> 0)), 0); + c.p.Inst = $append(c.p.Inst, new Inst.ptr(op, 0, 0, sliceType.nil)); + return f; + }; + compiler.prototype.inst = function(op) { return this.$val.inst(op); }; + compiler.ptr.prototype.nop = function() { + var c, f; + c = this; + f = $clone(c.inst(6), frag); + f.out = (((f.i << 1 >>> 0) >>> 0)); + return f; + }; + compiler.prototype.nop = function() { return this.$val.nop(); }; + compiler.ptr.prototype.fail = function() { + var c; + c = this; + return new frag.ptr(0, 0); + }; + compiler.prototype.fail = function() { return this.$val.fail(); }; + compiler.ptr.prototype.cap = function(arg) { + var arg, c, f, x, x$1; + c = this; + f = $clone(c.inst(2), frag); + f.out = (((f.i << 1 >>> 0) >>> 0)); + (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Arg = arg; + if (c.p.NumCap < (((arg >> 0)) + 1 >> 0)) { + c.p.NumCap = ((arg >> 0)) + 1 >> 0; + } + return f; + }; + compiler.prototype.cap = function(arg) { return this.$val.cap(arg); }; + compiler.ptr.prototype.cat = function(f1, f2) { + var c, f1, f2; + c = this; + if ((f1.i === 0) || (f2.i === 0)) { + return new frag.ptr(0, 0); + } + new patchList(f1.out).patch(c.p, f2.i); + return new frag.ptr(f1.i, f2.out); + }; + compiler.prototype.cat = function(f1, f2) { return this.$val.cat(f1, f2); }; + compiler.ptr.prototype.alt = function(f1, f2) { + var c, f, f1, f2, i, x, x$1; + c = this; + if (f1.i === 0) { + return f2; + } + if (f2.i === 0) { + return f1; + } + f = $clone(c.inst(0), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + i.Out = f1.i; + i.Arg = f2.i; + f.out = new patchList(f1.out).append(c.p, f2.out); + return f; + }; + compiler.prototype.alt = function(f1, f2) { return this.$val.alt(f1, f2); }; + compiler.ptr.prototype.quest = function(f1, nongreedy) { + var c, f, f1, i, nongreedy, x, x$1; + c = this; + f = $clone(c.inst(0), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (nongreedy) { + i.Arg = f1.i; + f.out = (((f.i << 1 >>> 0) >>> 0)); + } else { + i.Out = f1.i; + f.out = (((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0)); + } + f.out = new patchList(f.out).append(c.p, f1.out); + return f; + }; + compiler.prototype.quest = function(f1, nongreedy) { return this.$val.quest(f1, nongreedy); }; + compiler.ptr.prototype.star = function(f1, nongreedy) { + var c, f, f1, i, nongreedy, x, x$1; + c = this; + f = $clone(c.inst(0), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (nongreedy) { + i.Arg = f1.i; + f.out = (((f.i << 1 >>> 0) >>> 0)); + } else { + i.Out = f1.i; + f.out = (((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0)); + } + new patchList(f1.out).patch(c.p, f.i); + return f; + }; + compiler.prototype.star = function(f1, nongreedy) { return this.$val.star(f1, nongreedy); }; + compiler.ptr.prototype.plus = function(f1, nongreedy) { + var c, f1, nongreedy; + c = this; + return new frag.ptr(f1.i, c.star($clone(f1, frag), nongreedy).out); + }; + compiler.prototype.plus = function(f1, nongreedy) { return this.$val.plus(f1, nongreedy); }; + compiler.ptr.prototype.empty = function(op) { + var c, f, op, x, x$1; + c = this; + f = $clone(c.inst(3), frag); + (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Arg = ((op >>> 0)); + f.out = (((f.i << 1 >>> 0) >>> 0)); + return f; + }; + compiler.prototype.empty = function(op) { return this.$val.empty(op); }; + compiler.ptr.prototype.rune = function(r, flags) { + var c, f, flags, i, r, x, x$1; + c = this; + f = $clone(c.inst(7), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + i.Rune = r; + flags = (flags & (1)) >>> 0; + if (!((r.$length === 1)) || (unicode.SimpleFold((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0])) === (0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]))) { + flags = (flags & ~(1)) << 16 >>> 16; + } + i.Arg = ((flags >>> 0)); + f.out = (((f.i << 1 >>> 0) >>> 0)); + if ((((flags & 1) >>> 0) === 0) && ((r.$length === 1) || (r.$length === 2) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === (1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1])))) { + i.Op = 8; + } else if ((r.$length === 2) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1]) === 1114111)) { + i.Op = 9; + } else if ((r.$length === 4) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1]) === 9) && ((2 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 2]) === 11) && ((3 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 3]) === 1114111)) { + i.Op = 10; + } + return f; + }; + compiler.prototype.rune = function(r, flags) { return this.$val.rune(r, flags); }; + Op.prototype.String = function() { + var i, x; + i = this.$val; + if (1 <= i && i <= 19) { + i = i - (1) << 24 >>> 24; + return $substring("NoMatchEmptyMatchLiteralCharClassAnyCharNotNLAnyCharBeginLineEndLineBeginTextEndTextWordBoundaryNoWordBoundaryCaptureStarPlusQuestRepeatConcatAlternate", ((i < 0 || i >= _Op_index_0.length) ? ($throwRuntimeError("index out of range"), undefined) : _Op_index_0[i]), (x = i + 1 << 24 >>> 24, ((x < 0 || x >= _Op_index_0.length) ? ($throwRuntimeError("index out of range"), undefined) : _Op_index_0[x]))); + } else if ((i === 128)) { + return "opPseudo"; + } else { + return "Op(" + strconv.FormatInt((new $Int64(0, i)), 10) + ")"; + } + }; + $ptrType(Op).prototype.String = function() { return new Op(this.$get()).String(); }; + Error.ptr.prototype.Error = function() { + var e; + e = this; + return "error parsing regexp: " + new ErrorCode(e.Code).String() + ": `" + e.Expr + "`"; + }; + Error.prototype.Error = function() { return this.$val.Error(); }; + ErrorCode.prototype.String = function() { + var e; + e = this.$val; + return (e); + }; + $ptrType(ErrorCode).prototype.String = function() { return new ErrorCode(this.$get()).String(); }; + parser.ptr.prototype.newRegexp = function(op) { + var op, p, re; + p = this; + re = p.free; + if (!(re === ptrType$1.nil)) { + p.free = re.Sub0[0]; + Regexp.copy(re, new Regexp.ptr(0, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "")); + } else { + re = new Regexp.ptr(0, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + } + re.Op = op; + return re; + }; + parser.prototype.newRegexp = function(op) { return this.$val.newRegexp(op); }; + parser.ptr.prototype.reuse = function(re) { + var p, re; + p = this; + re.Sub0[0] = p.free; + p.free = re; + }; + parser.prototype.reuse = function(re) { return this.$val.reuse(re); }; + parser.ptr.prototype.push = function(re) { + var p, re, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + p = this; + if ((re.Op === 4) && (re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === (x$1 = re.Rune, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])))) { + if (p.maybeConcat((x$16 = re.Rune, (0 >= x$16.$length ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + 0])), (p.flags & ~1) << 16 >>> 16)) { + return ptrType$1.nil; + } + re.Op = 3; + re.Rune = $subslice(re.Rune, 0, 1); + re.Flags = (p.flags & ~1) << 16 >>> 16; + } else if ((re.Op === 4) && (re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) === (x$3 = re.Rune, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1]))) && ((x$4 = re.Rune, (2 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 2])) === (x$5 = re.Rune, (3 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 3]))) && (unicode.SimpleFold((x$6 = re.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))) === (x$7 = re.Rune, (2 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 2]))) && (unicode.SimpleFold((x$8 = re.Rune, (2 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 2]))) === (x$9 = re.Rune, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0]))) || (re.Op === 4) && (re.Rune.$length === 2) && (((x$10 = re.Rune, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])) + 1 >> 0) === (x$11 = re.Rune, (1 >= x$11.$length ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + 1]))) && (unicode.SimpleFold((x$12 = re.Rune, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0]))) === (x$13 = re.Rune, (1 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 1]))) && (unicode.SimpleFold((x$14 = re.Rune, (1 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 1]))) === (x$15 = re.Rune, (0 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 0])))) { + if (p.maybeConcat((x$17 = re.Rune, (0 >= x$17.$length ? ($throwRuntimeError("index out of range"), undefined) : x$17.$array[x$17.$offset + 0])), (p.flags | 1) >>> 0)) { + return ptrType$1.nil; + } + re.Op = 3; + re.Rune = $subslice(re.Rune, 0, 1); + re.Flags = (p.flags | 1) >>> 0; + } else { + p.maybeConcat(-1, 0); + } + p.stack = $append(p.stack, re); + return re; + }; + parser.prototype.push = function(re) { return this.$val.push(re); }; + parser.ptr.prototype.maybeConcat = function(r, flags) { + var flags, n, p, r, re1, re2, x, x$1, x$2, x$3, x$4; + p = this; + n = p.stack.$length; + if (n < 2) { + return false; + } + re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + if (!((re1.Op === 3)) || !((re2.Op === 3)) || !((((re1.Flags & 1) >>> 0) === ((re2.Flags & 1) >>> 0)))) { + return false; + } + re2.Rune = $appendSlice(re2.Rune, re1.Rune); + if (r >= 0) { + re1.Rune = $subslice(new sliceType(re1.Rune0), 0, 1); + (x$4 = re1.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = r)); + re1.Flags = flags; + return true; + } + p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); + p.reuse(re1); + return false; + }; + parser.prototype.maybeConcat = function(r, flags) { return this.$val.maybeConcat(r, flags); }; + parser.ptr.prototype.newLiteral = function(r, flags) { + var flags, p, r, re; + p = this; + re = p.newRegexp(3); + re.Flags = flags; + if (!((((flags & 1) >>> 0) === 0))) { + r = minFoldRune(r); + } + re.Rune0[0] = r; + re.Rune = $subslice(new sliceType(re.Rune0), 0, 1); + return re; + }; + parser.prototype.newLiteral = function(r, flags) { return this.$val.newLiteral(r, flags); }; + minFoldRune = function(r) { + var min, r, r0; + if (r < 65 || r > 125251) { + return r; + } + min = r; + r0 = r; + r = unicode.SimpleFold(r); + while (true) { + if (!(!((r === r0)))) { break; } + if (min > r) { + min = r; + } + r = unicode.SimpleFold(r); + } + return min; + }; + parser.ptr.prototype.literal = function(r) { + var p, r; + p = this; + p.push(p.newLiteral(r, p.flags)); + }; + parser.prototype.literal = function(r) { return this.$val.literal(r); }; + parser.ptr.prototype.op = function(op) { + var op, p, re; + p = this; + re = p.newRegexp(op); + re.Flags = p.flags; + return p.push(re); + }; + parser.prototype.op = function(op) { return this.$val.op(op); }; + parser.ptr.prototype.repeat = function(op, min, max, before, after, lastRepeat) { + var after, before, flags, lastRepeat, max, min, n, op, p, re, sub, x, x$1, x$2, x$3, x$4; + p = this; + flags = p.flags; + if (!((((p.flags & 64) >>> 0) === 0))) { + if (after.length > 0 && (after.charCodeAt(0) === 63)) { + after = $substring(after, 1); + flags = (flags ^ (32)) << 16 >>> 16; + } + if (!(lastRepeat === "")) { + return ["", new Error.ptr("invalid nested repetition operator", $substring(lastRepeat, 0, (lastRepeat.length - after.length >> 0)))]; + } + } + n = p.stack.$length; + if (n === 0) { + return ["", new Error.ptr("missing argument to repetition operator", $substring(before, 0, (before.length - after.length >> 0)))]; + } + sub = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (sub.Op >= 128) { + return ["", new Error.ptr("missing argument to repetition operator", $substring(before, 0, (before.length - after.length >> 0)))]; + } + re = p.newRegexp(op); + re.Min = min; + re.Max = max; + re.Flags = flags; + re.Sub = $subslice(new sliceType$5(re.Sub0), 0, 1); + (x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = sub)); + (x$3 = p.stack, x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4] = re)); + if ((op === 17) && (min >= 2 || max >= 2) && !repeatIsValid(re, 1000)) { + return ["", new Error.ptr("invalid repeat count", $substring(before, 0, (before.length - after.length >> 0)))]; + } + return [after, $ifaceNil]; + }; + parser.prototype.repeat = function(op, min, max, before, after, lastRepeat) { return this.$val.repeat(op, min, max, before, after, lastRepeat); }; + repeatIsValid = function(re, n) { + var _i, _q, _ref, m, n, re, sub; + if (re.Op === 17) { + m = re.Max; + if (m === 0) { + return true; + } + if (m < 0) { + m = re.Min; + } + if (m > n) { + return false; + } + if (m > 0) { + n = (_q = n / (m), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + } + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!repeatIsValid(sub, n)) { + return false; + } + _i++; + } + return true; + }; + parser.ptr.prototype.concat = function() { + var _r, _r$1, i, p, subs, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + p.maybeConcat(-1, 0); + i = p.stack.$length; + while (true) { + if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op < 128)) { break; } + i = i - (1) >> 0; + } + subs = $subslice(p.stack, i); + p.stack = $subslice(p.stack, 0, i); + if (subs.$length === 0) { + $s = -1; return p.push(p.newRegexp(2)); + } + _r = p.collapse(subs, 18); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = p.push(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.concat }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.concat = function() { return this.$val.concat(); }; + parser.ptr.prototype.alternate = function() { + var _r, _r$1, i, p, subs, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + i = p.stack.$length; + while (true) { + if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op < 128)) { break; } + i = i - (1) >> 0; + } + subs = $subslice(p.stack, i); + p.stack = $subslice(p.stack, 0, i); + /* */ if (subs.$length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (subs.$length > 0) { */ case 1: + $r = cleanAlt((x$2 = subs.$length - 1 >> 0, ((x$2 < 0 || x$2 >= subs.$length) ? ($throwRuntimeError("index out of range"), undefined) : subs.$array[subs.$offset + x$2]))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (subs.$length === 0) { + $s = -1; return p.push(p.newRegexp(1)); + } + _r = p.collapse(subs, 19); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = p.push(_r); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.alternate }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.alternate = function() { return this.$val.alternate(); }; + cleanAlt = function(re) { + var _1, _r, re, x, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; re = $f.re; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _1 = re.Op; + /* */ if (_1 === (4)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_1 === (4)) { */ case 2: + _r = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$2(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + re.Rune = _r; + if ((re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) === 1114111)) { + re.Rune = sliceType.nil; + re.Op = 6; + $s = -1; return; + } + if ((re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) === 0) && ((x$3 = re.Rune, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1])) === 9) && ((x$4 = re.Rune, (2 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 2])) === 11) && ((x$5 = re.Rune, (3 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 3])) === 1114111)) { + re.Rune = sliceType.nil; + re.Op = 5; + $s = -1; return; + } + if ((re.Rune.$capacity - re.Rune.$length >> 0) > 100) { + re.Rune = $appendSlice($subslice(new sliceType(re.Rune0), 0, 0), re.Rune); + } + /* } */ case 3: + case 1: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: cleanAlt }; } $f._1 = _1; $f._r = _r; $f.re = re; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.ptr.prototype.collapse = function(subs, op) { + var _i, _r, _ref, old, op, p, re, sub, subs, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; old = $f.old; op = $f.op; p = $f.p; re = $f.re; sub = $f.sub; subs = $f.subs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + if (subs.$length === 1) { + $s = -1; return (0 >= subs.$length ? ($throwRuntimeError("index out of range"), undefined) : subs.$array[subs.$offset + 0]); + } + re = p.newRegexp(op); + re.Sub = $subslice(new sliceType$5(re.Sub0), 0, 0); + _ref = subs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (sub.Op === op) { + re.Sub = $appendSlice(re.Sub, sub.Sub); + p.reuse(sub); + } else { + re.Sub = $append(re.Sub, sub); + } + _i++; + } + /* */ if (op === 19) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (op === 19) { */ case 1: + _r = p.factor(re.Sub); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + re.Sub = _r; + if (re.Sub.$length === 1) { + old = re; + re = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + p.reuse(old); + } + /* } */ case 2: + $s = -1; return re; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.collapse }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.old = old; $f.op = op; $f.p = p; $f.re = re; $f.sub = sub; $f.subs = subs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.collapse = function(subs, op) { return this.$val.collapse(subs, op); }; + parser.ptr.prototype.factor = function(sub) { + var _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, first, i, i$1, i$2, i$3, ifirst, iflags, istr, j, j$1, j$2, j$3, max, out, p, prefix, prefix$1, re, re$1, reuse, same, start, str, strflags, sub, suffix, suffix$1, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; first = $f.first; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; ifirst = $f.ifirst; iflags = $f.iflags; istr = $f.istr; j = $f.j; j$1 = $f.j$1; j$2 = $f.j$2; j$3 = $f.j$3; max = $f.max; out = $f.out; p = $f.p; prefix = $f.prefix; prefix$1 = $f.prefix$1; re = $f.re; re$1 = $f.re$1; reuse = $f.reuse; same = $f.same; start = $f.start; str = $f.str; strflags = $f.strflags; sub = $f.sub; suffix = $f.suffix; suffix$1 = $f.suffix$1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + if (sub.$length < 2) { + $s = -1; return sub; + } + str = sliceType.nil; + strflags = 0; + start = 0; + out = $subslice(sub, 0, 0); + i = 0; + /* while (true) { */ case 1: + /* if (!(i <= sub.$length)) { break; } */ if(!(i <= sub.$length)) { $s = 2; continue; } + istr = sliceType.nil; + iflags = 0; + /* */ if (i < sub.$length) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i < sub.$length) { */ case 3: + _tuple = p.leadingString(((i < 0 || i >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i])); + istr = _tuple[0]; + iflags = _tuple[1]; + if (iflags === strflags) { + same = 0; + while (true) { + if (!(same < str.$length && same < istr.$length && (((same < 0 || same >= str.$length) ? ($throwRuntimeError("index out of range"), undefined) : str.$array[str.$offset + same]) === ((same < 0 || same >= istr.$length) ? ($throwRuntimeError("index out of range"), undefined) : istr.$array[istr.$offset + same])))) { break; } + same = same + (1) >> 0; + } + if (same > 0) { + str = $subslice(str, 0, same); + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + } + /* } */ case 4: + /* */ if (i === start) { $s = 5; continue; } + /* */ if (i === (start + 1 >> 0)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (i === start) { */ case 5: + $s = 8; continue; + /* } else if (i === (start + 1 >> 0)) { */ case 6: + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + $s = 8; continue; + /* } else { */ case 7: + prefix = p.newRegexp(3); + prefix.Flags = strflags; + prefix.Rune = $appendSlice($subslice(prefix.Rune, 0, 0), str); + j = start; + while (true) { + if (!(j < i)) { break; } + ((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j] = p.removeLeadingString(((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j]), str.$length)); + j = j + (1) >> 0; + } + _r = p.collapse($subslice(sub, start, i), 19); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + suffix = _r; + re = p.newRegexp(18); + re.Sub = $append($subslice(re.Sub, 0, 0), prefix, suffix); + out = $append(out, re); + /* } */ case 8: + start = i; + str = istr; + strflags = iflags; + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + sub = out; + start = 0; + out = $subslice(sub, 0, 0); + first = ptrType$1.nil; + i$1 = 0; + /* while (true) { */ case 10: + /* if (!(i$1 <= sub.$length)) { break; } */ if(!(i$1 <= sub.$length)) { $s = 11; continue; } + ifirst = ptrType$1.nil; + /* */ if (i$1 < sub.$length) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (i$1 < sub.$length) { */ case 12: + ifirst = p.leadingRegexp(((i$1 < 0 || i$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$1])); + if (!(first === ptrType$1.nil) && first.Equal(ifirst) && (isCharClass(first) || ((first.Op === 17) && (first.Min === first.Max) && isCharClass((x = first.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))))) { + i$1 = i$1 + (1) >> 0; + /* continue; */ $s = 10; continue; + } + /* } */ case 13: + /* */ if (i$1 === start) { $s = 14; continue; } + /* */ if (i$1 === (start + 1 >> 0)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (i$1 === start) { */ case 14: + $s = 17; continue; + /* } else if (i$1 === (start + 1 >> 0)) { */ case 15: + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + $s = 17; continue; + /* } else { */ case 16: + prefix$1 = first; + j$1 = start; + while (true) { + if (!(j$1 < i$1)) { break; } + reuse = !((j$1 === start)); + ((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1] = p.removeLeadingRegexp(((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1]), reuse)); + j$1 = j$1 + (1) >> 0; + } + _r$1 = p.collapse($subslice(sub, start, i$1), 19); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + suffix$1 = _r$1; + re$1 = p.newRegexp(18); + re$1.Sub = $append($subslice(re$1.Sub, 0, 0), prefix$1, suffix$1); + out = $append(out, re$1); + /* } */ case 17: + start = i$1; + first = ifirst; + i$1 = i$1 + (1) >> 0; + /* } */ $s = 10; continue; case 11: + sub = out; + start = 0; + out = $subslice(sub, 0, 0); + i$2 = 0; + /* while (true) { */ case 19: + /* if (!(i$2 <= sub.$length)) { break; } */ if(!(i$2 <= sub.$length)) { $s = 20; continue; } + /* */ if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2]))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2]))) { */ case 21: + i$2 = i$2 + (1) >> 0; + /* continue; */ $s = 19; continue; + /* } */ case 22: + /* */ if (i$2 === start) { $s = 23; continue; } + /* */ if (i$2 === (start + 1 >> 0)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (i$2 === start) { */ case 23: + $s = 26; continue; + /* } else if (i$2 === (start + 1 >> 0)) { */ case 24: + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + $s = 26; continue; + /* } else { */ case 25: + max = start; + j$2 = start + 1 >> 0; + while (true) { + if (!(j$2 < i$2)) { break; } + if (((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Op < ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Op || (((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Op === ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Op) && ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Rune.$length < ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Rune.$length) { + max = j$2; + } + j$2 = j$2 + (1) >> 0; + } + _tmp = ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]); + _tmp$1 = ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start]); + ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start] = _tmp); + ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max] = _tmp$1); + j$3 = start + 1 >> 0; + while (true) { + if (!(j$3 < i$2)) { break; } + mergeCharClass(((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start]), ((j$3 < 0 || j$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$3])); + p.reuse(((j$3 < 0 || j$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$3])); + j$3 = j$3 + (1) >> 0; + } + $r = cleanAlt(((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + /* } */ case 26: + if (i$2 < sub.$length) { + out = $append(out, ((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2])); + } + start = i$2 + 1 >> 0; + i$2 = i$2 + (1) >> 0; + /* } */ $s = 19; continue; case 20: + sub = out; + start = 0; + out = $subslice(sub, 0, 0); + _ref = sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$3 = _i; + if ((i$3 + 1 >> 0) < sub.$length && (((i$3 < 0 || i$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$3]).Op === 2) && ((x$1 = i$3 + 1 >> 0, ((x$1 < 0 || x$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + x$1])).Op === 2)) { + _i++; + continue; + } + out = $append(out, ((i$3 < 0 || i$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$3])); + _i++; + } + sub = out; + $s = -1; return sub; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.factor }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.first = first; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.ifirst = ifirst; $f.iflags = iflags; $f.istr = istr; $f.j = j; $f.j$1 = j$1; $f.j$2 = j$2; $f.j$3 = j$3; $f.max = max; $f.out = out; $f.p = p; $f.prefix = prefix; $f.prefix$1 = prefix$1; $f.re = re; $f.re$1 = re$1; $f.reuse = reuse; $f.same = same; $f.start = start; $f.str = str; $f.strflags = strflags; $f.sub = sub; $f.suffix = suffix; $f.suffix$1 = suffix$1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.factor = function(sub) { return this.$val.factor(sub); }; + parser.ptr.prototype.leadingString = function(re) { + var p, re, x; + p = this; + if ((re.Op === 18) && re.Sub.$length > 0) { + re = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + } + if (!((re.Op === 3))) { + return [sliceType.nil, 0]; + } + return [re.Rune, (re.Flags & 1) >>> 0]; + }; + parser.prototype.leadingString = function(re) { return this.$val.leadingString(re); }; + parser.ptr.prototype.removeLeadingString = function(re, n) { + var _1, n, old, p, re, sub, x, x$1, x$2; + p = this; + if ((re.Op === 18) && re.Sub.$length > 0) { + sub = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + sub = p.removeLeadingString(sub, n); + (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = sub)); + if (sub.Op === 2) { + p.reuse(sub); + _1 = re.Sub.$length; + if ((_1 === (0)) || (_1 === (1))) { + re.Op = 2; + re.Sub = sliceType$5.nil; + } else if (_1 === (2)) { + old = re; + re = (x$2 = re.Sub, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])); + p.reuse(old); + } else { + $copySlice(re.Sub, $subslice(re.Sub, 1)); + re.Sub = $subslice(re.Sub, 0, (re.Sub.$length - 1 >> 0)); + } + } + return re; + } + if (re.Op === 3) { + re.Rune = $subslice(re.Rune, 0, $copySlice(re.Rune, $subslice(re.Rune, n))); + if (re.Rune.$length === 0) { + re.Op = 2; + } + } + return re; + }; + parser.prototype.removeLeadingString = function(re, n) { return this.$val.removeLeadingString(re, n); }; + parser.ptr.prototype.leadingRegexp = function(re) { + var p, re, sub, x; + p = this; + if (re.Op === 2) { + return ptrType$1.nil; + } + if ((re.Op === 18) && re.Sub.$length > 0) { + sub = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + if (sub.Op === 2) { + return ptrType$1.nil; + } + return sub; + } + return re; + }; + parser.prototype.leadingRegexp = function(re) { return this.$val.leadingRegexp(re); }; + parser.ptr.prototype.removeLeadingRegexp = function(re, reuse) { + var _1, old, p, re, reuse, x, x$1; + p = this; + if ((re.Op === 18) && re.Sub.$length > 0) { + if (reuse) { + p.reuse((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + } + re.Sub = $subslice(re.Sub, 0, $copySlice(re.Sub, $subslice(re.Sub, 1))); + _1 = re.Sub.$length; + if (_1 === (0)) { + re.Op = 2; + re.Sub = sliceType$5.nil; + } else if (_1 === (1)) { + old = re; + re = (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + p.reuse(old); + } + return re; + } + if (reuse) { + p.reuse(re); + } + return p.newRegexp(2); + }; + parser.prototype.removeLeadingRegexp = function(re, reuse) { return this.$val.removeLeadingRegexp(re, reuse); }; + literalRegexp = function(s, flags) { + var _i, _ref, _rune, c, flags, re, s; + re = new Regexp.ptr(3, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + re.Flags = flags; + re.Rune = $subslice(new sliceType(re.Rune0), 0, 0); + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (re.Rune.$length >= re.Rune.$capacity) { + re.Rune = (new sliceType($stringToRunes(s))); + break; + } + re.Rune = $append(re.Rune, c); + _i += _rune[1]; + } + return re; + }; + Parse = function(s, flags) { + var _1, _2, _3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _struct, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, after, after$1, before, before$1, c, c$1, err, err$1, err$2, err$3, flags, i, lastRepeat, lit, max, min, n, ok, op, p, r, r$1, re, repeat, rest, rest$1, rest$2, s, t, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _struct = $f._struct; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; after = $f.after; after$1 = $f.after$1; before = $f.before; before$1 = $f.before$1; c = $f.c; c$1 = $f.c$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; flags = $f.flags; i = $f.i; lastRepeat = $f.lastRepeat; lit = $f.lit; max = $f.max; min = $f.min; n = $f.n; ok = $f.ok; op = $f.op; p = $f.p; r = $f.r; r$1 = $f.r$1; re = $f.re; repeat = $f.repeat; rest = $f.rest; rest$1 = $f.rest$1; rest$2 = $f.rest$2; s = $f.s; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (!((((flags & 2) >>> 0) === 0))) { + err = checkUTF8(s); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err]; + } + $s = -1; return [literalRegexp(s, flags), $ifaceNil]; + } + p = new parser.ptr(0, sliceType$5.nil, ptrType$1.nil, 0, "", sliceType.nil); + err$1 = $ifaceNil; + c = 0; + op = 0; + lastRepeat = ""; + p.flags = flags; + p.wholeRegexp = s; + t = s; + /* while (true) { */ case 1: + /* if (!(!(t === ""))) { break; } */ if(!(!(t === ""))) { $s = 2; continue; } + repeat = ""; + _1 = t.charCodeAt(0); + /* */ if (_1 === (40)) { $s = 4; continue; } + /* */ if (_1 === (124)) { $s = 5; continue; } + /* */ if (_1 === (41)) { $s = 6; continue; } + /* */ if (_1 === (94)) { $s = 7; continue; } + /* */ if (_1 === (36)) { $s = 8; continue; } + /* */ if (_1 === (46)) { $s = 9; continue; } + /* */ if (_1 === (91)) { $s = 10; continue; } + /* */ if ((_1 === (42)) || (_1 === (43)) || (_1 === (63))) { $s = 11; continue; } + /* */ if (_1 === (123)) { $s = 12; continue; } + /* */ if (_1 === (92)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_1 === (40)) { */ case 4: + if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2 && (t.charCodeAt(1) === 63)) { + _tuple = p.parsePerlFlags(t); + t = _tuple[0]; + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + /* break; */ $s = 3; continue; + } + p.numCap = p.numCap + (1) >> 0; + p.op(128).Cap = p.numCap; + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_1 === (124)) { */ case 5: + _r = p.parseVerticalBar(); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err$1 = _r; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_1 === (41)) { */ case 6: + _r$1 = p.parseRightParen(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$1 = _r$1; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_1 === (94)) { */ case 7: + if (!((((p.flags & 16) >>> 0) === 0))) { + p.op(9); + } else { + p.op(7); + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_1 === (36)) { */ case 8: + if (!((((p.flags & 16) >>> 0) === 0))) { + _struct = p.op(10); + _struct.Flags = (_struct.Flags | (256)) >>> 0; + } else { + p.op(8); + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_1 === (46)) { */ case 9: + if (!((((p.flags & 8) >>> 0) === 0))) { + p.op(6); + } else { + p.op(5); + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_1 === (91)) { */ case 10: + _r$2 = p.parseClass(t); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + t = _tuple$1[0]; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + $s = 15; continue; + /* } else if ((_1 === (42)) || (_1 === (43)) || (_1 === (63))) { */ case 11: + before = t; + _2 = t.charCodeAt(0); + if (_2 === (42)) { + op = 14; + } else if (_2 === (43)) { + op = 15; + } else if (_2 === (63)) { + op = 16; + } + after = $substring(t, 1); + _tuple$2 = p.repeat(op, 0, 0, before, after, lastRepeat); + after = _tuple$2[0]; + err$1 = _tuple$2[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + repeat = before; + t = after; + $s = 15; continue; + /* } else if (_1 === (123)) { */ case 12: + op = 17; + before$1 = t; + _tuple$3 = p.parseRepeat(t); + min = _tuple$3[0]; + max = _tuple$3[1]; + after$1 = _tuple$3[2]; + ok = _tuple$3[3]; + if (!ok) { + p.literal(123); + t = $substring(t, 1); + /* break; */ $s = 3; continue; + } + if (min < 0 || min > 1000 || max > 1000 || max >= 0 && min > max) { + $s = -1; return [ptrType$1.nil, new Error.ptr("invalid repeat count", $substring(before$1, 0, (before$1.length - after$1.length >> 0)))]; + } + _tuple$4 = p.repeat(op, min, max, before$1, after$1, lastRepeat); + after$1 = _tuple$4[0]; + err$1 = _tuple$4[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + repeat = before$1; + t = after$1; + $s = 15; continue; + /* } else if (_1 === (92)) { */ case 13: + if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2) { + _3 = t.charCodeAt(1); + if (_3 === (65)) { + p.op(9); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } else if (_3 === (98)) { + p.op(11); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } else if (_3 === (66)) { + p.op(12); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } else if (_3 === (67)) { + $s = -1; return [ptrType$1.nil, new Error.ptr("invalid escape sequence", $substring(t, 0, 2))]; + } else if (_3 === (81)) { + lit = ""; + i = strings.Index(t, "\\E"); + if (i < 0) { + lit = $substring(t, 2); + t = ""; + } else { + lit = $substring(t, 2, i); + t = $substring(t, (i + 2 >> 0)); + } + while (true) { + if (!(!(lit === ""))) { break; } + _tuple$5 = nextRune(lit); + c$1 = _tuple$5[0]; + rest = _tuple$5[1]; + err$2 = _tuple$5[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$2]; + } + p.literal(c$1); + lit = rest; + } + /* break BigSwitch; */ $s = 3; continue s; + } else if (_3 === (122)) { + p.op(10); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } + } + re = p.newRegexp(4); + re.Flags = p.flags; + /* */ if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { */ case 19: + _r$3 = p.parseUnicodeClass(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$6 = _r$3; + r = _tuple$6[0]; + rest$1 = _tuple$6[1]; + err$3 = _tuple$6[2]; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$3]; + } + if (!(r === sliceType.nil)) { + re.Rune = r; + t = rest$1; + p.push(re); + /* break BigSwitch; */ $s = 3; continue s; + } + /* } */ case 20: + _r$4 = p.parsePerlClassEscape(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$7 = _r$4; + r$1 = _tuple$7[0]; + rest$2 = _tuple$7[1]; + if (!(r$1 === sliceType.nil)) { + re.Rune = r$1; + t = rest$2; + p.push(re); + /* break BigSwitch; */ $s = 3; continue s; + } + p.reuse(re); + _tuple$8 = p.parseEscape(t); + c = _tuple$8[0]; + t = _tuple$8[1]; + err$1 = _tuple$8[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + p.literal(c); + $s = 15; continue; + /* } else { */ case 14: + _tuple$9 = nextRune(t); + c = _tuple$9[0]; + t = _tuple$9[1]; + err$1 = _tuple$9[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + p.literal(c); + /* } */ case 15: + case 3: + lastRepeat = repeat; + /* } */ $s = 1; continue; case 2: + _r$5 = p.concat(); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _r$6 = p.swapVerticalBar(); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (_r$6) { */ case 24: + p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); + /* } */ case 25: + _r$7 = p.alternate(); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + n = p.stack.$length; + if (!((n === 1))) { + $s = -1; return [ptrType$1.nil, new Error.ptr("missing closing )", s)]; + } + $s = -1; return [(x = p.stack, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._struct = _struct; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.after = after; $f.after$1 = after$1; $f.before = before; $f.before$1 = before$1; $f.c = c; $f.c$1 = c$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.flags = flags; $f.i = i; $f.lastRepeat = lastRepeat; $f.lit = lit; $f.max = max; $f.min = min; $f.n = n; $f.ok = ok; $f.op = op; $f.p = p; $f.r = r; $f.r$1 = r$1; $f.re = re; $f.repeat = repeat; $f.rest = rest; $f.rest$1 = rest$1; $f.rest$2 = rest$2; $f.s = s; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Parse = Parse; + parser.ptr.prototype.parseRepeat = function(s) { + var _tuple, _tuple$1, max, min, ok, ok1, p, rest, s; + min = 0; + max = 0; + rest = ""; + ok = false; + p = this; + if (s === "" || !((s.charCodeAt(0) === 123))) { + return [min, max, rest, ok]; + } + s = $substring(s, 1); + ok1 = false; + _tuple = p.parseInt(s); + min = _tuple[0]; + s = _tuple[1]; + ok1 = _tuple[2]; + if (!ok1) { + return [min, max, rest, ok]; + } + if (s === "") { + return [min, max, rest, ok]; + } + if (!((s.charCodeAt(0) === 44))) { + max = min; + } else { + s = $substring(s, 1); + if (s === "") { + return [min, max, rest, ok]; + } + if (s.charCodeAt(0) === 125) { + max = -1; + } else { + _tuple$1 = p.parseInt(s); + max = _tuple$1[0]; + s = _tuple$1[1]; + ok1 = _tuple$1[2]; + if (!ok1) { + return [min, max, rest, ok]; + } else if (max < 0) { + min = -1; + } + } + } + if (s === "" || !((s.charCodeAt(0) === 125))) { + return [min, max, rest, ok]; + } + rest = $substring(s, 1); + ok = true; + return [min, max, rest, ok]; + }; + parser.prototype.parseRepeat = function(s) { return this.$val.parseRepeat(s); }; + parser.ptr.prototype.parsePerlFlags = function(s) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, capture, end, err, flags, name, p, re, rest, s, sawFlag, sign, t; + rest = ""; + err = $ifaceNil; + p = this; + t = s; + if (t.length > 4 && (t.charCodeAt(2) === 80) && (t.charCodeAt(3) === 60)) { + end = strings.IndexRune(t, 62); + if (end < 0) { + err = checkUTF8(t); + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = ""; + _tmp$1 = err; + rest = _tmp; + err = _tmp$1; + return [rest, err]; + } + _tmp$2 = ""; + _tmp$3 = new Error.ptr("invalid named capture", s); + rest = _tmp$2; + err = _tmp$3; + return [rest, err]; + } + capture = $substring(t, 0, (end + 1 >> 0)); + name = $substring(t, 4, end); + err = checkUTF8(name); + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$4 = ""; + _tmp$5 = err; + rest = _tmp$4; + err = _tmp$5; + return [rest, err]; + } + if (!isValidCaptureName(name)) { + _tmp$6 = ""; + _tmp$7 = new Error.ptr("invalid named capture", capture); + rest = _tmp$6; + err = _tmp$7; + return [rest, err]; + } + p.numCap = p.numCap + (1) >> 0; + re = p.op(128); + re.Cap = p.numCap; + re.Name = name; + _tmp$8 = $substring(t, (end + 1 >> 0)); + _tmp$9 = $ifaceNil; + rest = _tmp$8; + err = _tmp$9; + return [rest, err]; + } + c = 0; + t = $substring(t, 2); + flags = p.flags; + sign = 1; + sawFlag = false; + Loop: + while (true) { + if (!(!(t === ""))) { break; } + _tuple = nextRune(t); + c = _tuple[0]; + t = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$10 = ""; + _tmp$11 = err; + rest = _tmp$10; + err = _tmp$11; + return [rest, err]; + } + _1 = c; + if (_1 === (105)) { + flags = (flags | (1)) >>> 0; + sawFlag = true; + } else if (_1 === (109)) { + flags = (flags & ~(16)) << 16 >>> 16; + sawFlag = true; + } else if (_1 === (115)) { + flags = (flags | (8)) >>> 0; + sawFlag = true; + } else if (_1 === (85)) { + flags = (flags | (32)) >>> 0; + sawFlag = true; + } else if (_1 === (45)) { + if (sign < 0) { + break Loop; + } + sign = -1; + flags = ~flags << 16 >>> 16; + sawFlag = false; + } else if ((_1 === (58)) || (_1 === (41))) { + if (sign < 0) { + if (!sawFlag) { + break Loop; + } + flags = ~flags << 16 >>> 16; + } + if (c === 58) { + p.op(128); + } + p.flags = flags; + _tmp$12 = t; + _tmp$13 = $ifaceNil; + rest = _tmp$12; + err = _tmp$13; + return [rest, err]; + } else { + break Loop; + } + } + _tmp$14 = ""; + _tmp$15 = new Error.ptr("invalid or unsupported Perl syntax", $substring(s, 0, (s.length - t.length >> 0))); + rest = _tmp$14; + err = _tmp$15; + return [rest, err]; + }; + parser.prototype.parsePerlFlags = function(s) { return this.$val.parsePerlFlags(s); }; + isValidCaptureName = function(name) { + var _i, _ref, _rune, c, name; + if (name === "") { + return false; + } + _ref = name; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (!((c === 95)) && !isalnum(c)) { + return false; + } + _i += _rune[1]; + } + return true; + }; + parser.ptr.prototype.parseInt = function(s) { + var i, n, ok, p, rest, s, t; + n = 0; + rest = ""; + ok = false; + p = this; + if (s === "" || s.charCodeAt(0) < 48 || 57 < s.charCodeAt(0)) { + return [n, rest, ok]; + } + if (s.length >= 2 && (s.charCodeAt(0) === 48) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) { + return [n, rest, ok]; + } + t = s; + while (true) { + if (!(!(s === "") && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; } + s = $substring(s, 1); + } + rest = s; + ok = true; + t = $substring(t, 0, (t.length - s.length >> 0)); + i = 0; + while (true) { + if (!(i < t.length)) { break; } + if (n >= 100000000) { + n = -1; + break; + } + n = (($imul(n, 10)) + ((t.charCodeAt(i) >> 0)) >> 0) - 48 >> 0; + i = i + (1) >> 0; + } + return [n, rest, ok]; + }; + parser.prototype.parseInt = function(s) { return this.$val.parseInt(s); }; + isCharClass = function(re) { + var re; + return (re.Op === 3) && (re.Rune.$length === 1) || (re.Op === 4) || (re.Op === 5) || (re.Op === 6); + }; + matchRune = function(re, r) { + var _1, i, r, re, x, x$1, x$2, x$3; + _1 = re.Op; + if (_1 === (3)) { + return (re.Rune.$length === 1) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === r); + } else if (_1 === (4)) { + i = 0; + while (true) { + if (!(i < re.Rune.$length)) { break; } + if ((x$1 = re.Rune, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) <= r && r <= (x$2 = re.Rune, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))) { + return true; + } + i = i + (2) >> 0; + } + return false; + } else if (_1 === (5)) { + return !((r === 10)); + } else if (_1 === (6)) { + return true; + } + return false; + }; + parser.ptr.prototype.parseVerticalBar = function() { + var _r, _r$1, p, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$1) { */ case 2: + p.op(129); + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseVerticalBar }; } $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.parseVerticalBar = function() { return this.$val.parseVerticalBar(); }; + mergeCharClass = function(dst, src) { + var _1, dst, src, x, x$1, x$2, x$3, x$4; + switch (0) { default: + _1 = dst.Op; + if (_1 === (6)) { + } else if (_1 === (5)) { + if (matchRune(src, 10)) { + dst.Op = 6; + } + } else if (_1 === (4)) { + if (src.Op === 3) { + dst.Rune = appendLiteral(dst.Rune, (x = src.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), src.Flags); + } else { + dst.Rune = appendClass(dst.Rune, src.Rune); + } + } else if (_1 === (3)) { + if (((x$1 = src.Rune, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) === (x$2 = dst.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) && (src.Flags === dst.Flags)) { + break; + } + dst.Op = 4; + dst.Rune = appendLiteral($subslice(dst.Rune, 0, 0), (x$3 = dst.Rune, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), dst.Flags); + dst.Rune = appendLiteral(dst.Rune, (x$4 = src.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), src.Flags); + } + } + }; + parser.ptr.prototype.swapVerticalBar = function() { + var _tmp, _tmp$1, n, p, re1, re1$1, re2, re3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; n = $f.n; p = $f.p; re1 = $f.re1; re1$1 = $f.re1$1; re2 = $f.re2; re3 = $f.re3; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + n = p.stack.$length; + if (n >= 3 && ((x = p.stack, x$1 = n - 2 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op === 129) && isCharClass((x$2 = p.stack, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))) && isCharClass((x$4 = p.stack, x$5 = n - 3 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])))) { + re1 = (x$6 = p.stack, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])); + re3 = (x$8 = p.stack, x$9 = n - 3 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])); + if (re1.Op > re3.Op) { + _tmp = re3; + _tmp$1 = re1; + re1 = _tmp; + re3 = _tmp$1; + (x$10 = p.stack, x$11 = n - 3 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11] = re3)); + } + mergeCharClass(re3, re1); + p.reuse(re1); + p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); + $s = -1; return true; + } + /* */ if (n >= 2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n >= 2) { */ case 1: + re1$1 = (x$12 = p.stack, x$13 = n - 1 >> 0, ((x$13 < 0 || x$13 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + x$13])); + re2 = (x$14 = p.stack, x$15 = n - 2 >> 0, ((x$15 < 0 || x$15 >= x$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + x$15])); + /* */ if (re2.Op === 129) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (re2.Op === 129) { */ case 3: + /* */ if (n >= 3) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (n >= 3) { */ case 5: + $r = cleanAlt((x$16 = p.stack, x$17 = n - 3 >> 0, ((x$17 < 0 || x$17 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + x$17]))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + (x$18 = p.stack, x$19 = n - 2 >> 0, ((x$19 < 0 || x$19 >= x$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + x$19] = re1$1)); + (x$20 = p.stack, x$21 = n - 1 >> 0, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21] = re2)); + $s = -1; return true; + /* } */ case 4: + /* } */ case 2: + $s = -1; return false; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.swapVerticalBar }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.n = n; $f.p = p; $f.re1 = re1; $f.re1$1 = re1$1; $f.re2 = re2; $f.re3 = re3; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.swapVerticalBar = function() { return this.$val.swapVerticalBar(); }; + parser.ptr.prototype.parseRightParen = function() { + var _r, _r$1, _r$2, n, p, re1, re2, x, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; n = $f.n; p = $f.p; re1 = $f.re1; re2 = $f.re2; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$1) { */ case 2: + p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); + /* } */ case 3: + _r$2 = p.alternate(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + n = p.stack.$length; + if (n < 2) { + $s = -1; return new Error.ptr("unexpected )", p.wholeRegexp); + } + re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + p.stack = $subslice(p.stack, 0, (n - 2 >> 0)); + if (!((re2.Op === 128))) { + $s = -1; return new Error.ptr("unexpected )", p.wholeRegexp); + } + p.flags = re2.Flags; + if (re2.Cap === 0) { + p.push(re1); + } else { + re2.Op = 13; + re2.Sub = $subslice(new sliceType$5(re2.Sub0), 0, 1); + (x$4 = re2.Sub, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = re1)); + p.push(re2); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseRightParen }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.re1 = re1; $f.re2 = re2; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.parseRightParen = function() { return this.$val.parseRightParen(); }; + parser.ptr.prototype.parseEscape = function(s) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, err, i, nhex, p, r, rest, s, t, v, x, y; + r = 0; + rest = ""; + err = $ifaceNil; + p = this; + t = $substring(s, 1); + if (t === "") { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = new Error.ptr("trailing backslash at end of expression", ""); + r = _tmp; + rest = _tmp$1; + err = _tmp$2; + return [r, rest, err]; + } + _tuple = nextRune(t); + c = _tuple[0]; + t = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$3 = 0; + _tmp$4 = ""; + _tmp$5 = err; + r = _tmp$3; + rest = _tmp$4; + err = _tmp$5; + return [r, rest, err]; + } + Switch: + switch (0) { default: + _1 = c; + if ((_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { + if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { + break; + } + r = c - 48 >> 0; + i = 1; + while (true) { + if (!(i < 3)) { break; } + if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { + break; + } + r = (($imul(r, 8)) + ((t.charCodeAt(0) >> 0)) >> 0) - 48 >> 0; + t = $substring(t, 1); + i = i + (1) >> 0; + } + _tmp$6 = r; + _tmp$7 = t; + _tmp$8 = $ifaceNil; + r = _tmp$6; + rest = _tmp$7; + err = _tmp$8; + return [r, rest, err]; + } else if (_1 === (48)) { + r = c - 48 >> 0; + i = 1; + while (true) { + if (!(i < 3)) { break; } + if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { + break; + } + r = (($imul(r, 8)) + ((t.charCodeAt(0) >> 0)) >> 0) - 48 >> 0; + t = $substring(t, 1); + i = i + (1) >> 0; + } + _tmp$9 = r; + _tmp$10 = t; + _tmp$11 = $ifaceNil; + r = _tmp$9; + rest = _tmp$10; + err = _tmp$11; + return [r, rest, err]; + } else if (_1 === (120)) { + if (t === "") { + break; + } + _tuple$1 = nextRune(t); + c = _tuple$1[0]; + t = _tuple$1[1]; + err = _tuple$1[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$12 = 0; + _tmp$13 = ""; + _tmp$14 = err; + r = _tmp$12; + rest = _tmp$13; + err = _tmp$14; + return [r, rest, err]; + } + if (c === 123) { + nhex = 0; + r = 0; + while (true) { + if (t === "") { + break Switch; + } + _tuple$2 = nextRune(t); + c = _tuple$2[0]; + t = _tuple$2[1]; + err = _tuple$2[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$15 = 0; + _tmp$16 = ""; + _tmp$17 = err; + r = _tmp$15; + rest = _tmp$16; + err = _tmp$17; + return [r, rest, err]; + } + if (c === 125) { + break; + } + v = unhex(c); + if (v < 0) { + break Switch; + } + r = ($imul(r, 16)) + v >> 0; + if (r > 1114111) { + break Switch; + } + nhex = nhex + (1) >> 0; + } + if (nhex === 0) { + break Switch; + } + _tmp$18 = r; + _tmp$19 = t; + _tmp$20 = $ifaceNil; + r = _tmp$18; + rest = _tmp$19; + err = _tmp$20; + return [r, rest, err]; + } + x = unhex(c); + _tuple$3 = nextRune(t); + c = _tuple$3[0]; + t = _tuple$3[1]; + err = _tuple$3[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$21 = 0; + _tmp$22 = ""; + _tmp$23 = err; + r = _tmp$21; + rest = _tmp$22; + err = _tmp$23; + return [r, rest, err]; + } + y = unhex(c); + if (x < 0 || y < 0) { + break; + } + _tmp$24 = ($imul(x, 16)) + y >> 0; + _tmp$25 = t; + _tmp$26 = $ifaceNil; + r = _tmp$24; + rest = _tmp$25; + err = _tmp$26; + return [r, rest, err]; + } else if (_1 === (97)) { + _tmp$27 = 7; + _tmp$28 = t; + _tmp$29 = err; + r = _tmp$27; + rest = _tmp$28; + err = _tmp$29; + return [r, rest, err]; + } else if (_1 === (102)) { + _tmp$30 = 12; + _tmp$31 = t; + _tmp$32 = err; + r = _tmp$30; + rest = _tmp$31; + err = _tmp$32; + return [r, rest, err]; + } else if (_1 === (110)) { + _tmp$33 = 10; + _tmp$34 = t; + _tmp$35 = err; + r = _tmp$33; + rest = _tmp$34; + err = _tmp$35; + return [r, rest, err]; + } else if (_1 === (114)) { + _tmp$36 = 13; + _tmp$37 = t; + _tmp$38 = err; + r = _tmp$36; + rest = _tmp$37; + err = _tmp$38; + return [r, rest, err]; + } else if (_1 === (116)) { + _tmp$39 = 9; + _tmp$40 = t; + _tmp$41 = err; + r = _tmp$39; + rest = _tmp$40; + err = _tmp$41; + return [r, rest, err]; + } else if (_1 === (118)) { + _tmp$42 = 11; + _tmp$43 = t; + _tmp$44 = err; + r = _tmp$42; + rest = _tmp$43; + err = _tmp$44; + return [r, rest, err]; + } else if (c < 128 && !isalnum(c)) { + _tmp$45 = c; + _tmp$46 = t; + _tmp$47 = $ifaceNil; + r = _tmp$45; + rest = _tmp$46; + err = _tmp$47; + return [r, rest, err]; + } + } + _tmp$48 = 0; + _tmp$49 = ""; + _tmp$50 = new Error.ptr("invalid escape sequence", $substring(s, 0, (s.length - t.length >> 0))); + r = _tmp$48; + rest = _tmp$49; + err = _tmp$50; + return [r, rest, err]; + }; + parser.prototype.parseEscape = function(s) { return this.$val.parseEscape(s); }; + parser.ptr.prototype.parseClassChar = function(s, wholeClass) { + var _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, err, p, r, rest, s, wholeClass; + r = 0; + rest = ""; + err = $ifaceNil; + p = this; + if (s === "") { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = new Error.ptr("missing closing ]", wholeClass); + r = _tmp; + rest = _tmp$1; + err = _tmp$2; + return [r, rest, err]; + } + if (s.charCodeAt(0) === 92) { + _tuple = p.parseEscape(s); + r = _tuple[0]; + rest = _tuple[1]; + err = _tuple[2]; + return [r, rest, err]; + } + _tuple$1 = nextRune(s); + r = _tuple$1[0]; + rest = _tuple$1[1]; + err = _tuple$1[2]; + return [r, rest, err]; + }; + parser.prototype.parseClassChar = function(s, wholeClass) { return this.$val.parseClassChar(s, wholeClass); }; + parser.ptr.prototype.parsePerlClassEscape = function(s, r) { + var _entry, _r, _tmp, _tmp$1, g, out, p, r, rest, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; g = $f.g; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + out = sliceType.nil; + rest = ""; + p = this; + if ((((p.flags & 64) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92))) { + $s = -1; return [out, rest]; + } + g = $clone((_entry = perlGroup[$String.keyFor($substring(s, 0, 2))], _entry !== undefined ? _entry.v : new charGroup.ptr(0, sliceType.nil)), charGroup); + if (g.sign === 0) { + $s = -1; return [out, rest]; + } + _r = p.appendGroup(r, $clone(g, charGroup)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp = _r; + _tmp$1 = $substring(s, 2); + out = _tmp; + rest = _tmp$1; + $s = -1; return [out, rest]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parsePerlClassEscape }; } $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.g = g; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.parsePerlClassEscape = function(s, r) { return this.$val.parsePerlClassEscape(s, r); }; + parser.ptr.prototype.parseNamedClass = function(s, r) { + var _entry, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, g, i, name, out, p, r, rest, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; err = $f.err; g = $f.g; i = $f.i; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + out = sliceType.nil; + rest = ""; + err = $ifaceNil; + p = this; + if (s.length < 2 || !((s.charCodeAt(0) === 91)) || !((s.charCodeAt(1) === 58))) { + $s = -1; return [out, rest, err]; + } + i = strings.Index($substring(s, 2), ":]"); + if (i < 0) { + $s = -1; return [out, rest, err]; + } + i = i + (2) >> 0; + _tmp = $substring(s, 0, (i + 2 >> 0)); + _tmp$1 = $substring(s, (i + 2 >> 0)); + name = _tmp; + s = _tmp$1; + g = $clone((_entry = posixGroup[$String.keyFor(name)], _entry !== undefined ? _entry.v : new charGroup.ptr(0, sliceType.nil)), charGroup); + if (g.sign === 0) { + _tmp$2 = sliceType.nil; + _tmp$3 = ""; + _tmp$4 = new Error.ptr("invalid character class range", name); + out = _tmp$2; + rest = _tmp$3; + err = _tmp$4; + $s = -1; return [out, rest, err]; + } + _r = p.appendGroup(r, $clone(g, charGroup)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$5 = _r; + _tmp$6 = s; + _tmp$7 = $ifaceNil; + out = _tmp$5; + rest = _tmp$6; + err = _tmp$7; + $s = -1; return [out, rest, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseNamedClass }; } $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f.err = err; $f.g = g; $f.i = i; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.parseNamedClass = function(s, r) { return this.$val.parseNamedClass(s, r); }; + parser.ptr.prototype.appendGroup = function(r, g) { + var _r, g, p, r, tmp, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; g = $f.g; p = $f.p; r = $f.r; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (((p.flags & 1) >>> 0) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((p.flags & 1) >>> 0) === 0) { */ case 1: + if (g.sign < 0) { + r = appendNegatedClass(r, g.class$1); + } else { + r = appendClass(r, g.class$1); + } + $s = 3; continue; + /* } else { */ case 2: + tmp = $subslice(p.tmpClass, 0, 0); + tmp = appendFoldedClass(tmp, g.class$1); + p.tmpClass = tmp; + _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$2(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tmp = _r; + if (g.sign < 0) { + r = appendNegatedClass(r, tmp); + } else { + r = appendClass(r, tmp); + } + /* } */ case 3: + $s = -1; return r; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.appendGroup }; } $f._r = _r; $f.g = g; $f.p = p; $f.r = r; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.appendGroup = function(r, g) { return this.$val.appendGroup(r, g); }; + unicodeTable = function(name) { + var _entry, _entry$1, _entry$2, _entry$3, name, t, t$1; + if (name === "Any") { + return [anyTable, anyTable]; + } + t = (_entry = unicode.Categories[$String.keyFor(name)], _entry !== undefined ? _entry.v : ptrType$3.nil); + if (!(t === ptrType$3.nil)) { + return [t, (_entry$1 = unicode.FoldCategory[$String.keyFor(name)], _entry$1 !== undefined ? _entry$1.v : ptrType$3.nil)]; + } + t$1 = (_entry$2 = unicode.Scripts[$String.keyFor(name)], _entry$2 !== undefined ? _entry$2.v : ptrType$3.nil); + if (!(t$1 === ptrType$3.nil)) { + return [t$1, (_entry$3 = unicode.FoldScript[$String.keyFor(name)], _entry$3 !== undefined ? _entry$3.v : ptrType$3.nil)]; + } + return [ptrType$3.nil, ptrType$3.nil]; + }; + parser.ptr.prototype.parseUnicodeClass = function(s, r) { + var _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, end, err, fold, name, out, p, r, rest, s, seq, sign, t, tab, tmp, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; end = $f.end; err = $f.err; fold = $f.fold; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; seq = $f.seq; sign = $f.sign; t = $f.t; tab = $f.tab; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + out = sliceType.nil; + rest = ""; + err = $ifaceNil; + p = this; + if ((((p.flags & 128) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92)) || !((s.charCodeAt(1) === 112)) && !((s.charCodeAt(1) === 80))) { + $s = -1; return [out, rest, err]; + } + sign = 1; + if (s.charCodeAt(1) === 80) { + sign = -1; + } + t = $substring(s, 2); + _tuple = nextRune(t); + c = _tuple[0]; + t = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [out, rest, err]; + } + _tmp = ""; + _tmp$1 = ""; + seq = _tmp; + name = _tmp$1; + if (!((c === 123))) { + seq = $substring(s, 0, (s.length - t.length >> 0)); + name = $substring(seq, 2); + } else { + end = strings.IndexRune(s, 125); + if (end < 0) { + err = checkUTF8(s); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [out, rest, err]; + } + _tmp$2 = sliceType.nil; + _tmp$3 = ""; + _tmp$4 = new Error.ptr("invalid character class range", s); + out = _tmp$2; + rest = _tmp$3; + err = _tmp$4; + $s = -1; return [out, rest, err]; + } + _tmp$5 = $substring(s, 0, (end + 1 >> 0)); + _tmp$6 = $substring(s, (end + 1 >> 0)); + seq = _tmp$5; + t = _tmp$6; + name = $substring(s, 3, end); + err = checkUTF8(name); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [out, rest, err]; + } + } + if (!(name === "") && (name.charCodeAt(0) === 94)) { + sign = -sign; + name = $substring(name, 1); + } + _tuple$1 = unicodeTable(name); + tab = _tuple$1[0]; + fold = _tuple$1[1]; + if (tab === ptrType$3.nil) { + _tmp$7 = sliceType.nil; + _tmp$8 = ""; + _tmp$9 = new Error.ptr("invalid character class range", seq); + out = _tmp$7; + rest = _tmp$8; + err = _tmp$9; + $s = -1; return [out, rest, err]; + } + /* */ if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$3.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$3.nil) { */ case 1: + if (sign > 0) { + r = appendTable(r, tab); + } else { + r = appendNegatedTable(r, tab); + } + $s = 3; continue; + /* } else { */ case 2: + tmp = $subslice(p.tmpClass, 0, 0); + tmp = appendTable(tmp, tab); + tmp = appendTable(tmp, fold); + p.tmpClass = tmp; + _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$2(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tmp = _r; + if (sign > 0) { + r = appendClass(r, tmp); + } else { + r = appendNegatedClass(r, tmp); + } + /* } */ case 3: + _tmp$10 = r; + _tmp$11 = t; + _tmp$12 = $ifaceNil; + out = _tmp$10; + rest = _tmp$11; + err = _tmp$12; + $s = -1; return [out, rest, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseUnicodeClass }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.end = end; $f.err = err; $f.fold = fold; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.seq = seq; $f.sign = sign; $f.t = t; $f.tab = tab; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.parseUnicodeClass = function(s, r) { return this.$val.parseUnicodeClass(s, r); }; + parser.ptr.prototype.parseClass = function(s) { + var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, class$1, err, err$1, err$2, first, hi, lo, nclass, nclass$1, nclass$2, nt, nt$1, nt$2, p, re, rest, rng, s, sign, size, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; class$1 = $f.class$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; first = $f.first; hi = $f.hi; lo = $f.lo; nclass = $f.nclass; nclass$1 = $f.nclass$1; nclass$2 = $f.nclass$2; nt = $f.nt; nt$1 = $f.nt$1; nt$2 = $f.nt$2; p = $f.p; re = $f.re; rest = $f.rest; rng = $f.rng; s = $f.s; sign = $f.sign; size = $f.size; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + rest = ""; + err = $ifaceNil; + p = this; + t = $substring(s, 1); + re = p.newRegexp(4); + re.Flags = p.flags; + re.Rune = $subslice(new sliceType(re.Rune0), 0, 0); + sign = 1; + if (!(t === "") && (t.charCodeAt(0) === 94)) { + sign = -1; + t = $substring(t, 1); + if (((p.flags & 4) >>> 0) === 0) { + re.Rune = $append(re.Rune, 10, 10); + } + } + class$1 = re.Rune; + first = true; + /* while (true) { */ case 1: + /* if (!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { break; } */ if(!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { $s = 2; continue; } + if (!(t === "") && (t.charCodeAt(0) === 45) && (((p.flags & 64) >>> 0) === 0) && !first && ((t.length === 1) || !((t.charCodeAt(1) === 93)))) { + _tuple = utf8.DecodeRuneInString($substring(t, 1)); + size = _tuple[1]; + _tmp = ""; + _tmp$1 = new Error.ptr("invalid character class range", $substring(t, 0, (1 + size >> 0))); + rest = _tmp; + err = _tmp$1; + $s = -1; return [rest, err]; + } + first = false; + /* */ if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { */ case 3: + _r = p.parseNamedClass(t, class$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + nclass = _tuple$1[0]; + nt = _tuple$1[1]; + err$1 = _tuple$1[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$2 = ""; + _tmp$3 = err$1; + rest = _tmp$2; + err = _tmp$3; + $s = -1; return [rest, err]; + } + if (!(nclass === sliceType.nil)) { + _tmp$4 = nclass; + _tmp$5 = nt; + class$1 = _tmp$4; + t = _tmp$5; + /* continue; */ $s = 1; continue; + } + /* } */ case 4: + _r$1 = p.parseUnicodeClass(t, class$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + nclass$1 = _tuple$2[0]; + nt$1 = _tuple$2[1]; + err$2 = _tuple$2[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$6 = ""; + _tmp$7 = err$2; + rest = _tmp$6; + err = _tmp$7; + $s = -1; return [rest, err]; + } + /* */ if (!(nclass$1 === sliceType.nil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(nclass$1 === sliceType.nil)) { */ case 7: + _tmp$8 = nclass$1; + _tmp$9 = nt$1; + class$1 = _tmp$8; + t = _tmp$9; + /* continue; */ $s = 1; continue; + /* } */ case 8: + _r$2 = p.parsePerlClassEscape(t, class$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$3 = _r$2; + nclass$2 = _tuple$3[0]; + nt$2 = _tuple$3[1]; + if (!(nclass$2 === sliceType.nil)) { + _tmp$10 = nclass$2; + _tmp$11 = nt$2; + class$1 = _tmp$10; + t = _tmp$11; + /* continue; */ $s = 1; continue; + } + rng = t; + _tmp$12 = 0; + _tmp$13 = 0; + lo = _tmp$12; + hi = _tmp$13; + _tuple$4 = p.parseClassChar(t, s); + lo = _tuple$4[0]; + t = _tuple$4[1]; + err$2 = _tuple$4[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$14 = ""; + _tmp$15 = err$2; + rest = _tmp$14; + err = _tmp$15; + $s = -1; return [rest, err]; + } + hi = lo; + if (t.length >= 2 && (t.charCodeAt(0) === 45) && !((t.charCodeAt(1) === 93))) { + t = $substring(t, 1); + _tuple$5 = p.parseClassChar(t, s); + hi = _tuple$5[0]; + t = _tuple$5[1]; + err$2 = _tuple$5[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$16 = ""; + _tmp$17 = err$2; + rest = _tmp$16; + err = _tmp$17; + $s = -1; return [rest, err]; + } + if (hi < lo) { + rng = $substring(rng, 0, (rng.length - t.length >> 0)); + _tmp$18 = ""; + _tmp$19 = new Error.ptr("invalid character class range", rng); + rest = _tmp$18; + err = _tmp$19; + $s = -1; return [rest, err]; + } + } + if (((p.flags & 1) >>> 0) === 0) { + class$1 = appendRange(class$1, lo, hi); + } else { + class$1 = appendFoldedRange(class$1, lo, hi); + } + /* } */ $s = 1; continue; case 2: + t = $substring(t, 1); + re.Rune = class$1; + _r$3 = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$2(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + class$1 = _r$3; + if (sign < 0) { + class$1 = negateClass(class$1); + } + re.Rune = class$1; + p.push(re); + _tmp$20 = t; + _tmp$21 = $ifaceNil; + rest = _tmp$20; + err = _tmp$21; + $s = -1; return [rest, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseClass }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.class$1 = class$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.first = first; $f.hi = hi; $f.lo = lo; $f.nclass = nclass; $f.nclass$1 = nclass$1; $f.nclass$2 = nclass$2; $f.nt = nt; $f.nt$1 = nt$1; $f.nt$2 = nt$2; $f.p = p; $f.re = re; $f.rest = rest; $f.rng = rng; $f.s = s; $f.sign = sign; $f.size = size; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + parser.prototype.parseClass = function(s) { return this.$val.parseClass(s); }; + cleanClass = function(rp) { + var _tmp, _tmp$1, hi, i, lo, r, rp, w, x, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; hi = $f.hi; i = $f.i; lo = $f.lo; r = $f.r; rp = $f.rp; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sort.Sort((x = new ranges.ptr(rp), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r = rp.$get(); + if (r.$length < 2) { + $s = -1; return r; + } + w = 2; + i = 2; + while (true) { + if (!(i < r.$length)) { break; } + _tmp = ((i < 0 || i >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + i]); + _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1])); + lo = _tmp; + hi = _tmp$1; + if (lo <= ((x$2 = w - 1 >> 0, ((x$2 < 0 || x$2 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$2])) + 1 >> 0)) { + if (hi > (x$3 = w - 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$3]))) { + (x$4 = w - 1 >> 0, ((x$4 < 0 || x$4 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$4] = hi)); + } + i = i + (2) >> 0; + continue; + } + ((w < 0 || w >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + w] = lo); + (x$5 = w + 1 >> 0, ((x$5 < 0 || x$5 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$5] = hi)); + w = w + (2) >> 0; + i = i + (2) >> 0; + } + $s = -1; return $subslice(r, 0, w); + /* */ } return; } if ($f === undefined) { $f = { $blk: cleanClass }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.hi = hi; $f.i = i; $f.lo = lo; $f.r = r; $f.rp = rp; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + appendLiteral = function(r, x, flags) { + var flags, r, x; + if (!((((flags & 1) >>> 0) === 0))) { + return appendFoldedRange(r, x, x); + } + return appendRange(r, x, x); + }; + appendRange = function(r, lo, hi) { + var _tmp, _tmp$1, hi, i, lo, n, r, rhi, rlo, x, x$1, x$2, x$3; + n = r.$length; + i = 2; + while (true) { + if (!(i <= 4)) { break; } + if (n >= i) { + _tmp = (x = n - i >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x])); + _tmp$1 = (x$1 = (n - i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1])); + rlo = _tmp; + rhi = _tmp$1; + if (lo <= (rhi + 1 >> 0) && rlo <= (hi + 1 >> 0)) { + if (lo < rlo) { + (x$2 = n - i >> 0, ((x$2 < 0 || x$2 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$2] = lo)); + } + if (hi > rhi) { + (x$3 = (n - i >> 0) + 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$3] = hi)); + } + return r; + } + } + i = i + (2) >> 0; + } + return $append(r, lo, hi); + }; + appendFoldedRange = function(r, lo, hi) { + var c, f, hi, lo, r; + if (lo <= 65 && hi >= 125251) { + return appendRange(r, lo, hi); + } + if (hi < 65 || lo > 125251) { + return appendRange(r, lo, hi); + } + if (lo < 65) { + r = appendRange(r, lo, 64); + lo = 65; + } + if (hi > 125251) { + r = appendRange(r, 125252, hi); + hi = 125251; + } + c = lo; + while (true) { + if (!(c <= hi)) { break; } + r = appendRange(r, c, c); + f = unicode.SimpleFold(c); + while (true) { + if (!(!((f === c)))) { break; } + r = appendRange(r, f, f); + f = unicode.SimpleFold(f); + } + c = c + (1) >> 0; + } + return r; + }; + appendClass = function(r, x) { + var i, r, x, x$1; + i = 0; + while (true) { + if (!(i < x.$length)) { break; } + r = appendRange(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); + i = i + (2) >> 0; + } + return r; + }; + appendFoldedClass = function(r, x) { + var i, r, x, x$1; + i = 0; + while (true) { + if (!(i < x.$length)) { break; } + r = appendFoldedRange(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); + i = i + (2) >> 0; + } + return r; + }; + appendNegatedClass = function(r, x) { + var _tmp, _tmp$1, hi, i, lo, nextLo, r, x, x$1; + nextLo = 0; + i = 0; + while (true) { + if (!(i < x.$length)) { break; } + _tmp = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); + _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + lo = _tmp; + hi = _tmp$1; + if (nextLo <= (lo - 1 >> 0)) { + r = appendRange(r, nextLo, lo - 1 >> 0); + } + nextLo = hi + 1 >> 0; + i = i + (2) >> 0; + } + if (nextLo <= 1114111) { + r = appendRange(r, nextLo, 1114111); + } + return r; + }; + appendTable = function(r, x) { + var _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, r, stride, stride$1, x, xr, xr$1; + _ref = x.R16; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + xr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), unicode.Range16); + _tmp = ((xr.Lo >> 0)); + _tmp$1 = ((xr.Hi >> 0)); + _tmp$2 = ((xr.Stride >> 0)); + lo = _tmp; + hi = _tmp$1; + stride = _tmp$2; + if (stride === 1) { + r = appendRange(r, lo, hi); + _i++; + continue; + } + c = lo; + while (true) { + if (!(c <= hi)) { break; } + r = appendRange(r, c, c); + c = c + (stride) >> 0; + } + _i++; + } + _ref$1 = x.R32; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); + _tmp$3 = ((xr$1.Lo >> 0)); + _tmp$4 = ((xr$1.Hi >> 0)); + _tmp$5 = ((xr$1.Stride >> 0)); + lo$1 = _tmp$3; + hi$1 = _tmp$4; + stride$1 = _tmp$5; + if (stride$1 === 1) { + r = appendRange(r, lo$1, hi$1); + _i$1++; + continue; + } + c$1 = lo$1; + while (true) { + if (!(c$1 <= hi$1)) { break; } + r = appendRange(r, c$1, c$1); + c$1 = c$1 + (stride$1) >> 0; + } + _i$1++; + } + return r; + }; + appendNegatedTable = function(r, x) { + var _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, nextLo, r, stride, stride$1, x, xr, xr$1; + nextLo = 0; + _ref = x.R16; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + xr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), unicode.Range16); + _tmp = ((xr.Lo >> 0)); + _tmp$1 = ((xr.Hi >> 0)); + _tmp$2 = ((xr.Stride >> 0)); + lo = _tmp; + hi = _tmp$1; + stride = _tmp$2; + if (stride === 1) { + if (nextLo <= (lo - 1 >> 0)) { + r = appendRange(r, nextLo, lo - 1 >> 0); + } + nextLo = hi + 1 >> 0; + _i++; + continue; + } + c = lo; + while (true) { + if (!(c <= hi)) { break; } + if (nextLo <= (c - 1 >> 0)) { + r = appendRange(r, nextLo, c - 1 >> 0); + } + nextLo = c + 1 >> 0; + c = c + (stride) >> 0; + } + _i++; + } + _ref$1 = x.R32; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); + _tmp$3 = ((xr$1.Lo >> 0)); + _tmp$4 = ((xr$1.Hi >> 0)); + _tmp$5 = ((xr$1.Stride >> 0)); + lo$1 = _tmp$3; + hi$1 = _tmp$4; + stride$1 = _tmp$5; + if (stride$1 === 1) { + if (nextLo <= (lo$1 - 1 >> 0)) { + r = appendRange(r, nextLo, lo$1 - 1 >> 0); + } + nextLo = hi$1 + 1 >> 0; + _i$1++; + continue; + } + c$1 = lo$1; + while (true) { + if (!(c$1 <= hi$1)) { break; } + if (nextLo <= (c$1 - 1 >> 0)) { + r = appendRange(r, nextLo, c$1 - 1 >> 0); + } + nextLo = c$1 + 1 >> 0; + c$1 = c$1 + (stride$1) >> 0; + } + _i$1++; + } + if (nextLo <= 1114111) { + r = appendRange(r, nextLo, 1114111); + } + return r; + }; + negateClass = function(r) { + var _tmp, _tmp$1, hi, i, lo, nextLo, r, w, x, x$1; + nextLo = 0; + w = 0; + i = 0; + while (true) { + if (!(i < r.$length)) { break; } + _tmp = ((i < 0 || i >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + i]); + _tmp$1 = (x = i + 1 >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x])); + lo = _tmp; + hi = _tmp$1; + if (nextLo <= (lo - 1 >> 0)) { + ((w < 0 || w >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + w] = nextLo); + (x$1 = w + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1] = (lo - 1 >> 0))); + w = w + (2) >> 0; + } + nextLo = hi + 1 >> 0; + i = i + (2) >> 0; + } + r = $subslice(r, 0, w); + if (nextLo <= 1114111) { + r = $append(r, nextLo, 1114111); + } + return r; + }; + ranges.ptr.prototype.Less = function(i, j) { + var i, j, p, ra, x, x$1; + ra = this; + p = ra.p.$get(); + i = $imul(i, (2)); + j = $imul(j, (2)); + return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) || (((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j])) && (x = i + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) > (x$1 = j + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])); + }; + ranges.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; + ranges.ptr.prototype.Len = function() { + var _q, ra; + ra = this; + return (_q = ra.p.$get().$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + }; + ranges.prototype.Len = function() { return this.$val.Len(); }; + ranges.ptr.prototype.Swap = function(i, j) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, p, ra, x, x$1, x$2, x$3; + ra = this; + p = ra.p.$get(); + i = $imul(i, (2)); + j = $imul(j, (2)); + _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + _tmp$1 = (x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])); + _tmp$2 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + _tmp$3 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])); + ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); + (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2] = _tmp$1)); + ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$2); + (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3] = _tmp$3)); + }; + ranges.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); }; + checkUTF8 = function(s) { + var _tuple, rune, s, size; + while (true) { + if (!(!(s === ""))) { break; } + _tuple = utf8.DecodeRuneInString(s); + rune = _tuple[0]; + size = _tuple[1]; + if ((rune === 65533) && (size === 1)) { + return new Error.ptr("invalid UTF-8", s); + } + s = $substring(s, size); + } + return $ifaceNil; + }; + nextRune = function(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, err, s, size, t; + c = 0; + t = ""; + err = $ifaceNil; + _tuple = utf8.DecodeRuneInString(s); + c = _tuple[0]; + size = _tuple[1]; + if ((c === 65533) && (size === 1)) { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = new Error.ptr("invalid UTF-8", s); + c = _tmp; + t = _tmp$1; + err = _tmp$2; + return [c, t, err]; + } + _tmp$3 = c; + _tmp$4 = $substring(s, size); + _tmp$5 = $ifaceNil; + c = _tmp$3; + t = _tmp$4; + err = _tmp$5; + return [c, t, err]; + }; + isalnum = function(c) { + var c; + return 48 <= c && c <= 57 || 65 <= c && c <= 90 || 97 <= c && c <= 122; + }; + unhex = function(c) { + var c; + if (48 <= c && c <= 57) { + return c - 48 >> 0; + } + if (97 <= c && c <= 102) { + return (c - 97 >> 0) + 10 >> 0; + } + if (65 <= c && c <= 70) { + return (c - 65 >> 0) + 10 >> 0; + } + return -1; + }; + InstOp.prototype.String = function() { + var i; + i = this.$val; + if (((i >>> 0)) >= ((instOpNames.$length >>> 0))) { + return ""; + } + return ((i < 0 || i >= instOpNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : instOpNames.$array[instOpNames.$offset + i]); + }; + $ptrType(InstOp).prototype.String = function() { return new InstOp(this.$get()).String(); }; + IsWordChar = function(r) { + var r; + return 65 <= r && r <= 90 || 97 <= r && r <= 122 || 48 <= r && r <= 57 || (r === 95); + }; + $pkg.IsWordChar = IsWordChar; + Prog.ptr.prototype.String = function() { + var b, p; + p = this; + b = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); + dumpProg(b, p); + return b.String(); + }; + Prog.prototype.String = function() { return this.$val.String(); }; + Prog.ptr.prototype.skipNop = function(pc) { + var i, p, pc, x, x$1, x$2; + p = this; + i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + while (true) { + if (!((i.Op === 6) || (i.Op === 2))) { break; } + i = (x$1 = p.Inst, x$2 = i.Out, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])); + } + return i; + }; + Prog.prototype.skipNop = function(pc) { return this.$val.skipNop(pc); }; + Inst.ptr.prototype.op = function() { + var _1, i, op; + i = this; + op = i.Op; + _1 = op; + if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { + op = 7; + } + return op; + }; + Inst.prototype.op = function() { return this.$val.op(); }; + Prog.ptr.prototype.Prefix = function() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, buf, complete, i, p, prefix, x; + prefix = ""; + complete = false; + p = this; + i = p.skipNop(((p.Start >>> 0))); + if (!((i.op() === 7)) || !((i.Rune.$length === 1))) { + _tmp = ""; + _tmp$1 = i.Op === 4; + prefix = _tmp; + complete = _tmp$1; + return [prefix, complete]; + } + buf = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); + while (true) { + if (!((i.op() === 7) && (i.Rune.$length === 1) && (((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { break; } + buf.WriteRune((x = i.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + i = p.skipNop(i.Out); + } + _tmp$2 = buf.String(); + _tmp$3 = i.Op === 4; + prefix = _tmp$2; + complete = _tmp$3; + return [prefix, complete]; + }; + Prog.prototype.Prefix = function() { return this.$val.Prefix(); }; + Prog.ptr.prototype.StartCond = function() { + var _1, flag, i, p, pc, x, x$1; + p = this; + flag = 0; + pc = ((p.Start >>> 0)); + i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + Loop: + while (true) { + _1 = i.Op; + if (_1 === (3)) { + flag = (flag | (((i.Arg << 24 >>> 24)))) >>> 0; + } else if (_1 === (5)) { + return 255; + } else if ((_1 === (2)) || (_1 === (6))) { + } else { + break Loop; + } + pc = i.Out; + i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])); + } + return flag; + }; + Prog.prototype.StartCond = function() { return this.$val.StartCond(); }; + Inst.ptr.prototype.MatchRune = function(r) { + var i, r; + i = this; + return !((i.MatchRunePos(r) === -1)); + }; + Inst.prototype.MatchRune = function(r) { return this.$val.MatchRune(r); }; + Inst.ptr.prototype.MatchRunePos = function(r) { + var _1, _q, _q$1, _q$2, c, hi, i, j, lo, m, r, r0, r1, rune, x, x$1, x$2; + i = this; + rune = i.Rune; + _1 = rune.$length; + if (_1 === (0)) { + return -1; + } else if (_1 === (1)) { + r0 = (0 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 0]); + if (r === r0) { + return 0; + } + if (!((((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { + r1 = unicode.SimpleFold(r0); + while (true) { + if (!(!((r1 === r0)))) { break; } + if (r === r1) { + return 0; + } + r1 = unicode.SimpleFold(r1); + } + } + return -1; + } else if (_1 === (2)) { + if (r >= (0 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 0]) && r <= (1 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 1])) { + return 0; + } + return -1; + } else if ((_1 === (4)) || (_1 === (6)) || (_1 === (8))) { + j = 0; + while (true) { + if (!(j < rune.$length)) { break; } + if (r < ((j < 0 || j >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + j])) { + return -1; + } + if (r <= (x = j + 1 >> 0, ((x < 0 || x >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x]))) { + return (_q = j / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + j = j + (2) >> 0; + } + return -1; + } + lo = 0; + hi = (_q$1 = rune.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q$2 = ((hi - lo >> 0)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + c = (x$1 = $imul(2, m), ((x$1 < 0 || x$1 >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x$1])); + if (c <= r) { + if (r <= (x$2 = ($imul(2, m)) + 1 >> 0, ((x$2 < 0 || x$2 >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x$2]))) { + return m; + } + lo = m + 1 >> 0; + } else { + hi = m; + } + } + return -1; + }; + Inst.prototype.MatchRunePos = function(r) { return this.$val.MatchRunePos(r); }; + Inst.ptr.prototype.MatchEmptyWidth = function(before, after) { + var _1, after, before, i; + i = this; + _1 = ((i.Arg << 24 >>> 24)); + if (_1 === (1)) { + return (before === 10) || (before === -1); + } else if (_1 === (2)) { + return (after === 10) || (after === -1); + } else if (_1 === (4)) { + return before === -1; + } else if (_1 === (8)) { + return after === -1; + } else if (_1 === (16)) { + return !(IsWordChar(before) === IsWordChar(after)); + } else if (_1 === (32)) { + return IsWordChar(before) === IsWordChar(after); + } + $panic(new $String("unknown empty width arg")); + }; + Inst.prototype.MatchEmptyWidth = function(before, after) { return this.$val.MatchEmptyWidth(before, after); }; + Inst.ptr.prototype.String = function() { + var b, i; + i = this; + b = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); + dumpInst(b, i); + return b.String(); + }; + Inst.prototype.String = function() { return this.$val.String(); }; + bw = function(b, args) { + var _i, _ref, args, b, s; + _ref = args; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + b.WriteString(s); + _i++; + } + }; + dumpProg = function(b, p) { + var _i, _ref, b, i, j, p, pc, x; + _ref = p.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + i = (x = p.Inst, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + pc = strconv.Itoa(j); + if (pc.length < 3) { + b.WriteString($substring(" ", pc.length)); + } + if (j === p.Start) { + pc = pc + ("*"); + } + bw(b, new sliceType$3([pc, "\t"])); + dumpInst(b, i); + bw(b, new sliceType$3(["\n"])); + _i++; + } + }; + u32 = function(i) { + var i; + return strconv.FormatUint((new $Uint64(0, i)), 10); + }; + dumpInst = function(b, i) { + var _1, b, i; + _1 = i.Op; + if (_1 === (0)) { + bw(b, new sliceType$3(["alt -> ", u32(i.Out), ", ", u32(i.Arg)])); + } else if (_1 === (1)) { + bw(b, new sliceType$3(["altmatch -> ", u32(i.Out), ", ", u32(i.Arg)])); + } else if (_1 === (2)) { + bw(b, new sliceType$3(["cap ", u32(i.Arg), " -> ", u32(i.Out)])); + } else if (_1 === (3)) { + bw(b, new sliceType$3(["empty ", u32(i.Arg), " -> ", u32(i.Out)])); + } else if (_1 === (4)) { + bw(b, new sliceType$3(["match"])); + } else if (_1 === (5)) { + bw(b, new sliceType$3(["fail"])); + } else if (_1 === (6)) { + bw(b, new sliceType$3(["nop -> ", u32(i.Out)])); + } else if (_1 === (7)) { + if (i.Rune === sliceType.nil) { + bw(b, new sliceType$3(["rune "])); + } + bw(b, new sliceType$3(["rune ", strconv.QuoteToASCII(($runesToString(i.Rune)))])); + if (!((((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { + bw(b, new sliceType$3(["/i"])); + } + bw(b, new sliceType$3([" -> ", u32(i.Out)])); + } else if (_1 === (8)) { + bw(b, new sliceType$3(["rune1 ", strconv.QuoteToASCII(($runesToString(i.Rune))), " -> ", u32(i.Out)])); + } else if (_1 === (9)) { + bw(b, new sliceType$3(["any -> ", u32(i.Out)])); + } else if (_1 === (10)) { + bw(b, new sliceType$3(["anynotnl -> ", u32(i.Out)])); + } + }; + Regexp.ptr.prototype.Equal = function(y) { + var _1, _i, _i$1, _ref, _ref$1, i, i$1, r, sub, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y; + x = this; + if (x === ptrType$1.nil || y === ptrType$1.nil) { + return x === y; + } + if (!((x.Op === y.Op))) { + return false; + } + _1 = x.Op; + if (_1 === (10)) { + if (!((((x.Flags & 256) >>> 0) === ((y.Flags & 256) >>> 0)))) { + return false; + } + } else if ((_1 === (3)) || (_1 === (4))) { + if (!((x.Rune.$length === y.Rune.$length))) { + return false; + } + _ref = x.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((r === (x$1 = y.Rune, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i]))))) { + return false; + } + _i++; + } + } else if ((_1 === (19)) || (_1 === (18))) { + if (!((x.Sub.$length === y.Sub.$length))) { + return false; + } + _ref$1 = x.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + sub = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (!sub.Equal((x$2 = y.Sub, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])))) { + return false; + } + _i$1++; + } + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16))) { + if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !(x$3 = x.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).Equal((x$4 = y.Sub, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])))) { + return false; + } + } else if (_1 === (17)) { + if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !((x.Min === y.Min)) || !((x.Max === y.Max)) || !(x$5 = x.Sub, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])).Equal((x$6 = y.Sub, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])))) { + return false; + } + } else if (_1 === (13)) { + if (!((x.Cap === y.Cap)) || !(x.Name === y.Name) || !(x$7 = x.Sub, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).Equal((x$8 = y.Sub, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0])))) { + return false; + } + } + return true; + }; + Regexp.prototype.Equal = function(y) { return this.$val.Equal(y); }; + writeRegexp = function(b, re) { + var _1, _2, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, b, hi, hi$1, i, i$1, i$2, lo, lo$1, r, re, sub, sub$1, sub$2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + switch (0) { default: + _1 = re.Op; + if (_1 === (1)) { + b.WriteString("[^\\x00-\\x{10FFFF}]"); + } else if (_1 === (2)) { + b.WriteString("(?:)"); + } else if (_1 === (3)) { + if (!((((re.Flags & 1) >>> 0) === 0))) { + b.WriteString("(?i:"); + } + _ref = re.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + escape(b, r, false); + _i++; + } + if (!((((re.Flags & 1) >>> 0) === 0))) { + b.WriteString(")"); + } + } else if (_1 === (4)) { + if (!(((_r = re.Rune.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) { + b.WriteString("[invalid char class]"); + break; + } + b.WriteRune(91); + if (re.Rune.$length === 0) { + b.WriteString("^\\x00-\\x{10FFFF}"); + } else if (((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, x$2 = re.Rune.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === 1114111)) { + b.WriteRune(94); + i = 1; + while (true) { + if (!(i < (re.Rune.$length - 1 >> 0))) { break; } + _tmp = (x$3 = re.Rune, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])) + 1 >> 0; + _tmp$1 = (x$4 = re.Rune, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) - 1 >> 0; + lo = _tmp; + hi = _tmp$1; + escape(b, lo, lo === 45); + if (!((lo === hi))) { + b.WriteRune(45); + escape(b, hi, hi === 45); + } + i = i + (2) >> 0; + } + } else { + i$1 = 0; + while (true) { + if (!(i$1 < re.Rune.$length)) { break; } + _tmp$2 = (x$6 = re.Rune, ((i$1 < 0 || i$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i$1])); + _tmp$3 = (x$7 = re.Rune, x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8])); + lo$1 = _tmp$2; + hi$1 = _tmp$3; + escape(b, lo$1, lo$1 === 45); + if (!((lo$1 === hi$1))) { + b.WriteRune(45); + escape(b, hi$1, hi$1 === 45); + } + i$1 = i$1 + (2) >> 0; + } + } + b.WriteRune(93); + } else if (_1 === (5)) { + b.WriteString("(?-s:.)"); + } else if (_1 === (6)) { + b.WriteString("(?s:.)"); + } else if (_1 === (7)) { + b.WriteString("(?m:^)"); + } else if (_1 === (8)) { + b.WriteString("(?m:$)"); + } else if (_1 === (9)) { + b.WriteString("\\A"); + } else if (_1 === (10)) { + if (!((((re.Flags & 256) >>> 0) === 0))) { + b.WriteString("(?-m:$)"); + } else { + b.WriteString("\\z"); + } + } else if (_1 === (11)) { + b.WriteString("\\b"); + } else if (_1 === (12)) { + b.WriteString("\\B"); + } else if (_1 === (13)) { + if (!(re.Name === "")) { + b.WriteString("(?P<"); + b.WriteString(re.Name); + b.WriteRune(62); + } else { + b.WriteRune(40); + } + if (!(((x$9 = re.Sub, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0])).Op === 2))) { + writeRegexp(b, (x$10 = re.Sub, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0]))); + } + b.WriteRune(41); + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16)) || (_1 === (17))) { + sub = (x$11 = re.Sub, (0 >= x$11.$length ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + 0])); + if (sub.Op > 13 || (sub.Op === 3) && sub.Rune.$length > 1) { + b.WriteString("(?:"); + writeRegexp(b, sub); + b.WriteString(")"); + } else { + writeRegexp(b, sub); + } + _2 = re.Op; + if (_2 === (14)) { + b.WriteRune(42); + } else if (_2 === (15)) { + b.WriteRune(43); + } else if (_2 === (16)) { + b.WriteRune(63); + } else if (_2 === (17)) { + b.WriteRune(123); + b.WriteString(strconv.Itoa(re.Min)); + if (!((re.Max === re.Min))) { + b.WriteRune(44); + if (re.Max >= 0) { + b.WriteString(strconv.Itoa(re.Max)); + } + } + b.WriteRune(125); + } + if (!((((re.Flags & 32) >>> 0) === 0))) { + b.WriteRune(63); + } + } else if (_1 === (18)) { + _ref$1 = re.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (sub$1.Op === 19) { + b.WriteString("(?:"); + writeRegexp(b, sub$1); + b.WriteString(")"); + } else { + writeRegexp(b, sub$1); + } + _i$1++; + } + } else if (_1 === (19)) { + _ref$2 = re.Sub; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + sub$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (i$2 > 0) { + b.WriteRune(124); + } + writeRegexp(b, sub$2); + _i$2++; + } + } else { + b.WriteString("> 0))) + ">"); + } + } + }; + Regexp.ptr.prototype.String = function() { + var b, re; + re = this; + b = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); + writeRegexp(b, re); + return b.String(); + }; + Regexp.prototype.String = function() { return this.$val.String(); }; + escape = function(b, r, force) { + var _1, b, force, r, s; + if (unicode.IsPrint(r)) { + if (strings.ContainsRune("\\.+*?()|[]{}^$", r) || force) { + b.WriteRune(92); + } + b.WriteRune(r); + return; + } + switch (0) { default: + _1 = r; + if (_1 === (7)) { + b.WriteString("\\a"); + } else if (_1 === (12)) { + b.WriteString("\\f"); + } else if (_1 === (10)) { + b.WriteString("\\n"); + } else if (_1 === (13)) { + b.WriteString("\\r"); + } else if (_1 === (9)) { + b.WriteString("\\t"); + } else if (_1 === (11)) { + b.WriteString("\\v"); + } else { + if (r < 256) { + b.WriteString("\\x"); + s = strconv.FormatInt((new $Int64(0, r)), 16); + if (s.length === 1) { + b.WriteRune(48); + } + b.WriteString(s); + break; + } + b.WriteString("\\x{"); + b.WriteString(strconv.FormatInt((new $Int64(0, r)), 16)); + b.WriteString("}"); + } + } + }; + Regexp.ptr.prototype.MaxCap = function() { + var _i, _ref, m, n, re, sub; + re = this; + m = 0; + if (re.Op === 13) { + m = re.Cap; + } + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + n = sub.MaxCap(); + if (m < n) { + m = n; + } + _i++; + } + return m; + }; + Regexp.prototype.MaxCap = function() { return this.$val.MaxCap(); }; + Regexp.ptr.prototype.CapNames = function() { + var names, re; + re = this; + names = $makeSlice(sliceType$3, (re.MaxCap() + 1 >> 0)); + re.capNames(names); + return names; + }; + Regexp.prototype.CapNames = function() { return this.$val.CapNames(); }; + Regexp.ptr.prototype.capNames = function(names) { + var _i, _ref, names, re, sub, x; + re = this; + if (re.Op === 13) { + (x = re.Cap, ((x < 0 || x >= names.$length) ? ($throwRuntimeError("index out of range"), undefined) : names.$array[names.$offset + x] = re.Name)); + } + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + sub.capNames(names); + _i++; + } + }; + Regexp.prototype.capNames = function(names) { return this.$val.capNames(names); }; + Regexp.ptr.prototype.Simplify = function() { + var _1, _i, _ref, i, i$1, i$2, i$3, nre, nre$1, nre2, nsub, prefix, re, sub, sub$1, sub$2, suffix, x, x$1; + re = this; + if (re === ptrType$1.nil) { + return ptrType$1.nil; + } + _1 = re.Op; + if ((_1 === (13)) || (_1 === (18)) || (_1 === (19))) { + nre = re; + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + nsub = sub.Simplify(); + if (nre === re && !(nsub === sub)) { + nre = new Regexp.ptr(0, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + Regexp.copy(nre, re); + nre.Rune = sliceType.nil; + nre.Sub = $appendSlice($subslice(new sliceType$5(nre.Sub0), 0, 0), $subslice(re.Sub, 0, i)); + } + if (!(nre === re)) { + nre.Sub = $append(nre.Sub, nsub); + } + _i++; + } + return nre; + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16))) { + sub$1 = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Simplify(); + return simplify1(re.Op, re.Flags, sub$1, re); + } else if (_1 === (17)) { + if ((re.Min === 0) && (re.Max === 0)) { + return new Regexp.ptr(2, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + } + sub$2 = (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).Simplify(); + if (re.Max === -1) { + if (re.Min === 0) { + return simplify1(14, re.Flags, sub$2, ptrType$1.nil); + } + if (re.Min === 1) { + return simplify1(15, re.Flags, sub$2, ptrType$1.nil); + } + nre$1 = new Regexp.ptr(18, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + nre$1.Sub = $subslice(new sliceType$5(nre$1.Sub0), 0, 0); + i$1 = 0; + while (true) { + if (!(i$1 < (re.Min - 1 >> 0))) { break; } + nre$1.Sub = $append(nre$1.Sub, sub$2); + i$1 = i$1 + (1) >> 0; + } + nre$1.Sub = $append(nre$1.Sub, simplify1(15, re.Flags, sub$2, ptrType$1.nil)); + return nre$1; + } + if ((re.Min === 1) && (re.Max === 1)) { + return sub$2; + } + prefix = ptrType$1.nil; + if (re.Min > 0) { + prefix = new Regexp.ptr(18, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + prefix.Sub = $subslice(new sliceType$5(prefix.Sub0), 0, 0); + i$2 = 0; + while (true) { + if (!(i$2 < re.Min)) { break; } + prefix.Sub = $append(prefix.Sub, sub$2); + i$2 = i$2 + (1) >> 0; + } + } + if (re.Max > re.Min) { + suffix = simplify1(16, re.Flags, sub$2, ptrType$1.nil); + i$3 = re.Min + 1 >> 0; + while (true) { + if (!(i$3 < re.Max)) { break; } + nre2 = new Regexp.ptr(18, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + nre2.Sub = $append($subslice(new sliceType$5(nre2.Sub0), 0, 0), sub$2, suffix); + suffix = simplify1(16, re.Flags, nre2, ptrType$1.nil); + i$3 = i$3 + (1) >> 0; + } + if (prefix === ptrType$1.nil) { + return suffix; + } + prefix.Sub = $append(prefix.Sub, suffix); + } + if (!(prefix === ptrType$1.nil)) { + return prefix; + } + return new Regexp.ptr(1, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + } + return re; + }; + Regexp.prototype.Simplify = function() { return this.$val.Simplify(); }; + simplify1 = function(op, flags, sub, re) { + var flags, op, re, sub, x; + if (sub.Op === 2) { + return sub; + } + if ((op === sub.Op) && (((flags & 32) >>> 0) === ((sub.Flags & 32) >>> 0))) { + return sub; + } + if (!(re === ptrType$1.nil) && (re.Op === op) && (((re.Flags & 32) >>> 0) === ((flags & 32) >>> 0)) && sub === (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))) { + return re; + } + re = new Regexp.ptr(op, flags, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); + re.Sub = $append($subslice(new sliceType$5(re.Sub0), 0, 0), sub); + return re; + }; + patchList.methods = [{prop: "next", name: "next", pkg: "regexp/syntax", typ: $funcType([ptrType], [patchList], false)}, {prop: "patch", name: "patch", pkg: "regexp/syntax", typ: $funcType([ptrType, $Uint32], [], false)}, {prop: "append", name: "append", pkg: "regexp/syntax", typ: $funcType([ptrType, patchList], [patchList], false)}]; + ptrType$5.methods = [{prop: "init", name: "init", pkg: "regexp/syntax", typ: $funcType([], [], false)}, {prop: "compile", name: "compile", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [frag], false)}, {prop: "inst", name: "inst", pkg: "regexp/syntax", typ: $funcType([InstOp], [frag], false)}, {prop: "nop", name: "nop", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "fail", name: "fail", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "cap", name: "cap", pkg: "regexp/syntax", typ: $funcType([$Uint32], [frag], false)}, {prop: "cat", name: "cat", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "alt", name: "alt", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "quest", name: "quest", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "star", name: "star", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "plus", name: "plus", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "empty", name: "empty", pkg: "regexp/syntax", typ: $funcType([EmptyOp], [frag], false)}, {prop: "rune", name: "rune", pkg: "regexp/syntax", typ: $funcType([sliceType, Flags], [frag], false)}]; + ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ErrorCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$7.methods = [{prop: "newRegexp", name: "newRegexp", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType$1], false)}, {prop: "reuse", name: "reuse", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [], false)}, {prop: "push", name: "push", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "maybeConcat", name: "maybeConcat", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [$Bool], false)}, {prop: "newLiteral", name: "newLiteral", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [ptrType$1], false)}, {prop: "literal", name: "literal", pkg: "regexp/syntax", typ: $funcType([$Int32], [], false)}, {prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType$1], false)}, {prop: "repeat", name: "repeat", pkg: "regexp/syntax", typ: $funcType([Op, $Int, $Int, $String, $String, $String], [$String, $error], false)}, {prop: "concat", name: "concat", pkg: "regexp/syntax", typ: $funcType([], [ptrType$1], false)}, {prop: "alternate", name: "alternate", pkg: "regexp/syntax", typ: $funcType([], [ptrType$1], false)}, {prop: "collapse", name: "collapse", pkg: "regexp/syntax", typ: $funcType([sliceType$5, Op], [ptrType$1], false)}, {prop: "factor", name: "factor", pkg: "regexp/syntax", typ: $funcType([sliceType$5], [sliceType$5], false)}, {prop: "leadingString", name: "leadingString", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [sliceType, Flags], false)}, {prop: "removeLeadingString", name: "removeLeadingString", pkg: "regexp/syntax", typ: $funcType([ptrType$1, $Int], [ptrType$1], false)}, {prop: "leadingRegexp", name: "leadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "removeLeadingRegexp", name: "removeLeadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType$1, $Bool], [ptrType$1], false)}, {prop: "parseRepeat", name: "parseRepeat", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $Int, $String, $Bool], false)}, {prop: "parsePerlFlags", name: "parsePerlFlags", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}, {prop: "parseInt", name: "parseInt", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $String, $Bool], false)}, {prop: "parseVerticalBar", name: "parseVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "swapVerticalBar", name: "swapVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$Bool], false)}, {prop: "parseRightParen", name: "parseRightParen", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "parseEscape", name: "parseEscape", pkg: "regexp/syntax", typ: $funcType([$String], [$Int32, $String, $error], false)}, {prop: "parseClassChar", name: "parseClassChar", pkg: "regexp/syntax", typ: $funcType([$String, $String], [$Int32, $String, $error], false)}, {prop: "parsePerlClassEscape", name: "parsePerlClassEscape", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String], false)}, {prop: "parseNamedClass", name: "parseNamedClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "appendGroup", name: "appendGroup", pkg: "regexp/syntax", typ: $funcType([sliceType, charGroup], [sliceType], false)}, {prop: "parseUnicodeClass", name: "parseUnicodeClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "parseClass", name: "parseClass", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}]; + ranges.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "skipNop", name: "skipNop", pkg: "regexp/syntax", typ: $funcType([$Uint32], [ptrType$8], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "StartCond", name: "StartCond", pkg: "", typ: $funcType([], [EmptyOp], false)}]; + InstOp.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$8.methods = [{prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([], [InstOp], false)}, {prop: "MatchRune", name: "MatchRune", pkg: "", typ: $funcType([$Int32], [$Bool], false)}, {prop: "MatchRunePos", name: "MatchRunePos", pkg: "", typ: $funcType([$Int32], [$Int], false)}, {prop: "MatchEmptyWidth", name: "MatchEmptyWidth", pkg: "", typ: $funcType([$Int32, $Int32], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MaxCap", name: "MaxCap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CapNames", name: "CapNames", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "capNames", name: "capNames", pkg: "regexp/syntax", typ: $funcType([sliceType$3], [], false)}, {prop: "Simplify", name: "Simplify", pkg: "", typ: $funcType([], [ptrType$1], false)}]; + Op.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + frag.init("regexp/syntax", [{prop: "i", name: "i", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "out", name: "out", embedded: false, exported: false, typ: patchList, tag: ""}]); + compiler.init("regexp/syntax", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType, tag: ""}]); + Error.init("", [{prop: "Code", name: "Code", embedded: false, exported: true, typ: ErrorCode, tag: ""}, {prop: "Expr", name: "Expr", embedded: false, exported: true, typ: $String, tag: ""}]); + parser.init("regexp/syntax", [{prop: "flags", name: "flags", embedded: false, exported: false, typ: Flags, tag: ""}, {prop: "stack", name: "stack", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "free", name: "free", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "numCap", name: "numCap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "wholeRegexp", name: "wholeRegexp", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tmpClass", name: "tmpClass", embedded: false, exported: false, typ: sliceType, tag: ""}]); + charGroup.init("regexp/syntax", [{prop: "sign", name: "sign", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "class$1", name: "class", embedded: false, exported: false, typ: sliceType, tag: ""}]); + ranges.init("regexp/syntax", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + Prog.init("", [{prop: "Inst", name: "Inst", embedded: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", embedded: false, exported: true, typ: $Int, tag: ""}]); + Inst.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: InstOp, tag: ""}, {prop: "Out", name: "Out", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Arg", name: "Arg", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Rune", name: "Rune", embedded: false, exported: true, typ: sliceType, tag: ""}]); + Regexp.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: Op, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: Flags, tag: ""}, {prop: "Sub", name: "Sub", embedded: false, exported: true, typ: sliceType$5, tag: ""}, {prop: "Sub0", name: "Sub0", embedded: false, exported: true, typ: arrayType, tag: ""}, {prop: "Rune", name: "Rune", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Rune0", name: "Rune0", embedded: false, exported: true, typ: arrayType$1, tag: ""}, {prop: "Min", name: "Min", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Max", name: "Max", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Cap", name: "Cap", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sort.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + anyRuneNotNL = new sliceType([0, 9, 11, 1114111]); + anyRune = new sliceType([0, 1114111]); + _Op_index_0 = $toNativeArray($kindUint8, [0, 7, 17, 24, 33, 45, 52, 61, 68, 77, 84, 96, 110, 117, 121, 125, 130, 136, 142, 151]); + anyTable = new unicode.RangeTable.ptr(new sliceType$1([new unicode.Range16.ptr(0, 65535, 1)]), new sliceType$2([new unicode.Range32.ptr(65536, 1114111, 1)]), 0); + code1 = new sliceType([48, 57]); + code2 = new sliceType([9, 10, 12, 13, 32, 32]); + code3 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]); + perlGroup = $makeMap($String.keyFor, [{ k: "\\d", v: new charGroup.ptr(1, code1) }, { k: "\\D", v: new charGroup.ptr(-1, code1) }, { k: "\\s", v: new charGroup.ptr(1, code2) }, { k: "\\S", v: new charGroup.ptr(-1, code2) }, { k: "\\w", v: new charGroup.ptr(1, code3) }, { k: "\\W", v: new charGroup.ptr(-1, code3) }]); + code4 = new sliceType([48, 57, 65, 90, 97, 122]); + code5 = new sliceType([65, 90, 97, 122]); + code6 = new sliceType([0, 127]); + code7 = new sliceType([9, 9, 32, 32]); + code8 = new sliceType([0, 31, 127, 127]); + code9 = new sliceType([48, 57]); + code10 = new sliceType([33, 126]); + code11 = new sliceType([97, 122]); + code12 = new sliceType([32, 126]); + code13 = new sliceType([33, 47, 58, 64, 91, 96, 123, 126]); + code14 = new sliceType([9, 13, 32, 32]); + code15 = new sliceType([65, 90]); + code16 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]); + code17 = new sliceType([48, 57, 65, 70, 97, 102]); + posixGroup = $makeMap($String.keyFor, [{ k: "[:alnum:]", v: new charGroup.ptr(1, code4) }, { k: "[:^alnum:]", v: new charGroup.ptr(-1, code4) }, { k: "[:alpha:]", v: new charGroup.ptr(1, code5) }, { k: "[:^alpha:]", v: new charGroup.ptr(-1, code5) }, { k: "[:ascii:]", v: new charGroup.ptr(1, code6) }, { k: "[:^ascii:]", v: new charGroup.ptr(-1, code6) }, { k: "[:blank:]", v: new charGroup.ptr(1, code7) }, { k: "[:^blank:]", v: new charGroup.ptr(-1, code7) }, { k: "[:cntrl:]", v: new charGroup.ptr(1, code8) }, { k: "[:^cntrl:]", v: new charGroup.ptr(-1, code8) }, { k: "[:digit:]", v: new charGroup.ptr(1, code9) }, { k: "[:^digit:]", v: new charGroup.ptr(-1, code9) }, { k: "[:graph:]", v: new charGroup.ptr(1, code10) }, { k: "[:^graph:]", v: new charGroup.ptr(-1, code10) }, { k: "[:lower:]", v: new charGroup.ptr(1, code11) }, { k: "[:^lower:]", v: new charGroup.ptr(-1, code11) }, { k: "[:print:]", v: new charGroup.ptr(1, code12) }, { k: "[:^print:]", v: new charGroup.ptr(-1, code12) }, { k: "[:punct:]", v: new charGroup.ptr(1, code13) }, { k: "[:^punct:]", v: new charGroup.ptr(-1, code13) }, { k: "[:space:]", v: new charGroup.ptr(1, code14) }, { k: "[:^space:]", v: new charGroup.ptr(-1, code14) }, { k: "[:upper:]", v: new charGroup.ptr(1, code15) }, { k: "[:^upper:]", v: new charGroup.ptr(-1, code15) }, { k: "[:word:]", v: new charGroup.ptr(1, code16) }, { k: "[:^word:]", v: new charGroup.ptr(-1, code16) }, { k: "[:xdigit:]", v: new charGroup.ptr(1, code17) }, { k: "[:^xdigit:]", v: new charGroup.ptr(-1, code17) }]); + instOpNames = new sliceType$3(["InstAlt", "InstAltMatch", "InstCapture", "InstEmptyWidth", "InstMatch", "InstFail", "InstNop", "InstRune", "InstRune1", "InstRuneAny", "InstRuneAnyNotNL"]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["regexp"] = (function() { + var $pkg = {}, $init, bytes, nosync, io, syntax, sort, strconv, strings, unicode, utf8, job, bitState, queue, entry, thread, machine, inputs, lazyFlag, onePassMachine, onePassProg, onePassInst, queueOnePass, runeSlice, Regexp, input, inputString, inputBytes, inputReader, sliceType, arrayType, arrayType$1, arrayType$2, sliceType$1, sliceType$2, ptrType, sliceType$3, sliceType$4, sliceType$5, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$6, ptrType$9, sliceType$7, ptrType$10, sliceType$8, ptrType$11, ptrType$12, sliceType$9, ptrType$13, sliceType$10, sliceType$11, arrayType$3, arrayType$4, sliceType$12, sliceType$13, sliceType$14, sliceType$15, ptrType$14, ptrType$15, funcType, funcType$1, funcType$2, funcType$3, ptrType$16, ptrType$17, ptrType$18, bitStatePool, onePassPool, arrayNoInts, noRune, noNext, anyRuneNotNL, anyRune, matchSize, matchPool, specialBytes, newBitState, freeBitState, maxBitStateLen, shouldBacktrack, newLazyFlag, newOnePassMachine, freeOnePassMachine, onePassPrefix, onePassNext, iop, newQueue, mergeRuneSets, cleanupOnePass, onePassCopy, makeOnePass, compileOnePass, Compile, compile, MustCompile, quote, init, extract; + bytes = $packages["bytes"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + io = $packages["io"]; + syntax = $packages["regexp/syntax"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + job = $pkg.job = $newType(0, $kindStruct, "regexp.job", true, "regexp", false, function(pc_, arg_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.pc = 0; + this.arg = false; + this.pos = 0; + return; + } + this.pc = pc_; + this.arg = arg_; + this.pos = pos_; + }); + bitState = $pkg.bitState = $newType(0, $kindStruct, "regexp.bitState", true, "regexp", false, function(end_, cap_, matchcap_, jobs_, visited_, inputs_) { + this.$val = this; + if (arguments.length === 0) { + this.end = 0; + this.cap = sliceType$3.nil; + this.matchcap = sliceType$3.nil; + this.jobs = sliceType$4.nil; + this.visited = sliceType$2.nil; + this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); + return; + } + this.end = end_; + this.cap = cap_; + this.matchcap = matchcap_; + this.jobs = jobs_; + this.visited = visited_; + this.inputs = inputs_; + }); + queue = $pkg.queue = $newType(0, $kindStruct, "regexp.queue", true, "regexp", false, function(sparse_, dense_) { + this.$val = this; + if (arguments.length === 0) { + this.sparse = sliceType$2.nil; + this.dense = sliceType$10.nil; + return; + } + this.sparse = sparse_; + this.dense = dense_; + }); + entry = $pkg.entry = $newType(0, $kindStruct, "regexp.entry", true, "regexp", false, function(pc_, t_) { + this.$val = this; + if (arguments.length === 0) { + this.pc = 0; + this.t = ptrType$1.nil; + return; + } + this.pc = pc_; + this.t = t_; + }); + thread = $pkg.thread = $newType(0, $kindStruct, "regexp.thread", true, "regexp", false, function(inst_, cap_) { + this.$val = this; + if (arguments.length === 0) { + this.inst = ptrType$2.nil; + this.cap = sliceType$3.nil; + return; + } + this.inst = inst_; + this.cap = cap_; + }); + machine = $pkg.machine = $newType(0, $kindStruct, "regexp.machine", true, "regexp", false, function(re_, p_, q0_, q1_, pool_, matched_, matchcap_, inputs_) { + this.$val = this; + if (arguments.length === 0) { + this.re = ptrType$11.nil; + this.p = ptrType$12.nil; + this.q0 = new queue.ptr(sliceType$2.nil, sliceType$10.nil); + this.q1 = new queue.ptr(sliceType$2.nil, sliceType$10.nil); + this.pool = sliceType$11.nil; + this.matched = false; + this.matchcap = sliceType$3.nil; + this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); + return; + } + this.re = re_; + this.p = p_; + this.q0 = q0_; + this.q1 = q1_; + this.pool = pool_; + this.matched = matched_; + this.matchcap = matchcap_; + this.inputs = inputs_; + }); + inputs = $pkg.inputs = $newType(0, $kindStruct, "regexp.inputs", true, "regexp", false, function(bytes_, string_, reader_) { + this.$val = this; + if (arguments.length === 0) { + this.bytes = new inputBytes.ptr(sliceType$5.nil); + this.string = new inputString.ptr(""); + this.reader = new inputReader.ptr($ifaceNil, false, 0); + return; + } + this.bytes = bytes_; + this.string = string_; + this.reader = reader_; + }); + lazyFlag = $pkg.lazyFlag = $newType(8, $kindUint64, "regexp.lazyFlag", true, "regexp", false, null); + onePassMachine = $pkg.onePassMachine = $newType(0, $kindStruct, "regexp.onePassMachine", true, "regexp", false, function(inputs_, matchcap_) { + this.$val = this; + if (arguments.length === 0) { + this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); + this.matchcap = sliceType$3.nil; + return; + } + this.inputs = inputs_; + this.matchcap = matchcap_; + }); + onePassProg = $pkg.onePassProg = $newType(0, $kindStruct, "regexp.onePassProg", true, "regexp", false, function(Inst_, Start_, NumCap_) { + this.$val = this; + if (arguments.length === 0) { + this.Inst = sliceType$6.nil; + this.Start = 0; + this.NumCap = 0; + return; + } + this.Inst = Inst_; + this.Start = Start_; + this.NumCap = NumCap_; + }); + onePassInst = $pkg.onePassInst = $newType(0, $kindStruct, "regexp.onePassInst", true, "regexp", false, function(Inst_, Next_) { + this.$val = this; + if (arguments.length === 0) { + this.Inst = new syntax.Inst.ptr(0, 0, 0, sliceType$1.nil); + this.Next = sliceType$2.nil; + return; + } + this.Inst = Inst_; + this.Next = Next_; + }); + queueOnePass = $pkg.queueOnePass = $newType(0, $kindStruct, "regexp.queueOnePass", true, "regexp", false, function(sparse_, dense_, size_, nextIndex_) { + this.$val = this; + if (arguments.length === 0) { + this.sparse = sliceType$2.nil; + this.dense = sliceType$2.nil; + this.size = 0; + this.nextIndex = 0; + return; + } + this.sparse = sparse_; + this.dense = dense_; + this.size = size_; + this.nextIndex = nextIndex_; + }); + runeSlice = $pkg.runeSlice = $newType(12, $kindSlice, "regexp.runeSlice", true, "regexp", false, null); + Regexp = $pkg.Regexp = $newType(0, $kindStruct, "regexp.Regexp", true, "regexp", true, function(expr_, prog_, onepass_, numSubexp_, maxBitStateLen_, subexpNames_, prefix_, prefixBytes_, prefixRune_, prefixEnd_, mpool_, matchcap_, prefixComplete_, cond_, longest_) { + this.$val = this; + if (arguments.length === 0) { + this.expr = ""; + this.prog = ptrType$12.nil; + this.onepass = ptrType$6.nil; + this.numSubexp = 0; + this.maxBitStateLen = 0; + this.subexpNames = sliceType$9.nil; + this.prefix = ""; + this.prefixBytes = sliceType$5.nil; + this.prefixRune = 0; + this.prefixEnd = 0; + this.mpool = 0; + this.matchcap = 0; + this.prefixComplete = false; + this.cond = 0; + this.longest = false; + return; + } + this.expr = expr_; + this.prog = prog_; + this.onepass = onepass_; + this.numSubexp = numSubexp_; + this.maxBitStateLen = maxBitStateLen_; + this.subexpNames = subexpNames_; + this.prefix = prefix_; + this.prefixBytes = prefixBytes_; + this.prefixRune = prefixRune_; + this.prefixEnd = prefixEnd_; + this.mpool = mpool_; + this.matchcap = matchcap_; + this.prefixComplete = prefixComplete_; + this.cond = cond_; + this.longest = longest_; + }); + input = $pkg.input = $newType(8, $kindInterface, "regexp.input", true, "regexp", false, null); + inputString = $pkg.inputString = $newType(0, $kindStruct, "regexp.inputString", true, "regexp", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = ""; + return; + } + this.str = str_; + }); + inputBytes = $pkg.inputBytes = $newType(0, $kindStruct, "regexp.inputBytes", true, "regexp", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = sliceType$5.nil; + return; + } + this.str = str_; + }); + inputReader = $pkg.inputReader = $newType(0, $kindStruct, "regexp.inputReader", true, "regexp", false, function(r_, atEOT_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.r = $ifaceNil; + this.atEOT = false; + this.pos = 0; + return; + } + this.r = r_; + this.atEOT = atEOT_; + this.pos = pos_; + }); + sliceType = $sliceType($emptyInterface); + arrayType = $arrayType($Int, 0); + arrayType$1 = $arrayType(nosync.Pool, 5); + arrayType$2 = $arrayType($Uint8, 16); + sliceType$1 = $sliceType($Int32); + sliceType$2 = $sliceType($Uint32); + ptrType = $ptrType(bitState); + sliceType$3 = $sliceType($Int); + sliceType$4 = $sliceType(job); + sliceType$5 = $sliceType($Uint8); + ptrType$1 = $ptrType(thread); + ptrType$2 = $ptrType(syntax.Inst); + ptrType$3 = $ptrType(lazyFlag); + ptrType$4 = $ptrType($Int); + ptrType$5 = $ptrType(onePassMachine); + ptrType$6 = $ptrType(onePassProg); + ptrType$7 = $ptrType(strings.Builder); + ptrType$8 = $ptrType(queueOnePass); + sliceType$6 = $sliceType(onePassInst); + ptrType$9 = $ptrType($Uint32); + sliceType$7 = $sliceType(sliceType$1); + ptrType$10 = $ptrType(sliceType$1); + sliceType$8 = $sliceType($Bool); + ptrType$11 = $ptrType(Regexp); + ptrType$12 = $ptrType(syntax.Prog); + sliceType$9 = $sliceType($String); + ptrType$13 = $ptrType(machine); + sliceType$10 = $sliceType(entry); + sliceType$11 = $sliceType(ptrType$1); + arrayType$3 = $arrayType($Int, 2); + arrayType$4 = $arrayType($Int, 4); + sliceType$12 = $sliceType(sliceType$5); + sliceType$13 = $sliceType(sliceType$3); + sliceType$14 = $sliceType(sliceType$12); + sliceType$15 = $sliceType(sliceType$9); + ptrType$14 = $ptrType(queue); + ptrType$15 = $ptrType(inputs); + funcType = $funcType([$String], [$String], false); + funcType$1 = $funcType([sliceType$5, sliceType$3], [sliceType$5], false); + funcType$2 = $funcType([sliceType$5], [sliceType$5], false); + funcType$3 = $funcType([sliceType$3], [], false); + ptrType$16 = $ptrType(inputString); + ptrType$17 = $ptrType(inputBytes); + ptrType$18 = $ptrType(inputReader); + newBitState = function() { + var _r, _tuple, b, ok, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = bitStatePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType, true); + b = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + b = new bitState.ptr(0, sliceType$3.nil, sliceType$3.nil, sliceType$4.nil, sliceType$2.nil, new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0))); + } + $s = -1; return b; + /* */ } return; } if ($f === undefined) { $f = { $blk: newBitState }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f; + }; + freeBitState = function(b) { + var b; + b.inputs.clear(); + bitStatePool.Put(b); + }; + maxBitStateLen = function(prog) { + var _q, prog; + if (!shouldBacktrack(prog)) { + return 0; + } + return (_q = 262144 / prog.Inst.$length, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + }; + shouldBacktrack = function(prog) { + var prog; + return prog.Inst.$length <= 500; + }; + bitState.ptr.prototype.reset = function(prog, end, ncap) { + var _i, _i$1, _i$2, _q, _ref, _ref$1, _ref$2, b, end, i, i$1, i$2, ncap, prog, visitedSize, x, x$1, x$2; + b = this; + b.end = end; + if (b.jobs.$capacity === 0) { + b.jobs = $makeSlice(sliceType$4, 0, 256); + } else { + b.jobs = $subslice(b.jobs, 0, 0); + } + visitedSize = (_q = (((($imul(prog.Inst.$length, ((end + 1 >> 0)))) + 32 >> 0) - 1 >> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (b.visited.$capacity < visitedSize) { + b.visited = $makeSlice(sliceType$2, visitedSize, 8192); + } else { + b.visited = $subslice(b.visited, 0, visitedSize); + _ref = b.visited; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = b.visited, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = 0)); + _i++; + } + } + if (b.cap.$capacity < ncap) { + b.cap = $makeSlice(sliceType$3, ncap); + } else { + b.cap = $subslice(b.cap, 0, ncap); + } + _ref$1 = b.cap; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + (x$1 = b.cap, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1] = -1)); + _i$1++; + } + if (b.matchcap.$capacity < ncap) { + b.matchcap = $makeSlice(sliceType$3, ncap); + } else { + b.matchcap = $subslice(b.matchcap, 0, ncap); + } + _ref$2 = b.matchcap; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + (x$2 = b.matchcap, ((i$2 < 0 || i$2 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$2] = -1)); + _i$2++; + } + }; + bitState.prototype.reset = function(prog, end, ncap) { return this.$val.reset(prog, end, ncap); }; + bitState.ptr.prototype.shouldVisit = function(pc, pos) { + var _index, _q, _q$1, b, n, pc, pos, x, x$1, x$2, x$3, y, y$1; + b = this; + n = (((($imul(((pc >> 0)), ((b.end + 1 >> 0)))) + pos >> 0) >>> 0)); + if (!(((((x = b.visited, x$1 = (_q = n / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) & (((y = (((n & 31) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { + return false; + } + _index = (_q$1 = n / 32, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + (x$3 = b.visited, ((_index < 0 || _index >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + _index] = (((x$2 = b.visited, ((_index < 0 || _index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + _index])) | (((y$1 = (((n & 31) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0))); + return true; + }; + bitState.prototype.shouldVisit = function(pc, pos) { return this.$val.shouldVisit(pc, pos); }; + bitState.ptr.prototype.push = function(re, pc, pos, arg) { + var arg, b, pc, pos, re, x; + b = this; + if (!(((x = re.prog.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])).Op === 5)) && (arg || b.shouldVisit(pc, pos))) { + b.jobs = $append(b.jobs, new job.ptr(pc, arg, pos)); + } + }; + bitState.prototype.push = function(re, pc, pos, arg) { return this.$val.push(re, pc, pos, arg); }; + Regexp.ptr.prototype.tryBacktrack = function(b, i, pc, pos) { + var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, arg, b, flag, i, inst, l, longest, old, pc, pc$1, pos, pos$1, r, r$1, r$2, r$3, re, width, width$1, width$2, width$3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; arg = $f.arg; b = $f.b; flag = $f.flag; i = $f.i; inst = $f.inst; l = $f.l; longest = $f.longest; old = $f.old; pc = $f.pc; pc$1 = $f.pc$1; pos = $f.pos; pos$1 = $f.pos$1; r = $f.r; r$1 = $f.r$1; r$2 = $f.r$2; r$3 = $f.r$3; re = $f.re; width = $f.width; width$1 = $f.width$1; width$2 = $f.width$2; width$3 = $f.width$3; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + longest = re.longest; + b.push(re, pc, pos, false); + /* while (true) { */ case 1: + /* if (!(b.jobs.$length > 0)) { break; } */ if(!(b.jobs.$length > 0)) { $s = 2; continue; } + l = b.jobs.$length - 1 >> 0; + pc$1 = (x = b.jobs, ((l < 0 || l >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + l])).pc; + pos$1 = (x$1 = b.jobs, ((l < 0 || l >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + l])).pos; + arg = (x$2 = b.jobs, ((l < 0 || l >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + l])).arg; + b.jobs = $subslice(b.jobs, 0, l); + /* goto Skip */ $s = 3; continue; + /* CheckAndLoop: */ case 4: + if (!b.shouldVisit(pc$1, pos$1)) { + /* continue; */ $s = 1; continue; + } + /* Skip: */ case 3: + inst = $clone((x$3 = re.prog.Inst, ((pc$1 < 0 || pc$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc$1])), syntax.Inst); + _1 = inst.Op; + /* */ if (_1 === (5)) { $s = 6; continue; } + /* */ if (_1 === (0)) { $s = 7; continue; } + /* */ if (_1 === (1)) { $s = 8; continue; } + /* */ if (_1 === (7)) { $s = 9; continue; } + /* */ if (_1 === (8)) { $s = 10; continue; } + /* */ if (_1 === (10)) { $s = 11; continue; } + /* */ if (_1 === (9)) { $s = 12; continue; } + /* */ if (_1 === (2)) { $s = 13; continue; } + /* */ if (_1 === (3)) { $s = 14; continue; } + /* */ if (_1 === (6)) { $s = 15; continue; } + /* */ if (_1 === (4)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_1 === (5)) { */ case 6: + $panic(new $String("unexpected InstFail")); + $s = 18; continue; + /* } else if (_1 === (0)) { */ case 7: + /* */ if (arg) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (arg) { */ case 19: + arg = false; + pc$1 = inst.Arg; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 21; continue; + /* } else { */ case 20: + b.push(re, pc$1, pos$1, true); + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + /* } */ case 21: + $s = 18; continue; + /* } else if (_1 === (1)) { */ case 8: + _2 = (x$4 = re.prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).Op; + /* */ if ((_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10))) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if ((_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10))) { */ case 23: + b.push(re, inst.Arg, pos$1, false); + pc$1 = inst.Arg; + pos$1 = b.end; + /* goto CheckAndLoop */ $s = 4; continue; + /* } */ case 24: + case 22: + b.push(re, inst.Out, b.end, false); + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (7)) { */ case 9: + _r = i.step(pos$1); /* */ $s = 25; case 25: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + width = _tuple[1]; + /* */ if (!inst.MatchRune(r)) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!inst.MatchRune(r)) { */ case 26: + /* continue; */ $s = 1; continue; + /* } */ case 27: + pos$1 = pos$1 + (width) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (8)) { */ case 10: + _r$1 = i.step(pos$1); /* */ $s = 28; case 28: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + r$1 = _tuple$1[0]; + width$1 = _tuple$1[1]; + /* */ if (!((r$1 === (x$6 = inst.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (!((r$1 === (x$6 = inst.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))))) { */ case 29: + /* continue; */ $s = 1; continue; + /* } */ case 30: + pos$1 = pos$1 + (width$1) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (10)) { */ case 11: + _r$2 = i.step(pos$1); /* */ $s = 31; case 31: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + r$2 = _tuple$2[0]; + width$2 = _tuple$2[1]; + /* */ if ((r$2 === 10) || (r$2 === -1)) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if ((r$2 === 10) || (r$2 === -1)) { */ case 32: + /* continue; */ $s = 1; continue; + /* } */ case 33: + pos$1 = pos$1 + (width$2) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (9)) { */ case 12: + _r$3 = i.step(pos$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$3 = _r$3; + r$3 = _tuple$3[0]; + width$3 = _tuple$3[1]; + /* */ if (r$3 === -1) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (r$3 === -1) { */ case 35: + /* continue; */ $s = 1; continue; + /* } */ case 36: + pos$1 = pos$1 + (width$3) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (2)) { */ case 13: + /* */ if (arg) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (arg) { */ case 37: + (x$7 = b.cap, x$8 = inst.Arg, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8] = pos$1)); + /* continue; */ $s = 1; continue; + $s = 39; continue; + /* } else { */ case 38: + if (0 <= inst.Arg && inst.Arg < ((b.cap.$length >>> 0))) { + b.push(re, pc$1, (x$9 = b.cap, x$10 = inst.Arg, ((x$10 < 0 || x$10 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + x$10])), true); + (x$11 = b.cap, x$12 = inst.Arg, ((x$12 < 0 || x$12 >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + x$12] = pos$1)); + } + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + /* } */ case 39: + $s = 18; continue; + /* } else if (_1 === (3)) { */ case 14: + _r$4 = i.context(pos$1); /* */ $s = 40; case 40: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + flag = _r$4; + /* */ if (!flag.match(((inst.Arg << 24 >>> 24)))) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (!flag.match(((inst.Arg << 24 >>> 24)))) { */ case 41: + /* continue; */ $s = 1; continue; + /* } */ case 42: + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (6)) { */ case 15: + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (4)) { */ case 16: + if (b.cap.$length === 0) { + $s = -1; return true; + } + if (b.cap.$length > 1) { + (x$13 = b.cap, (1 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 1] = pos$1)); + } + old = (x$14 = b.matchcap, (1 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 1])); + if ((old === -1) || (longest && pos$1 > 0 && pos$1 > old)) { + $copySlice(b.matchcap, b.cap); + } + if (!longest) { + $s = -1; return true; + } + if (pos$1 === b.end) { + $s = -1; return true; + } + /* continue; */ $s = 1; continue; + $s = 18; continue; + /* } else { */ case 17: + $panic(new $String("bad inst")); + /* } */ case 18: + case 5: + /* } */ $s = 1; continue; case 2: + $s = -1; return longest && b.matchcap.$length > 1 && (x$15 = b.matchcap, (1 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 1])) >= 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.tryBacktrack }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.arg = arg; $f.b = b; $f.flag = flag; $f.i = i; $f.inst = inst; $f.l = l; $f.longest = longest; $f.old = old; $f.pc = pc; $f.pc$1 = pc$1; $f.pos = pos; $f.pos$1 = pos$1; $f.r = r; $f.r$1 = r$1; $f.r$2 = r$2; $f.r$3 = r$3; $f.re = re; $f.width = width; $f.width$1 = width$1; $f.width$2 = width$2; $f.width$3 = width$3; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.tryBacktrack = function(b, i, pc, pos) { return this.$val.tryBacktrack(b, i, pc, pos); }; + Regexp.ptr.prototype.backtrack = function(ib, is, pos, ncap, dstCap) { + var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, advance, b, dstCap, end, i, ib, is, ncap, pos, re, startCond, width, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; advance = $f.advance; b = $f.b; dstCap = $f.dstCap; end = $f.end; i = $f.i; ib = $f.ib; is = $f.is; ncap = $f.ncap; pos = $f.pos; re = $f.re; startCond = $f.startCond; width = $f.width; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + startCond = re.cond; + if (startCond === 255) { + $s = -1; return sliceType$3.nil; + } + if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { + $s = -1; return sliceType$3.nil; + } + _r = newBitState(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + _tuple = b.inputs.init($ifaceNil, ib, is); + i = _tuple[0]; + end = _tuple[1]; + b.reset(re.prog, end, ncap); + /* */ if (!((((startCond & 4) >>> 0) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((((startCond & 4) >>> 0) === 0))) { */ case 2: + if (b.cap.$length > 0) { + (x = b.cap, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = pos)); + } + _r$1 = re.tryBacktrack(b, i, ((re.prog.Start >>> 0)), pos); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!_r$1) { */ case 5: + freeBitState(b); + $s = -1; return sliceType$3.nil; + /* } */ case 6: + $s = 4; continue; + /* } else { */ case 3: + width = -1; + /* while (true) { */ case 8: + /* if (!(pos <= end && !((width === 0)))) { break; } */ if(!(pos <= end && !((width === 0)))) { $s = 9; continue; } + /* */ if (re.prefix.length > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (re.prefix.length > 0) { */ case 10: + _r$2 = i.index(re, pos); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + advance = _r$2; + if (advance < 0) { + freeBitState(b); + $s = -1; return sliceType$3.nil; + } + pos = pos + (advance) >> 0; + /* } */ case 11: + if (b.cap.$length > 0) { + (x$1 = b.cap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = pos)); + } + _r$3 = re.tryBacktrack(b, i, ((re.prog.Start >>> 0)), pos); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$3) { */ case 13: + /* goto Match */ $s = 16; continue; + /* } */ case 14: + _r$4 = i.step(pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + width = _tuple$1[1]; + pos = pos + (width) >> 0; + /* } */ $s = 8; continue; case 9: + freeBitState(b); + $s = -1; return sliceType$3.nil; + /* } */ case 4: + /* Match: */ case 16: + dstCap = $appendSlice(dstCap, b.matchcap); + freeBitState(b); + $s = -1; return dstCap; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.backtrack }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.advance = advance; $f.b = b; $f.dstCap = dstCap; $f.end = end; $f.i = i; $f.ib = ib; $f.is = is; $f.ncap = ncap; $f.pos = pos; $f.re = re; $f.startCond = startCond; $f.width = width; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.backtrack = function(ib, is, pos, ncap, dstCap) { return this.$val.backtrack(ib, is, pos, ncap, dstCap); }; + inputs.ptr.prototype.newBytes = function(b) { + var b, i; + i = this; + i.bytes.str = b; + return i.bytes; + }; + inputs.prototype.newBytes = function(b) { return this.$val.newBytes(b); }; + inputs.ptr.prototype.newString = function(s) { + var i, s; + i = this; + i.string.str = s; + return i.string; + }; + inputs.prototype.newString = function(s) { return this.$val.newString(s); }; + inputs.ptr.prototype.newReader = function(r) { + var i, r; + i = this; + i.reader.r = r; + i.reader.atEOT = false; + i.reader.pos = 0; + return i.reader; + }; + inputs.prototype.newReader = function(r) { return this.$val.newReader(r); }; + inputs.ptr.prototype.clear = function() { + var i; + i = this; + if (!(i.bytes.str === sliceType$5.nil)) { + i.bytes.str = sliceType$5.nil; + } else if (!($interfaceIsEqual(i.reader.r, $ifaceNil))) { + i.reader.r = $ifaceNil; + } else { + i.string.str = ""; + } + }; + inputs.prototype.clear = function() { return this.$val.clear(); }; + inputs.ptr.prototype.init = function(r, b, s) { + var b, i, r, s; + i = this; + if (!($interfaceIsEqual(r, $ifaceNil))) { + return [i.newReader(r), 0]; + } + if (!(b === sliceType$5.nil)) { + return [i.newBytes(b), b.$length]; + } + return [i.newString(s), s.length]; + }; + inputs.prototype.init = function(r, b, s) { return this.$val.init(r, b, s); }; + machine.ptr.prototype.init = function(ncap) { + var _i, _ref, m, ncap, t; + m = this; + _ref = m.pool; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + t.cap = $subslice(t.cap, 0, ncap); + _i++; + } + m.matchcap = $subslice(m.matchcap, 0, ncap); + }; + machine.prototype.init = function(ncap) { return this.$val.init(ncap); }; + machine.ptr.prototype.alloc = function(i) { + var i, m, n, t, x, x$1; + m = this; + t = ptrType$1.nil; + n = m.pool.$length; + if (n > 0) { + t = (x = m.pool, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + m.pool = $subslice(m.pool, 0, (n - 1 >> 0)); + } else { + t = new thread.ptr(ptrType$2.nil, sliceType$3.nil); + t.cap = $makeSlice(sliceType$3, m.matchcap.$length, m.matchcap.$capacity); + } + t.inst = i; + return t; + }; + machine.prototype.alloc = function(i) { return this.$val.alloc(i); }; + newLazyFlag = function(r1, r2) { + var r1, r2, x, x$1, x$2; + return ((x = (x$1 = $shiftLeft64((new $Uint64(0, r1)), 32), x$2 = (new $Uint64(0, ((r2 >>> 0)))), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0)), new lazyFlag(x.$high, x.$low))); + }; + lazyFlag.prototype.match = function(op) { + var f, op, r1, r2; + f = this; + if (op === 0) { + return true; + } + r1 = (($shiftRightUint64(f, 32).$low >> 0)); + if (!((((op & 1) >>> 0) === 0))) { + if (!((r1 === 10)) && r1 >= 0) { + return false; + } + op = (op & ~(1)) << 24 >>> 24; + } + if (!((((op & 4) >>> 0) === 0))) { + if (r1 >= 0) { + return false; + } + op = (op & ~(4)) << 24 >>> 24; + } + if (op === 0) { + return true; + } + r2 = ((f.$low >> 0)); + if (!((((op & 2) >>> 0) === 0))) { + if (!((r2 === 10)) && r2 >= 0) { + return false; + } + op = (op & ~(2)) << 24 >>> 24; + } + if (!((((op & 8) >>> 0) === 0))) { + if (r2 >= 0) { + return false; + } + op = (op & ~(8)) << 24 >>> 24; + } + if (op === 0) { + return true; + } + if (!(syntax.IsWordChar(r1) === syntax.IsWordChar(r2))) { + op = (op & ~(16)) << 24 >>> 24; + } else { + op = (op & ~(32)) << 24 >>> 24; + } + return op === 0; + }; + $ptrType(lazyFlag).prototype.match = function(op) { return this.$get().match(op); }; + machine.ptr.prototype.match = function(i, pos) { + var _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, advance, flag, i, i$1, m, nextq, pos, r, r1, runq, startCond, width, width1, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; advance = $f.advance; flag = $f.flag; i = $f.i; i$1 = $f.i$1; m = $f.m; nextq = $f.nextq; pos = $f.pos; r = $f.r; r1 = $f.r1; runq = $f.runq; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + flag = [flag]; + m = this; + startCond = m.re.cond; + if (startCond === 255) { + $s = -1; return false; + } + m.matched = false; + _ref = m.matchcap; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$1 = _i; + (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$1] = -1)); + _i++; + } + _tmp = m.q0; + _tmp$1 = m.q1; + runq = _tmp; + nextq = _tmp$1; + _tmp$2 = -1; + _tmp$3 = -1; + r = _tmp$2; + r1 = _tmp$3; + _tmp$4 = 0; + _tmp$5 = 0; + width = _tmp$4; + width1 = _tmp$5; + _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + width = _tuple[1]; + /* */ if (!((r === -1))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === -1))) { */ case 2: + _r$1 = i.step(pos + width >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + r1 = _tuple$1[0]; + width1 = _tuple$1[1]; + /* } */ case 3: + flag[0] = new lazyFlag(0, 0); + /* */ if (pos === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (pos === 0) { */ case 5: + flag[0] = newLazyFlag(-1, r); + $s = 7; continue; + /* } else { */ case 6: + _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + flag[0] = _r$2; + /* } */ case 7: + /* while (true) { */ case 9: + /* */ if (runq.dense.$length === 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (runq.dense.$length === 0) { */ case 11: + if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { + /* break; */ $s = 10; continue; + } + if (m.matched) { + /* break; */ $s = 10; continue; + } + if (!(m.re.prefix.length > 0 && !((r1 === m.re.prefixRune)))) { _v = false; $s = 15; continue s; } + _r$3 = i.canCheckPrefix(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 15: + /* */ if (_v) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_v) { */ case 13: + _r$4 = i.index(m.re, pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + advance = _r$4; + if (advance < 0) { + /* break; */ $s = 10; continue; + } + pos = pos + (advance) >> 0; + _r$5 = i.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + r = _tuple$2[0]; + width = _tuple$2[1]; + _r$6 = i.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + r1 = _tuple$3[0]; + width1 = _tuple$3[1]; + /* } */ case 14: + /* } */ case 12: + if (!m.matched) { + if (m.matchcap.$length > 0) { + (x$1 = m.matchcap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = pos)); + } + m.add(runq, ((m.p.Start >>> 0)), pos, m.matchcap, (flag.$ptr || (flag.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag))), ptrType$1.nil); + } + flag[0] = newLazyFlag(r, r1); + m.step(runq, nextq, pos, pos + width >> 0, r, (flag.$ptr || (flag.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag)))); + if (width === 0) { + /* break; */ $s = 10; continue; + } + if ((m.matchcap.$length === 0) && m.matched) { + /* break; */ $s = 10; continue; + } + pos = pos + (width) >> 0; + _tmp$6 = r1; + _tmp$7 = width1; + r = _tmp$6; + width = _tmp$7; + /* */ if (!((r === -1))) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!((r === -1))) { */ case 20: + _r$7 = i.step(pos + width >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$4 = _r$7; + r1 = _tuple$4[0]; + width1 = _tuple$4[1]; + /* } */ case 21: + _tmp$8 = nextq; + _tmp$9 = runq; + runq = _tmp$8; + nextq = _tmp$9; + /* } */ $s = 9; continue; case 10: + m.clear(nextq); + $s = -1; return m.matched; + /* */ } return; } if ($f === undefined) { $f = { $blk: machine.ptr.prototype.match }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.advance = advance; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.m = m; $f.nextq = nextq; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.runq = runq; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + machine.prototype.match = function(i, pos) { return this.$val.match(i, pos); }; + machine.ptr.prototype.clear = function(q) { + var _i, _ref, d, m, q; + m = this; + _ref = q.dense; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + d = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + if (!(d.t === ptrType$1.nil)) { + m.pool = $append(m.pool, d.t); + } + _i++; + } + q.dense = $subslice(q.dense, 0, 0); + }; + machine.prototype.clear = function(q) { return this.$val.clear(q); }; + machine.ptr.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { + var _1, _i, _ref, add, c, d, d$1, i, j, longest, m, nextCond, nextPos, nextq, pos, runq, t, x, x$1, x$2, x$3, x$4, x$5; + m = this; + longest = m.re.longest; + j = 0; + while (true) { + if (!(j < runq.dense.$length)) { break; } + d = (x = runq.dense, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + t = d.t; + if (t === ptrType$1.nil) { + j = j + (1) >> 0; + continue; + } + if (longest && m.matched && t.cap.$length > 0 && (x$1 = m.matchcap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) < (x$2 = t.cap, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) { + m.pool = $append(m.pool, t); + j = j + (1) >> 0; + continue; + } + i = t.inst; + add = false; + _1 = i.Op; + if (_1 === (4)) { + if (t.cap.$length > 0 && (!longest || !m.matched || (x$3 = m.matchcap, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1])) < pos)) { + (x$4 = t.cap, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1] = pos)); + $copySlice(m.matchcap, t.cap); + } + if (!longest) { + _ref = $subslice(runq.dense, (j + 1 >> 0)); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + d$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + if (!(d$1.t === ptrType$1.nil)) { + m.pool = $append(m.pool, d$1.t); + } + _i++; + } + runq.dense = $subslice(runq.dense, 0, 0); + } + m.matched = true; + } else if (_1 === (7)) { + add = i.MatchRune(c); + } else if (_1 === (8)) { + add = c === (x$5 = i.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])); + } else if (_1 === (9)) { + add = true; + } else if (_1 === (10)) { + add = !((c === 10)); + } else { + $panic(new $String("bad inst")); + } + if (add) { + t = m.add(nextq, i.Out, nextPos, t.cap, nextCond, t); + } + if (!(t === ptrType$1.nil)) { + m.pool = $append(m.pool, t); + } + j = j + (1) >> 0; + } + runq.dense = $subslice(runq.dense, 0, 0); + }; + machine.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { return this.$val.step(runq, nextq, pos, nextPos, c, nextCond); }; + machine.ptr.prototype.add = function(q, pc, pos, cap, cond, t) { + var _1, cap, cond, d, i, j, j$1, m, opos, pc, pos, q, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s; + /* */ $s = 0; s: while (true) { switch ($s) { case 0: + m = this; + /* Again: */ case 1: + if (pc === 0) { + $s = -1; return t; + } + j = (x = q.sparse, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + if (j < ((q.dense.$length >>> 0)) && ((x$1 = q.dense, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])).pc === pc)) { + $s = -1; return t; + } + j$1 = q.dense.$length; + q.dense = $subslice(q.dense, 0, (j$1 + 1 >> 0)); + d = (x$2 = q.dense, ((j$1 < 0 || j$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j$1])); + d.t = ptrType$1.nil; + d.pc = pc; + (x$3 = q.sparse, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc] = ((j$1 >>> 0)))); + i = (x$4 = m.p.Inst, ((pc < 0 || pc >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + pc])); + _1 = i.Op; + /* */ if (_1 === (5)) { $s = 3; continue; } + /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 4; continue; } + /* */ if (_1 === (3)) { $s = 5; continue; } + /* */ if (_1 === (6)) { $s = 6; continue; } + /* */ if (_1 === (2)) { $s = 7; continue; } + /* */ if ((_1 === (4)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (5)) { */ case 3: + $s = 10; continue; + /* } else if ((_1 === (0)) || (_1 === (1))) { */ case 4: + t = m.add(q, i.Out, pos, cap, cond, t); + pc = i.Arg; + /* goto Again */ $s = 1; continue; + $s = 10; continue; + /* } else if (_1 === (3)) { */ case 5: + /* */ if (cond.match(((i.Arg << 24 >>> 24)))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (cond.match(((i.Arg << 24 >>> 24)))) { */ case 11: + pc = i.Out; + /* goto Again */ $s = 1; continue; + /* } */ case 12: + $s = 10; continue; + /* } else if (_1 === (6)) { */ case 6: + pc = i.Out; + /* goto Again */ $s = 1; continue; + $s = 10; continue; + /* } else if (_1 === (2)) { */ case 7: + /* */ if (((i.Arg >> 0)) < cap.$length) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (((i.Arg >> 0)) < cap.$length) { */ case 13: + opos = (x$5 = i.Arg, ((x$5 < 0 || x$5 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$5])); + (x$6 = i.Arg, ((x$6 < 0 || x$6 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$6] = pos)); + m.add(q, i.Out, pos, cap, cond, ptrType$1.nil); + (x$7 = i.Arg, ((x$7 < 0 || x$7 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$7] = opos)); + $s = 15; continue; + /* } else { */ case 14: + pc = i.Out; + /* goto Again */ $s = 1; continue; + /* } */ case 15: + $s = 10; continue; + /* } else if ((_1 === (4)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10))) { */ case 8: + if (t === ptrType$1.nil) { + t = m.alloc(i); + } else { + t.inst = i; + } + if (cap.$length > 0 && !((x$8 = t.cap, $indexPtr(x$8.$array, x$8.$offset + 0, ptrType$4)) === $indexPtr(cap.$array, cap.$offset + 0, ptrType$4))) { + $copySlice(t.cap, cap); + } + d.t = t; + t = ptrType$1.nil; + $s = 10; continue; + /* } else { */ case 9: + $panic(new $String("unhandled")); + /* } */ case 10: + case 2: + $s = -1; return t; + /* */ } return; } + }; + machine.prototype.add = function(q, pc, pos, cap, cond, t) { return this.$val.add(q, pc, pos, cap, cond, t); }; + newOnePassMachine = function() { + var _r, _tuple, m, ok, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; m = $f.m; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = onePassPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$5, true); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = new onePassMachine.ptr(new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)), sliceType$3.nil); + } + $s = -1; return m; + /* */ } return; } if ($f === undefined) { $f = { $blk: newOnePassMachine }; } $f._r = _r; $f._tuple = _tuple; $f.m = m; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f; + }; + freeOnePassMachine = function(m) { + var m; + m.inputs.clear(); + onePassPool.Put(m); + }; + Regexp.ptr.prototype.doOnePass = function(ir, ib, is, pos, ncap, dstCap) { + var _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, dstCap, flag, i, i$1, ib, inst, ir, is, m, matched, ncap, pc, pos, r, r1, re, startCond, width, width1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _v = $f._v; dstCap = $f.dstCap; flag = $f.flag; i = $f.i; i$1 = $f.i$1; ib = $f.ib; inst = $f.inst; ir = $f.ir; is = $f.is; m = $f.m; matched = $f.matched; ncap = $f.ncap; pc = $f.pc; pos = $f.pos; r = $f.r; r1 = $f.r1; re = $f.re; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + inst = [inst]; + re = this; + startCond = re.cond; + if (startCond === 255) { + $s = -1; return sliceType$3.nil; + } + _r = newOnePassMachine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + m = _r; + if (m.matchcap.$capacity < ncap) { + m.matchcap = $makeSlice(sliceType$3, ncap); + } else { + m.matchcap = $subslice(m.matchcap, 0, ncap); + } + matched = false; + _ref = m.matchcap; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = m.matchcap, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = -1)); + _i++; + } + _tuple = m.inputs.init(ir, ib, is); + i$1 = _tuple[0]; + _tmp = -1; + _tmp$1 = -1; + r = _tmp; + r1 = _tmp$1; + _tmp$2 = 0; + _tmp$3 = 0; + width = _tmp$2; + width1 = _tmp$3; + _r$1 = i$1.step(pos); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + r = _tuple$1[0]; + width = _tuple$1[1]; + /* */ if (!((r === -1))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((r === -1))) { */ case 3: + _r$2 = i$1.step(pos + width >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + r1 = _tuple$2[0]; + width1 = _tuple$2[1]; + /* } */ case 4: + flag = new lazyFlag(0, 0); + /* */ if (pos === 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (pos === 0) { */ case 6: + flag = newLazyFlag(-1, r); + $s = 8; continue; + /* } else { */ case 7: + _r$3 = i$1.context(pos); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + flag = _r$3; + /* } */ case 8: + pc = re.onepass.Start; + inst[0] = $clone((x$1 = re.onepass.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])), onePassInst); + if (!((pos === 0) && flag.match(((inst[0].Inst.Arg << 24 >>> 24))) && re.prefix.length > 0)) { _v = false; $s = 12; continue s; } + _r$4 = i$1.canCheckPrefix(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v = _r$4; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + _r$5 = i$1.hasPrefix(re); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!_r$5) { */ case 14: + /* goto Return */ $s = 17; continue; + /* } */ case 15: + pos = pos + (re.prefix.length) >> 0; + _r$6 = i$1.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + r = _tuple$3[0]; + width = _tuple$3[1]; + _r$7 = i$1.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$4 = _r$7; + r1 = _tuple$4[0]; + width1 = _tuple$4[1]; + _r$8 = i$1.context(pos); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + flag = _r$8; + pc = ((re.prefixEnd >> 0)); + /* } */ case 11: + /* while (true) { */ case 21: + onePassInst.copy(inst[0], (x$2 = re.onepass.Inst, ((pc < 0 || pc >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pc]))); + pc = ((inst[0].Inst.Out >> 0)); + _1 = inst[0].Inst.Op; + /* */ if (_1 === (4)) { $s = 24; continue; } + /* */ if (_1 === (7)) { $s = 25; continue; } + /* */ if (_1 === (8)) { $s = 26; continue; } + /* */ if (_1 === (9)) { $s = 27; continue; } + /* */ if (_1 === (10)) { $s = 28; continue; } + /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 29; continue; } + /* */ if (_1 === (5)) { $s = 30; continue; } + /* */ if (_1 === (6)) { $s = 31; continue; } + /* */ if (_1 === (3)) { $s = 32; continue; } + /* */ if (_1 === (2)) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (_1 === (4)) { */ case 24: + matched = true; + if (m.matchcap.$length > 0) { + (x$3 = m.matchcap, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = 0)); + (x$4 = m.matchcap, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1] = pos)); + } + /* goto Return */ $s = 17; continue; + $s = 35; continue; + /* } else if (_1 === (7)) { */ case 25: + /* */ if (!inst[0].Inst.MatchRune(r)) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (!inst[0].Inst.MatchRune(r)) { */ case 36: + /* goto Return */ $s = 17; continue; + /* } */ case 37: + $s = 35; continue; + /* } else if (_1 === (8)) { */ case 26: + /* */ if (!((r === (x$5 = inst[0].Inst.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))))) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!((r === (x$5 = inst[0].Inst.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))))) { */ case 38: + /* goto Return */ $s = 17; continue; + /* } */ case 39: + $s = 35; continue; + /* } else if (_1 === (9)) { */ case 27: + $s = 35; continue; + /* } else if (_1 === (10)) { */ case 28: + /* */ if (r === 10) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (r === 10) { */ case 40: + /* goto Return */ $s = 17; continue; + /* } */ case 41: + $s = 35; continue; + /* } else if ((_1 === (0)) || (_1 === (1))) { */ case 29: + pc = ((onePassNext(inst[0], r) >> 0)); + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else if (_1 === (5)) { */ case 30: + /* goto Return */ $s = 17; continue; + $s = 35; continue; + /* } else if (_1 === (6)) { */ case 31: + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else if (_1 === (3)) { */ case 32: + /* */ if (!flag.match(((inst[0].Inst.Arg << 24 >>> 24)))) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (!flag.match(((inst[0].Inst.Arg << 24 >>> 24)))) { */ case 42: + /* goto Return */ $s = 17; continue; + /* } */ case 43: + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else if (_1 === (2)) { */ case 33: + if (((inst[0].Inst.Arg >> 0)) < m.matchcap.$length) { + (x$6 = m.matchcap, x$7 = inst[0].Inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7] = pos)); + } + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else { */ case 34: + $panic(new $String("bad inst")); + /* } */ case 35: + case 23: + if (width === 0) { + /* break; */ $s = 22; continue; + } + flag = newLazyFlag(r, r1); + pos = pos + (width) >> 0; + _tmp$4 = r1; + _tmp$5 = width1; + r = _tmp$4; + width = _tmp$5; + /* */ if (!((r === -1))) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (!((r === -1))) { */ case 44: + _r$9 = i$1.step(pos + width >> 0); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$5 = _r$9; + r1 = _tuple$5[0]; + width1 = _tuple$5[1]; + /* } */ case 45: + /* } */ $s = 21; continue; case 22: + /* Return: */ case 17: + if (!matched) { + freeOnePassMachine(m); + $s = -1; return sliceType$3.nil; + } + dstCap = $appendSlice(dstCap, m.matchcap); + freeOnePassMachine(m); + $s = -1; return dstCap; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doOnePass }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._v = _v; $f.dstCap = dstCap; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.ib = ib; $f.inst = inst; $f.ir = ir; $f.is = is; $f.m = m; $f.matched = matched; $f.ncap = ncap; $f.pc = pc; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.re = re; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.doOnePass = function(ir, ib, is, pos, ncap, dstCap) { return this.$val.doOnePass(ir, ib, is, pos, ncap, dstCap); }; + Regexp.ptr.prototype.doMatch = function(r, b, s) { + var _r, b, r, re, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; r = $f.r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute(r, b, s, 0, 0, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return !(_r === sliceType$3.nil); + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doMatch }; } $f._r = _r; $f.b = b; $f.r = r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.doMatch = function(r, b, s) { return this.$val.doMatch(r, b, s); }; + Regexp.ptr.prototype.doExecute = function(r, b, s, pos, ncap, dstCap) { + var _r, _r$1, _r$2, _r$3, _tuple, b, dstCap, i, m, ncap, pos, r, re, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; b = $f.b; dstCap = $f.dstCap; i = $f.i; m = $f.m; ncap = $f.ncap; pos = $f.pos; r = $f.r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + if (dstCap === sliceType$3.nil) { + dstCap = $subslice(new sliceType$3(arrayNoInts), 0, 0, 0); + } + /* */ if (!(re.onepass === ptrType$6.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(re.onepass === ptrType$6.nil)) { */ case 1: + _r = re.doOnePass(r, b, s, pos, ncap, dstCap); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + /* */ if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.maxBitStateLen) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.maxBitStateLen) { */ case 4: + _r$1 = re.backtrack(b, s, pos, ncap, dstCap); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* } */ case 5: + _r$2 = re.get(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + m = _r$2; + _tuple = m.inputs.init(r, b, s); + i = _tuple[0]; + m.init(ncap); + _r$3 = m.match(i, pos); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!_r$3) { */ case 8: + re.put(m); + $s = -1; return sliceType$3.nil; + /* } */ case 9: + dstCap = $appendSlice(dstCap, m.matchcap); + re.put(m); + $s = -1; return dstCap; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doExecute }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.b = b; $f.dstCap = dstCap; $f.i = i; $f.m = m; $f.ncap = ncap; $f.pos = pos; $f.r = r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.doExecute = function(r, b, s, pos, ncap, dstCap) { return this.$val.doExecute(r, b, s, pos, ncap, dstCap); }; + onePassPrefix = function(p) { + var _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, buf, complete, i, p, pc, prefix, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + prefix = ""; + complete = false; + pc = 0; + i = (x = p.Inst, x$1 = p.Start, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (!((i.Op === 3)) || ((((((i.Arg << 24 >>> 24))) & 4) >>> 0) === 0)) { + _tmp = ""; + _tmp$1 = i.Op === 4; + _tmp$2 = ((p.Start >>> 0)); + prefix = _tmp; + complete = _tmp$1; + pc = _tmp$2; + return [prefix, complete, pc]; + } + pc = i.Out; + i = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pc])); + while (true) { + if (!(i.Op === 6)) { break; } + pc = i.Out; + i = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc])); + } + if (!((iop(i) === 7)) || !((i.Rune.$length === 1))) { + _tmp$3 = ""; + _tmp$4 = i.Op === 4; + _tmp$5 = ((p.Start >>> 0)); + prefix = _tmp$3; + complete = _tmp$4; + pc = _tmp$5; + return [prefix, complete, pc]; + } + buf = new strings.Builder.ptr(ptrType$7.nil, sliceType$5.nil); + while (true) { + if (!((iop(i) === 7) && (i.Rune.$length === 1) && (((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { break; } + buf.WriteRune((x$4 = i.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0]))); + _tmp$6 = i.Out; + _tmp$7 = (x$5 = p.Inst, x$6 = i.Out, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])); + pc = _tmp$6; + i = _tmp$7; + } + if ((i.Op === 3) && !((((((i.Arg << 24 >>> 24)) & 8) >>> 0) === 0)) && ((x$7 = p.Inst, x$8 = i.Out, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8])).Op === 4)) { + complete = true; + } + _tmp$8 = buf.String(); + _tmp$9 = complete; + _tmp$10 = pc; + prefix = _tmp$8; + complete = _tmp$9; + pc = _tmp$10; + return [prefix, complete, pc]; + }; + onePassNext = function(i, r) { + var i, next, r, x; + next = i.Inst.MatchRunePos(r); + if (next >= 0) { + return (x = i.Next, ((next < 0 || next >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + next])); + } + if (i.Inst.Op === 1) { + return i.Inst.Out; + } + return 0; + }; + iop = function(i) { + var _1, i, op; + op = i.Op; + _1 = op; + if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { + op = 7; + } + return op; + }; + queueOnePass.ptr.prototype.empty = function() { + var q; + q = this; + return q.nextIndex >= q.size; + }; + queueOnePass.prototype.empty = function() { return this.$val.empty(); }; + queueOnePass.ptr.prototype.next = function() { + var n, q, x, x$1; + n = 0; + q = this; + n = (x = q.dense, x$1 = q.nextIndex, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + q.nextIndex = q.nextIndex + (1) >>> 0; + return n; + }; + queueOnePass.prototype.next = function() { return this.$val.next(); }; + queueOnePass.ptr.prototype.clear = function() { + var q; + q = this; + q.size = 0; + q.nextIndex = 0; + }; + queueOnePass.prototype.clear = function() { return this.$val.clear(); }; + queueOnePass.ptr.prototype.contains = function(u) { + var q, u, x, x$1, x$2, x$3; + q = this; + if (u >= ((q.sparse.$length >>> 0))) { + return false; + } + return (x = q.sparse, ((u < 0 || u >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + u])) < q.size && ((x$1 = q.dense, x$2 = (x$3 = q.sparse, ((u < 0 || u >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + u])), ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === u); + }; + queueOnePass.prototype.contains = function(u) { return this.$val.contains(u); }; + queueOnePass.ptr.prototype.insert = function(u) { + var q, u; + q = this; + if (!q.contains(u)) { + q.insertNew(u); + } + }; + queueOnePass.prototype.insert = function(u) { return this.$val.insert(u); }; + queueOnePass.ptr.prototype.insertNew = function(u) { + var q, u, x, x$1, x$2; + q = this; + if (u >= ((q.sparse.$length >>> 0))) { + return; + } + (x = q.sparse, ((u < 0 || u >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + u] = q.size)); + (x$1 = q.dense, x$2 = q.size, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = u)); + q.size = q.size + (1) >>> 0; + }; + queueOnePass.prototype.insertNew = function(u) { return this.$val.insertNew(u); }; + newQueue = function(size) { + var q, size; + q = ptrType$8.nil; + q = new queueOnePass.ptr($makeSlice(sliceType$2, size), $makeSlice(sliceType$2, size), 0, 0); + return q; + }; + mergeRuneSets = function(leftRunes, rightRunes, leftPC, rightPC) { + var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, extend, ix, leftLen, leftPC, leftRunes, lx, merged, next, ok, rightLen, rightPC, rightRunes, rx, x, x$1, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; extend = $f.extend; ix = $f.ix; leftLen = $f.leftLen; leftPC = $f.leftPC; leftRunes = $f.leftRunes; lx = $f.lx; merged = $f.merged; next = $f.next; ok = $f.ok; rightLen = $f.rightLen; rightPC = $f.rightPC; rightRunes = $f.rightRunes; rx = $f.rx; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + ix = [ix]; + lx = [lx]; + merged = [merged]; + next = [next]; + ok = [ok]; + rx = [rx]; + leftLen = leftRunes.$get().$length; + rightLen = rightRunes.$get().$length; + if (!(((leftLen & 1) === 0)) || !(((rightLen & 1) === 0))) { + $panic(new $String("mergeRuneSets odd length []rune")); + } + _tmp = 0; + _tmp$1 = 0; + lx[0] = _tmp; + rx[0] = _tmp$1; + merged[0] = $makeSlice(sliceType$1, 0); + next[0] = $makeSlice(sliceType$2, 0); + ok[0] = true; + $deferred.push([(function(ix, lx, merged, next, ok, rx) { return function() { + if (!ok[0]) { + merged[0] = sliceType$1.nil; + next[0] = sliceType$2.nil; + } + }; })(ix, lx, merged, next, ok, rx), []]); + ix[0] = -1; + extend = (function(ix, lx, merged, next, ok, rx) { return function(newLow, newArray, pc) { + var newArray, newLow, pc, x, x$1, x$2, x$3, x$4, x$5; + if (ix[0] > 0 && (x = newArray.$get(), x$1 = newLow.$get(), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) <= ((ix[0] < 0 || ix[0] >= merged[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : merged[0].$array[merged[0].$offset + ix[0]])) { + return false; + } + merged[0] = $append(merged[0], (x$2 = newArray.$get(), x$3 = newLow.$get(), ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])), (x$4 = newArray.$get(), x$5 = newLow.$get() + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]))); + newLow.$set(newLow.$get() + (2) >> 0); + ix[0] = ix[0] + (2) >> 0; + next[0] = $append(next[0], pc); + return true; + }; })(ix, lx, merged, next, ok, rx); + /* while (true) { */ case 1: + /* if (!(lx[0] < leftLen || rx[0] < rightLen)) { break; } */ if(!(lx[0] < leftLen || rx[0] < rightLen)) { $s = 2; continue; } + /* */ if (rx[0] >= rightLen) { $s = 4; continue; } + /* */ if (lx[0] >= leftLen) { $s = 5; continue; } + /* */ if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + lx[0]]))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (rx[0] >= rightLen) { */ case 4: + _r = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ok[0] = _r; + $s = 8; continue; + /* } else if (lx[0] >= leftLen) { */ case 5: + _r$1 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ok[0] = _r$1; + $s = 8; continue; + /* } else if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + lx[0]]))) { */ case 6: + _r$2 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ok[0] = _r$2; + $s = 8; continue; + /* } else { */ case 7: + _r$3 = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ok[0] = _r$3; + /* } */ case 8: + case 3: + if (!ok[0]) { + $s = -1; return [noRune, noNext]; + } + /* } */ $s = 1; continue; case 2: + $s = -1; return [merged[0], next[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, sliceType$2.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mergeRuneSets }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.extend = extend; $f.ix = ix; $f.leftLen = leftLen; $f.leftPC = leftPC; $f.leftRunes = leftRunes; $f.lx = lx; $f.merged = merged; $f.next = next; $f.ok = ok; $f.rightLen = rightLen; $f.rightPC = rightPC; $f.rightRunes = rightRunes; $f.rx = rx; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + cleanupOnePass = function(prog, original) { + var _1, _i, _ref, instOriginal, ix, original, prog, x, x$1, x$2; + _ref = original.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ix = _i; + instOriginal = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); + _1 = instOriginal.Op; + if ((_1 === (0)) || (_1 === (1)) || (_1 === (7))) { + } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (6)) || (_1 === (4)) || (_1 === (5))) { + (x = prog.Inst, ((ix < 0 || ix >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + ix])).Next = sliceType$2.nil; + } else if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { + (x$1 = prog.Inst, ((ix < 0 || ix >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + ix])).Next = sliceType$2.nil; + onePassInst.copy((x$2 = prog.Inst, ((ix < 0 || ix >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + ix])), new onePassInst.ptr($clone(instOriginal, syntax.Inst), sliceType$2.nil)); + } + _i++; + } + }; + onePassCopy = function(prog) { + var _1, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, i, inst, instAlt, instOther, p, p_A_Alt, p_A_Other, p_B_Alt, p_B_Other, patch, pc, prog, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + p = new onePassProg.ptr($makeSlice(sliceType$6, prog.Inst.$length), prog.Start, prog.NumCap); + _ref = prog.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); + onePassInst.copy((x = p.Inst, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), new onePassInst.ptr($clone(inst, syntax.Inst), sliceType$2.nil)); + _i++; + } + _ref$1 = p.Inst; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + pc = _i$1; + _1 = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])).Inst.Op; + if ((_1 === (0)) || (_1 === (1))) { + p_A_Other = (x$2 = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc])), (x$2.$ptr_Out || (x$2.$ptr_Out = new ptrType$9(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$2)))); + p_A_Alt = (x$4 = (x$5 = p.Inst, ((pc < 0 || pc >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + pc])), (x$4.$ptr_Arg || (x$4.$ptr_Arg = new ptrType$9(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$4)))); + instAlt = $clone((x$6 = p.Inst, x$7 = p_A_Alt.$get(), ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])), onePassInst); + if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { + _tmp = p_A_Other; + _tmp$1 = p_A_Alt; + p_A_Alt = _tmp; + p_A_Other = _tmp$1; + onePassInst.copy(instAlt, (x$8 = p.Inst, x$9 = p_A_Alt.$get(), ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9]))); + if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { + _i$1++; + continue; + } + } + instOther = $clone((x$10 = p.Inst, x$11 = p_A_Other.$get(), ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11])), onePassInst); + if ((instOther.Inst.Op === 0) || (instOther.Inst.Op === 1)) { + _i$1++; + continue; + } + p_B_Alt = (x$12 = (x$13 = p.Inst, x$14 = p_A_Alt.$get(), ((x$14 < 0 || x$14 >= x$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + x$14])), (x$12.$ptr_Out || (x$12.$ptr_Out = new ptrType$9(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$12)))); + p_B_Other = (x$15 = (x$16 = p.Inst, x$17 = p_A_Alt.$get(), ((x$17 < 0 || x$17 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + x$17])), (x$15.$ptr_Arg || (x$15.$ptr_Arg = new ptrType$9(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$15)))); + patch = false; + if (instAlt.Inst.Out === ((pc >>> 0))) { + patch = true; + } else if (instAlt.Inst.Arg === ((pc >>> 0))) { + patch = true; + _tmp$2 = p_B_Other; + _tmp$3 = p_B_Alt; + p_B_Alt = _tmp$2; + p_B_Other = _tmp$3; + } + if (patch) { + p_B_Alt.$set(p_A_Other.$get()); + } + if (p_A_Other.$get() === p_B_Alt.$get()) { + p_A_Alt.$set(p_B_Other.$get()); + } + } else { + _i$1++; + continue; + } + _i$1++; + } + return p; + }; + runeSlice.prototype.Len = function() { + var p; + p = this; + return p.$length; + }; + $ptrType(runeSlice).prototype.Len = function() { return this.$get().Len(); }; + runeSlice.prototype.Less = function(i, j) { + var i, j, p; + p = this; + return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + }; + $ptrType(runeSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; + runeSlice.prototype.Swap = function(i, j) { + var _tmp, _tmp$1, i, j, p; + p = this; + _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + _tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); + ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1); + }; + $ptrType(runeSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; + makeOnePass = function(p) { + var _i, _r, _ref, check, i, instQueue, m, onePassRunes, p, pc, visitQueue, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; check = $f.check; i = $f.i; instQueue = $f.instQueue; m = $f.m; onePassRunes = $f.onePassRunes; p = $f.p; pc = $f.pc; visitQueue = $f.visitQueue; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + check = [check]; + instQueue = [instQueue]; + onePassRunes = [onePassRunes]; + p = [p]; + visitQueue = [visitQueue]; + if (p[0].Inst.$length >= 1000) { + $s = -1; return ptrType$6.nil; + } + instQueue[0] = newQueue(p[0].Inst.$length); + visitQueue[0] = newQueue(p[0].Inst.$length); + check[0] = $throwNilPointerError; + onePassRunes[0] = $makeSlice(sliceType$7, p[0].Inst.$length); + check[0] = (function(check, instQueue, onePassRunes, p, visitQueue) { return function $b(pc, m) { + var _1, _i, _i$1, _i$2, _i$3, _i$4, _q, _q$1, _q$2, _q$3, _q$4, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _v, i, i$1, i$2, i$3, i$4, inst, m, matchArg, matchOut, ok, pc, r0, r0$1, r1, r1$1, runes, runes$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _q$4 = $f._q$4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _v = $f._v; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; inst = $f.inst; m = $f.m; matchArg = $f.matchArg; matchOut = $f.matchOut; ok = $f.ok; pc = $f.pc; r0 = $f.r0; r0$1 = $f.r0$1; r1 = $f.r1; r1$1 = $f.r1$1; runes = $f.runes; runes$1 = $f.runes$1; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + ok = false; + ok = true; + inst = (x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + if (visitQueue[0].contains(pc)) { + $s = -1; return ok; + } + visitQueue[0].insert(pc); + _1 = inst.Inst.Op; + /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 2; continue; } + /* */ if ((_1 === (2)) || (_1 === (6))) { $s = 3; continue; } + /* */ if (_1 === (3)) { $s = 4; continue; } + /* */ if ((_1 === (4)) || (_1 === (5))) { $s = 5; continue; } + /* */ if (_1 === (7)) { $s = 6; continue; } + /* */ if (_1 === (8)) { $s = 7; continue; } + /* */ if (_1 === (9)) { $s = 8; continue; } + /* */ if (_1 === (10)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ((_1 === (0)) || (_1 === (1))) { */ case 2: + _r = check[0](inst.Inst.Out, m); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + if (!(_r)) { _v = false; $s = 11; continue s; } + _r$1 = check[0](inst.Inst.Arg, m); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 11: + ok = _v; + matchOut = (x$1 = inst.Inst.Out, ((x$1 < 0 || x$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$1])); + matchArg = (x$2 = inst.Inst.Arg, ((x$2 < 0 || x$2 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$2])); + if (matchOut && matchArg) { + ok = false; + /* break; */ $s = 1; continue; + } + if (matchArg) { + _tmp = inst.Inst.Arg; + _tmp$1 = inst.Inst.Out; + inst.Inst.Out = _tmp; + inst.Inst.Arg = _tmp$1; + _tmp$2 = matchArg; + _tmp$3 = matchOut; + matchOut = _tmp$2; + matchArg = _tmp$3; + } + if (matchOut) { + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = true); + inst.Inst.Op = 1; + } + _r$2 = mergeRuneSets($indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Out, ptrType$10), $indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Arg, ptrType$10), inst.Inst.Out, inst.Inst.Arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = _tuple[0]); + inst.Next = _tuple[1]; + if (inst.Next.$length > 0 && ((x$3 = inst.Next, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) === 4294967295)) { + ok = false; + /* break; */ $s = 1; continue; + } + $s = 10; continue; + /* } else if ((_1 === (2)) || (_1 === (6))) { */ case 3: + _r$3 = check[0](inst.Inst.Out, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ok = _r$3; + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (x$4 = inst.Inst.Out, ((x$4 < 0 || x$4 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$4]))); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$5 = inst.Inst.Out, ((x$5 < 0 || x$5 >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + x$5])))); + inst.Next = $makeSlice(sliceType$2, ((_q = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref = inst.Next; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x$6 = inst.Next, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = inst.Inst.Out)); + _i++; + } + $s = 10; continue; + /* } else if (_1 === (3)) { */ case 4: + _r$4 = check[0](inst.Inst.Out, m); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ok = _r$4; + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (x$7 = inst.Inst.Out, ((x$7 < 0 || x$7 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$7]))); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$8 = inst.Inst.Out, ((x$8 < 0 || x$8 >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + x$8])))); + inst.Next = $makeSlice(sliceType$2, ((_q$1 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$1 = inst.Next; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + (x$9 = inst.Next, ((i$1 < 0 || i$1 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i$1] = inst.Inst.Out)); + _i$1++; + } + $s = 10; continue; + /* } else if ((_1 === (4)) || (_1 === (5))) { */ case 5: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (inst.Inst.Op === 4)); + $s = 10; continue; + /* } else if (_1 === (7)) { */ case 6: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + if (inst.Inst.Rune.$length === 0) { + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = new sliceType$1([])); + inst.Next = new sliceType$2([inst.Inst.Out]); + /* break; */ $s = 1; continue; + } + runes = $makeSlice(sliceType$1, 0); + /* */ if ((inst.Inst.Rune.$length === 1) && !((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if ((inst.Inst.Rune.$length === 1) && !((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { */ case 17: + r0 = (x$10 = inst.Inst.Rune, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])); + runes = $append(runes, r0, r0); + r1 = unicode.SimpleFold(r0); + while (true) { + if (!(!((r1 === r0)))) { break; } + runes = $append(runes, r1, r1); + r1 = unicode.SimpleFold(r1); + } + $r = sort.Sort(($subslice(new runeSlice(runes.$array), runes.$offset, runes.$offset + runes.$length))); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else { */ case 18: + runes = $appendSlice(runes, inst.Inst.Rune); + /* } */ case 19: + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes); + inst.Next = $makeSlice(sliceType$2, ((_q$2 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$2 = inst.Next; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + (x$11 = inst.Next, ((i$2 < 0 || i$2 >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + i$2] = inst.Inst.Out)); + _i$2++; + } + inst.Inst.Op = 7; + $s = 10; continue; + /* } else if (_1 === (8)) { */ case 7: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + runes$1 = new sliceType$1([]); + /* */ if (!((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { */ case 21: + r0$1 = (x$12 = inst.Inst.Rune, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0])); + runes$1 = $append(runes$1, r0$1, r0$1); + r1$1 = unicode.SimpleFold(r0$1); + while (true) { + if (!(!((r1$1 === r0$1)))) { break; } + runes$1 = $append(runes$1, r1$1, r1$1); + r1$1 = unicode.SimpleFold(r1$1); + } + $r = sort.Sort(($subslice(new runeSlice(runes$1.$array), runes$1.$offset, runes$1.$offset + runes$1.$length))); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 23; continue; + /* } else { */ case 22: + runes$1 = $append(runes$1, (x$13 = inst.Inst.Rune, (0 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 0])), (x$14 = inst.Inst.Rune, (0 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 0]))); + /* } */ case 23: + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes$1); + inst.Next = $makeSlice(sliceType$2, ((_q$3 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$3 = inst.Next; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + i$3 = _i$3; + (x$15 = inst.Next, ((i$3 < 0 || i$3 >= x$15.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + i$3] = inst.Inst.Out)); + _i$3++; + } + inst.Inst.Op = 7; + $s = 10; continue; + /* } else if (_1 === (9)) { */ case 8: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRune)); + inst.Next = new sliceType$2([inst.Inst.Out]); + $s = 10; continue; + /* } else if (_1 === (10)) { */ case 9: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRuneNotNL)); + inst.Next = $makeSlice(sliceType$2, ((_q$4 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$4 = inst.Next; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$4.$length)) { break; } + i$4 = _i$4; + (x$16 = inst.Next, ((i$4 < 0 || i$4 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + i$4] = inst.Inst.Out)); + _i$4++; + } + /* } */ case 10: + case 1: + $s = -1; return ok; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._q$4 = _q$4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._v = _v; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.inst = inst; $f.m = m; $f.matchArg = matchArg; $f.matchOut = matchOut; $f.ok = ok; $f.pc = pc; $f.r0 = r0; $f.r0$1 = r0$1; $f.r1 = r1; $f.r1$1 = r1$1; $f.runes = runes; $f.runes$1 = runes$1; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; + }; })(check, instQueue, onePassRunes, p, visitQueue); + instQueue[0].clear(); + instQueue[0].insert(((p[0].Start >>> 0))); + m = $makeSlice(sliceType$8, p[0].Inst.$length); + /* while (true) { */ case 1: + /* if (!(!instQueue[0].empty())) { break; } */ if(!(!instQueue[0].empty())) { $s = 2; continue; } + visitQueue[0].clear(); + pc = instQueue[0].next(); + _r = check[0](pc, m); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + p[0] = ptrType$6.nil; + /* break; */ $s = 2; continue; + /* } */ case 4: + /* } */ $s = 1; continue; case 2: + if (!(p[0] === ptrType$6.nil)) { + _ref = p[0].Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = p[0].Inst, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).Inst.Rune = ((i < 0 || i >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + i]); + _i++; + } + } + $s = -1; return p[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: makeOnePass }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.check = check; $f.i = i; $f.instQueue = instQueue; $f.m = m; $f.onePassRunes = onePassRunes; $f.p = p; $f.pc = pc; $f.visitQueue = visitQueue; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + compileOnePass = function(prog) { + var _1, _i, _r, _ref, inst, opOut, p, prog, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _ref = $f._ref; inst = $f.inst; opOut = $f.opOut; p = $f.p; prog = $f.prog; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + p = ptrType$6.nil; + if (prog.Start === 0) { + p = ptrType$6.nil; + $s = -1; return p; + } + if (!(((x = prog.Inst, x$1 = prog.Start, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op === 3)) || !(((((((x$2 = prog.Inst, x$3 = prog.Start, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])).Arg << 24 >>> 24)) & 4) >>> 0) === 4))) { + p = ptrType$6.nil; + $s = -1; return p; + } + _ref = prog.Inst; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); + opOut = (x$4 = prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).Op; + _1 = inst.Op; + if ((_1 === (0)) || (_1 === (1))) { + if ((opOut === 4) || ((x$6 = prog.Inst, x$7 = inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])).Op === 4)) { + p = ptrType$6.nil; + $s = -1; return p; + } + } else if (_1 === (3)) { + if (opOut === 4) { + if (((((inst.Arg << 24 >>> 24)) & 8) >>> 0) === 8) { + _i++; + /* continue; */ $s = 1; continue; + } + p = ptrType$6.nil; + $s = -1; return p; + } + } else if (opOut === 4) { + p = ptrType$6.nil; + $s = -1; return p; + } + _i++; + /* } */ $s = 1; continue; case 2: + p = onePassCopy(prog); + _r = makeOnePass(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + if (!(p === ptrType$6.nil)) { + cleanupOnePass(p, prog); + } + p = p; + $s = -1; return p; + /* */ } return; } if ($f === undefined) { $f = { $blk: compileOnePass }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.inst = inst; $f.opOut = opOut; $f.p = p; $f.prog = prog; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.ptr.prototype.String = function() { + var re; + re = this; + return re.expr; + }; + Regexp.prototype.String = function() { return this.$val.String(); }; + Regexp.ptr.prototype.Copy = function() { + var re, re2; + re = this; + re2 = $clone(re, Regexp); + return re2; + }; + Regexp.prototype.Copy = function() { return this.$val.Copy(); }; + Compile = function(expr) { + var _r, expr, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; expr = $f.expr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = compile(expr, 212, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Compile }; } $f._r = _r; $f.expr = expr; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Compile = Compile; + Regexp.ptr.prototype.Longest = function() { + var re; + re = this; + re.longest = true; + }; + Regexp.prototype.Longest = function() { return this.$val.Longest(); }; + compile = function(expr, mode, longest) { + var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, capNames, err, expr, i, longest, matchcap, maxCap, mode, n, prog, re, regexp, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; capNames = $f.capNames; err = $f.err; expr = $f.expr; i = $f.i; longest = $f.longest; matchcap = $f.matchcap; maxCap = $f.maxCap; mode = $f.mode; n = $f.n; prog = $f.prog; re = $f.re; regexp = $f.regexp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = syntax.Parse(expr, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + re = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$11.nil, err]; + } + maxCap = re.MaxCap(); + capNames = re.CapNames(); + re = re.Simplify(); + _tuple$1 = syntax.Compile(re); + prog = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$11.nil, err]; + } + matchcap = prog.NumCap; + if (matchcap < 2) { + matchcap = 2; + } + _r$1 = compileOnePass(prog); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + regexp = new Regexp.ptr(expr, prog, _r$1, maxCap, 0, capNames, "", sliceType$5.nil, 0, 0, 0, matchcap, false, prog.StartCond(), longest); + if (regexp.onepass === ptrType$6.nil) { + _tuple$2 = prog.Prefix(); + regexp.prefix = _tuple$2[0]; + regexp.prefixComplete = _tuple$2[1]; + regexp.maxBitStateLen = maxBitStateLen(prog); + } else { + _tuple$3 = onePassPrefix(prog); + regexp.prefix = _tuple$3[0]; + regexp.prefixComplete = _tuple$3[1]; + regexp.prefixEnd = _tuple$3[2]; + } + if (!(regexp.prefix === "")) { + regexp.prefixBytes = (new sliceType$5($stringToBytes(regexp.prefix))); + _tuple$4 = utf8.DecodeRuneInString(regexp.prefix); + regexp.prefixRune = _tuple$4[0]; + } + n = prog.Inst.$length; + i = 0; + while (true) { + if (!(!((((i < 0 || i >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[i]) === 0)) && ((i < 0 || i >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[i]) < n)) { break; } + i = i + (1) >> 0; + } + regexp.mpool = i; + $s = -1; return [regexp, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: compile }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.capNames = capNames; $f.err = err; $f.expr = expr; $f.i = i; $f.longest = longest; $f.matchcap = matchcap; $f.maxCap = maxCap; $f.mode = mode; $f.n = n; $f.prog = prog; $f.re = re; $f.regexp = regexp; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.ptr.prototype.get = function() { + var _i, _r, _ref, _tuple, m, n, ok, re, t, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; m = $f.m; n = $f.n; ok = $f.ok; re = $f.re; t = $f.t; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = (x = re.mpool, ((x < 0 || x >= matchPool.length) ? ($throwRuntimeError("index out of range"), undefined) : matchPool[x])).Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$13, true); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = new machine.ptr(ptrType$11.nil, ptrType$12.nil, new queue.ptr(sliceType$2.nil, sliceType$10.nil), new queue.ptr(sliceType$2.nil, sliceType$10.nil), sliceType$11.nil, false, sliceType$3.nil, new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0))); + } + m.re = re; + m.p = re.prog; + if (m.matchcap.$capacity < re.matchcap) { + m.matchcap = $makeSlice(sliceType$3, re.matchcap); + _ref = m.pool; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + t.cap = $makeSlice(sliceType$3, re.matchcap); + _i++; + } + } + n = (x$1 = re.mpool, ((x$1 < 0 || x$1 >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[x$1])); + if (n === 0) { + n = re.prog.Inst.$length; + } + if (m.q0.sparse.$length < n) { + queue.copy(m.q0, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$10, 0, n))); + queue.copy(m.q1, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$10, 0, n))); + } + $s = -1; return m; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.get }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.m = m; $f.n = n; $f.ok = ok; $f.re = re; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.get = function() { return this.$val.get(); }; + Regexp.ptr.prototype.put = function(m) { + var m, re, x; + re = this; + m.re = ptrType$11.nil; + m.p = ptrType$12.nil; + m.inputs.clear(); + (x = re.mpool, ((x < 0 || x >= matchPool.length) ? ($throwRuntimeError("index out of range"), undefined) : matchPool[x])).Put(m); + }; + Regexp.prototype.put = function(m) { return this.$val.put(m); }; + MustCompile = function(str) { + var _r, _r$1, _tuple, err, regexp, str, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; regexp = $f.regexp; str = $f.str; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = Compile(str); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + regexp = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$1 = err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String("regexp: Compile(" + quote(str) + "): " + _r$1)); + /* } */ case 3: + $s = -1; return regexp; + /* */ } return; } if ($f === undefined) { $f = { $blk: MustCompile }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.regexp = regexp; $f.str = str; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.MustCompile = MustCompile; + quote = function(s) { + var s; + if (strconv.CanBackquote(s)) { + return "`" + s + "`"; + } + return strconv.Quote(s); + }; + Regexp.ptr.prototype.NumSubexp = function() { + var re; + re = this; + return re.numSubexp; + }; + Regexp.prototype.NumSubexp = function() { return this.$val.NumSubexp(); }; + Regexp.ptr.prototype.SubexpNames = function() { + var re; + re = this; + return re.subexpNames; + }; + Regexp.prototype.SubexpNames = function() { return this.$val.SubexpNames(); }; + inputString.ptr.prototype.step = function(pos) { + var c, i, pos; + i = this; + if (pos < i.str.length) { + c = i.str.charCodeAt(pos); + if (c < 128) { + return [((c >> 0)), 1]; + } + return utf8.DecodeRuneInString($substring(i.str, pos)); + } + return [-1, 0]; + }; + inputString.prototype.step = function(pos) { return this.$val.step(pos); }; + inputString.ptr.prototype.canCheckPrefix = function() { + var i; + i = this; + return true; + }; + inputString.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; + inputString.ptr.prototype.hasPrefix = function(re) { + var i, re; + i = this; + return strings.HasPrefix(i.str, re.prefix); + }; + inputString.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; + inputString.ptr.prototype.index = function(re, pos) { + var i, pos, re; + i = this; + return strings.Index($substring(i.str, pos), re.prefix); + }; + inputString.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; + inputString.ptr.prototype.context = function(pos) { + var _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2; + i = this; + _tmp = -1; + _tmp$1 = -1; + r1 = _tmp; + r2 = _tmp$1; + if ((((pos - 1 >> 0) >>> 0)) < ((i.str.length >>> 0))) { + r1 = ((i.str.charCodeAt((pos - 1 >> 0)) >> 0)); + if (r1 >= 128) { + _tuple = utf8.DecodeLastRuneInString($substring(i.str, 0, pos)); + r1 = _tuple[0]; + } + } + if (((pos >>> 0)) < ((i.str.length >>> 0))) { + r2 = ((i.str.charCodeAt(pos) >> 0)); + if (r2 >= 128) { + _tuple$1 = utf8.DecodeRuneInString($substring(i.str, pos)); + r2 = _tuple$1[0]; + } + } + return newLazyFlag(r1, r2); + }; + inputString.prototype.context = function(pos) { return this.$val.context(pos); }; + inputBytes.ptr.prototype.step = function(pos) { + var c, i, pos, x; + i = this; + if (pos < i.str.$length) { + c = (x = i.str, ((pos < 0 || pos >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pos])); + if (c < 128) { + return [((c >> 0)), 1]; + } + return utf8.DecodeRune($subslice(i.str, pos)); + } + return [-1, 0]; + }; + inputBytes.prototype.step = function(pos) { return this.$val.step(pos); }; + inputBytes.ptr.prototype.canCheckPrefix = function() { + var i; + i = this; + return true; + }; + inputBytes.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; + inputBytes.ptr.prototype.hasPrefix = function(re) { + var i, re; + i = this; + return bytes.HasPrefix(i.str, re.prefixBytes); + }; + inputBytes.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; + inputBytes.ptr.prototype.index = function(re, pos) { + var i, pos, re; + i = this; + return bytes.Index($subslice(i.str, pos), re.prefixBytes); + }; + inputBytes.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; + inputBytes.ptr.prototype.context = function(pos) { + var _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2, x, x$1, x$2; + i = this; + _tmp = -1; + _tmp$1 = -1; + r1 = _tmp; + r2 = _tmp$1; + if ((((pos - 1 >> 0) >>> 0)) < ((i.str.$length >>> 0))) { + r1 = (((x = i.str, x$1 = pos - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0)); + if (r1 >= 128) { + _tuple = utf8.DecodeLastRune($subslice(i.str, 0, pos)); + r1 = _tuple[0]; + } + } + if (((pos >>> 0)) < ((i.str.$length >>> 0))) { + r2 = (((x$2 = i.str, ((pos < 0 || pos >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pos])) >> 0)); + if (r2 >= 128) { + _tuple$1 = utf8.DecodeRune($subslice(i.str, pos)); + r2 = _tuple$1[0]; + } + } + return newLazyFlag(r1, r2); + }; + inputBytes.prototype.context = function(pos) { return this.$val.context(pos); }; + inputReader.ptr.prototype.step = function(pos) { + var _r, _tuple, err, i, pos, r, w, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; i = $f.i; pos = $f.pos; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + i = this; + if (!i.atEOT && !((pos === i.pos))) { + $s = -1; return [-1, 0]; + } + _r = i.r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + w = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + i.atEOT = true; + $s = -1; return [-1, 0]; + } + i.pos = i.pos + (w) >> 0; + $s = -1; return [r, w]; + /* */ } return; } if ($f === undefined) { $f = { $blk: inputReader.ptr.prototype.step }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.i = i; $f.pos = pos; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; + }; + inputReader.prototype.step = function(pos) { return this.$val.step(pos); }; + inputReader.ptr.prototype.canCheckPrefix = function() { + var i; + i = this; + return false; + }; + inputReader.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; + inputReader.ptr.prototype.hasPrefix = function(re) { + var i, re; + i = this; + return false; + }; + inputReader.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; + inputReader.ptr.prototype.index = function(re, pos) { + var i, pos, re; + i = this; + return -1; + }; + inputReader.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; + inputReader.ptr.prototype.context = function(pos) { + var i, pos; + i = this; + return new lazyFlag(0, 0); + }; + inputReader.prototype.context = function(pos) { return this.$val.context(pos); }; + Regexp.ptr.prototype.LiteralPrefix = function() { + var _tmp, _tmp$1, complete, prefix, re; + prefix = ""; + complete = false; + re = this; + _tmp = re.prefix; + _tmp$1 = re.prefixComplete; + prefix = _tmp; + complete = _tmp$1; + return [prefix, complete]; + }; + Regexp.prototype.LiteralPrefix = function() { return this.$val.LiteralPrefix(); }; + Regexp.ptr.prototype.MatchReader = function(r) { + var _r, r, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doMatch(r, sliceType$5.nil, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchReader }; } $f._r = _r; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.MatchReader = function(r) { return this.$val.MatchReader(r); }; + Regexp.ptr.prototype.MatchString = function(s) { + var _r, re, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doMatch($ifaceNil, sliceType$5.nil, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchString }; } $f._r = _r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.MatchString = function(s) { return this.$val.MatchString(s); }; + Regexp.ptr.prototype.Match = function(b) { + var _r, b, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doMatch($ifaceNil, b, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Match }; } $f._r = _r; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.Match = function(b) { return this.$val.Match(b); }; + Regexp.ptr.prototype.ReplaceAllString = function(src, repl) { + var _r, b, n, re, repl, src, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = [re]; + repl = [repl]; + src = [src]; + re[0] = this; + n = 2; + if (strings.Contains(repl[0], "$")) { + n = $imul(2, ((re[0].numSubexp + 1 >> 0))); + } + _r = re[0].replaceAll(sliceType$5.nil, src[0], n, (function(re, repl, src) { return function(dst, match) { + var dst, match; + return re[0].expand(dst, repl[0], sliceType$5.nil, src[0], match); + }; })(re, repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return ($bytesToString(b)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllString }; } $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.ReplaceAllString = function(src, repl) { return this.$val.ReplaceAllString(src, repl); }; + Regexp.ptr.prototype.ReplaceAllLiteralString = function(src, repl) { + var _r, re, repl, src, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + repl = [repl]; + re = this; + _r = re.replaceAll(sliceType$5.nil, src, 2, (function(repl) { return function(dst, match) { + var dst, match; + return $appendSlice(dst, repl[0]); + }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return ($bytesToString(_r)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteralString }; } $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.ReplaceAllLiteralString = function(src, repl) { return this.$val.ReplaceAllLiteralString(src, repl); }; + Regexp.ptr.prototype.ReplaceAllStringFunc = function(src, repl) { + var _r, b, re, repl, src, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + repl = [repl]; + src = [src]; + re = this; + _r = re.replaceAll(sliceType$5.nil, src[0], 2, (function(repl, src) { return function $b(dst, match) { + var _arg, _arg$1, _r, dst, match, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; dst = $f.dst; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = dst; + _r = repl[0]($substring(src[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $s = -1; return $appendSlice(_arg, _arg$1); + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f; + }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return ($bytesToString(b)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllStringFunc }; } $f._r = _r; $f.b = b; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.ReplaceAllStringFunc = function(src, repl) { return this.$val.ReplaceAllStringFunc(src, repl); }; + Regexp.ptr.prototype.replaceAll = function(bsrc, src, nmatch, repl) { + var _r, _r$1, _tuple, _tuple$1, a, bsrc, buf, dstCap, endPos, lastMatchEnd, nmatch, re, repl, searchPos, src, width, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; bsrc = $f.bsrc; buf = $f.buf; dstCap = $f.dstCap; endPos = $f.endPos; lastMatchEnd = $f.lastMatchEnd; nmatch = $f.nmatch; re = $f.re; repl = $f.repl; searchPos = $f.searchPos; src = $f.src; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + lastMatchEnd = 0; + searchPos = 0; + buf = sliceType$5.nil; + endPos = 0; + if (!(bsrc === sliceType$5.nil)) { + endPos = bsrc.$length; + } else { + endPos = src.length; + } + if (nmatch > re.prog.NumCap) { + nmatch = re.prog.NumCap; + } + dstCap = arrayType$3.zero(); + /* while (true) { */ case 1: + /* if (!(searchPos <= endPos)) { break; } */ if(!(searchPos <= endPos)) { $s = 2; continue; } + _r = re.doExecute($ifaceNil, bsrc, src, searchPos, nmatch, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a.$length === 0) { + /* break; */ $s = 2; continue; + } + if (!(bsrc === sliceType$5.nil)) { + buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]))); + } else { + buf = $appendSlice(buf, $substring(src, lastMatchEnd, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]))); + } + /* */ if ((1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === 0)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === 0)) { */ case 4: + _r$1 = repl(buf, a); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + buf = _r$1; + /* } */ case 5: + lastMatchEnd = (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]); + width = 0; + if (!(bsrc === sliceType$5.nil)) { + _tuple = utf8.DecodeRune($subslice(bsrc, searchPos)); + width = _tuple[1]; + } else { + _tuple$1 = utf8.DecodeRuneInString($substring(src, searchPos)); + width = _tuple$1[1]; + } + if ((searchPos + width >> 0) > (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])) { + searchPos = searchPos + (width) >> 0; + } else if ((searchPos + 1 >> 0) > (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])) { + searchPos = searchPos + (1) >> 0; + } else { + searchPos = (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]); + } + /* } */ $s = 1; continue; case 2: + if (!(bsrc === sliceType$5.nil)) { + buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd)); + } else { + buf = $appendSlice(buf, $substring(src, lastMatchEnd)); + } + $s = -1; return buf; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.replaceAll }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.bsrc = bsrc; $f.buf = buf; $f.dstCap = dstCap; $f.endPos = endPos; $f.lastMatchEnd = lastMatchEnd; $f.nmatch = nmatch; $f.re = re; $f.repl = repl; $f.searchPos = searchPos; $f.src = src; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.replaceAll = function(bsrc, src, nmatch, repl) { return this.$val.replaceAll(bsrc, src, nmatch, repl); }; + Regexp.ptr.prototype.ReplaceAll = function(src, repl) { + var _r, b, n, re, repl, src, srepl, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; srepl = $f.srepl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = [re]; + repl = [repl]; + src = [src]; + srepl = [srepl]; + re[0] = this; + n = 2; + if (bytes.IndexByte(repl[0], 36) >= 0) { + n = $imul(2, ((re[0].numSubexp + 1 >> 0))); + } + srepl[0] = ""; + _r = re[0].replaceAll(src[0], "", n, (function(re, repl, src, srepl) { return function(dst, match) { + var dst, match; + if (!((srepl[0].length === repl[0].$length))) { + srepl[0] = ($bytesToString(repl[0])); + } + return re[0].expand(dst, srepl[0], src[0], "", match); + }; })(re, repl, src, srepl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return b; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAll }; } $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.srepl = srepl; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.ReplaceAll = function(src, repl) { return this.$val.ReplaceAll(src, repl); }; + Regexp.ptr.prototype.ReplaceAllLiteral = function(src, repl) { + var _r, re, repl, src, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + repl = [repl]; + re = this; + _r = re.replaceAll(src, "", 2, (function(repl) { return function(dst, match) { + var dst, match; + return $appendSlice(dst, repl[0]); + }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteral }; } $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.ReplaceAllLiteral = function(src, repl) { return this.$val.ReplaceAllLiteral(src, repl); }; + Regexp.ptr.prototype.ReplaceAllFunc = function(src, repl) { + var _r, re, repl, src, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + repl = [repl]; + src = [src]; + re = this; + _r = re.replaceAll(src[0], "", 2, (function(repl, src) { return function $b(dst, match) { + var _arg, _arg$1, _r, dst, match, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; dst = $f.dst; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _arg = dst; + _r = repl[0]($subslice(src[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $s = -1; return $appendSlice(_arg, _arg$1); + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f; + }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllFunc }; } $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.ReplaceAllFunc = function(src, repl) { return this.$val.ReplaceAllFunc(src, repl); }; + init = function() { + var _i, _index, _q, _r, _ref, b, y; + _ref = (new sliceType$5($stringToBytes("\\.+*?()|[]{}^$"))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _index = (_r = b % 16, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + ((_index < 0 || _index >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[_index] = ((((_index < 0 || _index >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[_index]) | (((y = ((_q = b / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0)); + _i++; + } + }; + Regexp.ptr.prototype.pad = function(a) { + var a, n, re; + re = this; + if (a === sliceType$3.nil) { + return sliceType$3.nil; + } + n = $imul(((1 + re.numSubexp >> 0)), 2); + while (true) { + if (!(a.$length < n)) { break; } + a = $append(a, -1); + } + return a; + }; + Regexp.prototype.pad = function(a) { return this.$val.pad(a); }; + Regexp.ptr.prototype.allMatches = function(s, b, n, deliver) { + var _r, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, accept, b, deliver, end, i, matches, n, pos, prevMatchEnd, re, s, width, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; accept = $f.accept; b = $f.b; deliver = $f.deliver; end = $f.end; i = $f.i; matches = $f.matches; n = $f.n; pos = $f.pos; prevMatchEnd = $f.prevMatchEnd; re = $f.re; s = $f.s; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + end = 0; + if (b === sliceType$5.nil) { + end = s.length; + } else { + end = b.$length; + } + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = -1; + pos = _tmp; + i = _tmp$1; + prevMatchEnd = _tmp$2; + /* while (true) { */ case 1: + /* if (!(i < n && pos <= end)) { break; } */ if(!(i < n && pos <= end)) { $s = 2; continue; } + _r = re.doExecute($ifaceNil, b, s, pos, re.prog.NumCap, sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + matches = _r; + if (matches.$length === 0) { + /* break; */ $s = 2; continue; + } + accept = true; + if ((1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]) === pos) { + if ((0 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 0]) === prevMatchEnd) { + accept = false; + } + width = 0; + if (b === sliceType$5.nil) { + _tuple = utf8.DecodeRuneInString($substring(s, pos, end)); + width = _tuple[1]; + } else { + _tuple$1 = utf8.DecodeRune($subslice(b, pos, end)); + width = _tuple$1[1]; + } + if (width > 0) { + pos = pos + (width) >> 0; + } else { + pos = end + 1 >> 0; + } + } else { + pos = (1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]); + } + prevMatchEnd = (1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]); + /* */ if (accept) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (accept) { */ case 4: + $r = deliver(re.pad(matches)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + /* } */ case 5: + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.allMatches }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.accept = accept; $f.b = b; $f.deliver = deliver; $f.end = end; $f.i = i; $f.matches = matches; $f.n = n; $f.pos = pos; $f.prevMatchEnd = prevMatchEnd; $f.re = re; $f.s = s; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.allMatches = function(s, b, n, deliver) { return this.$val.allMatches(s, b, n, deliver); }; + Regexp.ptr.prototype.Find = function(b) { + var _r, a, b, dstCap, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; b = $f.b; dstCap = $f.dstCap; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$3.zero(); + _r = re.doExecute($ifaceNil, b, "", 0, 2, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + $s = -1; return sliceType$5.nil; + } + $s = -1; return $subslice(b, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])); + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Find }; } $f._r = _r; $f.a = a; $f.b = b; $f.dstCap = dstCap; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.Find = function(b) { return this.$val.Find(b); }; + Regexp.ptr.prototype.FindIndex = function(b) { + var _r, a, b, loc, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; b = $f.b; loc = $f.loc; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + loc = sliceType$3.nil; + re = this; + _r = re.doExecute($ifaceNil, b, "", 0, 2, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + loc = sliceType$3.nil; + $s = -1; return loc; + } + loc = $subslice(a, 0, 2); + $s = -1; return loc; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindIndex }; } $f._r = _r; $f.a = a; $f.b = b; $f.loc = loc; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindIndex = function(b) { return this.$val.FindIndex(b); }; + Regexp.ptr.prototype.FindString = function(s) { + var _r, a, dstCap, re, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; dstCap = $f.dstCap; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$3.zero(); + _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, 2, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + $s = -1; return ""; + } + $s = -1; return $substring(s, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])); + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindString }; } $f._r = _r; $f.a = a; $f.dstCap = dstCap; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindString = function(s) { return this.$val.FindString(s); }; + Regexp.ptr.prototype.FindStringIndex = function(s) { + var _r, a, loc, re, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; loc = $f.loc; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + loc = sliceType$3.nil; + re = this; + _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, 2, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + loc = sliceType$3.nil; + $s = -1; return loc; + } + loc = $subslice(a, 0, 2); + $s = -1; return loc; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringIndex }; } $f._r = _r; $f.a = a; $f.loc = loc; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindStringIndex = function(s) { return this.$val.FindStringIndex(s); }; + Regexp.ptr.prototype.FindReaderIndex = function(r) { + var _r, a, loc, r, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; loc = $f.loc; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + loc = sliceType$3.nil; + re = this; + _r = re.doExecute(r, sliceType$5.nil, "", 0, 2, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + loc = sliceType$3.nil; + $s = -1; return loc; + } + loc = $subslice(a, 0, 2); + $s = -1; return loc; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderIndex }; } $f._r = _r; $f.a = a; $f.loc = loc; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindReaderIndex = function(r) { return this.$val.FindReaderIndex(r); }; + Regexp.ptr.prototype.FindSubmatch = function(b) { + var _i, _r, _ref, a, b, dstCap, i, re, ret, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; a = $f.a; b = $f.b; dstCap = $f.dstCap; i = $f.i; re = $f.re; ret = $f.ret; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$4.zero(); + _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + $s = -1; return sliceType$12.nil; + } + ret = $makeSlice(sliceType$12, (1 + re.numSubexp >> 0)); + _ref = ret; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + if (($imul(2, i)) < a.$length && (x = $imul(2, i), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])) >= 0) { + ((i < 0 || i >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i] = $subslice(b, (x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$1])), (x$2 = ($imul(2, i)) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$2])))); + } + _i++; + } + $s = -1; return ret; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatch }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.b = b; $f.dstCap = dstCap; $f.i = i; $f.re = re; $f.ret = ret; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindSubmatch = function(b) { return this.$val.FindSubmatch(b); }; + Regexp.ptr.prototype.Expand = function(dst, template, src, match) { + var dst, match, re, src, template; + re = this; + return re.expand(dst, ($bytesToString(template)), src, "", match); + }; + Regexp.prototype.Expand = function(dst, template, src, match) { return this.$val.Expand(dst, template, src, match); }; + Regexp.ptr.prototype.ExpandString = function(dst, template, src, match) { + var dst, match, re, src, template; + re = this; + return re.expand(dst, template, sliceType$5.nil, src, match); + }; + Regexp.prototype.ExpandString = function(dst, template, src, match) { return this.$val.ExpandString(dst, template, src, match); }; + Regexp.ptr.prototype.expand = function(dst, template, bsrc, src, match) { + var _i, _ref, _tuple, bsrc, dst, i, i$1, match, name, namei, num, ok, re, rest, src, template, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + re = this; + while (true) { + if (!(template.length > 0)) { break; } + i = strings.Index(template, "$"); + if (i < 0) { + break; + } + dst = $appendSlice(dst, $substring(template, 0, i)); + template = $substring(template, i); + if (template.length > 1 && (template.charCodeAt(1) === 36)) { + dst = $append(dst, 36); + template = $substring(template, 2); + continue; + } + _tuple = extract(template); + name = _tuple[0]; + num = _tuple[1]; + rest = _tuple[2]; + ok = _tuple[3]; + if (!ok) { + dst = $append(dst, 36); + template = $substring(template, 1); + continue; + } + template = rest; + if (num >= 0) { + if ((($imul(2, num)) + 1 >> 0) < match.$length && (x = $imul(2, num), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { + if (!(bsrc === sliceType$5.nil)) { + dst = $appendSlice(dst, $subslice(bsrc, (x$1 = $imul(2, num), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, num)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); + } else { + dst = $appendSlice(dst, $substring(src, (x$3 = $imul(2, num), ((x$3 < 0 || x$3 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$3])), (x$4 = ($imul(2, num)) + 1 >> 0, ((x$4 < 0 || x$4 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$4])))); + } + } + } else { + _ref = re.subexpNames; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$1 = _i; + namei = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (name === namei && (($imul(2, i$1)) + 1 >> 0) < match.$length && (x$5 = $imul(2, i$1), ((x$5 < 0 || x$5 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$5])) >= 0) { + if (!(bsrc === sliceType$5.nil)) { + dst = $appendSlice(dst, $subslice(bsrc, (x$6 = $imul(2, i$1), ((x$6 < 0 || x$6 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$6])), (x$7 = ($imul(2, i$1)) + 1 >> 0, ((x$7 < 0 || x$7 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$7])))); + } else { + dst = $appendSlice(dst, $substring(src, (x$8 = $imul(2, i$1), ((x$8 < 0 || x$8 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$8])), (x$9 = ($imul(2, i$1)) + 1 >> 0, ((x$9 < 0 || x$9 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$9])))); + } + break; + } + _i++; + } + } + } + dst = $appendSlice(dst, template); + return dst; + }; + Regexp.prototype.expand = function(dst, template, bsrc, src, match) { return this.$val.expand(dst, template, bsrc, src, match); }; + extract = function(str) { + var _tuple, brace, i, i$1, name, num, ok, rest, rune, size, str; + name = ""; + num = 0; + rest = ""; + ok = false; + if (str.length < 2 || !((str.charCodeAt(0) === 36))) { + return [name, num, rest, ok]; + } + brace = false; + if (str.charCodeAt(1) === 123) { + brace = true; + str = $substring(str, 2); + } else { + str = $substring(str, 1); + } + i = 0; + while (true) { + if (!(i < str.length)) { break; } + _tuple = utf8.DecodeRuneInString($substring(str, i)); + rune = _tuple[0]; + size = _tuple[1]; + if (!unicode.IsLetter(rune) && !unicode.IsDigit(rune) && !((rune === 95))) { + break; + } + i = i + (size) >> 0; + } + if (i === 0) { + return [name, num, rest, ok]; + } + name = $substring(str, 0, i); + if (brace) { + if (i >= str.length || !((str.charCodeAt(i) === 125))) { + return [name, num, rest, ok]; + } + i = i + (1) >> 0; + } + num = 0; + i$1 = 0; + while (true) { + if (!(i$1 < name.length)) { break; } + if (name.charCodeAt(i$1) < 48 || 57 < name.charCodeAt(i$1) || num >= 100000000) { + num = -1; + break; + } + num = (($imul(num, 10)) + ((name.charCodeAt(i$1) >> 0)) >> 0) - 48 >> 0; + i$1 = i$1 + (1) >> 0; + } + if ((name.charCodeAt(0) === 48) && name.length > 1) { + num = -1; + } + rest = $substring(str, i); + ok = true; + return [name, num, rest, ok]; + }; + Regexp.ptr.prototype.FindSubmatchIndex = function(b) { + var _r, _r$1, b, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatchIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindSubmatchIndex = function(b) { return this.$val.FindSubmatchIndex(b); }; + Regexp.ptr.prototype.FindStringSubmatch = function(s) { + var _i, _r, _ref, a, dstCap, i, re, ret, s, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; a = $f.a; dstCap = $f.dstCap; i = $f.i; re = $f.re; ret = $f.ret; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$4.zero(); + _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, re.prog.NumCap, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$3.nil) { + $s = -1; return sliceType$9.nil; + } + ret = $makeSlice(sliceType$9, (1 + re.numSubexp >> 0)); + _ref = ret; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + if (($imul(2, i)) < a.$length && (x = $imul(2, i), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])) >= 0) { + ((i < 0 || i >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i] = $substring(s, (x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$1])), (x$2 = ($imul(2, i)) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$2])))); + } + _i++; + } + $s = -1; return ret; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatch }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.dstCap = dstCap; $f.i = i; $f.re = re; $f.ret = ret; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindStringSubmatch = function(s) { return this.$val.FindStringSubmatch(s); }; + Regexp.ptr.prototype.FindStringSubmatchIndex = function(s) { + var _r, _r$1, re, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, re.prog.NumCap, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatchIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindStringSubmatchIndex = function(s) { return this.$val.FindStringSubmatchIndex(s); }; + Regexp.ptr.prototype.FindReaderSubmatchIndex = function(r) { + var _r, _r$1, r, re, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute(r, sliceType$5.nil, "", 0, re.prog.NumCap, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderSubmatchIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindReaderSubmatchIndex = function(r) { return this.$val.FindReaderSubmatchIndex(r); }; + Regexp.ptr.prototype.FindAll = function(b, n) { + var b, n, re, result, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + b = [b]; + result = [result]; + re = this; + if (n < 0) { + n = b[0].$length + 1 >> 0; + } + result[0] = sliceType$12.nil; + $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) { + var match; + if (result[0] === sliceType$12.nil) { + result[0] = $makeSlice(sliceType$12, 0, 10); + } + result[0] = $append(result[0], $subslice(b[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); + }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAll }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAll = function(b, n) { return this.$val.FindAll(b, n); }; + Regexp.ptr.prototype.FindAllIndex = function(b, n) { + var b, n, re, result, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = b.$length + 1 >> 0; + } + result[0] = sliceType$13.nil; + $r = re.allMatches("", b, n, (function(result) { return function(match) { + var match; + if (result[0] === sliceType$13.nil) { + result[0] = $makeSlice(sliceType$13, 0, 10); + } + result[0] = $append(result[0], $subslice(match, 0, 2)); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllIndex }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllIndex = function(b, n) { return this.$val.FindAllIndex(b, n); }; + Regexp.ptr.prototype.FindAllString = function(s, n) { + var n, re, result, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = [result]; + s = [s]; + re = this; + if (n < 0) { + n = s[0].length + 1 >> 0; + } + result[0] = sliceType$9.nil; + $r = re.allMatches(s[0], sliceType$5.nil, n, (function(result, s) { return function(match) { + var match; + if (result[0] === sliceType$9.nil) { + result[0] = $makeSlice(sliceType$9, 0, 10); + } + result[0] = $append(result[0], $substring(s[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); + }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllString }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllString = function(s, n) { return this.$val.FindAllString(s, n); }; + Regexp.ptr.prototype.FindAllStringIndex = function(s, n) { + var n, re, result, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = s.length + 1 >> 0; + } + result[0] = sliceType$13.nil; + $r = re.allMatches(s, sliceType$5.nil, n, (function(result) { return function(match) { + var match; + if (result[0] === sliceType$13.nil) { + result[0] = $makeSlice(sliceType$13, 0, 10); + } + result[0] = $append(result[0], $subslice(match, 0, 2)); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringIndex }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllStringIndex = function(s, n) { return this.$val.FindAllStringIndex(s, n); }; + Regexp.ptr.prototype.FindAllSubmatch = function(b, n) { + var b, n, re, result, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + b = [b]; + result = [result]; + re = this; + if (n < 0) { + n = b[0].$length + 1 >> 0; + } + result[0] = sliceType$14.nil; + $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) { + var _i, _q, _ref, j, match, slice, x, x$1, x$2; + if (result[0] === sliceType$14.nil) { + result[0] = $makeSlice(sliceType$14, 0, 10); + } + slice = $makeSlice(sliceType$12, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + if ((x = $imul(2, j), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { + ((j < 0 || j >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + j] = $subslice(b[0], (x$1 = $imul(2, j), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, j)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); + } + _i++; + } + result[0] = $append(result[0], slice); + }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatch }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllSubmatch = function(b, n) { return this.$val.FindAllSubmatch(b, n); }; + Regexp.ptr.prototype.FindAllSubmatchIndex = function(b, n) { + var b, n, re, result, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = b.$length + 1 >> 0; + } + result[0] = sliceType$13.nil; + $r = re.allMatches("", b, n, (function(result) { return function(match) { + var match; + if (result[0] === sliceType$13.nil) { + result[0] = $makeSlice(sliceType$13, 0, 10); + } + result[0] = $append(result[0], match); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatchIndex }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllSubmatchIndex = function(b, n) { return this.$val.FindAllSubmatchIndex(b, n); }; + Regexp.ptr.prototype.FindAllStringSubmatch = function(s, n) { + var n, re, result, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = [result]; + s = [s]; + re = this; + if (n < 0) { + n = s[0].length + 1 >> 0; + } + result[0] = sliceType$15.nil; + $r = re.allMatches(s[0], sliceType$5.nil, n, (function(result, s) { return function(match) { + var _i, _q, _ref, j, match, slice, x, x$1, x$2; + if (result[0] === sliceType$15.nil) { + result[0] = $makeSlice(sliceType$15, 0, 10); + } + slice = $makeSlice(sliceType$9, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + if ((x = $imul(2, j), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { + ((j < 0 || j >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + j] = $substring(s[0], (x$1 = $imul(2, j), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, j)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); + } + _i++; + } + result[0] = $append(result[0], slice); + }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatch }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllStringSubmatch = function(s, n) { return this.$val.FindAllStringSubmatch(s, n); }; + Regexp.ptr.prototype.FindAllStringSubmatchIndex = function(s, n) { + var n, re, result, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = s.length + 1 >> 0; + } + result[0] = sliceType$13.nil; + $r = re.allMatches(s, sliceType$5.nil, n, (function(result) { return function(match) { + var match; + if (result[0] === sliceType$13.nil) { + result[0] = $makeSlice(sliceType$13, 0, 10); + } + result[0] = $append(result[0], match); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatchIndex }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.FindAllStringSubmatchIndex = function(s, n) { return this.$val.FindAllStringSubmatchIndex(s, n); }; + Regexp.ptr.prototype.Split = function(s, n) { + var _i, _r, _ref, beg, end, match, matches, n, re, s, strings$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; beg = $f.beg; end = $f.end; match = $f.match; matches = $f.matches; n = $f.n; re = $f.re; s = $f.s; strings$1 = $f.strings$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + re = this; + if (n === 0) { + $s = -1; return sliceType$9.nil; + } + if (re.expr.length > 0 && (s.length === 0)) { + $s = -1; return new sliceType$9([""]); + } + _r = re.FindAllStringIndex(s, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + matches = _r; + strings$1 = $makeSlice(sliceType$9, 0, matches.$length); + beg = 0; + end = 0; + _ref = matches; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + match = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (n > 0 && strings$1.$length >= (n - 1 >> 0)) { + break; + } + end = (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]); + if (!(((1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]) === 0))) { + strings$1 = $append(strings$1, $substring(s, beg, end)); + } + beg = (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]); + _i++; + } + if (!((end === s.length))) { + strings$1 = $append(strings$1, $substring(s, beg)); + } + $s = -1; return strings$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Split }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.beg = beg; $f.end = end; $f.match = match; $f.matches = matches; $f.n = n; $f.re = re; $f.s = s; $f.strings$1 = strings$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Regexp.prototype.Split = function(s, n) { return this.$val.Split(s, n); }; + ptrType.methods = [{prop: "reset", name: "reset", pkg: "regexp", typ: $funcType([ptrType$12, $Int, $Int], [], false)}, {prop: "shouldVisit", name: "shouldVisit", pkg: "regexp", typ: $funcType([$Uint32, $Int], [$Bool], false)}, {prop: "push", name: "push", pkg: "regexp", typ: $funcType([ptrType$11, $Uint32, $Int, $Bool], [], false)}]; + ptrType$13.methods = [{prop: "init", name: "init", pkg: "regexp", typ: $funcType([$Int], [], false)}, {prop: "alloc", name: "alloc", pkg: "regexp", typ: $funcType([ptrType$2], [ptrType$1], false)}, {prop: "match", name: "match", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([ptrType$14], [], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([ptrType$14, ptrType$14, $Int, $Int, $Int32, ptrType$3], [], false)}, {prop: "add", name: "add", pkg: "regexp", typ: $funcType([ptrType$14, $Uint32, $Int, sliceType$3, ptrType$3, ptrType$1], [ptrType$1], false)}]; + ptrType$15.methods = [{prop: "newBytes", name: "newBytes", pkg: "regexp", typ: $funcType([sliceType$5], [input], false)}, {prop: "newString", name: "newString", pkg: "regexp", typ: $funcType([$String], [input], false)}, {prop: "newReader", name: "newReader", pkg: "regexp", typ: $funcType([io.RuneReader], [input], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String], [input, $Int], false)}]; + lazyFlag.methods = [{prop: "match", name: "match", pkg: "regexp", typ: $funcType([syntax.EmptyOp], [$Bool], false)}]; + ptrType$8.methods = [{prop: "empty", name: "empty", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "next", name: "next", pkg: "regexp", typ: $funcType([], [$Uint32], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "contains", name: "contains", pkg: "regexp", typ: $funcType([$Uint32], [$Bool], false)}, {prop: "insert", name: "insert", pkg: "regexp", typ: $funcType([$Uint32], [], false)}, {prop: "insertNew", name: "insertNew", pkg: "regexp", typ: $funcType([$Uint32], [], false)}]; + runeSlice.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$11.methods = [{prop: "tryBacktrack", name: "tryBacktrack", pkg: "regexp", typ: $funcType([ptrType, input, $Uint32, $Int], [$Bool], false)}, {prop: "backtrack", name: "backtrack", pkg: "regexp", typ: $funcType([sliceType$5, $String, $Int, $Int, sliceType$3], [sliceType$3], false)}, {prop: "doOnePass", name: "doOnePass", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String, $Int, $Int, sliceType$3], [sliceType$3], false)}, {prop: "doMatch", name: "doMatch", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String], [$Bool], false)}, {prop: "doExecute", name: "doExecute", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String, $Int, $Int, sliceType$3], [sliceType$3], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([], [ptrType$11], false)}, {prop: "Longest", name: "Longest", pkg: "", typ: $funcType([], [], false)}, {prop: "get", name: "get", pkg: "regexp", typ: $funcType([], [ptrType$13], false)}, {prop: "put", name: "put", pkg: "regexp", typ: $funcType([ptrType$13], [], false)}, {prop: "NumSubexp", name: "NumSubexp", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SubexpNames", name: "SubexpNames", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "LiteralPrefix", name: "LiteralPrefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "MatchReader", name: "MatchReader", pkg: "", typ: $funcType([io.RuneReader], [$Bool], false)}, {prop: "MatchString", name: "MatchString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Match", name: "Match", pkg: "", typ: $funcType([sliceType$5], [$Bool], false)}, {prop: "ReplaceAllString", name: "ReplaceAllString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllLiteralString", name: "ReplaceAllLiteralString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllStringFunc", name: "ReplaceAllStringFunc", pkg: "", typ: $funcType([$String, funcType], [$String], false)}, {prop: "replaceAll", name: "replaceAll", pkg: "regexp", typ: $funcType([sliceType$5, $String, $Int, funcType$1], [sliceType$5], false)}, {prop: "ReplaceAll", name: "ReplaceAll", pkg: "", typ: $funcType([sliceType$5, sliceType$5], [sliceType$5], false)}, {prop: "ReplaceAllLiteral", name: "ReplaceAllLiteral", pkg: "", typ: $funcType([sliceType$5, sliceType$5], [sliceType$5], false)}, {prop: "ReplaceAllFunc", name: "ReplaceAllFunc", pkg: "", typ: $funcType([sliceType$5, funcType$2], [sliceType$5], false)}, {prop: "pad", name: "pad", pkg: "regexp", typ: $funcType([sliceType$3], [sliceType$3], false)}, {prop: "allMatches", name: "allMatches", pkg: "regexp", typ: $funcType([$String, sliceType$5, $Int, funcType$3], [], false)}, {prop: "Find", name: "Find", pkg: "", typ: $funcType([sliceType$5], [sliceType$5], false)}, {prop: "FindIndex", name: "FindIndex", pkg: "", typ: $funcType([sliceType$5], [sliceType$3], false)}, {prop: "FindString", name: "FindString", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FindStringIndex", name: "FindStringIndex", pkg: "", typ: $funcType([$String], [sliceType$3], false)}, {prop: "FindReaderIndex", name: "FindReaderIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType$3], false)}, {prop: "FindSubmatch", name: "FindSubmatch", pkg: "", typ: $funcType([sliceType$5], [sliceType$12], false)}, {prop: "Expand", name: "Expand", pkg: "", typ: $funcType([sliceType$5, sliceType$5, sliceType$5, sliceType$3], [sliceType$5], false)}, {prop: "ExpandString", name: "ExpandString", pkg: "", typ: $funcType([sliceType$5, $String, $String, sliceType$3], [sliceType$5], false)}, {prop: "expand", name: "expand", pkg: "regexp", typ: $funcType([sliceType$5, $String, sliceType$5, $String, sliceType$3], [sliceType$5], false)}, {prop: "FindSubmatchIndex", name: "FindSubmatchIndex", pkg: "", typ: $funcType([sliceType$5], [sliceType$3], false)}, {prop: "FindStringSubmatch", name: "FindStringSubmatch", pkg: "", typ: $funcType([$String], [sliceType$9], false)}, {prop: "FindStringSubmatchIndex", name: "FindStringSubmatchIndex", pkg: "", typ: $funcType([$String], [sliceType$3], false)}, {prop: "FindReaderSubmatchIndex", name: "FindReaderSubmatchIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType$3], false)}, {prop: "FindAll", name: "FindAll", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$12], false)}, {prop: "FindAllIndex", name: "FindAllIndex", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$13], false)}, {prop: "FindAllString", name: "FindAllString", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}, {prop: "FindAllStringIndex", name: "FindAllStringIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$13], false)}, {prop: "FindAllSubmatch", name: "FindAllSubmatch", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$14], false)}, {prop: "FindAllSubmatchIndex", name: "FindAllSubmatchIndex", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$13], false)}, {prop: "FindAllStringSubmatch", name: "FindAllStringSubmatch", pkg: "", typ: $funcType([$String, $Int], [sliceType$15], false)}, {prop: "FindAllStringSubmatchIndex", name: "FindAllStringSubmatchIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$13], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}]; + ptrType$16.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; + ptrType$17.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; + ptrType$18.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; + job.init("regexp", [{prop: "pc", name: "pc", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); + bitState.init("regexp", [{prop: "end", name: "end", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "jobs", name: "jobs", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "visited", name: "visited", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}]); + queue.init("regexp", [{prop: "sparse", name: "sparse", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", embedded: false, exported: false, typ: sliceType$10, tag: ""}]); + entry.init("regexp", [{prop: "pc", name: "pc", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "t", name: "t", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + thread.init("regexp", [{prop: "inst", name: "inst", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + machine.init("regexp", [{prop: "re", name: "re", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "q0", name: "q0", embedded: false, exported: false, typ: queue, tag: ""}, {prop: "q1", name: "q1", embedded: false, exported: false, typ: queue, tag: ""}, {prop: "pool", name: "pool", embedded: false, exported: false, typ: sliceType$11, tag: ""}, {prop: "matched", name: "matched", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}]); + inputs.init("regexp", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: inputBytes, tag: ""}, {prop: "string", name: "string", embedded: false, exported: false, typ: inputString, tag: ""}, {prop: "reader", name: "reader", embedded: false, exported: false, typ: inputReader, tag: ""}]); + onePassMachine.init("regexp", [{prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + onePassProg.init("", [{prop: "Inst", name: "Inst", embedded: false, exported: true, typ: sliceType$6, tag: ""}, {prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", embedded: false, exported: true, typ: $Int, tag: ""}]); + onePassInst.init("", [{prop: "Inst", name: "Inst", embedded: true, exported: true, typ: syntax.Inst, tag: ""}, {prop: "Next", name: "Next", embedded: false, exported: true, typ: sliceType$2, tag: ""}]); + queueOnePass.init("regexp", [{prop: "sparse", name: "sparse", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nextIndex", name: "nextIndex", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + runeSlice.init($Int32); + Regexp.init("regexp", [{prop: "expr", name: "expr", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prog", name: "prog", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "onepass", name: "onepass", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "numSubexp", name: "numSubexp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxBitStateLen", name: "maxBitStateLen", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "subexpNames", name: "subexpNames", embedded: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prefixBytes", name: "prefixBytes", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "prefixRune", name: "prefixRune", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "prefixEnd", name: "prefixEnd", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "mpool", name: "mpool", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prefixComplete", name: "prefixComplete", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "cond", name: "cond", embedded: false, exported: false, typ: syntax.EmptyOp, tag: ""}, {prop: "longest", name: "longest", embedded: false, exported: false, typ: $Bool, tag: ""}]); + input.init([{prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}]); + inputString.init("regexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + inputBytes.init("regexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + inputReader.init("regexp", [{prop: "r", name: "r", embedded: false, exported: false, typ: io.RuneReader, tag: ""}, {prop: "atEOT", name: "atEOT", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syntax.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + bitStatePool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); + onePassPool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); + arrayNoInts = arrayType.zero(); + matchPool = arrayType$1.zero(); + specialBytes = arrayType$2.zero(); + noRune = new sliceType$1([]); + noNext = new sliceType$2([4294967295]); + anyRuneNotNL = new sliceType$1([0, 9, 11, 1114111]); + anyRune = new sliceType$1([0, 1114111]); + matchSize = $toNativeArray($kindInt, [128, 512, 2048, 16384, 0]); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc"] = (function() { + var $pkg = {}, $init, bytes, binary, errors, fmt, io, math, reflect, regexp, strconv, strings, sync, byteWriter, binaryFallback, Custom, customFallback, Field, Fields, strucTag, Options, Type, Size_t, Off_t, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, ptrType$1, sliceType$4, arrayType$1, ptrType$2, ptrType$3, typeLenRe, fieldCache, fieldCacheLock, parseLock, emptyOptions, typeLookup, typeNames, reflectTypeMap, _r, parseStrucTag, parseField, parseFieldsLocked, fieldCacheLookup, parseFields, init, prep, Unpack, UnpackWithOptions, init$1; + bytes = $packages["bytes"]; + binary = $packages["encoding/binary"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + io = $packages["io"]; + math = $packages["math"]; + reflect = $packages["reflect"]; + regexp = $packages["regexp"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + byteWriter = $pkg.byteWriter = $newType(0, $kindStruct, "struc.byteWriter", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(buf_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = sliceType.nil; + this.pos = 0; + return; + } + this.buf = buf_; + this.pos = pos_; + }); + binaryFallback = $pkg.binaryFallback = $newType(0, $kindStruct, "struc.binaryFallback", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(typ_, ptr_, flag_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType.nil; + this.ptr = 0; + this.flag = 0; + return; + } + this.typ = typ_; + this.ptr = ptr_; + this.flag = flag_; + }); + Custom = $pkg.Custom = $newType(8, $kindInterface, "struc.Custom", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); + customFallback = $pkg.customFallback = $newType(0, $kindStruct, "struc.customFallback", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(custom_) { + this.$val = this; + if (arguments.length === 0) { + this.custom = $ifaceNil; + return; + } + this.custom = custom_; + }); + Field = $pkg.Field = $newType(0, $kindStruct, "struc.Field", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, function(Name_, Ptr_, Index_, Type_, defType_, Array_, Slice_, Len_, Order_, Sizeof_, Sizefrom_, Fields_, kind_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Ptr = false; + this.Index = 0; + this.Type = 0; + this.defType = 0; + this.Array = false; + this.Slice = false; + this.Len = 0; + this.Order = $ifaceNil; + this.Sizeof = sliceType$2.nil; + this.Sizefrom = sliceType$2.nil; + this.Fields = Fields.nil; + this.kind = 0; + return; + } + this.Name = Name_; + this.Ptr = Ptr_; + this.Index = Index_; + this.Type = Type_; + this.defType = defType_; + this.Array = Array_; + this.Slice = Slice_; + this.Len = Len_; + this.Order = Order_; + this.Sizeof = Sizeof_; + this.Sizefrom = Sizefrom_; + this.Fields = Fields_; + this.kind = kind_; + }); + Fields = $pkg.Fields = $newType(12, $kindSlice, "struc.Fields", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); + strucTag = $pkg.strucTag = $newType(0, $kindStruct, "struc.strucTag", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(Type_, Order_, Sizeof_, Skip_, Sizefrom_) { + this.$val = this; + if (arguments.length === 0) { + this.Type = ""; + this.Order = $ifaceNil; + this.Sizeof = ""; + this.Skip = false; + this.Sizefrom = ""; + return; + } + this.Type = Type_; + this.Order = Order_; + this.Sizeof = Sizeof_; + this.Skip = Skip_; + this.Sizefrom = Sizefrom_; + }); + Options = $pkg.Options = $newType(0, $kindStruct, "struc.Options", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, function(ByteAlign_, PtrSize_, Order_) { + this.$val = this; + if (arguments.length === 0) { + this.ByteAlign = 0; + this.PtrSize = 0; + this.Order = $ifaceNil; + return; + } + this.ByteAlign = ByteAlign_; + this.PtrSize = PtrSize_; + this.Order = Order_; + }); + Type = $pkg.Type = $newType(4, $kindInt, "struc.Type", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); + Size_t = $pkg.Size_t = $newType(8, $kindUint64, "struc.Size_t", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); + Off_t = $pkg.Off_t = $newType(8, $kindInt64, "struc.Off_t", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType($emptyInterface); + sliceType$2 = $sliceType($Int); + sliceType$3 = $sliceType(reflect.Value); + ptrType = $ptrType(reflect.rtype); + ptrType$1 = $ptrType(Field); + sliceType$4 = $sliceType($String); + arrayType$1 = $arrayType($Uint8, 8); + ptrType$2 = $ptrType(strucTag); + ptrType$3 = $ptrType(Options); + byteWriter.ptr.prototype.Write = function(p) { + var b, capacity, p; + b = this; + capacity = b.buf.$length - b.pos >> 0; + if (capacity < p.$length) { + p = $subslice(p, 0, capacity); + } + if (p.$length > 0) { + $copySlice($subslice(b.buf, b.pos), p); + b.pos = b.pos + (p.$length) >> 0; + } + return [p.$length, $ifaceNil]; + }; + byteWriter.prototype.Write = function(p) { return this.$val.Write(p); }; + binaryFallback.ptr.prototype.String = function() { + var b; + b = this; + return $clone(b, binaryFallback).String(); + }; + binaryFallback.prototype.String = function() { return this.$val.String(); }; + binaryFallback.ptr.prototype.Sizeof = function(val, options) { + var _r$1, _r$2, b, options, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; options = $f.options; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + b = this; + _r$1 = $clone(val, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = binary.Size(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: binaryFallback.ptr.prototype.Sizeof }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.options = options; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + binaryFallback.prototype.Sizeof = function(val, options) { return this.$val.Sizeof(val, options); }; + binaryFallback.ptr.prototype.Pack = function(buf, val, options) { + var _arg, _arg$1, _arg$2, _r$1, _r$2, b, buf, err, options, order, tmp, val, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; buf = $f.buf; err = $f.err; options = $f.options; order = $f.order; tmp = $f.tmp; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + b = this; + tmp = new byteWriter.ptr(buf, 0); + order = (x = binary.BigEndian, new x.constructor.elem(x)); + if (!($interfaceIsEqual(options.Order, $ifaceNil))) { + order = options.Order; + } + _arg = new tmp.constructor.elem(tmp); + _arg$1 = order; + _r$1 = $clone(val, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = _r$1; + _r$2 = binary.Write(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + err = _r$2; + $s = -1; return [tmp.pos, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: binaryFallback.ptr.prototype.Pack }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.buf = buf; $f.err = err; $f.options = options; $f.order = order; $f.tmp = tmp; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + binaryFallback.prototype.Pack = function(buf, val, options) { return this.$val.Pack(buf, val, options); }; + binaryFallback.ptr.prototype.Unpack = function(r, val, options) { + var _arg, _arg$1, _arg$2, _r$1, _r$2, b, options, order, r, val, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; options = $f.options; order = $f.order; r = $f.r; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + b = this; + order = (x = binary.BigEndian, new x.constructor.elem(x)); + if (!($interfaceIsEqual(options.Order, $ifaceNil))) { + order = options.Order; + } + _arg = r; + _arg$1 = order; + _r$1 = $clone(val, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = _r$1; + _r$2 = binary.Read(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: binaryFallback.ptr.prototype.Unpack }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.options = options; $f.order = order; $f.r = r; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + binaryFallback.prototype.Unpack = function(r, val, options) { return this.$val.Unpack(r, val, options); }; + customFallback.ptr.prototype.Pack = function(p, val, opt) { + var _r$1, c, opt, p, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; opt = $f.opt; p = $f.p; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + _r$1 = c.custom.Pack(p, opt); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.Pack }; } $f._r$1 = _r$1; $f.c = c; $f.opt = opt; $f.p = p; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + customFallback.prototype.Pack = function(p, val, opt) { return this.$val.Pack(p, val, opt); }; + customFallback.ptr.prototype.Unpack = function(r, val, opt) { + var _r$1, c, opt, r, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; opt = $f.opt; r = $f.r; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + _r$1 = c.custom.Unpack(r, 1, opt); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.Unpack }; } $f._r$1 = _r$1; $f.c = c; $f.opt = opt; $f.r = r; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + customFallback.prototype.Unpack = function(r, val, opt) { return this.$val.Unpack(r, val, opt); }; + customFallback.ptr.prototype.Sizeof = function(val, opt) { + var _r$1, c, opt, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; opt = $f.opt; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + _r$1 = c.custom.Size(opt); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.Sizeof }; } $f._r$1 = _r$1; $f.c = c; $f.opt = opt; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + customFallback.prototype.Sizeof = function(val, opt) { return this.$val.Sizeof(val, opt); }; + customFallback.ptr.prototype.String = function() { + var _r$1, c, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + _r$1 = c.custom.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.String }; } $f._r$1 = _r$1; $f.c = c; $f.$s = $s; $f.$r = $r; return $f; + }; + customFallback.prototype.String = function() { return this.$val.String(); }; + Field.ptr.prototype.String = function() { + var _r$1, _r$2, _r$3, _r$4, _r$5, f, out, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; f = $f.f; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + out = ""; + /* */ if (f.Type === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.Type === 1) { */ case 1: + _r$1 = fmt.Sprintf("{type: Pad, len: %d}", new sliceType$1([new $Int(f.Len)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* } else { */ case 2: + _r$2 = fmt.Sprintf("type: %s, order: %v", new sliceType$1([new $String(new Type(f.Type).String()), f.Order])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + out = _r$2; + /* } */ case 3: + /* */ if (!(f.Sizefrom === sliceType$2.nil)) { $s = 6; continue; } + /* */ if (f.Len > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(f.Sizefrom === sliceType$2.nil)) { */ case 6: + _r$3 = fmt.Sprintf(", sizefrom: %v", new sliceType$1([f.Sizefrom])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + out = out + (_r$3); + $s = 8; continue; + /* } else if (f.Len > 0) { */ case 7: + _r$4 = fmt.Sprintf(", len: %d", new sliceType$1([new $Int(f.Len)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + out = out + (_r$4); + /* } */ case 8: + /* */ if (!(f.Sizeof === sliceType$2.nil)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!(f.Sizeof === sliceType$2.nil)) { */ case 11: + _r$5 = fmt.Sprintf(", sizeof: %v", new sliceType$1([f.Sizeof])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + out = out + (_r$5); + /* } */ case 12: + $s = -1; return "{" + out + "}"; + /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.String }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.f = f; $f.out = out; $f.$s = $s; $f.$r = $r; return $f; + }; + Field.prototype.String = function() { return this.$val.String(); }; + Field.ptr.prototype.Size = function(val, options) { + var _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, align, f, i, length, options, size, typ, val, val$1, vals, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; align = $f.align; f = $f.f; i = $f.i; length = $f.length; options = $f.options; size = $f.size; typ = $f.typ; val = $f.val; val$1 = $f.val$1; vals = $f.vals; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + _r$1 = new Type(f.Type).Resolve(options); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + size = 0; + /* */ if (typ === 15) { $s = 2; continue; } + /* */ if (typ === 1) { $s = 3; continue; } + /* */ if (f.Slice || (f.kind === 24)) { $s = 4; continue; } + /* */ if (typ === 19) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (typ === 15) { */ case 2: + vals = new sliceType$3([$clone(val, reflect.Value)]); + /* */ if (f.Slice) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (f.Slice) { */ case 8: + vals = $makeSlice(sliceType$3, $clone(val, reflect.Value).Len()); + i = 0; + /* while (true) { */ case 10: + /* if (!(i < $clone(val, reflect.Value).Len())) { break; } */ if(!(i < $clone(val, reflect.Value).Len())) { $s = 11; continue; } + _r$2 = $clone(val, reflect.Value).Index(i); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= vals.$length) ? ($throwRuntimeError("index out of range"), undefined) : vals.$array[vals.$offset + i] = _r$2); + i = i + (1) >> 0; + /* } */ $s = 10; continue; case 11: + /* } */ case 9: + _ref = vals; + _i = 0; + /* while (true) { */ case 13: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 14; continue; } + val$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$3 = f.Fields.Sizeof($clone(val$1, reflect.Value), options); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + size = size + (_r$3) >> 0; + _i++; + /* } */ $s = 13; continue; case 14: + $s = 7; continue; + /* } else if (typ === 1) { */ case 3: + size = f.Len; + $s = 7; continue; + /* } else if (f.Slice || (f.kind === 24)) { */ case 4: + length = $clone(val, reflect.Value).Len(); + if (f.Len > 1) { + length = f.Len; + } + size = $imul(length, new Type(typ).Size()); + $s = 7; continue; + /* } else if (typ === 19) { */ case 5: + _r$4 = $clone($clone(val, reflect.Value).Addr(), reflect.Value).Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = $assertType(_r$4, Custom).Size(options); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $s = -1; return _r$5; + /* } else { */ case 6: + size = new Type(typ).Size(); + /* } */ case 7: + align = options.ByteAlign; + if (align > 0 && size < align) { + size = align; + } + $s = -1; return size; + /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.Size }; } $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f.align = align; $f.f = f; $f.i = i; $f.length = length; $f.options = options; $f.size = size; $f.typ = typ; $f.val = val; $f.val$1 = val$1; $f.vals = vals; $f.$s = $s; $f.$r = $r; return $f; + }; + Field.prototype.Size = function(val, options) { return this.$val.Size(val, options); }; + Field.ptr.prototype.packVal = function(buf, val, length, options) { + var _1, _2, _3, _4, _5, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, buf, err, f, length, n, n$1, options, order, size, typ, val, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; f = $f.f; length = $f.length; n = $f.n; n$1 = $f.n$1; options = $f.options; order = $f.order; size = $f.size; typ = $f.typ; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + size = 0; + err = $ifaceNil; + f = this; + order = f.Order; + if (!($interfaceIsEqual(options.Order, $ifaceNil))) { + order = options.Order; + } + /* */ if (f.Ptr) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.Ptr) { */ case 1: + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ case 2: + _r$2 = new Type(f.Type).Resolve(options); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + _1 = typ; + /* */ if (_1 === (15)) { $s = 6; continue; } + /* */ if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { $s = 7; continue; } + /* */ if ((_1 === (12)) || (_1 === (13))) { $s = 8; continue; } + /* */ if (_1 === (14)) { $s = 9; continue; } + /* */ if (_1 === (19)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (15)) { */ case 6: + _r$3 = f.Fields.Pack(buf, $clone(val, reflect.Value), options); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + size = _tuple[0]; + err = _tuple[1]; + $s = -1; return [size, err]; + /* } else if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { */ case 7: + size = new Type(typ).Size(); + n = new $Uint64(0, 0); + _2 = f.kind; + if (_2 === (1)) { + if ($clone(val, reflect.Value).Bool()) { + n = new $Uint64(0, 1); + } else { + n = new $Uint64(0, 0); + } + } else if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { + n = ((x = $clone(val, reflect.Value).Int(), new $Uint64(x.$high, x.$low))); + } else { + n = $clone(val, reflect.Value).Uint(); + } + _3 = typ; + /* */ if (_3 === (2)) { $s = 15; continue; } + /* */ if ((_3 === (4)) || (_3 === (5))) { $s = 16; continue; } + /* */ if ((_3 === (6)) || (_3 === (7))) { $s = 17; continue; } + /* */ if ((_3 === (8)) || (_3 === (9))) { $s = 18; continue; } + /* */ if ((_3 === (10)) || (_3 === (11))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (_3 === (2)) { */ case 15: + if (!((n.$high === 0 && n.$low === 0))) { + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 1); + } else { + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 0); + } + $s = 20; continue; + /* } else if ((_3 === (4)) || (_3 === (5))) { */ case 16: + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = ((n.$low << 24 >>> 24))); + $s = 20; continue; + /* } else if ((_3 === (6)) || (_3 === (7))) { */ case 17: + $r = order.PutUint16(buf, ((n.$low << 16 >>> 16))); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ((_3 === (8)) || (_3 === (9))) { */ case 18: + $r = order.PutUint32(buf, ((n.$low >>> 0))); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ((_3 === (10)) || (_3 === (11))) { */ case 19: + $r = order.PutUint64(buf, (n)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + case 14: + $s = 12; continue; + /* } else if ((_1 === (12)) || (_1 === (13))) { */ case 8: + size = new Type(typ).Size(); + n$1 = $clone(val, reflect.Value).Float(); + _4 = typ; + /* */ if (_4 === (12)) { $s = 25; continue; } + /* */ if (_4 === (13)) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_4 === (12)) { */ case 25: + $r = order.PutUint32(buf, math.Float32bits(($fround(n$1)))); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if (_4 === (13)) { */ case 26: + $r = order.PutUint64(buf, math.Float64bits(n$1)); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + case 24: + $s = 12; continue; + /* } else if (_1 === (14)) { */ case 9: + _5 = f.kind; + /* */ if (_5 === (24)) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (_5 === (24)) { */ case 31: + size = $clone(val, reflect.Value).Len(); + _r$4 = $clone(val, reflect.Value).String(); /* */ $s = 34; case 34: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $copySlice(buf, (new sliceType($stringToBytes(_r$4)))); + $s = 33; continue; + /* } else { */ case 32: + size = $clone(val, reflect.Value).Len(); + _r$5 = $clone(val, reflect.Value).Bytes(); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $copySlice(buf, _r$5); + /* } */ case 33: + case 30: + $s = 12; continue; + /* } else if (_1 === (19)) { */ case 10: + _r$6 = $clone($clone(val, reflect.Value).Addr(), reflect.Value).Interface(); /* */ $s = 36; case 36: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = $assertType(_r$6, Custom).Pack(buf, options); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$1 = _r$7; + size = _tuple$1[0]; + err = _tuple$1[1]; + $s = -1; return [size, err]; + /* } else { */ case 11: + _r$8 = fmt.Sprintf("no pack handler for type: %s", new sliceType$1([new Type(typ)])); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $panic(new $String(_r$8)); + /* } */ case 12: + case 5: + $s = -1; return [size, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.packVal }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.f = f; $f.length = length; $f.n = n; $f.n$1 = n$1; $f.options = options; $f.order = order; $f.size = size; $f.typ = typ; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Field.prototype.packVal = function(buf, val, length, options) { return this.$val.packVal(buf, val, length, options); }; + Field.ptr.prototype.Pack = function(buf, val, length, options) { + var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, buf, cur, end, err, f, i, i$1, length, n, options, pos, rep, tmp, typ, val, zero, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; buf = $f.buf; cur = $f.cur; end = $f.end; err = $f.err; f = $f.f; i = $f.i; i$1 = $f.i$1; length = $f.length; n = $f.n; options = $f.options; pos = $f.pos; rep = $f.rep; tmp = $f.tmp; typ = $f.typ; val = $f.val; zero = $f.zero; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + _r$1 = new Type(f.Type).Resolve(options); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + if (typ === 1) { + i = 0; + while (true) { + if (!(i < length)) { break; } + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 0); + i = i + (1) >> 0; + } + $s = -1; return [length, $ifaceNil]; + } + /* */ if (f.Slice) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (f.Slice) { */ case 2: + end = $clone(val, reflect.Value).Len(); + /* */ if (!f.Array && (typ === 5) && ((f.defType === 5) || (f.kind === 24))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!f.Array && (typ === 5) && ((f.defType === 5) || (f.kind === 24))) { */ case 5: + tmp = sliceType.nil; + /* */ if (f.kind === 24) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (f.kind === 24) { */ case 7: + _r$2 = $clone(val, reflect.Value).String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tmp = (new sliceType($stringToBytes(_r$2))); + $s = 9; continue; + /* } else { */ case 8: + _r$3 = $clone(val, reflect.Value).Bytes(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + tmp = _r$3; + /* } */ case 9: + $copySlice(buf, tmp); + if (end < length) { + rep = bytes.Repeat(new sliceType([0]), length - end >> 0); + $copySlice($subslice(buf, end), rep); + $s = -1; return [length, $ifaceNil]; + } + $s = -1; return [$clone(val, reflect.Value).Len(), $ifaceNil]; + /* } */ case 6: + pos = 0; + zero = new reflect.Value.ptr(ptrType.nil, 0, 0); + /* */ if (end < length) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (end < length) { */ case 12: + _r$4 = $clone(val, reflect.Value).Type().Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = reflect.Zero(_r$4); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + zero = _r$5; + /* } */ case 13: + i$1 = 0; + /* while (true) { */ case 16: + /* if (!(i$1 < length)) { break; } */ if(!(i$1 < length)) { $s = 17; continue; } + cur = zero; + /* */ if (i$1 < end) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (i$1 < end) { */ case 18: + _r$6 = $clone(val, reflect.Value).Index(i$1); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + cur = _r$6; + /* } */ case 19: + _r$7 = f.packVal($subslice(buf, pos), $clone(cur, reflect.Value), 1, options); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple = _r$7; + n = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [pos, err]; + } else { + pos = pos + (n) >> 0; + } + i$1 = i$1 + (1) >> 0; + /* } */ $s = 16; continue; case 17: + $s = -1; return [pos, $ifaceNil]; + /* } else { */ case 3: + _r$8 = f.packVal(buf, $clone(val, reflect.Value), length, options); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $s = -1; return _r$8; + /* } */ case 4: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.Pack }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f.buf = buf; $f.cur = cur; $f.end = end; $f.err = err; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.length = length; $f.n = n; $f.options = options; $f.pos = pos; $f.rep = rep; $f.tmp = tmp; $f.typ = typ; $f.val = val; $f.zero = zero; $f.$s = $s; $f.$r = $r; return $f; + }; + Field.prototype.Pack = function(buf, val, length, options) { return this.$val.Pack(buf, val, length, options); }; + Field.ptr.prototype.unpackVal = function(buf, val, length, options) { + var _1, _2, _3, _4, _5, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, buf, f, length, n, n$1, options, order, typ, val, x, x$1, x$2, x$3, x$4, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; buf = $f.buf; f = $f.f; length = $f.length; n = $f.n; n$1 = $f.n$1; options = $f.options; order = $f.order; typ = $f.typ; val = $f.val; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + order = f.Order; + if (!($interfaceIsEqual(options.Order, $ifaceNil))) { + order = options.Order; + } + /* */ if (f.Ptr) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.Ptr) { */ case 1: + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ case 2: + _r$2 = new Type(f.Type).Resolve(options); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + _1 = typ; + /* */ if ((_1 === (12)) || (_1 === (13))) { $s = 6; continue; } + /* */ if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((_1 === (12)) || (_1 === (13))) { */ case 6: + n = 0; + _2 = typ; + /* */ if (_2 === (12)) { $s = 11; continue; } + /* */ if (_2 === (13)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_2 === (12)) { */ case 11: + _r$3 = order.Uint32(buf); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = math.Float32frombits(_r$3); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + n = (_r$4); + $s = 13; continue; + /* } else if (_2 === (13)) { */ case 12: + _r$5 = order.Uint64(buf); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = math.Float64frombits(_r$5); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + n = _r$6; + /* } */ case 13: + case 10: + _3 = f.kind; + /* */ if ((_3 === (13)) || (_3 === (14))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ((_3 === (13)) || (_3 === (14))) { */ case 19: + $clone(val, reflect.Value).SetFloat(n); + $s = 21; continue; + /* } else { */ case 20: + _r$7 = fmt.Errorf("struc: refusing to unpack float into field %s of type %s", new sliceType$1([new $String(f.Name), new $String(new reflect.Kind(f.kind).String())])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $s = -1; return _r$7; + /* } */ case 21: + case 18: + $s = 9; continue; + /* } else if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { */ case 7: + n$1 = new $Uint64(0, 0); + _4 = typ; + /* */ if (_4 === (4)) { $s = 24; continue; } + /* */ if (_4 === (6)) { $s = 25; continue; } + /* */ if (_4 === (8)) { $s = 26; continue; } + /* */ if (_4 === (10)) { $s = 27; continue; } + /* */ if ((_4 === (2)) || (_4 === (5))) { $s = 28; continue; } + /* */ if (_4 === (7)) { $s = 29; continue; } + /* */ if (_4 === (9)) { $s = 30; continue; } + /* */ if (_4 === (11)) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (_4 === (4)) { */ case 24: + n$1 = ((x = (new $Int64(0, (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) << 24 >> 24)))), new $Uint64(x.$high, x.$low))); + $s = 32; continue; + /* } else if (_4 === (6)) { */ case 25: + _r$8 = order.Uint16(buf); /* */ $s = 33; case 33: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + n$1 = ((x$1 = (new $Int64(0, ((_r$8 << 16 >> 16)))), new $Uint64(x$1.$high, x$1.$low))); + $s = 32; continue; + /* } else if (_4 === (8)) { */ case 26: + _r$9 = order.Uint32(buf); /* */ $s = 34; case 34: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + n$1 = ((x$2 = (new $Int64(0, ((_r$9 >> 0)))), new $Uint64(x$2.$high, x$2.$low))); + $s = 32; continue; + /* } else if (_4 === (10)) { */ case 27: + _r$10 = order.Uint64(buf); /* */ $s = 35; case 35: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + n$1 = ((x$3 = ((x$4 = _r$10, new $Int64(x$4.$high, x$4.$low))), new $Uint64(x$3.$high, x$3.$low))); + $s = 32; continue; + /* } else if ((_4 === (2)) || (_4 === (5))) { */ case 28: + n$1 = (new $Uint64(0, (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))); + $s = 32; continue; + /* } else if (_4 === (7)) { */ case 29: + _r$11 = order.Uint16(buf); /* */ $s = 36; case 36: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + n$1 = (new $Uint64(0, _r$11)); + $s = 32; continue; + /* } else if (_4 === (9)) { */ case 30: + _r$12 = order.Uint32(buf); /* */ $s = 37; case 37: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + n$1 = (new $Uint64(0, _r$12)); + $s = 32; continue; + /* } else if (_4 === (11)) { */ case 31: + _r$13 = order.Uint64(buf); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + n$1 = (_r$13); + /* } */ case 32: + case 23: + _5 = f.kind; + if (_5 === (1)) { + $clone(val, reflect.Value).SetBool(!((n$1.$high === 0 && n$1.$low === 0))); + } else if ((_5 === (2)) || (_5 === (3)) || (_5 === (4)) || (_5 === (5)) || (_5 === (6))) { + $clone(val, reflect.Value).SetInt((new $Int64(n$1.$high, n$1.$low))); + } else { + $clone(val, reflect.Value).SetUint(n$1); + } + $s = 9; continue; + /* } else { */ case 8: + _r$14 = fmt.Sprintf("no unpack handler for type: %s", new sliceType$1([new Type(typ)])); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $panic(new $String(_r$14)); + /* } */ case 9: + case 5: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.unpackVal }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.buf = buf; $f.f = f; $f.length = length; $f.n = n; $f.n$1 = n$1; $f.options = options; $f.order = order; $f.typ = typ; $f.val = val; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; + }; + Field.prototype.unpackVal = function(buf, val, length, options) { return this.$val.unpackVal(buf, val, length, options); }; + Field.ptr.prototype.Unpack = function(buf, val, length, options) { + var _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, buf, err, f, i, length, options, pos, size, typ, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; buf = $f.buf; err = $f.err; f = $f.f; i = $f.i; length = $f.length; options = $f.options; pos = $f.pos; size = $f.size; typ = $f.typ; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + _r$1 = new Type(f.Type).Resolve(options); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + /* */ if ((typ === 1) || (f.kind === 24)) { $s = 2; continue; } + /* */ if (f.Slice) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((typ === 1) || (f.kind === 24)) { */ case 2: + if (typ === 1) { + $s = -1; return $ifaceNil; + } else { + $clone(val, reflect.Value).SetString(($bytesToString(buf))); + $s = -1; return $ifaceNil; + } + $s = 5; continue; + /* } else if (f.Slice) { */ case 3: + /* */ if ($clone(val, reflect.Value).Cap() < length) { $s = 6; continue; } + /* */ if ($clone(val, reflect.Value).Len() < length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($clone(val, reflect.Value).Cap() < length) { */ case 6: + _r$2 = reflect.MakeSlice($clone(val, reflect.Value).Type(), length, length); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = $clone(val, reflect.Value).Set($clone(_r$2, reflect.Value)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + /* } else if ($clone(val, reflect.Value).Len() < length) { */ case 7: + _r$3 = $clone(val, reflect.Value).Slice(0, length); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = $clone(val, reflect.Value).Set($clone(_r$3, reflect.Value)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + /* */ if (!f.Array && (typ === 5) && (f.defType === 5)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!f.Array && (typ === 5) && (f.defType === 5)) { */ case 13: + _r$4 = $clone(val, reflect.Value).Bytes(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $copySlice(_r$4, $subslice(buf, 0, length)); + $s = -1; return $ifaceNil; + /* } */ case 14: + pos = 0; + size = new Type(typ).Size(); + i = 0; + /* while (true) { */ case 16: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 17; continue; } + _arg = $subslice(buf, pos, (pos + size >> 0)); + _r$5 = $clone(val, reflect.Value).Index(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$5, reflect.Value); + _arg$2 = options; + _r$6 = f.unpackVal(_arg, _arg$1, 1, _arg$2); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + err = _r$6; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + pos = pos + (size) >> 0; + i = i + (1) >> 0; + /* } */ $s = 16; continue; case 17: + $s = -1; return $ifaceNil; + /* } else { */ case 4: + _r$7 = f.unpackVal(buf, $clone(val, reflect.Value), length, options); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $s = -1; return _r$7; + /* } */ case 5: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.Unpack }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.buf = buf; $f.err = err; $f.f = f; $f.i = i; $f.length = length; $f.options = options; $f.pos = pos; $f.size = size; $f.typ = typ; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + Field.prototype.Unpack = function(buf, val, length, options) { return this.$val.Unpack(buf, val, length, options); }; + Fields.prototype.SetByteOrder = function(order) { + var _i, _ref, f, field, order; + f = this; + _ref = f; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(field === ptrType$1.nil)) { + field.Order = order; + } + _i++; + } + }; + $ptrType(Fields).prototype.SetByteOrder = function(order) { return this.$get().SetByteOrder(order); }; + Fields.prototype.String = function() { + var _i, _r$1, _ref, f, field, fields, i, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; f = $f.f; field = $f.field; fields = $f.fields; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + fields = $makeSlice(sliceType$4, f.$length); + _ref = f; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!(field === ptrType$1.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(field === ptrType$1.nil)) { */ case 3: + _r$1 = field.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i] = _r$1); + /* } */ case 4: + _i++; + /* } */ $s = 1; continue; case 2: + $s = -1; return "{" + strings.Join(fields, ", ") + "}"; + /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.String }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.f = f; $f.field = field; $f.fields = fields; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Fields).prototype.String = function() { return this.$get().String(); }; + Fields.prototype.Sizeof = function(val, options) { + var _i, _r$1, _r$2, _r$3, _ref, f, field, i, options, size, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; f = $f.f; field = $f.field; i = $f.i; options = $f.options; size = $f.size; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + /* while (true) { */ case 1: + /* if (!($clone(val, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(val, reflect.Value).Kind() === 22)) { $s = 2; continue; } + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ $s = 1; continue; case 2: + size = 0; + _ref = f; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!(field === ptrType$1.nil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(field === ptrType$1.nil)) { */ case 6: + _r$2 = $clone(val, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = field.Size($clone(_r$2, reflect.Value), options); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + size = size + (_r$3) >> 0; + /* } */ case 7: + _i++; + /* } */ $s = 4; continue; case 5: + $s = -1; return size; + /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.Sizeof }; } $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.f = f; $f.field = field; $f.i = i; $f.options = options; $f.size = size; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Fields).prototype.Sizeof = function(val, options) { return this.$get().Sizeof(val, options); }; + Fields.prototype.sizefrom = function(val, index) { + var _1, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, f, field, index, n, name, val, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; f = $f.f; field = $f.field; index = $f.index; n = $f.n; name = $f.name; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + _r$1 = $clone(val, reflect.Value).FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + field = _r$1; + _1 = $clone(field, reflect.Value).Kind(); + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 3; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 3: + $s = -1; return (((x = $clone(field, reflect.Value).Int(), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { */ case 4: + n = (($clone(field, reflect.Value).Uint().$low >> 0)); + if (n < 0) { + $s = -1; return 0; + } + $s = -1; return n; + /* } else { */ case 5: + _r$2 = $clone(val, reflect.Value).Type().FieldByIndex(index); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + name = _r$2.Name; + _r$3 = $clone(val, reflect.Value).Interface(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = _r$3; + _arg$1 = new $String(name); + _r$4 = fmt.Sprintf("sizeof field %T.%s not an integer type", new sliceType$1([_arg, _arg$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(new $String(_r$4)); + /* } */ case 6: + case 2: + $s = -1; return 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.sizefrom }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.f = f; $f.field = field; $f.index = index; $f.n = n; $f.name = name; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Fields).prototype.sizefrom = function(val, index) { return this.$get().sizefrom(val, index); }; + Fields.prototype.Pack = function(buf, val, options) { + var _1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, buf, err, f, field, i, length, length$1, n, options, pos, v, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; buf = $f.buf; err = $f.err; f = $f.f; field = $f.field; i = $f.i; length = $f.length; length$1 = $f.length$1; n = $f.n; options = $f.options; pos = $f.pos; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + /* while (true) { */ case 1: + /* if (!($clone(val, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(val, reflect.Value).Kind() === 22)) { $s = 2; continue; } + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ $s = 1; continue; case 2: + pos = 0; + _ref = f; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (field === ptrType$1.nil) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (field === ptrType$1.nil) { */ case 6: + _i++; + /* continue; */ $s = 4; continue; + /* } */ case 7: + _r$2 = $clone(val, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + length = field.Len; + /* */ if (!(field.Sizefrom === sliceType$2.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(field.Sizefrom === sliceType$2.nil)) { */ case 9: + _r$3 = f.sizefrom($clone(val, reflect.Value), field.Sizefrom); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + length = _r$3; + /* } */ case 10: + if (length <= 0 && field.Slice) { + length = $clone(v, reflect.Value).Len(); + } + /* */ if (!(field.Sizeof === sliceType$2.nil)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!(field.Sizeof === sliceType$2.nil)) { */ case 12: + _r$4 = $clone(val, reflect.Value).FieldByIndex(field.Sizeof); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = $clone(_r$4, reflect.Value).Len(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + length$1 = _r$5; + _1 = field.kind; + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 17; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 17: + _r$6 = $clone(reflect.New($clone(v, reflect.Value).Type()), reflect.Value).Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + v = _r$6; + $clone(v, reflect.Value).SetInt((new $Int64(0, length$1))); + $s = 20; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { */ case 18: + _r$7 = $clone(reflect.New($clone(v, reflect.Value).Type()), reflect.Value).Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + v = _r$7; + $clone(v, reflect.Value).SetUint((new $Uint64(0, length$1))); + $s = 20; continue; + /* } else { */ case 19: + _r$8 = fmt.Sprintf("sizeof field is not int or uint type: %s, %s", new sliceType$1([new $String(field.Name), $clone(v, reflect.Value).Type()])); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $panic(new $String(_r$8)); + /* } */ case 20: + case 16: + /* } */ case 13: + _r$9 = field.Pack($subslice(buf, pos), $clone(v, reflect.Value), length, options); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + n = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } else { + pos = pos + (n) >> 0; + } + _i++; + /* } */ $s = 4; continue; case 5: + $s = -1; return [pos, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.Pack }; } $f._1 = _1; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.f = f; $f.field = field; $f.i = i; $f.length = length; $f.length$1 = length$1; $f.n = n; $f.options = options; $f.pos = pos; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Fields).prototype.Pack = function(buf, val, options) { return this.$get().Pack(buf, val, options); }; + Fields.prototype.Unpack = function(r, val, options) { + var _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _v, buf, err, err$1, err$2, err$3, err$4, err$5, err$6, f, field, fields, fields$1, i, i$1, length, options, r, size, tmp, typ, v, v$1, val, vals, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; buf = $f.buf; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; f = $f.f; field = $f.field; fields = $f.fields; fields$1 = $f.fields$1; i = $f.i; i$1 = $f.i$1; length = $f.length; options = $f.options; r = $f.r; size = $f.size; tmp = $f.tmp; typ = $f.typ; v = $f.v; v$1 = $f.v$1; val = $f.val; vals = $f.vals; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + /* while (true) { */ case 1: + /* if (!($clone(val, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(val, reflect.Value).Kind() === 22)) { $s = 2; continue; } + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ $s = 1; continue; case 2: + tmp = arrayType$1.zero(); + buf = sliceType.nil; + _ref = f; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (field === ptrType$1.nil) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (field === ptrType$1.nil) { */ case 6: + _i++; + /* continue; */ $s = 4; continue; + /* } */ case 7: + _r$2 = $clone(val, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + length = field.Len; + /* */ if (!(field.Sizefrom === sliceType$2.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(field.Sizefrom === sliceType$2.nil)) { */ case 9: + _r$3 = f.sizefrom($clone(val, reflect.Value), field.Sizefrom); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + length = _r$3; + /* } */ case 10: + if (!($clone(v, reflect.Value).Kind() === 22)) { _v = false; $s = 14; continue s; } + _r$4 = $clone(v, reflect.Value).Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = $clone(_r$4, reflect.Value).IsValid(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v = !_r$5; case 14: + /* */ if (_v) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_v) { */ case 12: + _r$6 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = reflect.New(_r$6); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$7, reflect.Value)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + /* */ if (field.Type === 15) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (field.Type === 15) { */ case 20: + /* */ if (field.Slice) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (field.Slice) { */ case 23: + _r$8 = reflect.MakeSlice($clone(v, reflect.Value).Type(), length, length); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + vals = _r$8; + i$1 = 0; + /* while (true) { */ case 27: + /* if (!(i$1 < length)) { break; } */ if(!(i$1 < length)) { $s = 28; continue; } + _r$9 = $clone(vals, reflect.Value).Index(i$1); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + v$1 = _r$9; + _r$10 = parseFields($clone(v$1, reflect.Value)); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple = _r$10; + fields = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$11 = fields.Unpack(r, $clone(v$1, reflect.Value), options); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + err$1 = _r$11; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + i$1 = i$1 + (1) >> 0; + /* } */ $s = 27; continue; case 28: + $r = $clone(v, reflect.Value).Set($clone(vals, reflect.Value)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 25; continue; + /* } else { */ case 24: + _r$12 = parseFields($clone(v, reflect.Value)); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$1 = _r$12; + fields$1 = _tuple$1[0]; + err$2 = _tuple$1[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return err$2; + } + _r$13 = fields$1.Unpack(r, $clone(v, reflect.Value), options); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + err$3 = _r$13; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return err$3; + } + /* } */ case 25: + _i++; + /* continue; */ $s = 4; continue; + $s = 22; continue; + /* } else { */ case 21: + _r$14 = new Type(field.Type).Resolve(options); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + typ = _r$14; + /* */ if (typ === 19) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (typ === 19) { */ case 36: + _r$15 = $clone($clone(v, reflect.Value).Addr(), reflect.Value).Interface(); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$16 = $assertType(_r$15, Custom).Unpack(r, length, options); /* */ $s = 40; case 40: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + err$4 = _r$16; + if (!($interfaceIsEqual(err$4, $ifaceNil))) { + $s = -1; return err$4; + } + $s = 38; continue; + /* } else { */ case 37: + _r$17 = new Type(field.Type).Resolve(options); /* */ $s = 41; case 41: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = new Type(_r$17).Size(); /* */ $s = 42; case 42: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + size = $imul(length, _r$18); + if (size < 8) { + buf = $subslice(new sliceType(tmp), 0, size); + } else { + buf = $makeSlice(sliceType, size); + } + _r$19 = io.ReadFull(r, buf); /* */ $s = 43; case 43: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _tuple$2 = _r$19; + err$5 = _tuple$2[1]; + if (!($interfaceIsEqual(err$5, $ifaceNil))) { + $s = -1; return err$5; + } + _r$20 = field.Unpack($subslice(buf, 0, size), $clone(v, reflect.Value), length, options); /* */ $s = 44; case 44: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + err$6 = _r$20; + if (!($interfaceIsEqual(err$6, $ifaceNil))) { + $s = -1; return err$6; + } + /* } */ case 38: + /* } */ case 22: + _i++; + /* } */ $s = 4; continue; case 5: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.Unpack }; } $f._i = _i; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.f = f; $f.field = field; $f.fields = fields; $f.fields$1 = fields$1; $f.i = i; $f.i$1 = i$1; $f.length = length; $f.options = options; $f.r = r; $f.size = size; $f.tmp = tmp; $f.typ = typ; $f.v = v; $f.v$1 = v$1; $f.val = val; $f.vals = vals; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Fields).prototype.Unpack = function(r, val, options) { return this.$get().Unpack(r, val, options); }; + parseStrucTag = function(tag) { + var _i, _ref, s, t, tag, tagStr, tmp, tmp$1, x, x$1, x$2; + t = new strucTag.ptr("", (x = binary.BigEndian, new x.constructor.elem(x)), "", false, ""); + tagStr = new reflect.StructTag(tag).Get("struc"); + if (tagStr === "") { + tagStr = new reflect.StructTag(tag).Get("struct"); + } + _ref = strings.Split(tagStr, ","); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (strings.HasPrefix(s, "sizeof=")) { + tmp = strings.SplitN(s, "=", 2); + t.Sizeof = (1 >= tmp.$length ? ($throwRuntimeError("index out of range"), undefined) : tmp.$array[tmp.$offset + 1]); + } else if (strings.HasPrefix(s, "sizefrom=")) { + tmp$1 = strings.SplitN(s, "=", 2); + t.Sizefrom = (1 >= tmp$1.$length ? ($throwRuntimeError("index out of range"), undefined) : tmp$1.$array[tmp$1.$offset + 1]); + } else if (s === "big") { + t.Order = (x$1 = binary.BigEndian, new x$1.constructor.elem(x$1)); + } else if (s === "little") { + t.Order = (x$2 = binary.LittleEndian, new x$2.constructor.elem(x$2)); + } else if (s === "skip") { + t.Skip = true; + } else { + t.Type = s; + } + _i++; + } + return t; + }; + parseField = function(f) { + var _1, _2, _entry, _entry$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, defTypeOk, err, f, fd, first, match, ok, ok$1, pureType, tag, tmp, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _entry = $f._entry; _entry$1 = $f._entry$1; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; defTypeOk = $f.defTypeOk; err = $f.err; f = $f.f; fd = $f.fd; first = $f.first; match = $f.match; ok = $f.ok; ok$1 = $f.ok$1; pureType = $f.pureType; tag = $f.tag; tmp = $f.tmp; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + fd = ptrType$1.nil; + tag = ptrType$2.nil; + err = $ifaceNil; + tag = parseStrucTag(f.Tag); + ok = false; + _r$1 = f.Type.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + fd = new Field.ptr(f.Name, false, 0, 0, 0, false, false, 1, tag.Order, sliceType$2.nil, sliceType$2.nil, Fields.nil, _r$1); + _1 = fd.kind; + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (23)) { $s = 4; continue; } + /* */ if (_1 === (22)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (17)) { */ case 3: + fd.Slice = true; + fd.Array = true; + _r$2 = f.Type.Len(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + fd.Len = _r$2; + _r$3 = f.Type.Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = _r$3.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + fd.kind = _r$4; + $s = 6; continue; + /* } else if (_1 === (23)) { */ case 4: + fd.Slice = true; + fd.Len = -1; + _r$5 = f.Type.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + fd.kind = _r$6; + $s = 6; continue; + /* } else if (_1 === (22)) { */ case 5: + fd.Ptr = true; + _r$7 = f.Type.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = _r$7.Kind(); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + fd.kind = _r$8; + /* } */ case 6: + case 2: + tmp = reflect.New(f.Type); + _r$9 = $clone(tmp, reflect.Value).Interface(); /* */ $s = 14; case 14: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = $assertType(_r$9, Custom, true); + ok$1 = _tuple[1]; + if (ok$1) { + fd.Type = 19; + $s = -1; return [fd, tag, err]; + } + defTypeOk = false; + _tuple$1 = (_entry = reflectTypeMap[reflect.Kind.keyFor(fd.kind)], _entry !== undefined ? [_entry.v, true] : [0, false]); + fd.defType = _tuple$1[0]; + defTypeOk = _tuple$1[1]; + _r$10 = typeLenRe.ReplaceAllLiteralString(tag.Type, ""); /* */ $s = 15; case 15: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + pureType = _r$10; + _tuple$2 = (_entry$1 = typeLookup[$String.keyFor(pureType)], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]); + fd.Type = _tuple$2[0]; + ok = _tuple$2[1]; + /* */ if (ok) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (ok) { */ case 16: + fd.Len = 1; + _r$11 = typeLenRe.FindAllStringSubmatch(tag.Type, -1); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + match = _r$11; + if (match.$length > 0 && (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]).$length > 1) { + fd.Slice = true; + first = (x = (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1])); + if (first === "") { + fd.Len = -1; + } else { + _tuple$3 = strconv.Atoi(first); + fd.Len = _tuple$3[0]; + err = _tuple$3[1]; + } + } + $s = -1; return [fd, tag, err]; + /* } */ case 17: + _2 = f.Type; + /* */ if ($interfaceIsEqual(_2, (reflect.TypeOf(new Size_t(0, 0))))) { $s = 20; continue; } + /* */ if ($interfaceIsEqual(_2, (reflect.TypeOf(new Off_t(0, 0))))) { $s = 21; continue; } + /* */ if (defTypeOk) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if ($interfaceIsEqual(_2, (reflect.TypeOf(new Size_t(0, 0))))) { */ case 20: + fd.Type = 17; + $s = 24; continue; + /* } else if ($interfaceIsEqual(_2, (reflect.TypeOf(new Off_t(0, 0))))) { */ case 21: + fd.Type = 18; + $s = 24; continue; + /* } else if (defTypeOk) { */ case 22: + fd.Type = fd.defType; + $s = 24; continue; + /* } else { */ case 23: + _r$12 = fmt.Sprintf("struc: Could not resolve field '%v' type '%v'.", new sliceType$1([new $String(f.Name), f.Type])); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$13 = errors.New(_r$12); /* */ $s = 26; case 26: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + err = _r$13; + /* } */ case 24: + case 19: + $s = -1; return [fd, tag, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parseField }; } $f._1 = _1; $f._2 = _2; $f._entry = _entry; $f._entry$1 = _entry$1; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.defTypeOk = defTypeOk; $f.err = err; $f.f = f; $f.fd = fd; $f.first = first; $f.match = match; $f.ok = ok; $f.ok$1 = ok$1; $f.pureType = pureType; $f.tag = tag; $f.tmp = tmp; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + parseFieldsLocked = function(v) { + var _entry, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, f, field, fields, i, ok, ok$1, ok$2, sizefrom, sizeofMap, source, t, tag, target, typ, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; err = $f.err; f = $f.f; field = $f.field; fields = $f.fields; i = $f.i; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; sizefrom = $f.sizefrom; sizeofMap = $f.sizeofMap; source = $f.source; t = $f.t; tag = $f.tag; target = $f.target; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + /* if (!($clone(v, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(v, reflect.Value).Kind() === 22)) { $s = 2; continue; } + _r$1 = $clone(v, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + /* } */ $s = 1; continue; case 2: + t = $clone(v, reflect.Value).Type(); + if ($clone(v, reflect.Value).NumField() < 1) { + $s = -1; return [Fields.nil, errors.New("struc: Struct has no fields.")]; + } + sizeofMap = {}; + fields = $makeSlice(Fields, $clone(v, reflect.Value).NumField()); + i = 0; + /* while (true) { */ case 4: + _r$2 = t.NumField(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* if (!(i < _r$2)) { break; } */ if(!(i < _r$2)) { $s = 5; continue; } + _r$3 = t.Field(i); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + field = $clone(_r$3, reflect.StructField); + _r$4 = parseField($clone(field, reflect.StructField)); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + f = _tuple[0]; + tag = _tuple[1]; + err = _tuple[2]; + /* */ if (tag.Skip) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (tag.Skip) { */ case 9: + i = i + (1) >> 0; + /* continue; */ $s = 4; continue; + /* } */ case 10: + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [Fields.nil, err]; + } + _r$5 = $clone(v, reflect.Value).Field(i); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = $clone(_r$5, reflect.Value).CanSet(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (!_r$6) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!_r$6) { */ case 11: + i = i + (1) >> 0; + /* continue; */ $s = 4; continue; + /* } */ case 12: + f.Index = i; + /* */ if (!(tag.Sizeof === "")) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!(tag.Sizeof === "")) { */ case 15: + _r$7 = t.FieldByName(tag.Sizeof); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$1 = _r$7; + target = $clone(_tuple$1[0], reflect.StructField); + ok = _tuple$1[1]; + /* */ if (!ok) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!ok) { */ case 18: + _r$8 = fmt.Errorf("struc: `sizeof=%s` field does not exist", new sliceType$1([new $String(tag.Sizeof)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $s = -1; return [Fields.nil, _r$8]; + /* } */ case 19: + f.Sizeof = target.Index; + _key = tag.Sizeof; (sizeofMap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: field.Index }; + /* } */ case 16: + _tuple$2 = (_entry = sizeofMap[$String.keyFor(field.Name)], _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]); + sizefrom = _tuple$2[0]; + ok$1 = _tuple$2[1]; + if (ok$1) { + f.Sizefrom = sizefrom; + } + /* */ if (!(tag.Sizefrom === "")) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!(tag.Sizefrom === "")) { */ case 21: + _r$9 = t.FieldByName(tag.Sizefrom); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$3 = _r$9; + source = $clone(_tuple$3[0], reflect.StructField); + ok$2 = _tuple$3[1]; + /* */ if (!ok$2) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!ok$2) { */ case 24: + _r$10 = fmt.Errorf("struc: `sizefrom=%s` field does not exist", new sliceType$1([new $String(tag.Sizefrom)])); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $s = -1; return [Fields.nil, _r$10]; + /* } */ case 25: + f.Sizefrom = source.Index; + /* } */ case 22: + /* */ if ((f.Len === -1) && f.Sizefrom === sliceType$2.nil) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if ((f.Len === -1) && f.Sizefrom === sliceType$2.nil) { */ case 27: + _r$11 = fmt.Errorf("struc: field `%s` is a slice with no length or sizeof field", new sliceType$1([new $String(field.Name)])); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $s = -1; return [Fields.nil, _r$11]; + /* } */ case 28: + /* */ if (f.Type === 15) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (f.Type === 15) { */ case 30: + typ = field.Type; + /* */ if (f.Ptr) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (f.Ptr) { */ case 32: + _r$12 = typ.Elem(); /* */ $s = 34; case 34: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + typ = _r$12; + /* } */ case 33: + /* */ if (f.Slice) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (f.Slice) { */ case 35: + _r$13 = typ.Elem(); /* */ $s = 37; case 37: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + typ = _r$13; + /* } */ case 36: + _r$14 = parseFieldsLocked($clone(reflect.New(typ), reflect.Value)); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _tuple$4 = _r$14; + f.Fields = _tuple$4[0]; + err = _tuple$4[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [Fields.nil, err]; + } + /* } */ case 31: + ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i] = f); + i = i + (1) >> 0; + /* } */ $s = 4; continue; case 5: + $s = -1; return [fields, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parseFieldsLocked }; } $f._entry = _entry; $f._key = _key; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.err = err; $f.f = f; $f.field = field; $f.fields = fields; $f.i = i; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.sizefrom = sizefrom; $f.sizeofMap = sizeofMap; $f.source = source; $f.t = t; $f.tag = tag; $f.target = target; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + fieldCacheLookup = function(t) { + var _entry, _tuple, cached, ok, t, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; cached = $f.cached; ok = $f.ok; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + $r = fieldCacheLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(fieldCacheLock, "RUnlock"), []]); + _tuple = (_entry = fieldCache[reflect.Type.keyFor(t)], _entry !== undefined ? [_entry.v, true] : [Fields.nil, false]); + cached = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return cached; + } + $s = -1; return Fields.nil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return Fields.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: fieldCacheLookup }; } $f._entry = _entry; $f._tuple = _tuple; $f.cached = cached; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + parseFields = function(v) { + var _key, _r$1, _r$2, _r$3, _r$4, _tuple, cached, cached$1, err, fields, t, v, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; cached = $f.cached; cached$1 = $f.cached$1; err = $f.err; fields = $f.fields; t = $f.t; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + /* while (true) { */ case 1: + /* if (!($clone(v, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(v, reflect.Value).Kind() === 22)) { $s = 2; continue; } + _r$1 = $clone(v, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + /* } */ $s = 1; continue; case 2: + t = $clone(v, reflect.Value).Type(); + _r$2 = fieldCacheLookup(t); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + cached = _r$2; + if (!(cached === Fields.nil)) { + $s = -1; return [cached, $ifaceNil]; + } + $r = parseLock.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(parseLock, "Unlock"), []]); + _r$3 = fieldCacheLookup(t); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + cached$1 = _r$3; + if (!(cached$1 === Fields.nil)) { + $s = -1; return [cached$1, $ifaceNil]; + } + _r$4 = parseFieldsLocked($clone(v, reflect.Value)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + fields = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [Fields.nil, err]; + } + $r = fieldCacheLock.Lock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _key = t; (fieldCache || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key)] = { k: _key, v: fields }; + $r = fieldCacheLock.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [fields, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [Fields.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseFields }; } $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.cached = cached; $f.cached$1 = cached$1; $f.err = err; $f.fields = fields; $f.t = t; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Options.ptr.prototype.Validate = function() { + var _1, _r$1, o, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; o = $f.o; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + o = this; + /* */ if (o.PtrSize === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (o.PtrSize === 0) { */ case 1: + o.PtrSize = 32; + $s = 3; continue; + /* } else { */ case 2: + _1 = o.PtrSize; + /* */ if ((_1 === (8)) || (_1 === (16)) || (_1 === (32)) || (_1 === (64))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((_1 === (8)) || (_1 === (16)) || (_1 === (32)) || (_1 === (64))) { */ case 5: + $s = 7; continue; + /* } else { */ case 6: + _r$1 = fmt.Errorf("Invalid Options.PtrSize: %d. Must be in (8, 16, 32, 64)", new sliceType$1([new $Int(o.PtrSize)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* } */ case 7: + case 4: + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Options.ptr.prototype.Validate }; } $f._1 = _1; $f._r$1 = _r$1; $f.o = o; $f.$s = $s; $f.$r = $r; return $f; + }; + Options.prototype.Validate = function() { return this.$val.Validate(); }; + init = function() { + var _r$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$1 = emptyOptions.Validate(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f._r$1 = _r$1; $f.$s = $s; $f.$r = $r; return $f; + }; + prep = function(data) { + var _1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, c, data, err, fields, next, ok, value, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; data = $f.data; err = $f.err; fields = $f.fields; next = $f.next; ok = $f.ok; value = $f.value; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$1 = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + value = _r$1; + /* while (true) { */ case 2: + /* if (!($clone(value, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(value, reflect.Value).Kind() === 22)) { $s = 3; continue; } + _r$2 = $clone(value, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = $clone(_r$2, reflect.Value).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + next = _r$3; + /* */ if ((next === 25) || (next === 22)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((next === 25) || (next === 22)) { */ case 6: + _r$4 = $clone(value, reflect.Value).Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + value = _r$4; + $s = 8; continue; + /* } else { */ case 7: + /* break; */ $s = 3; continue; + /* } */ case 8: + /* } */ $s = 2; continue; case 3: + _1 = $clone(value, reflect.Value).Kind(); + /* */ if (_1 === (25)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_1 === (25)) { */ case 11: + _r$5 = parseFields($clone(value, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple = _r$5; + fields = _tuple[0]; + err = _tuple[1]; + $s = -1; return [value, fields, err]; + /* } else { */ case 12: + /* */ if (!$clone(value, reflect.Value).IsValid()) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!$clone(value, reflect.Value).IsValid()) { */ case 15: + _r$6 = fmt.Errorf("Invalid reflect.Value for %+v", new sliceType$1([data])); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $s = -1; return [new reflect.Value.ptr(ptrType.nil, 0, 0), $ifaceNil, _r$6]; + /* } */ case 16: + _tuple$1 = $assertType(data, Custom, true); + c = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + $s = -1; return [value, (x = new customFallback.ptr(c), new x.constructor.elem(x)), $ifaceNil]; + } + $s = -1; return [value, (x$1 = ($clone(value, binaryFallback)), new x$1.constructor.elem(x$1)), $ifaceNil]; + /* } */ case 13: + case 10: + $s = -1; return [new reflect.Value.ptr(ptrType.nil, 0, 0), $ifaceNil, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: prep }; } $f._1 = _1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.data = data; $f.err = err; $f.fields = fields; $f.next = next; $f.ok = ok; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Unpack = function(r, data) { + var _r$1, data, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; data = $f.data; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$1 = UnpackWithOptions(r, data, ptrType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return _r$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: Unpack }; } $f._r$1 = _r$1; $f.data = data; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Unpack = Unpack; + UnpackWithOptions = function(r, data, options) { + var _r$1, _r$2, _r$3, _tuple, data, err, err$1, options, packer, r, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; data = $f.data; err = $f.err; err$1 = $f.err$1; options = $f.options; packer = $f.packer; r = $f.r; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (options === ptrType$3.nil) { + options = emptyOptions; + } + _r$1 = options.Validate(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$2 = prep(data); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + val = _tuple[0]; + packer = _tuple[1]; + err$1 = _tuple[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + _r$3 = packer.Unpack(r, $clone(val, reflect.Value), options); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $s = -1; return _r$3; + /* */ } return; } if ($f === undefined) { $f = { $blk: UnpackWithOptions }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.options = options; $f.packer = packer; $f.r = r; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.UnpackWithOptions = UnpackWithOptions; + Type.prototype.Resolve = function(options) { + var _1, _2, _3, _r$1, _r$2, options, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _r$1 = $f._r$1; _r$2 = $f._r$2; options = $f.options; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + t = this.$val; + _1 = t; + /* */ if (_1 === (18)) { $s = 2; continue; } + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (18)) { */ case 2: + _2 = options.PtrSize; + /* */ if (_2 === (8)) { $s = 6; continue; } + /* */ if (_2 === (16)) { $s = 7; continue; } + /* */ if (_2 === (32)) { $s = 8; continue; } + /* */ if (_2 === (64)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_2 === (8)) { */ case 6: + $s = -1; return 4; + /* } else if (_2 === (16)) { */ case 7: + $s = -1; return 6; + /* } else if (_2 === (32)) { */ case 8: + $s = -1; return 8; + /* } else if (_2 === (64)) { */ case 9: + $s = -1; return 10; + /* } else { */ case 10: + _r$1 = fmt.Sprintf("unsupported ptr bits: %d", new sliceType$1([new $Int(options.PtrSize)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 11: + case 5: + $s = 4; continue; + /* } else if (_1 === (17)) { */ case 3: + _3 = options.PtrSize; + /* */ if (_3 === (8)) { $s = 14; continue; } + /* */ if (_3 === (16)) { $s = 15; continue; } + /* */ if (_3 === (32)) { $s = 16; continue; } + /* */ if (_3 === (64)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_3 === (8)) { */ case 14: + $s = -1; return 5; + /* } else if (_3 === (16)) { */ case 15: + $s = -1; return 7; + /* } else if (_3 === (32)) { */ case 16: + $s = -1; return 9; + /* } else if (_3 === (64)) { */ case 17: + $s = -1; return 11; + /* } else { */ case 18: + _r$2 = fmt.Sprintf("unsupported ptr bits: %d", new sliceType$1([new $Int(options.PtrSize)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String(_r$2)); + /* } */ case 19: + case 13: + /* } */ case 4: + case 1: + $s = -1; return t; + /* */ } return; } if ($f === undefined) { $f = { $blk: Type.prototype.Resolve }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.options = options; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Type).prototype.Resolve = function(options) { return new Type(this.$get()).Resolve(options); }; + Type.prototype.String = function() { + var _entry, t; + t = this.$val; + return (_entry = typeNames[Type.keyFor(t)], _entry !== undefined ? _entry.v : ""); + }; + $ptrType(Type).prototype.String = function() { return new Type(this.$get()).String(); }; + Type.prototype.Size = function() { + var _1, t; + t = this.$val; + _1 = t; + if ((_1 === (17)) || (_1 === (18))) { + $panic(new $String("Size_t/Off_t types must be converted to another type using options.PtrSize")); + } else if ((_1 === (1)) || (_1 === (14)) || (_1 === (4)) || (_1 === (5)) || (_1 === (2))) { + return 1; + } else if ((_1 === (6)) || (_1 === (7))) { + return 2; + } else if ((_1 === (8)) || (_1 === (9)) || (_1 === (12))) { + return 4; + } else if ((_1 === (10)) || (_1 === (11)) || (_1 === (13))) { + return 8; + } else { + $panic(new $String("Cannot resolve size of type:" + new Type(t).String())); + } + }; + $ptrType(Type).prototype.Size = function() { return new Type(this.$get()).Size(); }; + init$1 = function() { + var _entry, _i, _key, _keys, _ref, enum$1, name; + _ref = typeLookup; + _i = 0; + _keys = $keys(_ref); + while (true) { + if (!(_i < _keys.length)) { break; } + _entry = _ref[_keys[_i]]; + if (_entry === undefined) { + _i++; + continue; + } + name = _entry.k; + enum$1 = _entry.v; + _key = enum$1; (typeNames || $throwRuntimeError("assignment to entry in nil map"))[Type.keyFor(_key)] = { k: _key, v: name }; + _i++; + } + }; + byteWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; + binaryFallback.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, ptrType$3], [$Int, $error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, reflect.Value, ptrType$3], [$error], false)}]; + customFallback.methods = [{prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, ptrType$3], [$Int, $error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, reflect.Value, ptrType$3], [$error], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "packVal", name: "packVal", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$Int, $error], false)}, {prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$Int, $error], false)}, {prop: "unpackVal", name: "unpackVal", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$error], false)}]; + Fields.methods = [{prop: "SetByteOrder", name: "SetByteOrder", pkg: "", typ: $funcType([binary.ByteOrder], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "sizefrom", name: "sizefrom", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", typ: $funcType([reflect.Value, sliceType$2], [$Int], false)}, {prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, ptrType$3], [$Int, $error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, reflect.Value, ptrType$3], [$error], false)}]; + ptrType$3.methods = [{prop: "Validate", name: "Validate", pkg: "", typ: $funcType([], [$error], false)}]; + Type.methods = [{prop: "Resolve", name: "Resolve", pkg: "", typ: $funcType([ptrType$3], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}]; + byteWriter.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); + binaryFallback.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", embedded: true, exported: false, typ: reflect.flag, tag: ""}]); + Custom.init([{prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, ptrType$3], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([ptrType$3], [$Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, $Int, ptrType$3], [$error], false)}]); + customFallback.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", [{prop: "custom", name: "custom", embedded: false, exported: false, typ: Custom, tag: ""}]); + Field.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Ptr", name: "Ptr", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "defType", name: "defType", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "Array", name: "Array", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Slice", name: "Slice", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: binary.ByteOrder, tag: ""}, {prop: "Sizeof", name: "Sizeof", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Sizefrom", name: "Sizefrom", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Fields", name: "Fields", embedded: false, exported: true, typ: Fields, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: reflect.Kind, tag: ""}]); + Fields.init(ptrType$1); + strucTag.init("", [{prop: "Type", name: "Type", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: binary.ByteOrder, tag: ""}, {prop: "Sizeof", name: "Sizeof", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Skip", name: "Skip", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Sizefrom", name: "Sizefrom", embedded: false, exported: true, typ: $String, tag: ""}]); + Options.init("", [{prop: "ByteAlign", name: "ByteAlign", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "PtrSize", name: "PtrSize", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: binary.ByteOrder, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = regexp.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + fieldCacheLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0); + parseLock = new sync.Mutex.ptr(0, 0); + _r = regexp.MustCompile("^\\[(\\d*)\\]"); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typeLenRe = _r; + fieldCache = {}; + emptyOptions = new Options.ptr(0, 0, $ifaceNil); + typeLookup = $makeMap($String.keyFor, [{ k: "pad", v: 1 }, { k: "bool", v: 2 }, { k: "byte", v: 5 }, { k: "int8", v: 4 }, { k: "uint8", v: 5 }, { k: "int16", v: 6 }, { k: "uint16", v: 7 }, { k: "int32", v: 8 }, { k: "uint32", v: 9 }, { k: "int64", v: 10 }, { k: "uint64", v: 11 }, { k: "float32", v: 12 }, { k: "float64", v: 13 }, { k: "size_t", v: 17 }, { k: "off_t", v: 18 }]); + typeNames = $makeMap(Type.keyFor, [{ k: 19, v: "Custom" }]); + reflectTypeMap = $makeMap(reflect.Kind.keyFor, [{ k: 1, v: 2 }, { k: 3, v: 4 }, { k: 4, v: 6 }, { k: 2, v: 8 }, { k: 5, v: 8 }, { k: 6, v: 10 }, { k: 8, v: 5 }, { k: 9, v: 7 }, { k: 7, v: 9 }, { k: 10, v: 9 }, { k: 11, v: 11 }, { k: 13, v: 12 }, { k: 14, v: 13 }, { k: 24, v: 14 }, { k: 25, v: 15 }, { k: 22, v: 16 }]); + $r = init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + init$1(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/proto"] = (function() { + var $pkg = {}, $init, bytes, struc, io, WebsocketLength, WebsocketConnectionRequest, sliceType, ptrType, ReadRequest; + bytes = $packages["bytes"]; + struc = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc"]; + io = $packages["io"]; + WebsocketLength = $pkg.WebsocketLength = $newType(0, $kindStruct, "proto.WebsocketLength", true, "github.com/xiaokangwang/BrowserBridge/proto", true, function(Length_, Data_) { + this.$val = this; + if (arguments.length === 0) { + this.Length = 0; + this.Data = sliceType.nil; + return; + } + this.Length = Length_; + this.Data = Data_; + }); + WebsocketConnectionRequest = $pkg.WebsocketConnectionRequest = $newType(0, $kindStruct, "proto.WebsocketConnectionRequest", true, "github.com/xiaokangwang/BrowserBridge/proto", true, function(DestinationSize_, Destination_) { + this.$val = this; + if (arguments.length === 0) { + this.DestinationSize = 0; + this.Destination = ""; + return; + } + this.DestinationSize = DestinationSize_; + this.Destination = Destination_; + }); + sliceType = $sliceType($Uint8); + ptrType = $ptrType(WebsocketConnectionRequest); + ReadRequest = function(reader) { + var Request, _r, _r$1, data, err, reader, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; Request = $f.Request; _r = $f._r; _r$1 = $f._r$1; data = $f.data; err = $f.err; reader = $f.reader; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + Request = [Request]; + data = [data]; + err = $ifaceNil; + data[0] = new WebsocketLength.ptr(0, sliceType.nil); + _r = struc.Unpack(reader, data[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [err, ptrType.nil]; + } + Request[0] = new WebsocketConnectionRequest.ptr(0, ""); + _r$1 = struc.Unpack(bytes.NewReader(data[0].Data), Request[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [err, ptrType.nil]; + } + $s = -1; return [$ifaceNil, Request[0]]; + /* */ } return; } if ($f === undefined) { $f = { $blk: ReadRequest }; } $f.Request = Request; $f._r = _r; $f._r$1 = _r$1; $f.data = data; $f.err = err; $f.reader = reader; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.ReadRequest = ReadRequest; + WebsocketLength.init("", [{prop: "Length", name: "Length", embedded: false, exported: true, typ: $Uint32, tag: "struc:\"uint32,big,sizeof=Data\""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: sliceType, tag: ""}]); + WebsocketConnectionRequest.init("", [{prop: "DestinationSize", name: "DestinationSize", embedded: false, exported: true, typ: $Uint32, tag: "struc:\"uint32,big,sizeof=Destination\""}, {prop: "Destination", name: "Destination", embedded: false, exported: true, typ: $String, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = struc.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs"] = (function() { + var $pkg = {}, $init, js, ReadyState, WebSocket, ptrType, ptrType$1, ptrType$2, funcType, New; + js = $packages["github.com/gopherjs/gopherjs/js"]; + ReadyState = $pkg.ReadyState = $newType(2, $kindUint16, "websocketjs.ReadyState", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs", true, null); + WebSocket = $pkg.WebSocket = $newType(0, $kindStruct, "websocketjs.WebSocket", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs", true, function(Object_, URL_, ReadyState_, BufferedAmount_, Extensions_, Protocol_, BinaryType_) { + this.$val = this; + if (arguments.length === 0) { + this.Object = null; + this.URL = ""; + this.ReadyState = 0; + this.BufferedAmount = 0; + this.Extensions = ""; + this.Protocol = ""; + this.BinaryType = ""; + return; + } + this.Object = Object_; + this.URL = URL_; + this.ReadyState = ReadyState_; + this.BufferedAmount = BufferedAmount_; + this.Extensions = Extensions_; + this.Protocol = Protocol_; + this.BinaryType = BinaryType_; + }); + ptrType = $ptrType(WebSocket); + ptrType$1 = $ptrType(js.Error); + ptrType$2 = $ptrType(js.Object); + funcType = $funcType([ptrType$2], [], false); + ReadyState.prototype.String = function() { + var _1, rs; + rs = this.$val; + _1 = rs; + if (_1 === (0)) { + return "Connecting"; + } else if (_1 === (1)) { + return "Open"; + } else if (_1 === (2)) { + return "Closing"; + } else if (_1 === (3)) { + return "Closed"; + } else { + return "Unknown"; + } + }; + $ptrType(ReadyState).prototype.String = function() { return new ReadyState(this.$get()).String(); }; + New = function(url) { + var err, object, url, ws, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + ws = ptrType.nil; + err = $ifaceNil; + $deferred.push([(function() { + var _tuple, e, jsErr, ok; + e = $recover(); + if ($interfaceIsEqual(e, $ifaceNil)) { + return; + } + _tuple = $assertType(e, ptrType$1, true); + jsErr = _tuple[0]; + ok = _tuple[1]; + if (ok && !(jsErr === ptrType$1.nil)) { + ws = ptrType.nil; + err = jsErr; + } else { + $panic(e); + } + }), []]); + object = new ($global.WebSocket)($externalize(url, $String)); + ws = new WebSocket.ptr(object, "", 0, 0, "", "", ""); + return [ws, err]; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [ws, err]; } } + }; + $pkg.New = New; + WebSocket.ptr.prototype.AddEventListener = function(typ, useCapture, listener) { + var listener, typ, useCapture, ws; + ws = this; + ws.Object.addEventListener($externalize(typ, $String), $externalize(listener, funcType), $externalize(useCapture, $Bool)); + }; + WebSocket.prototype.AddEventListener = function(typ, useCapture, listener) { return this.$val.AddEventListener(typ, useCapture, listener); }; + WebSocket.ptr.prototype.RemoveEventListener = function(typ, useCapture, listener) { + var listener, typ, useCapture, ws; + ws = this; + ws.Object.removeEventListener($externalize(typ, $String), $externalize(listener, funcType), $externalize(useCapture, $Bool)); + }; + WebSocket.prototype.RemoveEventListener = function(typ, useCapture, listener) { return this.$val.RemoveEventListener(typ, useCapture, listener); }; + WebSocket.ptr.prototype.Send = function(data) { + var data, err, ws, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + err = $ifaceNil; + ws = this; + $deferred.push([(function() { + var _tuple, e, jsErr, ok; + e = $recover(); + if ($interfaceIsEqual(e, $ifaceNil)) { + return; + } + _tuple = $assertType(e, ptrType$1, true); + jsErr = _tuple[0]; + ok = _tuple[1]; + if (ok && !(jsErr === ptrType$1.nil)) { + err = jsErr; + } else { + $panic(e); + } + }), []]); + ws.Object.send($externalize(data, $emptyInterface)); + return err; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } } + }; + WebSocket.prototype.Send = function(data) { return this.$val.Send(data); }; + WebSocket.ptr.prototype.Close = function() { + var err, ws, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + err = $ifaceNil; + ws = this; + $deferred.push([(function() { + var _tuple, e, jsErr, ok; + e = $recover(); + if ($interfaceIsEqual(e, $ifaceNil)) { + return; + } + _tuple = $assertType(e, ptrType$1, true); + jsErr = _tuple[0]; + ok = _tuple[1]; + if (ok && !(jsErr === ptrType$1.nil)) { + err = jsErr; + } else { + $panic(e); + } + }), []]); + ws.Object.close(1000); + return err; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } } + }; + WebSocket.prototype.Close = function() { return this.$val.Close(); }; + ReadyState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType.methods = [{prop: "AddEventListener", name: "AddEventListener", pkg: "", typ: $funcType([$String, $Bool, funcType], [], false)}, {prop: "RemoveEventListener", name: "RemoveEventListener", pkg: "", typ: $funcType([$String, $Bool, funcType], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + WebSocket.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType$2, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: "js:\"url\""}, {prop: "ReadyState", name: "ReadyState", embedded: false, exported: true, typ: ReadyState, tag: "js:\"readyState\""}, {prop: "BufferedAmount", name: "BufferedAmount", embedded: false, exported: true, typ: $Uint32, tag: "js:\"bufferedAmount\""}, {prop: "Extensions", name: "Extensions", embedded: false, exported: true, typ: $String, tag: "js:\"extensions\""}, {prop: "Protocol", name: "Protocol", embedded: false, exported: true, typ: $String, tag: "js:\"protocol\""}, {prop: "BinaryType", name: "BinaryType", embedded: false, exported: true, typ: $String, tag: "js:\"binaryType\""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["context"] = (function() { + var $pkg = {}, $init, errors, fmt, reflect, sync, time, emptyCtx, ptrType, structType, ptrType$1, chanType, background, todo, closedchan, init; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + reflect = $packages["reflect"]; + sync = $packages["sync"]; + time = $packages["time"]; + emptyCtx = $pkg.emptyCtx = $newType(4, $kindInt, "context.emptyCtx", true, "context", false, null); + ptrType = $ptrType(emptyCtx); + structType = $structType("", []); + ptrType$1 = $ptrType(time.Location); + chanType = $chanType(structType, false, true); + $ptrType(emptyCtx).prototype.Deadline = function() { + var deadline, ok; + deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + ok = false; + return [deadline, ok]; + }; + $ptrType(emptyCtx).prototype.Done = function() { + return $chanNil; + }; + $ptrType(emptyCtx).prototype.Err = function() { + return $ifaceNil; + }; + $ptrType(emptyCtx).prototype.Value = function(key) { + var key; + return $ifaceNil; + }; + $ptrType(emptyCtx).prototype.String = function() { + var _1, e; + e = this; + _1 = e; + if (_1 === (background)) { + return "context.Background"; + } else if (_1 === (todo)) { + return "context.TODO"; + } + return "unknown empty Context"; + }; + init = function() { + $close(closedchan); + }; + ptrType.methods = [{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.Canceled = errors.New("context canceled"); + background = $newDataPointer(0, ptrType); + todo = $newDataPointer(0, ptrType); + closedchan = new $Chan(structType, 0); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/nettrace"] = (function() { + var $pkg = {}, $init; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/singleflight"] = (function() { + var $pkg = {}, $init, sync; + sync = $packages["sync"]; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/x/net/dns/dnsmessage"] = (function() { + var $pkg = {}, $init, errors, errBaseLen, errCalcLen, errReserved, errTooManyPtr, errInvalidPtr, errNilResouceBody, errResourceLen, errSegTooLong, errZeroSegLen, errResTooLong, errTooManyQuestions, errTooManyAnswers, errTooManyAuthorities, errTooManyAdditionals, errNonCanonicalName, errStringTooLong, errCompressedSRV; + errors = $packages["errors"]; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrNotStarted = errors.New("parsing/packing of this type isn't available yet"); + $pkg.ErrSectionDone = errors.New("parsing/packing of this section has completed"); + errBaseLen = errors.New("insufficient data for base length type"); + errCalcLen = errors.New("insufficient data for calculated length type"); + errReserved = errors.New("segment prefix is reserved"); + errTooManyPtr = errors.New("too many pointers (>10)"); + errInvalidPtr = errors.New("invalid pointer"); + errNilResouceBody = errors.New("nil resource body"); + errResourceLen = errors.New("insufficient data for resource body length"); + errSegTooLong = errors.New("segment length too long"); + errZeroSegLen = errors.New("zero length segment"); + errResTooLong = errors.New("resource length too long"); + errTooManyQuestions = errors.New("too many Questions to pack (>65535)"); + errTooManyAnswers = errors.New("too many Answers to pack (>65535)"); + errTooManyAuthorities = errors.New("too many Authorities to pack (>65535)"); + errTooManyAdditionals = errors.New("too many Additionals to pack (>65535)"); + errNonCanonicalName = errors.New("name is not in canonical format (it must end with a .)"); + errStringTooLong = errors.New("character string exceeds maximum length (255)"); + errCompressedSRV = errors.New("compressed name in SRV resource data"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math/rand"] = (function() { + var $pkg = {}, $init, nosync, math, Source, Source64, Rand, lockedSource, rngSource, arrayType, ptrType, ptrType$1, sliceType, ptrType$2, ptrType$3, funcType, sliceType$1, ptrType$5, ke, we, fe, kn, wn, fn, globalRand, rngCooked, absInt32, NewSource, New, read, seedrand; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + math = $packages["math"]; + Source = $pkg.Source = $newType(8, $kindInterface, "rand.Source", true, "math/rand", true, null); + Source64 = $pkg.Source64 = $newType(8, $kindInterface, "rand.Source64", true, "math/rand", true, null); + Rand = $pkg.Rand = $newType(0, $kindStruct, "rand.Rand", true, "math/rand", true, function(src_, s64_, readVal_, readPos_) { + this.$val = this; + if (arguments.length === 0) { + this.src = $ifaceNil; + this.s64 = $ifaceNil; + this.readVal = new $Int64(0, 0); + this.readPos = 0; + return; + } + this.src = src_; + this.s64 = s64_; + this.readVal = readVal_; + this.readPos = readPos_; + }); + lockedSource = $pkg.lockedSource = $newType(0, $kindStruct, "rand.lockedSource", true, "math/rand", false, function(lk_, src_) { + this.$val = this; + if (arguments.length === 0) { + this.lk = new nosync.Mutex.ptr(false); + this.src = $ifaceNil; + return; + } + this.lk = lk_; + this.src = src_; + }); + rngSource = $pkg.rngSource = $newType(0, $kindStruct, "rand.rngSource", true, "math/rand", false, function(tap_, feed_, vec_) { + this.$val = this; + if (arguments.length === 0) { + this.tap = 0; + this.feed = 0; + this.vec = arrayType.zero(); + return; + } + this.tap = tap_; + this.feed = feed_; + this.vec = vec_; + }); + arrayType = $arrayType($Int64, 607); + ptrType = $ptrType(lockedSource); + ptrType$1 = $ptrType($Int8); + sliceType = $sliceType($Int); + ptrType$2 = $ptrType($Int64); + ptrType$3 = $ptrType(Rand); + funcType = $funcType([$Int, $Int], [], false); + sliceType$1 = $sliceType($Uint8); + ptrType$5 = $ptrType(rngSource); + Rand.ptr.prototype.ExpFloat64 = function() { + var _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + /* while (true) { */ case 1: + _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = _r; + i = (j & 255) >>> 0; + x = (j) * (((i < 0 || i >= we.length) ? ($throwRuntimeError("index out of range"), undefined) : we[i])); + if (j < ((i < 0 || i >= ke.length) ? ($throwRuntimeError("index out of range"), undefined) : ke[i])) { + $s = -1; return x; + } + /* */ if (i === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (i === 0) { */ case 4: + _r$1 = r.Float64(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = math.Log(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return 7.69711747013105 - _r$2; + /* } */ case 5: + _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { */ case 8: + $s = -1; return x; + /* } */ case 9: + /* } */ $s = 1; continue; case 2: + $s = -1; return 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.ExpFloat64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.ExpFloat64 = function() { return this.$val.ExpFloat64(); }; + absInt32 = function(i) { + var i; + if (i < 0) { + return ((-i >>> 0)); + } + return ((i >>> 0)); + }; + Rand.ptr.prototype.NormFloat64 = function() { + var _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + /* while (true) { */ case 1: + _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = ((_r >> 0)); + i = j & 127; + x = (j) * (((i < 0 || i >= wn.length) ? ($throwRuntimeError("index out of range"), undefined) : wn[i])); + if (absInt32(j) < ((i < 0 || i >= kn.length) ? ($throwRuntimeError("index out of range"), undefined) : kn[i])) { + $s = -1; return x; + } + /* */ if (i === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (i === 0) { */ case 4: + /* while (true) { */ case 6: + _r$1 = r.Float64(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = math.Log(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = -_r$2 * 0.29047645161474317; + _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = math.Log(_r$3); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + y = -_r$4; + if (y + y >= x * x) { + /* break; */ $s = 7; continue; + } + /* } */ $s = 6; continue; case 7: + if (j > 0) { + $s = -1; return 3.442619855899 + x; + } + $s = -1; return -3.442619855899 - x; + /* } */ case 5: + _r$5 = r.Float64(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { */ case 12: + $s = -1; return x; + /* } */ case 13: + /* } */ $s = 1; continue; case 2: + $s = -1; return 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.NormFloat64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.NormFloat64 = function() { return this.$val.NormFloat64(); }; + NewSource = function(seed) { + var rng, seed; + rng = new rngSource.ptr(0, 0, arrayType.zero()); + rng.Seed(seed); + return rng; + }; + $pkg.NewSource = NewSource; + New = function(src) { + var _tuple, s64, src; + _tuple = $assertType(src, Source64, true); + s64 = _tuple[0]; + return new Rand.ptr(src, s64, new $Int64(0, 0), 0); + }; + $pkg.New = New; + Rand.ptr.prototype.Seed = function(seed) { + var _tuple, lk, ok, r, seed, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; lk = $f.lk; ok = $f.ok; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _tuple = $assertType(r.src, ptrType, true); + lk = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + $r = lk.seedPos(seed, (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + $r = r.src.Seed(seed); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r.readPos = 0; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Seed }; } $f._tuple = _tuple; $f.lk = lk; $f.ok = ok; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Seed = function(seed) { return this.$val.Seed(seed); }; + Rand.ptr.prototype.Int63 = function() { + var _r, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63 }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Int63 = function() { return this.$val.Int63(); }; + Rand.ptr.prototype.Uint32 = function() { + var _r, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return (($shiftRightInt64(_r, 31).$low >>> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint32 }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Uint32 = function() { return this.$val.Uint32(); }; + Rand.ptr.prototype.Uint64 = function() { + var _r, _r$1, _r$2, r, x, x$1, x$2, x$3, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; r = $f.r; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + /* */ if (!($interfaceIsEqual(r.s64, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(r.s64, $ifaceNil))) { */ case 1: + _r = r.s64.Uint64(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + _r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = r.Int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return (x = $shiftRightUint64(((x$1 = _r$1, new $Uint64(x$1.$high, x$1.$low))), 31), x$2 = $shiftLeft64(((x$3 = _r$2, new $Uint64(x$3.$high, x$3.$low))), 32), new $Uint64(x.$high | x$2.$high, (x.$low | x$2.$low) >>> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Uint64 = function() { return this.$val.Uint64(); }; + Rand.ptr.prototype.Int31 = function() { + var _r, r, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return (((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31 }; } $f._r = _r; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Int31 = function() { return this.$val.Int31(); }; + Rand.ptr.prototype.Int = function() { + var _r, r, u, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + u = ((_r.$low >>> 0)); + $s = -1; return ((((u << 1 >>> 0) >>> 1 >>> 0) >> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int }; } $f._r = _r; $f.r = r; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Int = function() { return this.$val.Int(); }; + Rand.ptr.prototype.Int63n = function(n) { + var _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; max = $f.max; n = $f.n; r = $f.r; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) { + $panic(new $String("invalid argument to Int63n")); + } + /* */ if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { */ case 1: + _r = r.Int63(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return (x$2 = _r, x$3 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)); + /* } */ case 2: + max = ((x$4 = (x$5 = $div64(new $Uint64(2147483648, 0), (new $Uint64(n.$high, n.$low)), true), new $Uint64(2147483647 - x$5.$high, 4294967295 - x$5.$low)), new $Int64(x$4.$high, x$4.$low))); + _r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + /* while (true) { */ case 5: + /* if (!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { break; } */ if(!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { $s = 6; continue; } + _r$2 = r.Int63(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + /* } */ $s = 5; continue; case 6: + $s = -1; return $div64(v, n, true); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Int63n = function(n) { return this.$val.Int63n(n); }; + Rand.ptr.prototype.Int31n = function(n) { + var _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; max = $f.max; n = $f.n; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + if (n <= 0) { + $panic(new $String("invalid argument to Int31n")); + } + /* */ if ((n & ((n - 1 >> 0))) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((n & ((n - 1 >> 0))) === 0) { */ case 1: + _r = r.Int31(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r & ((n - 1 >> 0)); + /* } */ case 2: + max = (((2147483647 - (_r$1 = 2147483648 % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0)); + _r$2 = r.Int31(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + /* while (true) { */ case 5: + /* if (!(v > max)) { break; } */ if(!(v > max)) { $s = 6; continue; } + _r$3 = r.Int31(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + v = _r$3; + /* } */ $s = 5; continue; case 6: + $s = -1; return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Int31n = function(n) { return this.$val.Int31n(n); }; + Rand.ptr.prototype.int31n = function(n) { + var _r, _r$1, _r$2, low, n, prod, r, thresh, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; low = $f.low; n = $f.n; prod = $f.prod; r = $f.r; thresh = $f.thresh; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Uint32(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n))); + low = ((prod.$low >>> 0)); + /* */ if (low < ((n >>> 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (low < ((n >>> 0))) { */ case 2: + thresh = (_r$1 = ((-n >>> 0)) % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); + /* while (true) { */ case 4: + /* if (!(low < thresh)) { break; } */ if(!(low < thresh)) { $s = 5; continue; } + _r$2 = r.Uint32(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n))); + low = ((prod.$low >>> 0)); + /* } */ $s = 4; continue; case 5: + /* } */ case 3: + $s = -1; return (($shiftRightUint64(prod, 32).$low >> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.int31n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.low = low; $f.n = n; $f.prod = prod; $f.r = r; $f.thresh = thresh; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.int31n = function(n) { return this.$val.int31n(n); }; + Rand.ptr.prototype.Intn = function(n) { + var _r, _r$1, n, r, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; n = $f.n; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + if (n <= 0) { + $panic(new $String("invalid argument to Intn")); + } + /* */ if (n <= 2147483647) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n <= 2147483647) { */ case 1: + _r = r.Int31n(((n >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return ((_r >> 0)); + /* } */ case 2: + _r$1 = r.Int63n((new $Int64(0, n))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return (((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Intn }; } $f._r = _r; $f._r$1 = _r$1; $f.n = n; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Intn = function(n) { return this.$val.Intn(n); }; + Rand.ptr.prototype.Float64 = function() { + var _r, f, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + /* again: */ case 1: + _r = r.Int63(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = ($flatten64(_r)) / 9.223372036854776e+18; + /* */ if (f === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (f === 1) { */ case 3: + /* goto again */ $s = 1; continue; + /* } */ case 4: + $s = -1; return f; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float64 }; } $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Float64 = function() { return this.$val.Float64(); }; + Rand.ptr.prototype.Float32 = function() { + var _r, f, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + /* again: */ case 1: + _r = r.Float64(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = ($fround(_r)); + /* */ if (f === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (f === 1) { */ case 3: + /* goto again */ $s = 1; continue; + /* } */ case 4: + $s = -1; return f; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float32 }; } $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Float32 = function() { return this.$val.Float32(); }; + Rand.ptr.prototype.Perm = function(n) { + var _r, i, j, m, n, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; m = $f.m; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + m = $makeSlice(sliceType, n); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + _r = r.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = _r; + ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j])); + ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j] = i); + i = i + (1) >> 0; + /* } */ $s = 1; continue; case 2: + $s = -1; return m; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Perm }; } $f._r = _r; $f.i = i; $f.j = j; $f.m = m; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Perm = function(n) { return this.$val.Perm(n); }; + Rand.ptr.prototype.Shuffle = function(n, swap) { + var _r, _r$1, i, j, j$1, n, r, swap, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; j = $f.j; j$1 = $f.j$1; n = $f.n; r = $f.r; swap = $f.swap; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + if (n < 0) { + $panic(new $String("invalid argument to Shuffle")); + } + i = n - 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i > 2147483646)) { break; } */ if(!(i > 2147483646)) { $s = 2; continue; } + _r = r.Int63n((new $Int64(0, (i + 1 >> 0)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = (((x = _r, x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + $r = swap(i, j); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + /* } */ $s = 1; continue; case 2: + /* while (true) { */ case 5: + /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 6; continue; } + _r$1 = r.int31n((((i + 1 >> 0) >> 0))); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + j$1 = ((_r$1 >> 0)); + $r = swap(i, j$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + /* } */ $s = 5; continue; case 6: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Shuffle }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.j = j; $f.j$1 = j$1; $f.n = n; $f.r = r; $f.swap = swap; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Shuffle = function(n, swap) { return this.$val.Shuffle(n, swap); }; + Rand.ptr.prototype.Read = function(p) { + var _r, _r$1, _tuple, _tuple$1, _tuple$2, err, lk, n, ok, p, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; lk = $f.lk; n = $f.n; ok = $f.ok; p = $f.p; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + _tuple = $assertType(r.src, ptrType, true); + lk = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = lk.read(p, (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$2(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n = _tuple$1[0]; + err = _tuple$1[1]; + $s = -1; return [n, err]; + /* } */ case 2: + _r$1 = read(p, $methodVal(r, "Int63"), (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$2(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + n = _tuple$2[0]; + err = _tuple$2[1]; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.lk = lk; $f.n = n; $f.ok = ok; $f.p = p; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + Rand.prototype.Read = function(p) { return this.$val.Read(p); }; + read = function(p, int63, readVal, readPos) { + var _r, err, int63, n, p, pos, readPos, readVal, val, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; int63 = $f.int63; n = $f.n; p = $f.p; pos = $f.pos; readPos = $f.readPos; readVal = $f.readVal; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + pos = readPos.$get(); + val = readVal.$get(); + n = 0; + /* while (true) { */ case 1: + /* if (!(n < p.$length)) { break; } */ if(!(n < p.$length)) { $s = 2; continue; } + /* */ if (pos === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (pos === 0) { */ case 3: + _r = int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + val = _r; + pos = 7; + /* } */ case 4: + ((n < 0 || n >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + n] = ((val.$low << 24 >>> 24))); + val = $shiftRightInt64(val, (8)); + pos = pos - (1) << 24 >> 24; + n = n + (1) >> 0; + /* } */ $s = 1; continue; case 2: + readPos.$set(pos); + readVal.$set(val); + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: read }; } $f._r = _r; $f.err = err; $f.int63 = int63; $f.n = n; $f.p = p; $f.pos = pos; $f.readPos = readPos; $f.readVal = readVal; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; + }; + lockedSource.ptr.prototype.Int63 = function() { + var _r, n, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + r = this; + r.lk.Lock(); + _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + r.lk.Unlock(); + $s = -1; return n; + /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Int63 }; } $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + lockedSource.prototype.Int63 = function() { return this.$val.Int63(); }; + lockedSource.ptr.prototype.Uint64 = function() { + var _r, n, r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = new $Uint64(0, 0); + r = this; + r.lk.Lock(); + _r = r.src.Uint64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + r.lk.Unlock(); + $s = -1; return n; + /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Uint64 }; } $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; + }; + lockedSource.prototype.Uint64 = function() { return this.$val.Uint64(); }; + lockedSource.ptr.prototype.Seed = function(seed) { + var r, seed, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + r.lk.Lock(); + $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r.lk.Unlock(); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Seed }; } $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f; + }; + lockedSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); }; + lockedSource.ptr.prototype.seedPos = function(seed, readPos) { + var r, readPos, seed, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; readPos = $f.readPos; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + r = this; + r.lk.Lock(); + $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readPos.$set(0); + r.lk.Unlock(); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.seedPos }; } $f.r = r; $f.readPos = readPos; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f; + }; + lockedSource.prototype.seedPos = function(seed, readPos) { return this.$val.seedPos(seed, readPos); }; + lockedSource.ptr.prototype.read = function(p, readVal, readPos) { + var _r, _tuple, err, n, p, r, readPos, readVal, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; r = $f.r; readPos = $f.readPos; readVal = $f.readVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + r.lk.Lock(); + _r = read(p, $methodVal(r.src, "Int63"), readVal, readPos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + r.lk.Unlock(); + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.read }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.r = r; $f.readPos = readPos; $f.readVal = readVal; $f.$s = $s; $f.$r = $r; return $f; + }; + lockedSource.prototype.read = function(p, readVal, readPos) { return this.$val.read(p, readVal, readPos); }; + seedrand = function(x) { + var _q, _r, hi, lo, x; + hi = (_q = x / 44488, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + lo = (_r = x % 44488, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + x = ($imul(48271, lo)) - ($imul(3399, hi)) >> 0; + if (x < 0) { + x = x + (2147483647) >> 0; + } + return x; + }; + rngSource.ptr.prototype.Seed = function(seed) { + var i, rng, seed, u, x, x$1, x$2, x$3, x$4, x$5; + rng = this; + rng.tap = 0; + rng.feed = 334; + seed = $div64(seed, new $Int64(0, 2147483647), true); + if ((seed.$high < 0 || (seed.$high === 0 && seed.$low < 0))) { + seed = (x = new $Int64(0, 2147483647), new $Int64(seed.$high + x.$high, seed.$low + x.$low)); + } + if ((seed.$high === 0 && seed.$low === 0)) { + seed = new $Int64(0, 89482311); + } + x$1 = (((seed.$low + ((seed.$high >> 31) * 4294967296)) >> 0)); + i = -20; + while (true) { + if (!(i < 607)) { break; } + x$1 = seedrand(x$1); + if (i >= 0) { + u = new $Int64(0, 0); + u = $shiftLeft64((new $Int64(0, x$1)), 40); + x$1 = seedrand(x$1); + u = (x$2 = $shiftLeft64((new $Int64(0, x$1)), 20), new $Int64(u.$high ^ x$2.$high, (u.$low ^ x$2.$low) >>> 0)); + x$1 = seedrand(x$1); + u = (x$3 = (new $Int64(0, x$1)), new $Int64(u.$high ^ x$3.$high, (u.$low ^ x$3.$low) >>> 0)); + u = (x$4 = ((i < 0 || i >= rngCooked.length) ? ($throwRuntimeError("index out of range"), undefined) : rngCooked[i]), new $Int64(u.$high ^ x$4.$high, (u.$low ^ x$4.$low) >>> 0)); + (x$5 = rng.vec, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i] = u)); + } + i = i + (1) >> 0; + } + }; + rngSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); }; + rngSource.ptr.prototype.Int63 = function() { + var rng, x, x$1; + rng = this; + return ((x = (x$1 = rng.Uint64(), new $Uint64(x$1.$high & 2147483647, (x$1.$low & 4294967295) >>> 0)), new $Int64(x.$high, x.$low))); + }; + rngSource.prototype.Int63 = function() { return this.$val.Int63(); }; + rngSource.ptr.prototype.Uint64 = function() { + var rng, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + rng = this; + rng.tap = rng.tap - (1) >> 0; + if (rng.tap < 0) { + rng.tap = rng.tap + (607) >> 0; + } + rng.feed = rng.feed - (1) >> 0; + if (rng.feed < 0) { + rng.feed = rng.feed + (607) >> 0; + } + x$6 = (x = (x$1 = rng.vec, x$2 = rng.feed, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])), x$3 = (x$4 = rng.vec, x$5 = rng.tap, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), new $Int64(x.$high + x$3.$high, x.$low + x$3.$low)); + (x$7 = rng.vec, x$8 = rng.feed, ((x$8 < 0 || x$8 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[x$8] = x$6)); + return (new $Uint64(x$6.$high, x$6.$low)); + }; + rngSource.prototype.Uint64 = function() { return this.$val.Uint64(); }; + ptrType$3.methods = [{prop: "ExpFloat64", name: "ExpFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "NormFloat64", name: "NormFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Int31", name: "Int31", pkg: "", typ: $funcType([], [$Int32], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int63n", name: "Int63n", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "Int31n", name: "Int31n", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "int31n", name: "int31n", pkg: "math/rand", typ: $funcType([$Int32], [$Int32], false)}, {prop: "Intn", name: "Intn", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "Shuffle", name: "Shuffle", pkg: "", typ: $funcType([$Int, funcType], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]; + ptrType.methods = [{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "seedPos", name: "seedPos", pkg: "math/rand", typ: $funcType([$Int64, ptrType$1], [], false)}, {prop: "read", name: "read", pkg: "math/rand", typ: $funcType([sliceType$1, ptrType$2, ptrType$1], [$Int, $error], false)}]; + ptrType$5.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]; + Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]); + Source64.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]); + Rand.init("math/rand", [{prop: "src", name: "src", embedded: false, exported: false, typ: Source, tag: ""}, {prop: "s64", name: "s64", embedded: false, exported: false, typ: Source64, tag: ""}, {prop: "readVal", name: "readVal", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "readPos", name: "readPos", embedded: false, exported: false, typ: $Int8, tag: ""}]); + lockedSource.init("math/rand", [{prop: "lk", name: "lk", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "src", name: "src", embedded: false, exported: false, typ: Source64, tag: ""}]); + rngSource.init("math/rand", [{prop: "tap", name: "tap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "feed", name: "feed", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "vec", name: "vec", embedded: false, exported: false, typ: arrayType, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = nosync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ke = $toNativeArray($kindUint32, [3801129273, 0, 2615860924, 3279400049, 3571300752, 3733536696, 3836274812, 3906990442, 3958562475, 3997804264, 4028649213, 4053523342, 4074002619, 4091154507, 4105727352, 4118261130, 4129155133, 4138710916, 4147160435, 4154685009, 4161428406, 4167506077, 4173011791, 4178022498, 4182601930, 4186803325, 4190671498, 4194244443, 4197554582, 4200629752, 4203493986, 4206168142, 4208670408, 4211016720, 4213221098, 4215295924, 4217252177, 4219099625, 4220846988, 4222502074, 4224071896, 4225562770, 4226980400, 4228329951, 4229616109, 4230843138, 4232014925, 4233135020, 4234206673, 4235232866, 4236216336, 4237159604, 4238064994, 4238934652, 4239770563, 4240574564, 4241348362, 4242093539, 4242811568, 4243503822, 4244171579, 4244816032, 4245438297, 4246039419, 4246620374, 4247182079, 4247725394, 4248251127, 4248760037, 4249252839, 4249730206, 4250192773, 4250641138, 4251075867, 4251497493, 4251906522, 4252303431, 4252688672, 4253062674, 4253425844, 4253778565, 4254121205, 4254454110, 4254777611, 4255092022, 4255397640, 4255694750, 4255983622, 4256264513, 4256537670, 4256803325, 4257061702, 4257313014, 4257557464, 4257795244, 4258026541, 4258251531, 4258470383, 4258683258, 4258890309, 4259091685, 4259287526, 4259477966, 4259663135, 4259843154, 4260018142, 4260188212, 4260353470, 4260514019, 4260669958, 4260821380, 4260968374, 4261111028, 4261249421, 4261383632, 4261513736, 4261639802, 4261761900, 4261880092, 4261994441, 4262105003, 4262211835, 4262314988, 4262414513, 4262510454, 4262602857, 4262691764, 4262777212, 4262859239, 4262937878, 4263013162, 4263085118, 4263153776, 4263219158, 4263281289, 4263340187, 4263395872, 4263448358, 4263497660, 4263543789, 4263586755, 4263626565, 4263663224, 4263696735, 4263727099, 4263754314, 4263778377, 4263799282, 4263817020, 4263831582, 4263842955, 4263851124, 4263856071, 4263857776, 4263856218, 4263851370, 4263843206, 4263831695, 4263816804, 4263798497, 4263776735, 4263751476, 4263722676, 4263690284, 4263654251, 4263614520, 4263571032, 4263523724, 4263472530, 4263417377, 4263358192, 4263294892, 4263227394, 4263155608, 4263079437, 4262998781, 4262913534, 4262823581, 4262728804, 4262629075, 4262524261, 4262414220, 4262298801, 4262177846, 4262051187, 4261918645, 4261780032, 4261635148, 4261483780, 4261325704, 4261160681, 4260988457, 4260808763, 4260621313, 4260425802, 4260221905, 4260009277, 4259787550, 4259556329, 4259315195, 4259063697, 4258801357, 4258527656, 4258242044, 4257943926, 4257632664, 4257307571, 4256967906, 4256612870, 4256241598, 4255853155, 4255446525, 4255020608, 4254574202, 4254106002, 4253614578, 4253098370, 4252555662, 4251984571, 4251383021, 4250748722, 4250079132, 4249371435, 4248622490, 4247828790, 4246986404, 4246090910, 4245137315, 4244119963, 4243032411, 4241867296, 4240616155, 4239269214, 4237815118, 4236240596, 4234530035, 4232664930, 4230623176, 4228378137, 4225897409, 4223141146, 4220059768, 4216590757, 4212654085, 4208145538, 4202926710, 4196809522, 4189531420, 4180713890, 4169789475, 4155865042, 4137444620, 4111806704, 4073393724, 4008685917, 3873074895]); + we = $toNativeArray($kindFloat32, [2.0249555365836613e-09, 1.4866739783681027e-11, 2.4409616689036184e-11, 3.1968806074589295e-11, 3.844677007314168e-11, 4.42282044321729e-11, 4.951644302919611e-11, 5.443358958023836e-11, 5.905943789574764e-11, 6.34494193296753e-11, 6.764381416113352e-11, 7.167294535648239e-11, 7.556032188826833e-11, 7.932458162551725e-11, 8.298078890689453e-11, 8.654132271912474e-11, 9.001651507523079e-11, 9.341507428706208e-11, 9.674443190998971e-11, 1.0001099254308699e-10, 1.0322031424037093e-10, 1.0637725422757427e-10, 1.0948611461891744e-10, 1.1255067711157807e-10, 1.1557434870246297e-10, 1.1856014781042035e-10, 1.2151082917633005e-10, 1.2442885610752796e-10, 1.2731647680563896e-10, 1.3017574518325858e-10, 1.330085347417409e-10, 1.3581656632677408e-10, 1.386014220061682e-10, 1.413645728254309e-10, 1.4410737880776736e-10, 1.4683107507629245e-10, 1.4953686899854546e-10, 1.522258291641876e-10, 1.5489899640730442e-10, 1.575573282952547e-10, 1.6020171300645814e-10, 1.628330109637588e-10, 1.6545202707884954e-10, 1.68059510752272e-10, 1.7065616975120435e-10, 1.73242697965037e-10, 1.758197337720091e-10, 1.783878739169964e-10, 1.8094774290045024e-10, 1.834998542005195e-10, 1.8604476292871652e-10, 1.8858298256319017e-10, 1.9111498494872592e-10, 1.9364125580789704e-10, 1.9616222535212557e-10, 1.9867835154840918e-10, 2.011900368525943e-10, 2.0369768372052732e-10, 2.062016807302669e-10, 2.0870240258208383e-10, 2.1120022397624894e-10, 2.136955057352452e-10, 2.1618855317040442e-10, 2.1867974098199738e-10, 2.2116936060356807e-10, 2.2365774510202385e-10, 2.2614519978869652e-10, 2.2863201609713002e-10, 2.3111849933865614e-10, 2.3360494094681883e-10, 2.3609159072179864e-10, 2.3857874009713953e-10, 2.4106666662859766e-10, 2.4355562011635357e-10, 2.460458781161634e-10, 2.485376904282077e-10, 2.5103127909709144e-10, 2.5352694943414633e-10, 2.560248957284017e-10, 2.585253955356137e-10, 2.610286709003873e-10, 2.6353494386732734e-10, 2.6604446423661443e-10, 2.6855745405285347e-10, 2.71074163116225e-10, 2.7359478571575835e-10, 2.7611959940720965e-10, 2.786487707240326e-10, 2.8118254946640775e-10, 2.8372118543451563e-10, 2.8626484516180994e-10, 2.8881380620404684e-10, 2.9136826285025563e-10, 2.9392840938946563e-10, 2.96494523377433e-10, 2.990667713476114e-10, 3.016454031001814e-10, 3.042306406797479e-10, 3.068226783753403e-10, 3.09421765987139e-10, 3.12028125559749e-10, 3.1464195138219964e-10, 3.17263521010247e-10, 3.1989300097734485e-10, 3.225306410836737e-10, 3.2517669112941405e-10, 3.2783134540359526e-10, 3.3049485370639786e-10, 3.3316743808242677e-10, 3.3584937608743815e-10, 3.385408342548857e-10, 3.4124211789610115e-10, 3.4395342130011386e-10, 3.4667499426710435e-10, 3.494071143528288e-10, 3.521500313574677e-10, 3.54903967325626e-10, 3.576691720574843e-10, 3.6044595086437425e-10, 3.632345535464765e-10, 3.660352021483959e-10, 3.688482297370399e-10, 3.716738583570134e-10, 3.7451239331964814e-10, 3.773641121807003e-10, 3.802292924959261e-10, 3.831082673322328e-10, 3.8600128648980103e-10, 3.8890865527996255e-10, 3.9183070676962473e-10, 3.9476774627011935e-10, 3.977200790927782e-10, 4.006880383045086e-10, 4.0367195697221803e-10, 4.066721681628138e-10, 4.0968900494320337e-10, 4.127228558914453e-10, 4.15774054074447e-10, 4.188429603146915e-10, 4.2192993543466173e-10, 4.25035395767992e-10, 4.2815970213716525e-10, 4.313032986313914e-10, 4.3446651831757777e-10, 4.376498607960855e-10, 4.408536868893975e-10, 4.4407846844229937e-10, 4.4732464954400086e-10, 4.5059267428371186e-10, 4.538830145062178e-10, 4.5719619756745544e-10, 4.605326675566346e-10, 4.638929240741163e-10, 4.672775499869886e-10, 4.706869893844612e-10, 4.74121908400349e-10, 4.775827511238617e-10, 4.810701836888143e-10, 4.845848167178701e-10, 4.881271498113904e-10, 4.916979601254923e-10, 4.952977472605369e-10, 4.989272883726414e-10, 5.025872495956207e-10, 5.062783525744408e-10, 5.100013189540675e-10, 5.13756870379467e-10, 5.175458395179078e-10, 5.21369003525507e-10, 5.252272505806843e-10, 5.29121357839557e-10, 5.330522134805449e-10, 5.3702081670437e-10, 5.41028055689452e-10, 5.450749851476644e-10, 5.491624932574268e-10, 5.532918012640664e-10, 5.574638528571541e-10, 5.616799247931681e-10, 5.659410717839819e-10, 5.702485705860738e-10, 5.746036979559221e-10, 5.790077306500052e-10, 5.83462111958255e-10, 5.879682296594524e-10, 5.925275825546805e-10, 5.971417249561739e-10, 6.01812211176167e-10, 6.065408175714992e-10, 6.113292094767075e-10, 6.16179329782085e-10, 6.21092954844471e-10, 6.260721940876124e-10, 6.311191569352559e-10, 6.362359528111483e-10, 6.414249686947926e-10, 6.466885360545405e-10, 6.520292639144998e-10, 6.574497612987784e-10, 6.629528592760892e-10, 6.685415554485985e-10, 6.742187919073217e-10, 6.799880103436351e-10, 6.858525969377638e-10, 6.918161599145378e-10, 6.978825850545434e-10, 7.040559801829716e-10, 7.103406751696184e-10, 7.167412219288849e-10, 7.232625609532306e-10, 7.2990985477972e-10, 7.366885990123251e-10, 7.436047333442275e-10, 7.506645305355164e-10, 7.57874762946642e-10, 7.652426470272644e-10, 7.727759543385559e-10, 7.804830115532013e-10, 7.883728114777e-10, 7.964550685635174e-10, 8.047402189070851e-10, 8.132396422944055e-10, 8.219657177122031e-10, 8.309318788590758e-10, 8.401527806789488e-10, 8.496445214056791e-10, 8.594246980742071e-10, 8.695127395874636e-10, 8.799300732498239e-10, 8.90700457834015e-10, 9.01850316648023e-10, 9.134091816243028e-10, 9.254100818978372e-10, 9.37890431984556e-10, 9.508922538259412e-10, 9.64463842123564e-10, 9.78660263939446e-10, 9.935448019859905e-10, 1.0091912860943353e-09, 1.0256859805934937e-09, 1.0431305819125214e-09, 1.0616465484503124e-09, 1.0813799855569073e-09, 1.1025096391392708e-09, 1.1252564435793033e-09, 1.149898620766976e-09, 1.176793218427008e-09, 1.2064089727203964e-09, 1.2393785997488749e-09, 1.2765849488616254e-09, 1.319313880365769e-09, 1.36954347862428e-09, 1.4305497897382224e-09, 1.5083649884672923e-09, 1.6160853766322703e-09, 1.7921247819074893e-09]); + fe = $toNativeArray($kindFloat32, [1, 0.9381436705589294, 0.900469958782196, 0.8717043399810791, 0.847785472869873, 0.8269932866096497, 0.8084216713905334, 0.7915276288986206, 0.7759568691253662, 0.7614634037017822, 0.7478685975074768, 0.7350381016731262, 0.7228676676750183, 0.7112747430801392, 0.7001926302909851, 0.6895664930343628, 0.6793505549430847, 0.669506311416626, 0.6600008606910706, 0.6508058309555054, 0.6418967247009277, 0.633251965045929, 0.62485271692276, 0.6166821718215942, 0.608725368976593, 0.6009689569473267, 0.5934008955955505, 0.5860103368759155, 0.5787873864173889, 0.5717230439186096, 0.5648092031478882, 0.5580382943153381, 0.5514034032821655, 0.5448982119560242, 0.5385168790817261, 0.5322538614273071, 0.526104211807251, 0.5200631618499756, 0.5141264200210571, 0.5082897543907166, 0.5025495290756226, 0.4969019889831543, 0.4913438558578491, 0.4858720004558563, 0.48048335313796997, 0.4751752018928528, 0.4699448347091675, 0.4647897481918335, 0.4597076177597046, 0.4546961486339569, 0.4497532546520233, 0.44487687945365906, 0.4400651156902313, 0.4353161156177521, 0.4306281507015228, 0.42599955201148987, 0.42142874002456665, 0.4169141948223114, 0.4124544560909271, 0.40804818272590637, 0.4036940038204193, 0.39939069747924805, 0.3951369822025299, 0.39093172550201416, 0.38677382469177246, 0.38266217708587646, 0.378595769405365, 0.37457355856895447, 0.37059465050697327, 0.366658091545105, 0.362762987613678, 0.358908474445343, 0.35509374737739563, 0.35131800174713135, 0.3475804924964905, 0.34388044476509094, 0.34021714329719543, 0.33658990263938904, 0.3329980671405792, 0.3294409513473511, 0.32591795921325684, 0.32242849469184875, 0.3189719021320343, 0.3155476748943329, 0.31215524673461914, 0.3087940812110901, 0.30546361207962036, 0.30216339230537415, 0.29889291524887085, 0.29565170407295227, 0.2924392819404602, 0.2892552316188812, 0.28609907627105713, 0.2829704284667969, 0.27986884117126465, 0.2767939269542694, 0.2737452983856201, 0.2707225978374481, 0.26772540807724, 0.26475343108177185, 0.2618062496185303, 0.258883535861969, 0.2559850215911865, 0.25311028957366943, 0.25025907158851624, 0.24743106961250305, 0.2446259707212448, 0.24184346199035645, 0.23908329010009766, 0.23634515702724457, 0.2336287796497345, 0.23093391954898834, 0.22826029360294342, 0.22560766339302063, 0.22297576069831848, 0.22036437690258026, 0.21777324378490448, 0.21520215272903442, 0.212650865316391, 0.21011915802955627, 0.20760682225227356, 0.20511364936828613, 0.20263944566249847, 0.20018397271633148, 0.19774706661701202, 0.1953285187482834, 0.19292815029621124, 0.19054576754570007, 0.18818120658397675, 0.18583425879478455, 0.18350479006767273, 0.18119260668754578, 0.17889754474163055, 0.17661945521831512, 0.17435817420482635, 0.1721135377883911, 0.16988539695739746, 0.16767361760139465, 0.16547803580760956, 0.16329853236675262, 0.16113494336605072, 0.1589871346950531, 0.15685498714447021, 0.15473836660385132, 0.15263713896274567, 0.1505511850118637, 0.1484803706407547, 0.14642459154129028, 0.1443837285041809, 0.14235764741897583, 0.1403462439775467, 0.13834942877292633, 0.136367067694664, 0.13439907133579254, 0.1324453204870224, 0.1305057406425476, 0.12858019769191742, 0.12666863203048706, 0.12477091699838638, 0.12288697808980942, 0.1210167184472084, 0.11916005611419678, 0.11731690168380737, 0.11548716574907303, 0.11367076635360718, 0.11186762899160385, 0.11007767915725708, 0.1083008274435997, 0.10653700679540634, 0.10478614270687103, 0.1030481606721878, 0.10132300108671188, 0.0996105819940567, 0.09791085124015808, 0.09622374176979065, 0.09454918652772903, 0.09288713335990906, 0.09123751521110535, 0.08960027992725372, 0.08797537535429001, 0.08636274188756943, 0.0847623273730278, 0.08317409455776215, 0.08159798383712769, 0.08003395050764084, 0.07848194986581802, 0.07694194465875626, 0.07541389018297195, 0.07389774918556213, 0.07239348441362381, 0.070901058614254, 0.06942043453454971, 0.06795158982276917, 0.06649449467658997, 0.06504911929368973, 0.06361543387174606, 0.06219341605901718, 0.06078304722905159, 0.0593843050301075, 0.05799717456102371, 0.05662164092063904, 0.05525768920779228, 0.05390531197190285, 0.05256449431180954, 0.05123523622751236, 0.04991753399372101, 0.04861138388514519, 0.047316793352365494, 0.04603376239538193, 0.044762298464775085, 0.04350241273641586, 0.04225412383675575, 0.04101744294166565, 0.039792392402887344, 0.03857899457216263, 0.03737728297710419, 0.03618728369474411, 0.03500903770327568, 0.03384258225560188, 0.0326879620552063, 0.031545232981443405, 0.030414443463087082, 0.0292956605553627, 0.028188949450850487, 0.027094384655356407, 0.02601204626262188, 0.024942025542259216, 0.023884421214461327, 0.022839335724711418, 0.021806888282299042, 0.020787203684449196, 0.019780423492193222, 0.018786700442433357, 0.017806200310587883, 0.016839107498526573, 0.015885621309280396, 0.014945968054234982, 0.01402039173990488, 0.013109165243804455, 0.012212592177093029, 0.011331013403832912, 0.010464809834957123, 0.009614413604140282, 0.008780314587056637, 0.007963077165186405, 0.007163353264331818, 0.0063819061033427715, 0.005619642324745655, 0.004877655766904354, 0.004157294984906912, 0.003460264764726162, 0.0027887988835573196, 0.0021459676790982485, 0.001536299823783338, 0.0009672692976891994, 0.0004541343660093844]); + kn = $toNativeArray($kindUint32, [1991057938, 0, 1611602771, 1826899878, 1918584482, 1969227037, 2001281515, 2023368125, 2039498179, 2051788381, 2061460127, 2069267110, 2075699398, 2081089314, 2085670119, 2089610331, 2093034710, 2096037586, 2098691595, 2101053571, 2103168620, 2105072996, 2106796166, 2108362327, 2109791536, 2111100552, 2112303493, 2113412330, 2114437283, 2115387130, 2116269447, 2117090813, 2117856962, 2118572919, 2119243101, 2119871411, 2120461303, 2121015852, 2121537798, 2122029592, 2122493434, 2122931299, 2123344971, 2123736059, 2124106020, 2124456175, 2124787725, 2125101763, 2125399283, 2125681194, 2125948325, 2126201433, 2126441213, 2126668298, 2126883268, 2127086657, 2127278949, 2127460589, 2127631985, 2127793506, 2127945490, 2128088244, 2128222044, 2128347141, 2128463758, 2128572095, 2128672327, 2128764606, 2128849065, 2128925811, 2128994934, 2129056501, 2129110560, 2129157136, 2129196237, 2129227847, 2129251929, 2129268426, 2129277255, 2129278312, 2129271467, 2129256561, 2129233410, 2129201800, 2129161480, 2129112170, 2129053545, 2128985244, 2128906855, 2128817916, 2128717911, 2128606255, 2128482298, 2128345305, 2128194452, 2128028813, 2127847342, 2127648860, 2127432031, 2127195339, 2126937058, 2126655214, 2126347546, 2126011445, 2125643893, 2125241376, 2124799783, 2124314271, 2123779094, 2123187386, 2122530867, 2121799464, 2120980787, 2120059418, 2119015917, 2117825402, 2116455471, 2114863093, 2112989789, 2110753906, 2108037662, 2104664315, 2100355223, 2094642347, 2086670106, 2074676188, 2054300022, 2010539237]); + wn = $toNativeArray($kindFloat32, [1.7290404663583558e-09, 1.2680928529462676e-10, 1.689751810696194e-10, 1.9862687883343e-10, 2.223243117382978e-10, 2.4244936613904144e-10, 2.601613091623989e-10, 2.761198769629658e-10, 2.9073962681813725e-10, 3.042996965518796e-10, 3.169979556627567e-10, 3.289802041894774e-10, 3.4035738116777736e-10, 3.5121602848242617e-10, 3.61625090983253e-10, 3.7164057942185025e-10, 3.813085680537398e-10, 3.906675816178762e-10, 3.997501218933053e-10, 4.0858399996679395e-10, 4.1719308563337165e-10, 4.255982233303257e-10, 4.3381759295968436e-10, 4.4186720948857783e-10, 4.497613115272969e-10, 4.57512583373898e-10, 4.6513240481438345e-10, 4.726310454117311e-10, 4.800177477726209e-10, 4.873009773476156e-10, 4.944885056978876e-10, 5.015873272284921e-10, 5.086040477664255e-10, 5.155446070048697e-10, 5.224146670812502e-10, 5.292193350214802e-10, 5.359634958068682e-10, 5.426517013518151e-10, 5.492881705038144e-10, 5.558769555769061e-10, 5.624218868405251e-10, 5.689264614971989e-10, 5.75394121238304e-10, 5.818281967329142e-10, 5.882316855831959e-10, 5.946076964136182e-10, 6.009590047817426e-10, 6.072883862451306e-10, 6.135985053390414e-10, 6.19892026598734e-10, 6.261713370037114e-10, 6.324390455780815e-10, 6.386973727678935e-10, 6.449488165749528e-10, 6.511955974453087e-10, 6.574400468473129e-10, 6.636843297158634e-10, 6.699307220081607e-10, 6.761814441702541e-10, 6.824387166481927e-10, 6.887046488657234e-10, 6.949815167800466e-10, 7.012714853260604e-10, 7.075767749498141e-10, 7.13899661608508e-10, 7.202424212593428e-10, 7.266072743483676e-10, 7.329966078550854e-10, 7.394128087589991e-10, 7.458582640396116e-10, 7.523354716987285e-10, 7.588469852493063e-10, 7.653954137154528e-10, 7.719834771435785e-10, 7.786139510912449e-10, 7.852897221383159e-10, 7.920137878869582e-10, 7.987892014504894e-10, 8.056192379868321e-10, 8.125072836762115e-10, 8.194568912323064e-10, 8.264716688799467e-10, 8.3355555791087e-10, 8.407127216614185e-10, 8.479473234679347e-10, 8.552640262671218e-10, 8.626675485068347e-10, 8.701631637464402e-10, 8.777562010564566e-10, 8.854524335966119e-10, 8.932581896381464e-10, 9.011799639857543e-10, 9.092249730890956e-10, 9.174008219758889e-10, 9.25715837318819e-10, 9.341788453909317e-10, 9.42799727177146e-10, 9.515889187738935e-10, 9.605578554783278e-10, 9.697193048552322e-10, 9.790869226478094e-10, 9.886760299337993e-10, 9.985036131254788e-10, 1.008588212947359e-09, 1.0189509236369076e-09, 1.0296150598776421e-09, 1.040606933955246e-09, 1.0519566329136865e-09, 1.0636980185552147e-09, 1.0758701707302976e-09, 1.0885182755160372e-09, 1.101694735439196e-09, 1.115461056855338e-09, 1.1298901814171813e-09, 1.1450695946990663e-09, 1.1611052119775422e-09, 1.178127595480305e-09, 1.1962995039027646e-09, 1.2158286599728285e-09, 1.2369856250415978e-09, 1.2601323318151003e-09, 1.2857697129220469e-09, 1.3146201904845611e-09, 1.3477839955200466e-09, 1.3870635751089821e-09, 1.43574030442295e-09, 1.5008658760251592e-09, 1.6030947680434338e-09]); + fn = $toNativeArray($kindFloat32, [1, 0.963599681854248, 0.9362826943397522, 0.9130436182022095, 0.8922816514968872, 0.8732430338859558, 0.8555005788803101, 0.8387836217880249, 0.8229072093963623, 0.8077383041381836, 0.7931770086288452, 0.7791460752487183, 0.7655841708183289, 0.7524415850639343, 0.7396772503852844, 0.7272568941116333, 0.7151514887809753, 0.7033361196517944, 0.6917891502380371, 0.6804918646812439, 0.6694276928901672, 0.6585819721221924, 0.6479418277740479, 0.6374954581260681, 0.6272324919700623, 0.6171433925628662, 0.6072195172309875, 0.5974531769752502, 0.5878370404243469, 0.5783646702766418, 0.5690299868583679, 0.5598273873329163, 0.550751805305481, 0.5417983531951904, 0.5329626798629761, 0.5242405533790588, 0.5156282186508179, 0.5071220397949219, 0.49871864914894104, 0.4904148280620575, 0.48220765590667725, 0.47409430146217346, 0.466072142124176, 0.45813870429992676, 0.45029163360595703, 0.44252872467041016, 0.4348478317260742, 0.42724698781967163, 0.41972434520721436, 0.41227802634239197, 0.40490642189979553, 0.39760786294937134, 0.3903807997703552, 0.3832238018512726, 0.3761354684829712, 0.3691144585609436, 0.36215949058532715, 0.3552693724632263, 0.3484429717063904, 0.3416791558265686, 0.33497685194015503, 0.32833510637283325, 0.3217529058456421, 0.3152293860912323, 0.30876362323760986, 0.3023548424243927, 0.2960021495819092, 0.2897048592567444, 0.28346219658851624, 0.2772735059261322, 0.271138072013855, 0.2650552988052368, 0.25902456045150757, 0.25304529070854187, 0.24711695313453674, 0.24123899638652802, 0.23541094362735748, 0.22963231801986694, 0.22390270233154297, 0.21822164952754974, 0.21258877217769623, 0.20700371265411377, 0.20146611332893372, 0.1959756463766098, 0.19053204357624054, 0.18513499200344086, 0.17978426814079285, 0.1744796335697174, 0.16922089457511902, 0.16400785744190216, 0.1588403731584549, 0.15371830761432648, 0.14864157140254974, 0.14361007511615753, 0.13862377405166626, 0.13368265330791473, 0.12878671288490295, 0.12393598258495331, 0.11913054436445236, 0.11437050998210907, 0.10965602099895477, 0.1049872562289238, 0.10036443918943405, 0.09578784555196762, 0.09125780314207077, 0.08677466958761215, 0.08233889937400818, 0.07795098423957825, 0.07361150532960892, 0.06932111829519272, 0.06508058309555054, 0.06089077144861221, 0.05675266310572624, 0.05266740173101425, 0.048636294901371, 0.044660862535238266, 0.040742866694927216, 0.03688438981771469, 0.03308788686990738, 0.029356317594647408, 0.025693291798233986, 0.02210330404341221, 0.018592102453112602, 0.015167297795414925, 0.011839478276669979, 0.0086244847625494, 0.005548994988203049, 0.0026696291752159595]); + rngCooked = $toNativeArray($kindInt64, [new $Int64(-973649357, 3952672746), new $Int64(-1065661887, 3130416987), new $Int64(324977939, 3414273807), new $Int64(1241840476, 2806224363), new $Int64(-1477934308, 1997590414), new $Int64(2103305448, 2402795971), new $Int64(1663160183, 1140819369), new $Int64(1120601685, 1788868961), new $Int64(1848035537, 1089001426), new $Int64(1235702047, 873593504), new $Int64(1911387977, 581324885), new $Int64(-1654874170, 1609182556), new $Int64(1069394745, 1241596776), new $Int64(1895445337, 1771189259), new $Int64(-1374618802, 3467012610), new $Int64(-140526423, 2344407434), new $Int64(-1745367887, 782467244), new $Int64(26335124, 3404933915), new $Int64(1063924276, 618867887), new $Int64(-968700782, 520164395), new $Int64(-1591572833, 1341358184), new $Int64(-1515085039, 665794848), new $Int64(1527227641, 3183648150), new $Int64(1781176124, 696329606), new $Int64(1789146075, 4151988961), new $Int64(-2087444114, 998951326), new $Int64(-612324923, 1364957564), new $Int64(63173359, 4090230633), new $Int64(-1498029007, 4009697548), new $Int64(248009524, 2569622517), new $Int64(778703922, 3742421481), new $Int64(-1109106023, 1506914633), new $Int64(1738099768, 1983412561), new $Int64(236311649, 1436266083), new $Int64(-1111517500, 3922894967), new $Int64(-1336974714, 1792680179), new $Int64(563141142, 1188796351), new $Int64(1349617468, 405968250), new $Int64(1044074554, 433754187), new $Int64(870549669, 4073162024), new $Int64(-1094251604, 433121399), new $Int64(2451824, 4162580594), new $Int64(-137262572, 4132415622), new $Int64(-1536231048, 3033822028), new $Int64(2016407895, 824682382), new $Int64(2366218, 3583765414), new $Int64(-624604839, 535386927), new $Int64(1637219058, 2286693689), new $Int64(1453075389, 2968466525), new $Int64(193683513, 1351410206), new $Int64(-283806096, 1412813499), new $Int64(492736522, 4126267639), new $Int64(512765208, 2105529399), new $Int64(2132966268, 2413882233), new $Int64(947457634, 32226200), new $Int64(1149341356, 2032329073), new $Int64(106485445, 1356518208), new $Int64(-2067810156, 3430061722), new $Int64(-1484435135, 3820169661), new $Int64(-1665985194, 2981816134), new $Int64(1017155588, 4184371017), new $Int64(206574701, 2119206761), new $Int64(-852109057, 2472200560), new $Int64(-560457548, 2853524696), new $Int64(1307803389, 1681119904), new $Int64(-174986835, 95608918), new $Int64(392686347, 3690479145), new $Int64(-1205570926, 1397922290), new $Int64(-1159314025, 1516129515), new $Int64(-320178155, 1547420459), new $Int64(1311333971, 1470949486), new $Int64(-1953469798, 1336785672), new $Int64(-45086614, 4131677129), new $Int64(-1392278100, 4246329084), new $Int64(-1142500187, 3788585631), new $Int64(-66478285, 3080389532), new $Int64(-646438364, 2215402037), new $Int64(391002300, 1171593935), new $Int64(1408774047, 1423855166), new $Int64(-519177718, 2276716302), new $Int64(-368453140, 2068027241), new $Int64(1369359303, 3427553297), new $Int64(189241615, 3289637845), new $Int64(1057480830, 3486407650), new $Int64(-1512910664, 3071877822), new $Int64(1159653919, 3363620705), new $Int64(-934256930, 4159821533), new $Int64(-76621938, 1894661), new $Int64(-674493898, 1156868282), new $Int64(348271067, 776219088), new $Int64(-501428838, 2425634259), new $Int64(1716021749, 680510161), new $Int64(-574263456, 1310101429), new $Int64(1095885995, 2964454134), new $Int64(-325695512, 3467098407), new $Int64(1990672920, 2109628894), new $Int64(-2139648704, 1232604732), new $Int64(-1838070714, 3261916179), new $Int64(1699175360, 434597899), new $Int64(235436061, 1624796439), new $Int64(-1626402839, 3589632480), new $Int64(1198416575, 864579159), new $Int64(-1938748161, 1380889830), new $Int64(619206309, 2654509477), new $Int64(1419738251, 1468209306), new $Int64(-1744284772, 100794388), new $Int64(-1191421458, 2991674471), new $Int64(-208666741, 2224662036), new $Int64(-173659161, 977097250), new $Int64(1351320195, 726419512), new $Int64(-183459897, 1747974366), new $Int64(-753095183, 1556430604), new $Int64(-1049492215, 1080776742), new $Int64(-385846958, 280794874), new $Int64(117767733, 919835643), new $Int64(-967009426, 3434019658), new $Int64(-1951414480, 2461941785), new $Int64(133215641, 3615001066), new $Int64(417204809, 3103414427), new $Int64(790056561, 3380809712), new $Int64(-1267681408, 2724693469), new $Int64(547796833, 598827710), new $Int64(-1846559452, 3452273442), new $Int64(-75778224, 649274915), new $Int64(-801301329, 2585724112), new $Int64(-1510934263, 3165579553), new $Int64(1185578221, 2635894283), new $Int64(-52910178, 2053289721), new $Int64(985976581, 3169337108), new $Int64(1170569632, 144717764), new $Int64(1079216270, 1383666384), new $Int64(-124804942, 681540375), new $Int64(1375448925, 537050586), new $Int64(-1964768344, 315246468), new $Int64(226402871, 849323088), new $Int64(-885062465, 45543944), new $Int64(-946445250, 2319052083), new $Int64(-40708194, 3613090841), new $Int64(560472520, 2992171180), new $Int64(-381863169, 2068244785), new $Int64(917538188, 4239862634), new $Int64(-1369555809, 3892253031), new $Int64(720683925, 958186149), new $Int64(-423297785, 1877702262), new $Int64(1357886971, 837674867), new $Int64(1837048883, 1507589294), new $Int64(1905518400, 873336795), new $Int64(-1879761037, 2764496274), new $Int64(-1806480530, 4196182374), new $Int64(-1066765755, 550964545), new $Int64(818747069, 420611474), new $Int64(-1924830376, 204265180), new $Int64(1549974541, 1787046383), new $Int64(1215581865, 3102292318), new $Int64(418321538, 1552199393), new $Int64(1243493047, 980542004), new $Int64(267284263, 3293718720), new $Int64(1179528763, 3771917473), new $Int64(599484404, 2195808264), new $Int64(252818753, 3894702887), new $Int64(-1367475956, 2099949527), new $Int64(1424094358, 338442522), new $Int64(490737398, 637158004), new $Int64(-1727621530, 281976339), new $Int64(574970164, 3619802330), new $Int64(-431930823, 3084554784), new $Int64(-1264611183, 4129772886), new $Int64(-2104399043, 1680378557), new $Int64(-1621962591, 3339087776), new $Int64(1680500332, 4220317857), new $Int64(-1935828963, 2959322499), new $Int64(1675600481, 1488354890), new $Int64(-834863562, 3958162143), new $Int64(-1226511573, 2773705983), new $Int64(1876039582, 225908689), new $Int64(-1183735113, 908216283), new $Int64(-605696219, 3574646075), new $Int64(-1827723091, 1936937569), new $Int64(1519770881, 75492235), new $Int64(816689472, 1935193178), new $Int64(2142521206, 2018250883), new $Int64(455141620, 3943126022), new $Int64(-601399488, 3066544345), new $Int64(1932392669, 2793082663), new $Int64(-1239009361, 3297036421), new $Int64(1640597065, 2206987825), new $Int64(-553246738, 807894872), new $Int64(-1781325307, 766252117), new $Int64(2060649606, 3833114345), new $Int64(845619743, 1255067973), new $Int64(1201145605, 741697208), new $Int64(-1476242608, 2810093753), new $Int64(1109032642, 4229340371), new $Int64(1462188720, 1361684224), new $Int64(-1159399429, 1906263026), new $Int64(475781207, 3904421704), new $Int64(-623537128, 1769075545), new $Int64(1062308525, 2621599764), new $Int64(1279509432, 3431891480), new $Int64(-1742751146, 1871896503), new $Int64(128756421, 1412808876), new $Int64(1605404688, 952876175), new $Int64(-230443691, 1824438899), new $Int64(1662295856, 1005035476), new $Int64(-156574141, 527508597), new $Int64(1288873303, 3066806859), new $Int64(565995893, 3244940914), new $Int64(-889746188, 209092916), new $Int64(-247669406, 1242699167), new $Int64(-713830396, 456723774), new $Int64(1776978905, 1001252870), new $Int64(1468772157, 2026725874), new $Int64(857254202, 2137562569), new $Int64(765939740, 3183366709), new $Int64(1533887628, 2612072960), new $Int64(56977098, 1727148468), new $Int64(-1197583895, 3803658212), new $Int64(1883670356, 479946959), new $Int64(685713571, 1562982345), new $Int64(-1946242443, 1766109365), new $Int64(700596547, 3257093788), new $Int64(-184714929, 2365720207), new $Int64(93384808, 3742754173), new $Int64(-458385235, 2878193673), new $Int64(1096135042, 2174002182), new $Int64(-834260953, 3573511231), new $Int64(-754572527, 1760299077), new $Int64(-1375627191, 2260779833), new $Int64(-866019274, 1452805722), new $Int64(-1229671918, 2940011802), new $Int64(1890251082, 1886183802), new $Int64(893897673, 2514369088), new $Int64(1644345561, 3924317791), new $Int64(-1974867432, 500935732), new $Int64(1403501753, 676580929), new $Int64(-1565912283, 1184984890), new $Int64(-691968413, 1271474274), new $Int64(-1828754738, 3163791473), new $Int64(2051027584, 2842487377), new $Int64(1511537551, 2170968612), new $Int64(573262976, 3535856740), new $Int64(-2053227187, 1488599718), new $Int64(-1180531831, 3408913763), new $Int64(-2086531912, 2501050084), new $Int64(-875130448, 1639124157), new $Int64(-2009482504, 4088176393), new $Int64(1574896563, 3989947576), new $Int64(-165243708, 3414355209), new $Int64(-792329287, 2275136352), new $Int64(-2057774345, 2151835223), new $Int64(-931144933, 1654534827), new $Int64(-679921451, 377892833), new $Int64(-482716010, 660204544), new $Int64(85706799, 390828249), new $Int64(-1422172693, 3402783878), new $Int64(-1468634160, 3717936603), new $Int64(1113532086, 2211058823), new $Int64(1564224320, 2692150867), new $Int64(1952770442, 1928910388), new $Int64(788716862, 3931011137), new $Int64(1083670504, 1112701047), new $Int64(-68150572, 2452299106), new $Int64(-896164822, 2337204777), new $Int64(1774877857, 273889282), new $Int64(1798719843, 1462008793), new $Int64(2138834788, 1554494002), new $Int64(-1194967131, 182675323), new $Int64(-1598554764, 1882802136), new $Int64(589279648, 3700220025), new $Int64(381039426, 3083431543), new $Int64(-851859191, 3622207527), new $Int64(338126939, 432729309), new $Int64(-1667470126, 2391914317), new $Int64(-1849558151, 235747924), new $Int64(2120733629, 3088823825), new $Int64(-745079795, 2314658321), new $Int64(1165929723, 2957634338), new $Int64(501323675, 4117056981), new $Int64(1564699815, 1482500298), new $Int64(-740826490, 840489337), new $Int64(799522364, 3483178565), new $Int64(532129761, 2074004656), new $Int64(724246478, 3643392642), new $Int64(-665153481, 1583624461), new $Int64(-885822954, 287473085), new $Int64(1667835381, 3136843981), new $Int64(1138806821, 1266970974), new $Int64(135185781, 1998688839), new $Int64(392094735, 1492900209), new $Int64(1031326774, 1538112737), new $Int64(-2070568842, 2207265429), new $Int64(-1886797613, 963263315), new $Int64(1671145500, 2295892134), new $Int64(1068469660, 2002560897), new $Int64(-356250305, 1369254035), new $Int64(33436120, 3353312708), new $Int64(57507843, 947771099), new $Int64(-1945755145, 1747061399), new $Int64(1507240140, 2047354631), new $Int64(720000810, 4165367136), new $Int64(479265078, 3388864963), new $Int64(-952181250, 286492130), new $Int64(2045622690, 2795735007), new $Int64(-715730566, 3703961339), new $Int64(-148436487, 1797825479), new $Int64(1429039600, 1116589674), new $Int64(-1665420098, 2593309206), new $Int64(1329049334, 3404995677), new $Int64(-750579440, 3453462936), new $Int64(1014767077, 3016498634), new $Int64(75698599, 1650371545), new $Int64(1592007860, 212344364), new $Int64(1127766888, 3843932156), new $Int64(-748019856, 3573129983), new $Int64(-890581831, 665897820), new $Int64(1071492673, 1675628772), new $Int64(243225682, 2831752928), new $Int64(2120298836, 1486294219), new $Int64(-1954407413, 268782709), new $Int64(-1002123503, 4186179080), new $Int64(624342951, 1613720397), new $Int64(857179861, 2703686015), new $Int64(-911618704, 2205342611), new $Int64(-672703993, 1411666394), new $Int64(-1528454899, 677744900), new $Int64(-1876628533, 4172867247), new $Int64(135494707, 2163418403), new $Int64(849547544, 2841526879), new $Int64(-1117516959, 1082141470), new $Int64(-1770111792, 4046134367), new $Int64(51415528, 2142943655), new $Int64(-249824333, 3124627521), new $Int64(998228909, 219992939), new $Int64(-1078790951, 1756846531), new $Int64(1283749206, 1225118210), new $Int64(-525858006, 1647770243), new $Int64(-2035959705, 444807907), new $Int64(2036369448, 3952076173), new $Int64(53201823, 1461839639), new $Int64(315761893, 3699250910), new $Int64(702974850, 1373688981), new $Int64(734022261, 147523747), new $Int64(-2047330906, 1211276581), new $Int64(1294440951, 2548832680), new $Int64(1144696256, 1995631888), new $Int64(-1992983070, 2011457303), new $Int64(-1351022674, 3057425772), new $Int64(667839456, 81484597), new $Int64(-1681980888, 3646681560), new $Int64(-1372462725, 635548515), new $Int64(602489502, 2508044581), new $Int64(-1794220117, 1014917157), new $Int64(719992433, 3214891315), new $Int64(-1294799037, 959582252), new $Int64(226415134, 3347040449), new $Int64(-362868096, 4102971975), new $Int64(397887437, 4078022210), new $Int64(-536803826, 2851767182), new $Int64(-1398321012, 1540160644), new $Int64(-1549098876, 1057290595), new $Int64(-112592988, 3907769253), new $Int64(579300318, 4248952684), new $Int64(-1054576049, 132554364), new $Int64(-1085862414, 1029351092), new $Int64(697840928, 2583007416), new $Int64(298619124, 1486185789), new $Int64(55905697, 2871589073), new $Int64(2017643612, 723203291), new $Int64(146250550, 2494333952), new $Int64(-1082993397, 2230939180), new $Int64(-1804568072, 3943232912), new $Int64(1768732449, 2181367922), new $Int64(-729261111, 2889274791), new $Int64(1824032949, 2046728161), new $Int64(1653899792, 1376052477), new $Int64(1022327048, 381236993), new $Int64(-1113097690, 3188942166), new $Int64(-74480109, 350070824), new $Int64(144881592, 61758415), new $Int64(-741824226, 3492950336), new $Int64(-2030042720, 3093818430), new $Int64(-453590535, 2962480613), new $Int64(-1912050708, 3154871160), new $Int64(-1636478569, 3228564679), new $Int64(610731502, 888276216), new $Int64(-946702974, 3574998604), new $Int64(-1277068380, 1967526716), new $Int64(-1556147941, 1554691298), new $Int64(-1573024234, 339944798), new $Int64(1223764147, 1154515356), new $Int64(1825645307, 967516237), new $Int64(1546195135, 596588202), new $Int64(-1867600880, 3764362170), new $Int64(-1655392592, 266611402), new $Int64(-393255880, 2047856075), new $Int64(-1000726433, 21444105), new $Int64(-949424754, 3065563181), new $Int64(-232418803, 1140663212), new $Int64(633187674, 2323741028), new $Int64(2126290159, 3103873707), new $Int64(1008658319, 2766828349), new $Int64(-485587503, 1970872996), new $Int64(1628585413, 3766615585), new $Int64(-595148528, 2036813414), new $Int64(-1994877121, 3105536507), new $Int64(13954645, 3396176938), new $Int64(-721402003, 1377154485), new $Int64(-61839181, 3807014186), new $Int64(543009040, 3710110597), new $Int64(-1751425519, 916420443), new $Int64(734556788, 2103831255), new $Int64(-1766161494, 717331943), new $Int64(-1574598896, 3550505941), new $Int64(45939673, 378749927), new $Int64(-1997615719, 611017331), new $Int64(592130075, 758907650), new $Int64(1012992349, 154266815), new $Int64(-1040454942, 1407468696), new $Int64(-1678191250, 970098704), new $Int64(-285057486, 1971660656), new $Int64(998365243, 3332747885), new $Int64(1947089649, 1935189867), new $Int64(1510248801, 203520055), new $Int64(-1305165746, 3916463034), new $Int64(-388598655, 3474113316), new $Int64(1036101639, 316544223), new $Int64(-1773744891, 1650844677), new $Int64(-907191419, 4267565603), new $Int64(-1070275024, 2501167616), new $Int64(-1520651863, 3929401789), new $Int64(-2091360852, 337170252), new $Int64(-960502090, 2061966842), new $Int64(-304190848, 2508461464), new $Int64(-1941471116, 2791377107), new $Int64(1240791848, 1227227588), new $Int64(1813978778, 1709681848), new $Int64(1153692192, 3768820575), new $Int64(-1002297449, 2887126398), new $Int64(-1447111334, 296561685), new $Int64(700300844, 3729960077), new $Int64(-1572311344, 372833036), new $Int64(2078875613, 2409779288), new $Int64(1829161290, 555274064), new $Int64(-1105595719, 4239804901), new $Int64(1839403216, 3723486978), new $Int64(-1649093095, 2145871984), new $Int64(-1582765715, 3565480803), new $Int64(-1568653827, 2197313814), new $Int64(974785092, 3613674566), new $Int64(438638731, 3042093666), new $Int64(-96556264, 3324034321), new $Int64(869420878, 3708873369), new $Int64(946682149, 1698090092), new $Int64(1618900382, 4213940712), new $Int64(-1843479747, 2087477361), new $Int64(-1766167800, 2407950639), new $Int64(-1296225558, 3942568569), new $Int64(-1223900450, 4088074412), new $Int64(723260036, 2964773675), new $Int64(-673921829, 1539178386), new $Int64(1062961552, 2694849566), new $Int64(460977733, 2120273838), new $Int64(-1604570740, 2484608657), new $Int64(880846449, 2956190677), new $Int64(1970902366, 4223313749), new $Int64(662161910, 3502682327), new $Int64(705634754, 4133891139), new $Int64(-1031359300, 1166449596), new $Int64(1038247601, 3362705993), new $Int64(93734798, 3892921029), new $Int64(1876124043, 786869787), new $Int64(1057490746, 1046342263), new $Int64(242763728, 493777327), new $Int64(-853573201, 3304827646), new $Int64(616460742, 125356352), new $Int64(499300063, 74094113), new $Int64(-795586925, 2500816079), new $Int64(-490248444, 514015239), new $Int64(1377565129, 543520454), new $Int64(-2039776725, 3614531153), new $Int64(2056746300, 2356753985), new $Int64(1390062617, 2018141668), new $Int64(131272971, 2087974891), new $Int64(-1502927041, 3166972343), new $Int64(372256200, 1517638666), new $Int64(-935275664, 173466846), new $Int64(-695774461, 4241513471), new $Int64(-1413550842, 2783126920), new $Int64(1972004134, 4167264826), new $Int64(29260506, 3907395640), new $Int64(-910901561, 1539634186), new $Int64(-595957298, 178241987), new $Int64(-113277636, 182168164), new $Int64(-1102530459, 2386154934), new $Int64(1379126408, 4077374341), new $Int64(-2114679722, 1732699140), new $Int64(-421057745, 1041306002), new $Int64(1860414813, 2068001749), new $Int64(1005320202, 3208962910), new $Int64(844054010, 697710380), new $Int64(-1509359403, 2228431183), new $Int64(-810313977, 3554678728), new $Int64(-750989047, 173470263), new $Int64(-85886265, 3848297795), new $Int64(-926936977, 246236185), new $Int64(-1984190461, 2066374846), new $Int64(1771673660, 312890749), new $Int64(703378057, 3573310289), new $Int64(-598851901, 143166754), new $Int64(613554316, 2081511079), new $Int64(1197802104, 486038032), new $Int64(-1906483789, 2982218564), new $Int64(364901986, 1000939191), new $Int64(1902782651, 2750454885), new $Int64(-671844857, 3375313137), new $Int64(-1643868040, 881302957), new $Int64(-1508784745, 2514186393), new $Int64(-1703622845, 360024739), new $Int64(1399671872, 292500025), new $Int64(1381210821, 2276300752), new $Int64(521803381, 4069087683), new $Int64(-1938982667, 1637778212), new $Int64(720490469, 1676670893), new $Int64(1067262482, 3855174429), new $Int64(2114075974, 2067248671), new $Int64(-89426259, 2884561259), new $Int64(-805741095, 2456511185), new $Int64(983726246, 561175414), new $Int64(-1719489563, 432588903), new $Int64(885133709, 4059399550), new $Int64(-93096266, 1075014784), new $Int64(-1733832628, 2728058415), new $Int64(1839142064, 1299703678), new $Int64(1262333188, 2347583393), new $Int64(1285481956, 2468164145), new $Int64(-1158354011, 1140014346), new $Int64(2033889184, 1936972070), new $Int64(-1737578993, 3870530098), new $Int64(-484494257, 1717789158), new $Int64(-232997156, 1153452491), new $Int64(-990424416, 3948827651), new $Int64(-1357145630, 2101413152), new $Int64(1495744672, 3854091229), new $Int64(83644069, 4215565463), new $Int64(-1385277313, 1202710438), new $Int64(-564909037, 2072216740), new $Int64(705690639, 2066751068), new $Int64(-2113583312, 173902580), new $Int64(-741983806, 142459001), new $Int64(172391592, 1889151926), new $Int64(-498943125, 3034199774), new $Int64(1618587731, 516490102), new $Int64(93114264, 3692577783), new $Int64(-2078821353, 2953948865), new $Int64(-320938673, 4041040923), new $Int64(-1942517976, 592046130), new $Int64(-705643640, 384297211), new $Int64(-2051649464, 265863924), new $Int64(2101717619, 1333136237), new $Int64(1499611781, 1406273556), new $Int64(1074670496, 426305476), new $Int64(125704633, 2750898176), new $Int64(488068495, 1633944332), new $Int64(2037723464, 3236349343), new $Int64(-1703423246, 4013676611), new $Int64(1718532237, 2265047407), new $Int64(1433593806, 875071080), new $Int64(-343047503, 1418843655), new $Int64(2009228711, 451657300), new $Int64(1229446621, 1866374663), new $Int64(1653472867, 1551455622), new $Int64(577191481, 3560962459), new $Int64(1669204077, 3347903778), new $Int64(-298327194, 2675874918), new $Int64(-1831355577, 2762991672), new $Int64(530492383, 3689068477), new $Int64(844089962, 4071997905), new $Int64(1508155730, 1381702441), new $Int64(2089931018, 2373284878), new $Int64(-864267462, 2143983064), new $Int64(308739063, 1938207195), new $Int64(1754949306, 1188152253), new $Int64(1272345009, 615870490), new $Int64(742653194, 2662252621), new $Int64(1477718295, 3839976789), new $Int64(-2091334213, 306752547), new $Int64(-1426688067, 2162363077), new $Int64(-57052633, 2767224719), new $Int64(-1471624099, 2628837712), new $Int64(1678405918, 2967771969), new $Int64(1694285728, 499792248), new $Int64(-1744131281, 4285253508), new $Int64(962357072, 2856511070), new $Int64(679471692, 2526409716), new $Int64(-1793706473, 1240875658), new $Int64(-914893422, 2577342868), new $Int64(-1001298215, 4136853496), new $Int64(-1477114974, 2403540137), new $Int64(1372824515, 1371410668), new $Int64(-176562048, 371758825), new $Int64(-441063112, 1528834084), new $Int64(-71688630, 1504757260), new $Int64(-1461820072, 699052551), new $Int64(-505543539, 3347789870), new $Int64(1951619734, 3430604759), new $Int64(2119672219, 1935601723), new $Int64(966789690, 834676166)]); + globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(false), $assertType(NewSource(new $Int64(0, 1)), Source64))); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["net"] = (function() { + var $pkg = {}, $init, context, errors, js, bytealg, nettrace, poll, singleflight, dnsmessage, io, rand, os, runtime, sort, sync, atomic, syscall, time, policyTableEntry, policyTable, byMaskLength, Interface, Flags, ipv6ZoneCache, IP, IPMask, IPNet, IPAddr, HardwareAddr, Addr, OpError, timeout, temporary, ParseError, AddrError, file, sockaddr, ptrType, sliceType, sliceType$1, ptrType$5, ptrType$9, ptrType$13, ptrType$18, ptrType$22, ptrType$23, sliceType$7, sliceType$8, ptrType$24, ptrType$25, arrayType$2, ptrType$31, ptrType$32, arrayType$6, ptrType$48, mapType$1, mapType$2, ptrType$49, ptrType$52, rfc6724policyTable, errLameReferral, errCannotUnmarshalDNSMessage, errCannotMarshalDNSMessage, errServerMisbehaving, errInvalidDNSResponse, errNoAnswerFromDNSServer, errServerTemporarlyMisbehaving, testHookLookupIP, errInvalidInterface, errInvalidInterfaceIndex, errInvalidInterfaceName, errNoSuchInterface, errNoSuchMulticastInterface, flagNames, zoneCache, v4InV6Prefix, classAMask, classBMask, classCMask, netGo, errNoSuitableAddress, errMissingAddress, errCanceled, aLongTimeAgo, errNoSuchHost, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, init, mustCIDR, init$1, isConnError, interfaceByIndex, interfaceTable, newLink, linkFlags, interfaceAddrTable, addrTable, newAddr, interfaceMulticastAddrTable, parseProcNetIGMP, parseProcNetIGMP6, IPv4, IPv4Mask, CIDRMask, isZeros, allFF, ubtoa, hexString, ipEmptyString, simpleMaskLength, networkNumberAndMask, parseIPv4, parseIPv6, ParseIP, ParseCIDR, open, countAnyByte, splitAtBytes, dtoi, xtoi, xtoi2, uitoa, appendHex; + context = $packages["context"]; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bytealg = $packages["internal/bytealg"]; + nettrace = $packages["internal/nettrace"]; + poll = $packages["internal/poll"]; + singleflight = $packages["internal/singleflight"]; + dnsmessage = $packages["internal/x/net/dns/dnsmessage"]; + io = $packages["io"]; + rand = $packages["math/rand"]; + os = $packages["os"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + policyTableEntry = $pkg.policyTableEntry = $newType(0, $kindStruct, "net.policyTableEntry", true, "net", false, function(Prefix_, Precedence_, Label_) { + this.$val = this; + if (arguments.length === 0) { + this.Prefix = ptrType$5.nil; + this.Precedence = 0; + this.Label = 0; + return; + } + this.Prefix = Prefix_; + this.Precedence = Precedence_; + this.Label = Label_; + }); + policyTable = $pkg.policyTable = $newType(12, $kindSlice, "net.policyTable", true, "net", false, null); + byMaskLength = $pkg.byMaskLength = $newType(12, $kindSlice, "net.byMaskLength", true, "net", false, null); + Interface = $pkg.Interface = $newType(0, $kindStruct, "net.Interface", true, "net", true, function(Index_, MTU_, Name_, HardwareAddr_, Flags_) { + this.$val = this; + if (arguments.length === 0) { + this.Index = 0; + this.MTU = 0; + this.Name = ""; + this.HardwareAddr = HardwareAddr.nil; + this.Flags = 0; + return; + } + this.Index = Index_; + this.MTU = MTU_; + this.Name = Name_; + this.HardwareAddr = HardwareAddr_; + this.Flags = Flags_; + }); + Flags = $pkg.Flags = $newType(4, $kindUint, "net.Flags", true, "net", true, null); + ipv6ZoneCache = $pkg.ipv6ZoneCache = $newType(0, $kindStruct, "net.ipv6ZoneCache", true, "net", false, function(RWMutex_, lastFetched_, toIndex_, toName_) { + this.$val = this; + if (arguments.length === 0) { + this.RWMutex = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0); + this.lastFetched = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil); + this.toIndex = false; + this.toName = false; + return; + } + this.RWMutex = RWMutex_; + this.lastFetched = lastFetched_; + this.toIndex = toIndex_; + this.toName = toName_; + }); + IP = $pkg.IP = $newType(12, $kindSlice, "net.IP", true, "net", true, null); + IPMask = $pkg.IPMask = $newType(12, $kindSlice, "net.IPMask", true, "net", true, null); + IPNet = $pkg.IPNet = $newType(0, $kindStruct, "net.IPNet", true, "net", true, function(IP_, Mask_) { + this.$val = this; + if (arguments.length === 0) { + this.IP = IP.nil; + this.Mask = IPMask.nil; + return; + } + this.IP = IP_; + this.Mask = Mask_; + }); + IPAddr = $pkg.IPAddr = $newType(0, $kindStruct, "net.IPAddr", true, "net", true, function(IP_, Zone_) { + this.$val = this; + if (arguments.length === 0) { + this.IP = IP.nil; + this.Zone = ""; + return; + } + this.IP = IP_; + this.Zone = Zone_; + }); + HardwareAddr = $pkg.HardwareAddr = $newType(12, $kindSlice, "net.HardwareAddr", true, "net", true, null); + Addr = $pkg.Addr = $newType(8, $kindInterface, "net.Addr", true, "net", true, null); + OpError = $pkg.OpError = $newType(0, $kindStruct, "net.OpError", true, "net", true, function(Op_, Net_, Source_, Addr_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.Net = ""; + this.Source = $ifaceNil; + this.Addr = $ifaceNil; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.Net = Net_; + this.Source = Source_; + this.Addr = Addr_; + this.Err = Err_; + }); + timeout = $pkg.timeout = $newType(8, $kindInterface, "net.timeout", true, "net", false, null); + temporary = $pkg.temporary = $newType(8, $kindInterface, "net.temporary", true, "net", false, null); + ParseError = $pkg.ParseError = $newType(0, $kindStruct, "net.ParseError", true, "net", true, function(Type_, Text_) { + this.$val = this; + if (arguments.length === 0) { + this.Type = ""; + this.Text = ""; + return; + } + this.Type = Type_; + this.Text = Text_; + }); + AddrError = $pkg.AddrError = $newType(0, $kindStruct, "net.AddrError", true, "net", true, function(Err_, Addr_) { + this.$val = this; + if (arguments.length === 0) { + this.Err = ""; + this.Addr = ""; + return; + } + this.Err = Err_; + this.Addr = Addr_; + }); + file = $pkg.file = $newType(0, $kindStruct, "net.file", true, "net", false, function(file_, data_, atEOF_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType$18.nil; + this.data = sliceType$1.nil; + this.atEOF = false; + return; + } + this.file = file_; + this.data = data_; + this.atEOF = atEOF_; + }); + sockaddr = $pkg.sockaddr = $newType(8, $kindInterface, "net.sockaddr", true, "net", false, null); + ptrType = $ptrType(time.Location); + sliceType = $sliceType($String); + sliceType$1 = $sliceType($Uint8); + ptrType$5 = $ptrType(IPNet); + ptrType$9 = $ptrType(IPAddr); + ptrType$13 = $ptrType(OpError); + ptrType$18 = $ptrType(os.File); + ptrType$22 = $ptrType(file); + ptrType$23 = $ptrType(Interface); + sliceType$7 = $sliceType(Addr); + sliceType$8 = $sliceType(Interface); + ptrType$24 = $ptrType(syscall.IfInfomsg); + ptrType$25 = $ptrType(syscall.IfAddrmsg); + arrayType$2 = $arrayType($Uint8, 4); + ptrType$31 = $ptrType(os.SyscallError); + ptrType$32 = $ptrType(AddrError); + arrayType$6 = $arrayType($Uint8, 20); + ptrType$48 = $ptrType(ipv6ZoneCache); + mapType$1 = $mapType($String, $Int); + mapType$2 = $mapType($Int, $String); + ptrType$49 = $ptrType(IP); + ptrType$52 = $ptrType(ParseError); + init = function() { + var $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sort.Sort(sort.Reverse(($subslice(new byMaskLength(rfc6724policyTable.$array), rfc6724policyTable.$offset, rfc6724policyTable.$offset + rfc6724policyTable.$length)))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + byMaskLength.prototype.Len = function() { + var s; + s = this; + return s.$length; + }; + $ptrType(byMaskLength).prototype.Len = function() { return this.$get().Len(); }; + byMaskLength.prototype.Swap = function(i, j) { + var _tmp, _tmp$1, i, j, s; + s = this; + _tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), policyTableEntry); + _tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), policyTableEntry); + policyTableEntry.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp); + policyTableEntry.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1); + }; + $ptrType(byMaskLength).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; + byMaskLength.prototype.Less = function(i, j) { + var _tuple, _tuple$1, i, isize, j, jsize, s; + s = this; + _tuple = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Prefix.Mask.Size(); + isize = _tuple[0]; + _tuple$1 = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Prefix.Mask.Size(); + jsize = _tuple$1[0]; + return isize < jsize; + }; + $ptrType(byMaskLength).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; + mustCIDR = function(s) { + var _r$9, _tuple, err, ip, ipNet, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ip = $f.ip; ipNet = $f.ipNet; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tuple = ParseCIDR(s); + ip = _tuple[0]; + ipNet = _tuple[1]; + err = _tuple[2]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1: + _r$9 = err.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $panic(new $String(_r$9)); + /* } */ case 2: + if (!((ip.$length === 16))) { + $panic(new $String("unexpected IP length")); + } + $s = -1; return ipNet; + /* */ } return; } if ($f === undefined) { $f = { $blk: mustCIDR }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ip = ip; $f.ipNet = ipNet; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + policyTable.prototype.Classify = function(ip) { + var _i, _ref, ent, ip, t; + t = this; + _ref = t; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ent = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), policyTableEntry); + if (ent.Prefix.Contains(ip)) { + return ent; + } + _i++; + } + return new policyTableEntry.ptr(ptrType$5.nil, 0, 0); + }; + $ptrType(policyTable).prototype.Classify = function(ip) { return this.$get().Classify(ip); }; + init$1 = function() { + netGo = true; + }; + isConnError = function(err) { + var _tuple, err, ok, se; + _tuple = $assertType(err, syscall.Errno, true); + se = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return (se === 104) || (se === 103); + } + return false; + }; + Flags.prototype.String = function() { + var _i, _ref, f, i, name, s, y; + f = this.$val; + s = ""; + _ref = flagNames; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((((f & (((y = ((i >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { + if (!(s === "")) { + s = s + ("|"); + } + s = s + (name); + } + _i++; + } + if (s === "") { + s = "0"; + } + return s; + }; + $ptrType(Flags).prototype.String = function() { return new Flags(this.$get()).String(); }; + Interface.ptr.prototype.Addrs = function() { + var _r$9, _tuple, err, ifat, ifi, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ifat = $f.ifat; ifi = $f.ifi; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + ifi = this; + if (ifi === ptrType$23.nil) { + $s = -1; return [sliceType$7.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)]; + } + _r$9 = interfaceAddrTable(ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + ifat = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err); + } + $s = -1; return [ifat, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Interface.ptr.prototype.Addrs }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ifat = ifat; $f.ifi = ifi; $f.$s = $s; $f.$r = $r; return $f; + }; + Interface.prototype.Addrs = function() { return this.$val.Addrs(); }; + Interface.ptr.prototype.MulticastAddrs = function() { + var _r$9, _tuple, err, ifat, ifi, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ifat = $f.ifat; ifi = $f.ifi; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + ifi = this; + if (ifi === ptrType$23.nil) { + $s = -1; return [sliceType$7.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)]; + } + _r$9 = interfaceMulticastAddrTable(ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + ifat = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err); + } + $s = -1; return [ifat, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Interface.ptr.prototype.MulticastAddrs }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ifat = ifat; $f.ifi = ifi; $f.$s = $s; $f.$r = $r; return $f; + }; + Interface.prototype.MulticastAddrs = function() { return this.$val.MulticastAddrs(); }; + interfaceByIndex = function(ift, index) { + var _i, _ref, ifi, ift, index; + _ref = ift; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ifi = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Interface); + if (index === ifi.Index) { + return [ifi, $ifaceNil]; + } + _i++; + } + return [ptrType$23.nil, errNoSuchInterface]; + }; + interfaceTable = function(ifindex) { + var _1, _i, _r$9, _ref, _tuple, _tuple$1, _tuple$2, attrs, err, err$1, ifim, ifindex, ift, m, msgs, tab, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; attrs = $f.attrs; err = $f.err; err$1 = $f.err$1; ifim = $f.ifim; ifindex = $f.ifindex; ift = $f.ift; m = $f.m; msgs = $f.msgs; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + m = [m]; + _r$9 = syscall.NetlinkRIB(18, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + tab = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$8.nil, os.NewSyscallError("netlinkrib", err)]; + } + _tuple$1 = syscall.ParseNetlinkMessage(tab); + msgs = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$8.nil, os.NewSyscallError("parsenetlinkmessage", err)]; + } + ift = sliceType$8.nil; + _ref = msgs; + _i = 0; + loop: + while (true) { + if (!(_i < _ref.$length)) { break; } + m[0] = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkMessage); + _1 = m[0].Header.Type; + if (_1 === (3)) { + break loop; + } else if (_1 === (16)) { + ifim = ($pointerOfStructConversion(($sliceToArray(m[0].Data)), ptrType$24)); + if ((ifindex === 0) || (ifindex === ((ifim.Index >> 0)))) { + _tuple$2 = syscall.ParseNetlinkRouteAttr(m[0]); + attrs = _tuple$2[0]; + err$1 = _tuple$2[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [sliceType$8.nil, os.NewSyscallError("parsenetlinkrouteattr", err$1)]; + } + ift = $append(ift, newLink(ifim, attrs)); + if (ifindex === ((ifim.Index >> 0))) { + break loop; + } + } + } + _i++; + } + $s = -1; return [ift, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: interfaceTable }; } $f._1 = _1; $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.attrs = attrs; $f.err = err; $f.err$1 = err$1; $f.ifim = ifim; $f.ifindex = ifindex; $f.ift = ift; $f.m = m; $f.msgs = msgs; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f; + }; + newLink = function(ifim, attrs) { + var _1, _2, _3, _4, _i, _i$1, _ref, _ref$1, a, attrs, b, ifi, ifim, nonzero, x, x$1; + ifi = new Interface.ptr(((ifim.Index >> 0)), 0, "", HardwareAddr.nil, linkFlags(ifim.Flags)); + _ref = attrs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkRouteAttr); + _1 = a.Attr.Type; + if (_1 === (1)) { + _2 = a.Value.$length; + if (_2 === (4)) { + _3 = ifim.Type; + if ((_3 === (768)) || (_3 === (778)) || (_3 === (776))) { + _i++; + continue; + } + } else if (_2 === (16)) { + _4 = ifim.Type; + if ((_4 === (769)) || (_4 === (823))) { + _i++; + continue; + } + } + nonzero = false; + _ref$1 = a.Value; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + b = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (!((b === 0))) { + nonzero = true; + break; + } + _i$1++; + } + if (nonzero) { + ifi.HardwareAddr = (x = a.Value, $subslice(new HardwareAddr(x.$array), x.$offset, x.$offset + x.$length)); + } + } else if (_1 === (3)) { + ifi.Name = ($bytesToString($subslice(a.Value, 0, (a.Value.$length - 1 >> 0)))); + } else if (_1 === (4)) { + ifi.MTU = (((x$1 = $subslice(a.Value, 0, 4), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) >> 0)); + } + _i++; + } + return ifi; + }; + linkFlags = function(rawFlags) { + var f, rawFlags; + f = 0; + if (!((((rawFlags & 1) >>> 0) === 0))) { + f = (f | (1)) >>> 0; + } + if (!((((rawFlags & 2) >>> 0) === 0))) { + f = (f | (2)) >>> 0; + } + if (!((((rawFlags & 8) >>> 0) === 0))) { + f = (f | (4)) >>> 0; + } + if (!((((rawFlags & 16) >>> 0) === 0))) { + f = (f | (8)) >>> 0; + } + if (!((((rawFlags & 4096) >>> 0) === 0))) { + f = (f | (16)) >>> 0; + } + return f; + }; + interfaceAddrTable = function(ifi) { + var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, ifat, ifi, ift, msgs, tab, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; ifat = $f.ifat; ifi = $f.ifi; ift = $f.ift; msgs = $f.msgs; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$9 = syscall.NetlinkRIB(22, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + tab = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$7.nil, os.NewSyscallError("netlinkrib", err)]; + } + _tuple$1 = syscall.ParseNetlinkMessage(tab); + msgs = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$7.nil, os.NewSyscallError("parsenetlinkmessage", err)]; + } + ift = sliceType$8.nil; + /* */ if (ifi === ptrType$23.nil) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ifi === ptrType$23.nil) { */ case 2: + err$1 = $ifaceNil; + _r$10 = interfaceTable(0); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$2 = _r$10; + ift = _tuple$2[0]; + err$1 = _tuple$2[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [sliceType$7.nil, err$1]; + } + /* } */ case 3: + _tuple$3 = addrTable(ift, ifi, msgs); + ifat = _tuple$3[0]; + err = _tuple$3[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$7.nil, err]; + } + $s = -1; return [ifat, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: interfaceAddrTable }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.ifat = ifat; $f.ifi = ifi; $f.ift = ift; $f.msgs = msgs; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f; + }; + addrTable = function(ift, ifi, msgs) { + var _1, _i, _ref, _tuple, _tuple$1, attrs, err, err$1, ifa, ifam, ifat, ifi, ift, m, msgs; + ifat = sliceType$7.nil; + _ref = msgs; + _i = 0; + loop: + while (true) { + if (!(_i < _ref.$length)) { break; } + m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkMessage); + _1 = m.Header.Type; + if (_1 === (3)) { + break loop; + } else if (_1 === (20)) { + ifam = ($pointerOfStructConversion(($sliceToArray(m.Data)), ptrType$25)); + if (!((ift.$length === 0)) || (ifi.Index === ((ifam.Index >> 0)))) { + if (!((ift.$length === 0))) { + err = $ifaceNil; + _tuple = interfaceByIndex(ift, ((ifam.Index >> 0))); + ifi = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [sliceType$7.nil, err]; + } + } + _tuple$1 = syscall.ParseNetlinkRouteAttr(m); + attrs = _tuple$1[0]; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + return [sliceType$7.nil, os.NewSyscallError("parsenetlinkrouteattr", err$1)]; + } + ifa = newAddr(ifam, attrs); + if (!($interfaceIsEqual(ifa, $ifaceNil))) { + ifat = $append(ifat, ifa); + } + } + } + _i++; + } + return [ifat, $ifaceNil]; + }; + newAddr = function(ifam, attrs) { + var _1, _i, _i$1, _ref, _ref$1, a, a$1, attrs, ifa, ifam, ipPointToPoint, x, x$1, x$2, x$3; + ipPointToPoint = false; + _ref = attrs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkRouteAttr); + if (a.Attr.Type === 2) { + ipPointToPoint = true; + break; + } + _i++; + } + _ref$1 = attrs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + a$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), syscall.NetlinkRouteAttr); + if (ipPointToPoint && (a$1.Attr.Type === 1)) { + _i$1++; + continue; + } + _1 = ifam.Family; + if (_1 === (2)) { + return new IPNet.ptr(IPv4((x = a$1.Value, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), (x$1 = a$1.Value, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])), (x$2 = a$1.Value, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2])), (x$3 = a$1.Value, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3]))), CIDRMask(((ifam.Prefixlen >> 0)), 32)); + } else if (_1 === (10)) { + ifa = new IPNet.ptr($makeSlice(IP, 16), CIDRMask(((ifam.Prefixlen >> 0)), 128)); + $copySlice(ifa.IP, a$1.Value); + return ifa; + } + _i$1++; + } + return $ifaceNil; + }; + interfaceMulticastAddrTable = function(ifi) { + var _r$10, _r$9, ifi, ifmat4, ifmat6, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; ifi = $f.ifi; ifmat4 = $f.ifmat4; ifmat6 = $f.ifmat6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$9 = parseProcNetIGMP("/proc/net/igmp", ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + ifmat4 = _r$9; + _r$10 = parseProcNetIGMP6("/proc/net/igmp6", ifi); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + ifmat6 = _r$10; + $s = -1; return [$appendSlice(ifmat4, ifmat6), $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: interfaceMulticastAddrTable }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.ifi = ifi; $f.ifmat4 = ifmat4; $f.ifmat6 = ifmat6; $f.$s = $s; $f.$r = $r; return $f; + }; + parseProcNetIGMP = function(path, ifi) { + var _q, _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, f, fd, i, i$1, ifi, ifma, ifmat, l, name, ok, path, x, x$1, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; f = $f.f; fd = $f.fd; i = $f.i; i$1 = $f.i$1; ifi = $f.ifi; ifma = $f.ifma; ifmat = $f.ifmat; l = $f.l; name = $f.name; ok = $f.ok; path = $f.path; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + _r$9 = open(path); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + fd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return sliceType$7.nil; + } + $deferred.push([$methodVal(fd, "close"), []]); + ifmat = sliceType$7.nil; + name = ""; + _r$10 = fd.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + b = $makeSlice(sliceType$1, 4); + _r$11 = fd.readLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$1 = _r$11; + l = _tuple$1[0]; + ok = _tuple$1[1]; + /* while (true) { */ case 4: + /* if (!(ok)) { break; } */ if(!(ok)) { $s = 5; continue; } + f = splitAtBytes(l, " :\r\t\n"); + /* */ if (f.$length < 4) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (f.$length < 4) { */ case 6: + _r$12 = fd.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$2 = _r$12; + l = _tuple$2[0]; + ok = _tuple$2[1]; + /* continue; */ $s = 4; continue; + /* } */ case 7: + if (!((l.charCodeAt(0) === 32)) && !((l.charCodeAt(0) === 9))) { + name = (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]); + } else if (((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]).length === 8)) { + if (ifi === ptrType$23.nil || name === ifi.Name) { + i = 0; + while (true) { + if (!((i + 1 >> 0) < (0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]).length)) { break; } + _tuple$3 = xtoi2($substring((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]), i, (i + 2 >> 0)), 0); + (x = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x] = _tuple$3[0])); + i = i + (2) >> 0; + } + i$1 = (x$1 = $subslice(b, 0, 4), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + ifma = new IPAddr.ptr(IPv4((((i$1 >>> 24 >>> 0) << 24 >>> 24)), (((i$1 >>> 16 >>> 0) << 24 >>> 24)), (((i$1 >>> 8 >>> 0) << 24 >>> 24)), ((i$1 << 24 >>> 24))), ""); + ifmat = $append(ifmat, ifma); + } + } + _r$13 = fd.readLine(); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _tuple$4 = _r$13; + l = _tuple$4[0]; + ok = _tuple$4[1]; + /* } */ $s = 4; continue; case 5: + $s = -1; return ifmat; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseProcNetIGMP }; } $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.f = f; $f.fd = fd; $f.i = i; $f.i$1 = i$1; $f.ifi = ifi; $f.ifma = ifma; $f.ifmat = ifmat; $f.l = l; $f.name = name; $f.ok = ok; $f.path = path; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + parseProcNetIGMP6 = function(path, ifi) { + var _q, _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, f, fd, i, ifi, ifma, ifmat, l, ok, path, x, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; f = $f.f; fd = $f.fd; i = $f.i; ifi = $f.ifi; ifma = $f.ifma; ifmat = $f.ifmat; l = $f.l; ok = $f.ok; path = $f.path; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + _r$9 = open(path); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + fd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return sliceType$7.nil; + } + $deferred.push([$methodVal(fd, "close"), []]); + ifmat = sliceType$7.nil; + b = $makeSlice(sliceType$1, 16); + _r$10 = fd.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$1 = _r$10; + l = _tuple$1[0]; + ok = _tuple$1[1]; + /* while (true) { */ case 3: + /* if (!(ok)) { break; } */ if(!(ok)) { $s = 4; continue; } + f = splitAtBytes(l, " \r\t\n"); + /* */ if (f.$length < 6) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (f.$length < 6) { */ case 5: + _r$11 = fd.readLine(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$2 = _r$11; + l = _tuple$2[0]; + ok = _tuple$2[1]; + /* continue; */ $s = 3; continue; + /* } */ case 6: + if (ifi === ptrType$23.nil || (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]) === ifi.Name) { + i = 0; + while (true) { + if (!((i + 1 >> 0) < (2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]).length)) { break; } + _tuple$3 = xtoi2($substring((2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]), i, (i + 2 >> 0)), 0); + (x = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x] = _tuple$3[0])); + i = i + (2) >> 0; + } + ifma = new IPAddr.ptr(new IP([(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]), (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]), (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]), (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]), (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]), (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]), (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]), (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]), (8 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 8]), (9 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 9]), (10 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 10]), (11 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 11]), (12 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 12]), (13 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 13]), (14 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 14]), (15 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 15])]), ""); + ifmat = $append(ifmat, ifma); + } + _r$12 = fd.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$4 = _r$12; + l = _tuple$4[0]; + ok = _tuple$4[1]; + /* } */ $s = 3; continue; case 4: + $s = -1; return ifmat; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseProcNetIGMP6 }; } $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.f = f; $f.fd = fd; $f.i = i; $f.ifi = ifi; $f.ifma = ifma; $f.ifmat = ifmat; $f.l = l; $f.ok = ok; $f.path = path; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + IPv4 = function(a, b, c, d) { + var a, b, c, d, p; + p = $makeSlice(IP, 16); + $copySlice(p, v4InV6Prefix); + (12 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 12] = a); + (13 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 13] = b); + (14 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 14] = c); + (15 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 15] = d); + return p; + }; + $pkg.IPv4 = IPv4; + IPv4Mask = function(a, b, c, d) { + var a, b, c, d, p; + p = $makeSlice(IPMask, 4); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = a); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = b); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = c); + (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = d); + return p; + }; + $pkg.IPv4Mask = IPv4Mask; + CIDRMask = function(ones, bits) { + var _q, bits, i, l, m, n, ones, y; + if (!((bits === 32)) && !((bits === 128))) { + return IPMask.nil; + } + if (ones < 0 || ones > bits) { + return IPMask.nil; + } + l = (_q = bits / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + m = $makeSlice(IPMask, l); + n = ((ones >>> 0)); + i = 0; + while (true) { + if (!(i < l)) { break; } + if (n >= 8) { + ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = 255); + n = n - (8) >>> 0; + i = i + (1) >> 0; + continue; + } + ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = (~(((y = n, y < 32 ? (255 >>> y) : 0) << 24 >>> 24)) << 24 >>> 24)); + n = 0; + i = i + (1) >> 0; + } + return m; + }; + $pkg.CIDRMask = CIDRMask; + IP.prototype.IsUnspecified = function() { + var ip; + ip = this; + return ip.Equal($pkg.IPv4zero) || ip.Equal($pkg.IPv6unspecified); + }; + $ptrType(IP).prototype.IsUnspecified = function() { return this.$get().IsUnspecified(); }; + IP.prototype.IsLoopback = function() { + var ip, ip4; + ip = this; + ip4 = ip.To4(); + if (!(ip4 === IP.nil)) { + return (0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 127; + } + return ip.Equal($pkg.IPv6loopback); + }; + $ptrType(IP).prototype.IsLoopback = function() { return this.$get().IsLoopback(); }; + IP.prototype.IsMulticast = function() { + var ip, ip4; + ip = this; + ip4 = ip.To4(); + if (!(ip4 === IP.nil)) { + return (((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) & 240) >>> 0) === 224; + } + return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255); + }; + $ptrType(IP).prototype.IsMulticast = function() { return this.$get().IsMulticast(); }; + IP.prototype.IsInterfaceLocalMulticast = function() { + var ip; + ip = this; + return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 1); + }; + $ptrType(IP).prototype.IsInterfaceLocalMulticast = function() { return this.$get().IsInterfaceLocalMulticast(); }; + IP.prototype.IsLinkLocalMulticast = function() { + var ip, ip4; + ip = this; + ip4 = ip.To4(); + if (!(ip4 === IP.nil)) { + return ((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 224) && ((1 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 1]) === 0) && ((2 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 2]) === 0); + } + return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 2); + }; + $ptrType(IP).prototype.IsLinkLocalMulticast = function() { return this.$get().IsLinkLocalMulticast(); }; + IP.prototype.IsLinkLocalUnicast = function() { + var ip, ip4; + ip = this; + ip4 = ip.To4(); + if (!(ip4 === IP.nil)) { + return ((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 169) && ((1 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 1]) === 254); + } + return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 254) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 192) >>> 0) === 128); + }; + $ptrType(IP).prototype.IsLinkLocalUnicast = function() { return this.$get().IsLinkLocalUnicast(); }; + IP.prototype.IsGlobalUnicast = function() { + var ip; + ip = this; + return ((ip.$length === 4) || (ip.$length === 16)) && !ip.Equal($pkg.IPv4bcast) && !ip.IsUnspecified() && !ip.IsLoopback() && !ip.IsMulticast() && !ip.IsLinkLocalUnicast(); + }; + $ptrType(IP).prototype.IsGlobalUnicast = function() { return this.$get().IsGlobalUnicast(); }; + isZeros = function(p) { + var i, p; + i = 0; + while (true) { + if (!(i < p.$length)) { break; } + if (!((((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === 0))) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + IP.prototype.To4 = function() { + var ip; + ip = this; + if (ip.$length === 4) { + return ip; + } + if ((ip.$length === 16) && isZeros($subslice(ip, 0, 10)) && ((10 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 10]) === 255) && ((11 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 11]) === 255)) { + return $subslice(ip, 12, 16); + } + return IP.nil; + }; + $ptrType(IP).prototype.To4 = function() { return this.$get().To4(); }; + IP.prototype.To16 = function() { + var ip; + ip = this; + if (ip.$length === 4) { + return IPv4((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]), (1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]), (2 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 2]), (3 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 3])); + } + if (ip.$length === 16) { + return ip; + } + return IP.nil; + }; + $ptrType(IP).prototype.To16 = function() { return this.$get().To16(); }; + IP.prototype.DefaultMask = function() { + var ip; + ip = this; + ip = ip.To4(); + if (ip === IP.nil) { + return IPMask.nil; + } + if ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 128) { + return classAMask; + } else if ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 192) { + return classBMask; + } else { + return classCMask; + } + }; + $ptrType(IP).prototype.DefaultMask = function() { return this.$get().DefaultMask(); }; + allFF = function(b) { + var _i, _ref, b, c; + _ref = b; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((c === 255))) { + return false; + } + _i++; + } + return true; + }; + IP.prototype.Mask = function(mask) { + var i, ip, mask, n, out, x, x$1; + ip = this; + if ((mask.$length === 16) && (ip.$length === 4) && allFF((x = $subslice(mask, 0, 12), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)))) { + mask = $subslice(mask, 12); + } + if ((mask.$length === 4) && (ip.$length === 16) && bytealg.Equal((x$1 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix)) { + ip = $subslice(ip, 12); + } + n = ip.$length; + if (!((n === mask.$length))) { + return IP.nil; + } + out = $makeSlice(IP, n); + i = 0; + while (true) { + if (!(i < n)) { break; } + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = ((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & ((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i])) >>> 0)); + i = i + (1) >> 0; + } + return out; + }; + $ptrType(IP).prototype.Mask = function(mask) { return this.$get().Mask(mask); }; + ubtoa = function(dst, start, v) { + var _q, _q$1, _q$2, _r$10, _r$11, _r$9, dst, start, v, x, x$1, x$2; + if (v < 10) { + ((start < 0 || start >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + start] = (v + 48 << 24 >>> 24)); + return 1; + } else if (v < 100) { + (x = start + 1 >> 0, ((x < 0 || x >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x] = ((_r$9 = v % 10, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24))); + ((start < 0 || start >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + start] = ((_q = v / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24)); + return 2; + } + (x$1 = start + 2 >> 0, ((x$1 < 0 || x$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$1] = ((_r$10 = v % 10, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24))); + (x$2 = start + 1 >> 0, ((x$2 < 0 || x$2 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$2] = ((_r$11 = ((_q$1 = v / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$11 === _r$11 ? _r$11 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24))); + ((start < 0 || start >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + start] = ((_q$2 = v / 100, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >>> 0 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24)); + return 3; + }; + IP.prototype.String = function() { + var b, b$1, e0, e1, i, i$1, ip, j, n, p, p4, x, x$1; + ip = this; + p = ip; + if (ip.$length === 0) { + return ""; + } + p4 = p.To4(); + if (p4.$length === 4) { + b = $makeSlice(sliceType$1, 15); + n = ubtoa(b, 0, (0 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 0])); + ((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = 46); + n = n + (1) >> 0; + n = n + (ubtoa(b, n, (1 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 1]))) >> 0; + ((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = 46); + n = n + (1) >> 0; + n = n + (ubtoa(b, n, (2 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 2]))) >> 0; + ((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = 46); + n = n + (1) >> 0; + n = n + (ubtoa(b, n, (3 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 3]))) >> 0; + return ($bytesToString($subslice(b, 0, n))); + } + if (!((p.$length === 16))) { + return "?" + hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length)); + } + e0 = -1; + e1 = -1; + i = 0; + while (true) { + if (!(i < 16)) { break; } + j = i; + while (true) { + if (!(j < 16 && (((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) === 0) && ((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) === 0))) { break; } + j = j + (2) >> 0; + } + if (j > i && (j - i >> 0) > (e1 - e0 >> 0)) { + e0 = i; + e1 = j; + i = j; + } + i = i + (2) >> 0; + } + if ((e1 - e0 >> 0) <= 2) { + e0 = -1; + e1 = -1; + } + b$1 = $makeSlice(sliceType$1, 0, 39); + i$1 = 0; + while (true) { + if (!(i$1 < 16)) { break; } + if (i$1 === e0) { + b$1 = $append(b$1, 58, 58); + i$1 = e1; + if (i$1 >= 16) { + break; + } + } else if (i$1 > 0) { + b$1 = $append(b$1, 58); + } + b$1 = appendHex(b$1, (((((((i$1 < 0 || i$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i$1]) >>> 0)) << 8 >>> 0)) | (((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])) >>> 0))) >>> 0); + i$1 = i$1 + (2) >> 0; + } + return ($bytesToString(b$1)); + }; + $ptrType(IP).prototype.String = function() { return this.$get().String(); }; + hexString = function(b) { + var _i, _ref, _tmp, _tmp$1, b, i, s, tn, x, x$1; + s = $makeSlice(sliceType$1, ($imul(b.$length, 2))); + _ref = b; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tmp = "0123456789abcdef".charCodeAt((tn >>> 4 << 24 >>> 24)); + _tmp$1 = "0123456789abcdef".charCodeAt(((tn & 15) >>> 0)); + (x = $imul(i, 2), ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x] = _tmp)); + (x$1 = ($imul(i, 2)) + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1] = _tmp$1)); + _i++; + } + return ($bytesToString(s)); + }; + ipEmptyString = function(ip) { + var ip; + if (ip.$length === 0) { + return ""; + } + return ip.String(); + }; + IP.prototype.MarshalText = function() { + var ip; + ip = this; + if (ip.$length === 0) { + return [(new sliceType$1($stringToBytes(""))), $ifaceNil]; + } + if (!((ip.$length === 4)) && !((ip.$length === 16))) { + return [sliceType$1.nil, new AddrError.ptr("invalid IP address", hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length)))]; + } + return [(new sliceType$1($stringToBytes(ip.String()))), $ifaceNil]; + }; + $ptrType(IP).prototype.MarshalText = function() { return this.$get().MarshalText(); }; + $ptrType(IP).prototype.UnmarshalText = function(text) { + var ip, s, text, x; + ip = this; + if (text.$length === 0) { + ip.$set(IP.nil); + return $ifaceNil; + } + s = ($bytesToString(text)); + x = ParseIP(s); + if (x === IP.nil) { + return new ParseError.ptr("IP address", s); + } + ip.$set(x); + return $ifaceNil; + }; + IP.prototype.Equal = function(x) { + var ip, x, x$1, x$2, x$3, x$4; + ip = this; + if (ip.$length === x.$length) { + return bytealg.Equal($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)); + } + if ((ip.$length === 4) && (x.$length === 16)) { + return bytealg.Equal((x$1 = $subslice(x, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix) && bytealg.Equal($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), (x$2 = $subslice(x, 12), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length))); + } + if ((ip.$length === 16) && (x.$length === 4)) { + return bytealg.Equal((x$3 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), v4InV6Prefix) && bytealg.Equal((x$4 = $subslice(ip, 12), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)); + } + return false; + }; + $ptrType(IP).prototype.Equal = function(x) { return this.$get().Equal(x); }; + simpleMaskLength = function(mask) { + var _i, _ref, i, mask, n, v, y; + n = 0; + _ref = mask; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (v === 255) { + n = n + (8) >> 0; + _i++; + continue; + } + while (true) { + if (!(!((((v & 128) >>> 0) === 0)))) { break; } + n = n + (1) >> 0; + v = (y = (1), y < 32 ? (v << y) : 0) << 24 >>> 24; + } + if (!((v === 0))) { + return -1; + } + i = i + (1) >> 0; + while (true) { + if (!(i < mask.$length)) { break; } + if (!((((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i]) === 0))) { + return -1; + } + i = i + (1) >> 0; + } + break; + } + return n; + }; + IPMask.prototype.Size = function() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, bits, m, ones; + ones = 0; + bits = 0; + m = this; + _tmp = simpleMaskLength(m); + _tmp$1 = $imul(m.$length, 8); + ones = _tmp; + bits = _tmp$1; + if (ones === -1) { + _tmp$2 = 0; + _tmp$3 = 0; + ones = _tmp$2; + bits = _tmp$3; + return [ones, bits]; + } + return [ones, bits]; + }; + $ptrType(IPMask).prototype.Size = function() { return this.$get().Size(); }; + IPMask.prototype.String = function() { + var m; + m = this; + if (m.$length === 0) { + return ""; + } + return hexString($subslice(new sliceType$1(m.$array), m.$offset, m.$offset + m.$length)); + }; + $ptrType(IPMask).prototype.String = function() { return this.$get().String(); }; + networkNumberAndMask = function(n) { + var _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, ip, m, n; + ip = IP.nil; + m = IPMask.nil; + ip = n.IP.To4(); + if (ip === IP.nil) { + ip = n.IP; + if (!((ip.$length === 16))) { + _tmp = IP.nil; + _tmp$1 = IPMask.nil; + ip = _tmp; + m = _tmp$1; + return [ip, m]; + } + } + m = n.Mask; + _1 = m.$length; + if (_1 === (4)) { + if (!((ip.$length === 4))) { + _tmp$2 = IP.nil; + _tmp$3 = IPMask.nil; + ip = _tmp$2; + m = _tmp$3; + return [ip, m]; + } + } else if (_1 === (16)) { + if (ip.$length === 4) { + m = $subslice(m, 12); + } + } else { + _tmp$4 = IP.nil; + _tmp$5 = IPMask.nil; + ip = _tmp$4; + m = _tmp$5; + return [ip, m]; + } + return [ip, m]; + }; + IPNet.ptr.prototype.Contains = function(ip) { + var _tuple, i, ip, l, m, n, nn, x; + n = this; + _tuple = networkNumberAndMask(n); + nn = _tuple[0]; + m = _tuple[1]; + x = ip.To4(); + if (!(x === IP.nil)) { + ip = x; + } + l = ip.$length; + if (!((l === nn.$length))) { + return false; + } + i = 0; + while (true) { + if (!(i < l)) { break; } + if (!((((((i < 0 || i >= nn.$length) ? ($throwRuntimeError("index out of range"), undefined) : nn.$array[nn.$offset + i]) & ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i])) >>> 0) === ((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i])) >>> 0)))) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + IPNet.prototype.Contains = function(ip) { return this.$val.Contains(ip); }; + IPNet.ptr.prototype.Network = function() { + var n; + n = this; + return "ip+net"; + }; + IPNet.prototype.Network = function() { return this.$val.Network(); }; + IPNet.ptr.prototype.String = function() { + var _tuple, l, m, n, nn; + n = this; + _tuple = networkNumberAndMask(n); + nn = _tuple[0]; + m = _tuple[1]; + if (nn === IP.nil || m === IPMask.nil) { + return ""; + } + l = simpleMaskLength(m); + if (l === -1) { + return nn.String() + "/" + m.String(); + } + return nn.String() + "/" + uitoa(((l >>> 0))); + }; + IPNet.prototype.String = function() { return this.$val.String(); }; + parseIPv4 = function(s) { + var _tuple, c, i, n, ok, p, s; + p = arrayType$2.zero(); + i = 0; + while (true) { + if (!(i < 4)) { break; } + if (s.length === 0) { + return IP.nil; + } + if (i > 0) { + if (!((s.charCodeAt(0) === 46))) { + return IP.nil; + } + s = $substring(s, 1); + } + _tuple = dtoi(s); + n = _tuple[0]; + c = _tuple[1]; + ok = _tuple[2]; + if (!ok || n > 255) { + return IP.nil; + } + s = $substring(s, c); + ((i < 0 || i >= p.length) ? ($throwRuntimeError("index out of range"), undefined) : p[i] = ((n << 24 >>> 24))); + i = i + (1) >> 0; + } + if (!((s.length === 0))) { + return IP.nil; + } + return IPv4(p[0], p[1], p[2], p[3]); + }; + parseIPv6 = function(s) { + var _tuple, c, ellipsis, i, ip, ip4, j, j$1, n, n$1, ok, s, x, x$1, x$2, x$3, x$4; + ip = IP.nil; + ip = $makeSlice(IP, 16); + ellipsis = -1; + if (s.length >= 2 && (s.charCodeAt(0) === 58) && (s.charCodeAt(1) === 58)) { + ellipsis = 0; + s = $substring(s, 2); + if (s.length === 0) { + ip = ip; + return ip; + } + } + i = 0; + while (true) { + if (!(i < 16)) { break; } + _tuple = xtoi(s); + n = _tuple[0]; + c = _tuple[1]; + ok = _tuple[2]; + if (!ok || n > 65535) { + ip = IP.nil; + return ip; + } + if (c < s.length && (s.charCodeAt(c) === 46)) { + if (ellipsis < 0 && !((i === 12))) { + ip = IP.nil; + return ip; + } + if ((i + 4 >> 0) > 16) { + ip = IP.nil; + return ip; + } + ip4 = parseIPv4(s); + if (ip4 === IP.nil) { + ip = IP.nil; + return ip; + } + ((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (12 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 12])); + (x = i + 1 >> 0, ((x < 0 || x >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x] = (13 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 13]))); + (x$1 = i + 2 >> 0, ((x$1 < 0 || x$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$1] = (14 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 14]))); + (x$2 = i + 3 >> 0, ((x$2 < 0 || x$2 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$2] = (15 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 15]))); + s = ""; + i = i + (4) >> 0; + break; + } + ((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (((n >> 8 >> 0) << 24 >>> 24))); + (x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$3] = ((n << 24 >>> 24)))); + i = i + (2) >> 0; + s = $substring(s, c); + if (s.length === 0) { + break; + } + if (!((s.charCodeAt(0) === 58)) || (s.length === 1)) { + ip = IP.nil; + return ip; + } + s = $substring(s, 1); + if (s.charCodeAt(0) === 58) { + if (ellipsis >= 0) { + ip = IP.nil; + return ip; + } + ellipsis = i; + s = $substring(s, 1); + if (s.length === 0) { + break; + } + } + } + if (!((s.length === 0))) { + ip = IP.nil; + return ip; + } + if (i < 16) { + if (ellipsis < 0) { + ip = IP.nil; + return ip; + } + n$1 = 16 - i >> 0; + j = i - 1 >> 0; + while (true) { + if (!(j >= ellipsis)) { break; } + (x$4 = j + n$1 >> 0, ((x$4 < 0 || x$4 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$4] = ((j < 0 || j >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j]))); + j = j - (1) >> 0; + } + j$1 = (ellipsis + n$1 >> 0) - 1 >> 0; + while (true) { + if (!(j$1 >= ellipsis)) { break; } + ((j$1 < 0 || j$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j$1] = 0); + j$1 = j$1 - (1) >> 0; + } + } else if (ellipsis >= 0) { + ip = IP.nil; + return ip; + } + ip = ip; + return ip; + }; + ParseIP = function(s) { + var _1, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if (_1 === (46)) { + return parseIPv4(s); + } else if (_1 === (58)) { + return parseIPv6(s); + } + i = i + (1) >> 0; + } + return IP.nil; + }; + $pkg.ParseIP = ParseIP; + ParseCIDR = function(s) { + var _tmp, _tmp$1, _tuple, addr, i, ip, iplen, m, mask, n, ok, s; + i = bytealg.IndexByteString(s, 47); + if (i < 0) { + return [IP.nil, ptrType$5.nil, new ParseError.ptr("CIDR address", s)]; + } + _tmp = $substring(s, 0, i); + _tmp$1 = $substring(s, (i + 1 >> 0)); + addr = _tmp; + mask = _tmp$1; + iplen = 4; + ip = parseIPv4(addr); + if (ip === IP.nil) { + iplen = 16; + ip = parseIPv6(addr); + } + _tuple = dtoi(mask); + n = _tuple[0]; + i = _tuple[1]; + ok = _tuple[2]; + if (ip === IP.nil || !ok || !((i === mask.length)) || n < 0 || n > ($imul(8, iplen))) { + return [IP.nil, ptrType$5.nil, new ParseError.ptr("CIDR address", s)]; + } + m = CIDRMask(n, $imul(8, iplen)); + return [ip, new IPNet.ptr(ip.Mask(m), m), $ifaceNil]; + }; + $pkg.ParseCIDR = ParseCIDR; + IPAddr.ptr.prototype.Network = function() { + var a; + a = this; + return "ip"; + }; + IPAddr.prototype.Network = function() { return this.$val.Network(); }; + IPAddr.ptr.prototype.String = function() { + var a, ip; + a = this; + if (a === ptrType$9.nil) { + return ""; + } + ip = ipEmptyString(a.IP); + if (!(a.Zone === "")) { + return ip + "%" + a.Zone; + } + return ip; + }; + IPAddr.prototype.String = function() { return this.$val.String(); }; + HardwareAddr.prototype.String = function() { + var _i, _ref, a, b, buf, i; + a = this; + if (a.$length === 0) { + return ""; + } + buf = $makeSlice(sliceType$1, 0, (($imul(a.$length, 3)) - 1 >> 0)); + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf = $append(buf, 58); + } + buf = $append(buf, "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24))); + buf = $append(buf, "0123456789abcdef".charCodeAt(((b & 15) >>> 0))); + _i++; + } + return ($bytesToString(buf)); + }; + $ptrType(HardwareAddr).prototype.String = function() { return this.$get().String(); }; + OpError.ptr.prototype.Error = function() { + var _r$10, _r$11, _r$9, e, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; e = $f.e; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + if (e === ptrType$13.nil) { + $s = -1; return ""; + } + s = e.Op; + if (!(e.Net === "")) { + s = s + (" " + e.Net); + } + /* */ if (!($interfaceIsEqual(e.Source, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(e.Source, $ifaceNil))) { */ case 1: + _r$9 = e.Source.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + s = s + (" " + _r$9); + /* } */ case 2: + /* */ if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { */ case 4: + if (!($interfaceIsEqual(e.Source, $ifaceNil))) { + s = s + ("->"); + } else { + s = s + (" "); + } + _r$10 = e.Addr.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + s = s + (_r$10); + /* } */ case 5: + _r$11 = e.Err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + s = s + (": " + _r$11); + $s = -1; return s; + /* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Error }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f.e = e; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + OpError.prototype.Error = function() { return this.$val.Error(); }; + OpError.ptr.prototype.Timeout = function() { + var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; e = $f.e; ne = $f.ne; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; t = $f.t; t$1 = $f.t$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, ptrType$31, true); + ne = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _tuple$1 = $assertType(ne.Err, timeout, true); + t = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (!(ok$1)) { _v = false; $s = 3; continue s; } + _r$9 = t.Timeout(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _v = _r$9; case 3: + $s = -1; return _v; + /* } */ case 2: + _tuple$2 = $assertType(e.Err, timeout, true); + t$1 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (!(ok$2)) { _v$1 = false; $s = 5; continue s; } + _r$10 = t$1.Timeout(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$1 = _r$10; case 5: + $s = -1; return _v$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Timeout }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.e = e; $f.ne = ne; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.t = t; $f.t$1 = t$1; $f.$s = $s; $f.$r = $r; return $f; + }; + OpError.prototype.Timeout = function() { return this.$val.Timeout(); }; + OpError.ptr.prototype.Temporary = function() { + var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; e = $f.e; ne = $f.ne; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; t = $f.t; t$1 = $f.t$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + if (e.Op === "accept" && isConnError(e.Err)) { + $s = -1; return true; + } + _tuple = $assertType(e.Err, ptrType$31, true); + ne = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _tuple$1 = $assertType(ne.Err, temporary, true); + t = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (!(ok$1)) { _v = false; $s = 3; continue s; } + _r$9 = t.Temporary(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _v = _r$9; case 3: + $s = -1; return _v; + /* } */ case 2: + _tuple$2 = $assertType(e.Err, temporary, true); + t$1 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (!(ok$2)) { _v$1 = false; $s = 5; continue s; } + _r$10 = t$1.Temporary(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$1 = _r$10; case 5: + $s = -1; return _v$1; + /* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Temporary }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.e = e; $f.ne = ne; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.t = t; $f.t$1 = t$1; $f.$s = $s; $f.$r = $r; return $f; + }; + OpError.prototype.Temporary = function() { return this.$val.Temporary(); }; + ParseError.ptr.prototype.Error = function() { + var e; + e = this; + return "invalid " + e.Type + ": " + e.Text; + }; + ParseError.prototype.Error = function() { return this.$val.Error(); }; + AddrError.ptr.prototype.Error = function() { + var e, s; + e = this; + if (e === ptrType$32.nil) { + return ""; + } + s = e.Err; + if (!(e.Addr === "")) { + s = "address " + e.Addr + ": " + s; + } + return s; + }; + AddrError.prototype.Error = function() { return this.$val.Error(); }; + AddrError.ptr.prototype.Timeout = function() { + var e; + e = this; + return false; + }; + AddrError.prototype.Timeout = function() { return this.$val.Timeout(); }; + AddrError.ptr.prototype.Temporary = function() { + var e; + e = this; + return false; + }; + AddrError.prototype.Temporary = function() { return this.$val.Temporary(); }; + file.ptr.prototype.close = function() { + var _r$9, f, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + f = this; + _r$9 = f.file.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.close }; } $f._r$9 = _r$9; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; + }; + file.prototype.close = function() { return this.$val.close(); }; + file.ptr.prototype.getLineFromData = function() { + var data, f, i, n, ok, s; + s = ""; + ok = false; + f = this; + data = f.data; + i = 0; + i = 0; + while (true) { + if (!(i < data.$length)) { break; } + if (((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]) === 10) { + s = ($bytesToString($subslice(data, 0, i))); + ok = true; + i = i + (1) >> 0; + n = data.$length - i >> 0; + $copySlice($subslice(data, 0), $subslice(data, i)); + f.data = $subslice(data, 0, n); + return [s, ok]; + } + i = i + (1) >> 0; + } + if (f.atEOF && f.data.$length > 0) { + s = ($bytesToString(data)); + f.data = $subslice(f.data, 0, 0); + ok = true; + } + return [s, ok]; + }; + file.prototype.getLineFromData = function() { return this.$val.getLineFromData(); }; + file.ptr.prototype.readLine = function() { + var _r$9, _tuple, _tuple$1, _tuple$2, err, f, ln, n, ok, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; f = $f.f; ln = $f.ln; n = $f.n; ok = $f.ok; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = ""; + ok = false; + f = this; + _tuple = f.getLineFromData(); + s = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return [s, ok]; + } + /* */ if (f.data.$length < f.data.$capacity) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.data.$length < f.data.$capacity) { */ case 1: + ln = f.data.$length; + _r$9 = io.ReadFull(f.file, $subslice(f.data, ln, f.data.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$1 = _r$9; + n = _tuple$1[0]; + err = _tuple$1[1]; + if (n >= 0) { + f.data = $subslice(f.data, 0, (ln + n >> 0)); + } + if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) { + f.atEOF = true; + } + /* } */ case 2: + _tuple$2 = f.getLineFromData(); + s = _tuple$2[0]; + ok = _tuple$2[1]; + $s = -1; return [s, ok]; + /* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.readLine }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.f = f; $f.ln = ln; $f.n = n; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + file.prototype.readLine = function() { return this.$val.readLine(); }; + open = function(name) { + var _r$9, _tuple, err, fd, name, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; fd = $f.fd; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$9 = os.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + fd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$22.nil, err]; + } + $s = -1; return [new file.ptr(fd, $makeSlice(sliceType$1, 0, 65536), false), $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: open }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; + }; + countAnyByte = function(s, t) { + var i, n, s, t; + n = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (bytealg.IndexByteString(t, s.charCodeAt(i)) >= 0) { + n = n + (1) >> 0; + } + i = i + (1) >> 0; + } + return n; + }; + splitAtBytes = function(s, t) { + var a, i, last$1, n, s, t; + a = $makeSlice(sliceType, (1 + countAnyByte(s, t) >> 0)); + n = 0; + last$1 = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (bytealg.IndexByteString(t, s.charCodeAt(i)) >= 0) { + if (last$1 < i) { + ((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = $substring(s, last$1, i)); + n = n + (1) >> 0; + } + last$1 = i + 1 >> 0; + } + i = i + (1) >> 0; + } + if (last$1 < s.length) { + ((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = $substring(s, last$1)); + n = n + (1) >> 0; + } + return $subslice(a, 0, n); + }; + dtoi = function(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s; + n = 0; + i = 0; + ok = false; + n = 0; + i = 0; + while (true) { + if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; } + n = ($imul(n, 10)) + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0; + if (n >= 16777215) { + _tmp = 16777215; + _tmp$1 = i; + _tmp$2 = false; + n = _tmp; + i = _tmp$1; + ok = _tmp$2; + return [n, i, ok]; + } + i = i + (1) >> 0; + } + if (i === 0) { + _tmp$3 = 0; + _tmp$4 = 0; + _tmp$5 = false; + n = _tmp$3; + i = _tmp$4; + ok = _tmp$5; + return [n, i, ok]; + } + _tmp$6 = n; + _tmp$7 = i; + _tmp$8 = true; + n = _tmp$6; + i = _tmp$7; + ok = _tmp$8; + return [n, i, ok]; + }; + xtoi = function(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s; + n = 0; + i = 0; + ok = false; + n = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) { + n = $imul(n, (16)); + n = n + ((((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0))) >> 0; + } else if (97 <= s.charCodeAt(i) && s.charCodeAt(i) <= 102) { + n = $imul(n, (16)); + n = n + (((((s.charCodeAt(i) - 97 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0; + } else if (65 <= s.charCodeAt(i) && s.charCodeAt(i) <= 70) { + n = $imul(n, (16)); + n = n + (((((s.charCodeAt(i) - 65 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0; + } else { + break; + } + if (n >= 16777215) { + _tmp = 0; + _tmp$1 = i; + _tmp$2 = false; + n = _tmp; + i = _tmp$1; + ok = _tmp$2; + return [n, i, ok]; + } + i = i + (1) >> 0; + } + if (i === 0) { + _tmp$3 = 0; + _tmp$4 = i; + _tmp$5 = false; + n = _tmp$3; + i = _tmp$4; + ok = _tmp$5; + return [n, i, ok]; + } + _tmp$6 = n; + _tmp$7 = i; + _tmp$8 = true; + n = _tmp$6; + i = _tmp$7; + ok = _tmp$8; + return [n, i, ok]; + }; + xtoi2 = function(s, e) { + var _tuple, e, ei, n, ok, s; + if (s.length > 2 && !((s.charCodeAt(2) === e))) { + return [0, false]; + } + _tuple = xtoi($substring(s, 0, 2)); + n = _tuple[0]; + ei = _tuple[1]; + ok = _tuple[2]; + return [((n << 24 >>> 24)), ok && (ei === 2)]; + }; + uitoa = function(val) { + var _q, buf, i, q, val; + if (val === 0) { + return "0"; + } + buf = arrayType$6.zero(); + i = 19; + while (true) { + if (!(val >= 10)) { break; } + q = (_q = val / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + val >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24))); + i = i - (1) >> 0; + val = q; + } + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + val >>> 0) << 24 >>> 24))); + return ($bytesToString($subslice(new sliceType$1(buf), i))); + }; + appendHex = function(dst, i) { + var dst, i, j, v, y; + if (i === 0) { + return $append(dst, 48); + } + j = 7; + while (true) { + if (!(j >= 0)) { break; } + v = (y = ((($imul(j, 4)) >>> 0)), y < 32 ? (i >>> y) : 0) >>> 0; + if (v > 0) { + dst = $append(dst, "0123456789abcdef".charCodeAt(((v & 15) >>> 0))); + } + j = j - (1) >> 0; + } + return dst; + }; + policyTable.methods = [{prop: "Classify", name: "Classify", pkg: "", typ: $funcType([IP], [policyTableEntry], false)}]; + byMaskLength.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; + ptrType$23.methods = [{prop: "Addrs", name: "Addrs", pkg: "", typ: $funcType([], [sliceType$7, $error], false)}, {prop: "MulticastAddrs", name: "MulticastAddrs", pkg: "", typ: $funcType([], [sliceType$7, $error], false)}]; + Flags.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$48.methods = [{prop: "update", name: "update", pkg: "net", typ: $funcType([sliceType$8, $Bool], [$Bool], false)}, {prop: "name", name: "name", pkg: "net", typ: $funcType([$Int], [$String], false)}, {prop: "index", name: "index", pkg: "net", typ: $funcType([$String], [$Int], false)}]; + IP.methods = [{prop: "IsUnspecified", name: "IsUnspecified", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLoopback", name: "IsLoopback", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsMulticast", name: "IsMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInterfaceLocalMulticast", name: "IsInterfaceLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalMulticast", name: "IsLinkLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalUnicast", name: "IsLinkLocalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsGlobalUnicast", name: "IsGlobalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "To4", name: "To4", pkg: "", typ: $funcType([], [IP], false)}, {prop: "To16", name: "To16", pkg: "", typ: $funcType([], [IP], false)}, {prop: "DefaultMask", name: "DefaultMask", pkg: "", typ: $funcType([], [IPMask], false)}, {prop: "Mask", name: "Mask", pkg: "", typ: $funcType([IPMask], [IP], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([IP], [$Bool], false)}, {prop: "matchAddrFamily", name: "matchAddrFamily", pkg: "net", typ: $funcType([IP], [$Bool], false)}]; + ptrType$49.methods = [{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]; + IPMask.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$5.methods = [{prop: "Contains", name: "Contains", pkg: "", typ: $funcType([IP], [$Bool], false)}, {prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$9.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "opAddr", name: "opAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}]; + HardwareAddr.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$13.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$52.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$32.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$22.methods = [{prop: "close", name: "close", pkg: "net", typ: $funcType([], [], false)}, {prop: "getLineFromData", name: "getLineFromData", pkg: "net", typ: $funcType([], [$String, $Bool], false)}, {prop: "readLine", name: "readLine", pkg: "net", typ: $funcType([], [$String, $Bool], false)}]; + policyTableEntry.init("", [{prop: "Prefix", name: "Prefix", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "Precedence", name: "Precedence", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Label", name: "Label", embedded: false, exported: true, typ: $Uint8, tag: ""}]); + policyTable.init(policyTableEntry); + byMaskLength.init(policyTableEntry); + Interface.init("", [{prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "MTU", name: "MTU", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "HardwareAddr", name: "HardwareAddr", embedded: false, exported: true, typ: HardwareAddr, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: Flags, tag: ""}]); + ipv6ZoneCache.init("net", [{prop: "RWMutex", name: "RWMutex", embedded: true, exported: true, typ: sync.RWMutex, tag: ""}, {prop: "lastFetched", name: "lastFetched", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "toIndex", name: "toIndex", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "toName", name: "toName", embedded: false, exported: false, typ: mapType$2, tag: ""}]); + IP.init($Uint8); + IPMask.init($Uint8); + IPNet.init("", [{prop: "IP", name: "IP", embedded: false, exported: true, typ: IP, tag: ""}, {prop: "Mask", name: "Mask", embedded: false, exported: true, typ: IPMask, tag: ""}]); + IPAddr.init("", [{prop: "IP", name: "IP", embedded: false, exported: true, typ: IP, tag: ""}, {prop: "Zone", name: "Zone", embedded: false, exported: true, typ: $String, tag: ""}]); + HardwareAddr.init($Uint8); + Addr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); + OpError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Net", name: "Net", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Source", name: "Source", embedded: false, exported: true, typ: Addr, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: Addr, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); + temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]); + ParseError.init("", [{prop: "Type", name: "Type", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}]); + AddrError.init("", [{prop: "Err", name: "Err", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: $String, tag: ""}]); + file.init("net", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "atEOF", name: "atEOF", embedded: false, exported: false, typ: $Bool, tag: ""}]); + sockaddr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nettrace.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = poll.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = singleflight.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = dnsmessage.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = rand.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + netGo = false; + errLameReferral = errors.New("lame referral"); + errCannotUnmarshalDNSMessage = errors.New("cannot unmarshal DNS message"); + errCannotMarshalDNSMessage = errors.New("cannot marshal DNS message"); + errServerMisbehaving = errors.New("server misbehaving"); + errInvalidDNSResponse = errors.New("invalid DNS response"); + errNoAnswerFromDNSServer = errors.New("no answer from DNS server"); + errServerTemporarlyMisbehaving = errors.New("server misbehaving"); + testHookLookupIP = (function $b(ctx, fn, network, host) { + var _r, ctx, fn, host, network, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; ctx = $f.ctx; fn = $f.fn; host = $f.host; network = $f.network; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = fn(ctx, network, host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f.ctx = ctx; $f.fn = fn; $f.host = host; $f.network = network; $f.$s = $s; $f.$r = $r; return $f; + }); + errInvalidInterface = errors.New("invalid network interface"); + errInvalidInterfaceIndex = errors.New("invalid network interface index"); + errInvalidInterfaceName = errors.New("invalid network interface name"); + errNoSuchInterface = errors.New("no such network interface"); + errNoSuchMulticastInterface = errors.New("no such multicast network interface"); + flagNames = new sliceType(["up", "broadcast", "loopback", "pointtopoint", "multicast"]); + zoneCache = new ipv6ZoneCache.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), {}, {}); + v4InV6Prefix = new sliceType$1([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255]); + $pkg.IPv4bcast = IPv4(255, 255, 255, 255); + $pkg.IPv4allsys = IPv4(224, 0, 0, 1); + $pkg.IPv4allrouter = IPv4(224, 0, 0, 2); + $pkg.IPv4zero = IPv4(0, 0, 0, 0); + $pkg.IPv6unspecified = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + $pkg.IPv6loopback = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); + classAMask = IPv4Mask(255, 0, 0, 0); + classBMask = IPv4Mask(255, 255, 0, 0); + classCMask = IPv4Mask(255, 255, 255, 0); + errNoSuitableAddress = errors.New("no suitable address found"); + errMissingAddress = errors.New("missing address"); + errCanceled = errors.New("operation was canceled"); + $pkg.ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection"); + aLongTimeAgo = $clone(time.Unix(new $Int64(0, 1), new $Int64(0, 0)), time.Time); + errNoSuchHost = errors.New("no such host"); + _r = mustCIDR("::1/128"); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = mustCIDR("::/0"); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = mustCIDR("::ffff:0:0/96"); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = mustCIDR("2002::/16"); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = mustCIDR("2001::/32"); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = mustCIDR("fc00::/7"); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = mustCIDR("::/96"); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = mustCIDR("fec0::/10"); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = mustCIDR("3ffe::/16"); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + rfc6724policyTable = new policyTable([new policyTableEntry.ptr(_r, 50, 0), new policyTableEntry.ptr(_r$1, 40, 1), new policyTableEntry.ptr(_r$2, 35, 4), new policyTableEntry.ptr(_r$3, 30, 2), new policyTableEntry.ptr(_r$4, 5, 5), new policyTableEntry.ptr(_r$5, 3, 13), new policyTableEntry.ptr(_r$6, 1, 3), new policyTableEntry.ptr(_r$7, 1, 11), new policyTableEntry.ptr(_r$8, 1, 12)]); + $r = init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + init$1(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["net/url"] = (function() { + var $pkg = {}, $init, errors, fmt, sort, strconv, strings, Error, timeout, temporary, EscapeError, InvalidHostError, URL, Userinfo, Values, sliceType, arrayType, ptrType, ptrType$1, sliceType$1, ptrType$2, sliceType$2, ptrType$3, ishex, unhex, shouldEscape, QueryUnescape, unescape, QueryEscape, escape, User, UserPassword, getscheme, split, Parse, parse, parseAuthority, parseHost, validEncodedPath, validOptionalPort, ParseQuery, parseQuery, resolvePath, splitHostPort, validUserinfo, stringContainsCTLByte; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + Error = $pkg.Error = $newType(0, $kindStruct, "url.Error", true, "net/url", true, function(Op_, URL_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.URL = ""; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.URL = URL_; + this.Err = Err_; + }); + timeout = $pkg.timeout = $newType(8, $kindInterface, "url.timeout", true, "net/url", false, null); + temporary = $pkg.temporary = $newType(8, $kindInterface, "url.temporary", true, "net/url", false, null); + EscapeError = $pkg.EscapeError = $newType(8, $kindString, "url.EscapeError", true, "net/url", true, null); + InvalidHostError = $pkg.InvalidHostError = $newType(8, $kindString, "url.InvalidHostError", true, "net/url", true, null); + URL = $pkg.URL = $newType(0, $kindStruct, "url.URL", true, "net/url", true, function(Scheme_, Opaque_, User_, Host_, Path_, RawPath_, ForceQuery_, RawQuery_, Fragment_) { + this.$val = this; + if (arguments.length === 0) { + this.Scheme = ""; + this.Opaque = ""; + this.User = ptrType.nil; + this.Host = ""; + this.Path = ""; + this.RawPath = ""; + this.ForceQuery = false; + this.RawQuery = ""; + this.Fragment = ""; + return; + } + this.Scheme = Scheme_; + this.Opaque = Opaque_; + this.User = User_; + this.Host = Host_; + this.Path = Path_; + this.RawPath = RawPath_; + this.ForceQuery = ForceQuery_; + this.RawQuery = RawQuery_; + this.Fragment = Fragment_; + }); + Userinfo = $pkg.Userinfo = $newType(0, $kindStruct, "url.Userinfo", true, "net/url", true, function(username_, password_, passwordSet_) { + this.$val = this; + if (arguments.length === 0) { + this.username = ""; + this.password = ""; + this.passwordSet = false; + return; + } + this.username = username_; + this.password = password_; + this.passwordSet = passwordSet_; + }); + Values = $pkg.Values = $newType(4, $kindMap, "url.Values", true, "net/url", true, null); + sliceType = $sliceType($Uint8); + arrayType = $arrayType($Uint8, 64); + ptrType = $ptrType(Userinfo); + ptrType$1 = $ptrType(URL); + sliceType$1 = $sliceType($emptyInterface); + ptrType$2 = $ptrType(strings.Builder); + sliceType$2 = $sliceType($String); + ptrType$3 = $ptrType(Error); + Error.ptr.prototype.Error = function() { + var _r, e, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return e.Op + " " + e.URL + ": " + _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; + }; + Error.prototype.Error = function() { return this.$val.Error(); }; + Error.ptr.prototype.Timeout = function() { + var _r, _tuple, _v, e, ok, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, timeout, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $s = -1; return _v; + /* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Error.prototype.Timeout = function() { return this.$val.Timeout(); }; + Error.ptr.prototype.Temporary = function() { + var _r, _tuple, _v, e, ok, t, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, temporary, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Temporary(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $s = -1; return _v; + /* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Temporary }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; + }; + Error.prototype.Temporary = function() { return this.$val.Temporary(); }; + ishex = function(c) { + var c; + if (48 <= c && c <= 57) { + return true; + } else if (97 <= c && c <= 102) { + return true; + } else if (65 <= c && c <= 70) { + return true; + } + return false; + }; + unhex = function(c) { + var c; + if (48 <= c && c <= 57) { + return c - 48 << 24 >>> 24; + } else if (97 <= c && c <= 102) { + return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24; + } else if (65 <= c && c <= 70) { + return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24; + } + return 0; + }; + EscapeError.prototype.Error = function() { + var e; + e = this.$val; + return "invalid URL escape " + strconv.Quote((e)); + }; + $ptrType(EscapeError).prototype.Error = function() { return new EscapeError(this.$get()).Error(); }; + InvalidHostError.prototype.Error = function() { + var e; + e = this.$val; + return "invalid character " + strconv.Quote((e)) + " in host name"; + }; + $ptrType(InvalidHostError).prototype.Error = function() { return new InvalidHostError(this.$get()).Error(); }; + shouldEscape = function(c, mode) { + var _1, _2, _3, _4, c, mode; + if (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57) { + return false; + } + if ((mode === 3) || (mode === 4)) { + _1 = c; + if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (91)) || (_1 === (93)) || (_1 === (60)) || (_1 === (62)) || (_1 === (34))) { + return false; + } + } + _2 = c; + if ((_2 === (45)) || (_2 === (95)) || (_2 === (46)) || (_2 === (126))) { + return false; + } else if ((_2 === (36)) || (_2 === (38)) || (_2 === (43)) || (_2 === (44)) || (_2 === (47)) || (_2 === (58)) || (_2 === (59)) || (_2 === (61)) || (_2 === (63)) || (_2 === (64))) { + _3 = mode; + if (_3 === (1)) { + return c === 63; + } else if (_3 === (2)) { + return (c === 47) || (c === 59) || (c === 44) || (c === 63); + } else if (_3 === (5)) { + return (c === 64) || (c === 47) || (c === 63) || (c === 58); + } else if (_3 === (6)) { + return true; + } else if (_3 === (7)) { + return false; + } + } + if (mode === 7) { + _4 = c; + if ((_4 === (33)) || (_4 === (40)) || (_4 === (41)) || (_4 === (42))) { + return false; + } + } + return true; + }; + QueryUnescape = function(s) { + var s; + return unescape(s, 6); + }; + $pkg.QueryUnescape = QueryUnescape; + unescape = function(s, mode) { + var _1, _2, hasPlus, i, i$1, j, mode, n, s, t, v; + n = 0; + hasPlus = false; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if (_1 === (37)) { + n = n + (1) >> 0; + if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { + s = $substring(s, i); + if (s.length > 3) { + s = $substring(s, 0, 3); + } + return ["", new EscapeError((s))]; + } + if ((mode === 3) && unhex(s.charCodeAt((i + 1 >> 0))) < 8 && !($substring(s, i, (i + 3 >> 0)) === "%25")) { + return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))]; + } + if (mode === 4) { + v = ((unhex(s.charCodeAt((i + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i + 2 >> 0)))) >>> 0; + if (!($substring(s, i, (i + 3 >> 0)) === "%25") && !((v === 32)) && shouldEscape(v, 3)) { + return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))]; + } + } + i = i + (3) >> 0; + } else if (_1 === (43)) { + hasPlus = mode === 6; + i = i + (1) >> 0; + } else { + if (((mode === 3) || (mode === 4)) && s.charCodeAt(i) < 128 && shouldEscape(s.charCodeAt(i), mode)) { + return ["", new InvalidHostError(($substring(s, i, (i + 1 >> 0))))]; + } + i = i + (1) >> 0; + } + } + if ((n === 0) && !hasPlus) { + return [s, $ifaceNil]; + } + t = $makeSlice(sliceType, (s.length - ($imul(2, n)) >> 0)); + j = 0; + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + _2 = s.charCodeAt(i$1); + if (_2 === (37)) { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = (((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0)); + j = j + (1) >> 0; + i$1 = i$1 + (3) >> 0; + } else if (_2 === (43)) { + if (mode === 6) { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 32); + } else { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43); + } + j = j + (1) >> 0; + i$1 = i$1 + (1) >> 0; + } else { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1)); + j = j + (1) >> 0; + i$1 = i$1 + (1) >> 0; + } + } + return [($bytesToString(t)), $ifaceNil]; + }; + QueryEscape = function(s) { + var s; + return escape(s, 6); + }; + $pkg.QueryEscape = QueryEscape; + escape = function(s, mode) { + var _tmp, _tmp$1, buf, c, c$1, hexCount, i, i$1, i$2, j, mode, required, s, spaceCount, t, x, x$1; + _tmp = 0; + _tmp$1 = 0; + spaceCount = _tmp; + hexCount = _tmp$1; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (shouldEscape(c, mode)) { + if ((c === 32) && (mode === 6)) { + spaceCount = spaceCount + (1) >> 0; + } else { + hexCount = hexCount + (1) >> 0; + } + } + i = i + (1) >> 0; + } + if ((spaceCount === 0) && (hexCount === 0)) { + return s; + } + buf = arrayType.zero(); + t = sliceType.nil; + required = s.length + ($imul(2, hexCount)) >> 0; + if (required <= 64) { + t = $subslice(new sliceType(buf), 0, required); + } else { + t = $makeSlice(sliceType, required); + } + if (hexCount === 0) { + $copyString(t, s); + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + if (s.charCodeAt(i$1) === 32) { + ((i$1 < 0 || i$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i$1] = 43); + } + i$1 = i$1 + (1) >> 0; + } + return ($bytesToString(t)); + } + j = 0; + i$2 = 0; + while (true) { + if (!(i$2 < s.length)) { break; } + c$1 = s.charCodeAt(i$2); + if ((c$1 === 32) && (mode === 6)) { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43); + j = j + (1) >> 0; + } else if (shouldEscape(c$1, mode)) { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 37); + (x = j + 1 >> 0, ((x < 0 || x >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x] = "0123456789ABCDEF".charCodeAt((c$1 >>> 4 << 24 >>> 24)))); + (x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$1] = "0123456789ABCDEF".charCodeAt(((c$1 & 15) >>> 0)))); + j = j + (3) >> 0; + } else { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$2)); + j = j + (1) >> 0; + } + i$2 = i$2 + (1) >> 0; + } + return ($bytesToString(t)); + }; + User = function(username) { + var username; + return new Userinfo.ptr(username, "", false); + }; + $pkg.User = User; + UserPassword = function(username, password) { + var password, username; + return new Userinfo.ptr(username, password, true); + }; + $pkg.UserPassword = UserPassword; + Userinfo.ptr.prototype.Username = function() { + var u; + u = this; + if (u === ptrType.nil) { + return ""; + } + return u.username; + }; + Userinfo.prototype.Username = function() { return this.$val.Username(); }; + Userinfo.ptr.prototype.Password = function() { + var u; + u = this; + if (u === ptrType.nil) { + return ["", false]; + } + return [u.password, u.passwordSet]; + }; + Userinfo.prototype.Password = function() { return this.$val.Password(); }; + Userinfo.ptr.prototype.String = function() { + var s, u; + u = this; + if (u === ptrType.nil) { + return ""; + } + s = escape(u.username, 5); + if (u.passwordSet) { + s = s + (":" + escape(u.password, 5)); + } + return s; + }; + Userinfo.prototype.String = function() { return this.$val.String(); }; + getscheme = function(rawurl) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, err, i, path, rawurl, scheme; + scheme = ""; + path = ""; + err = $ifaceNil; + i = 0; + while (true) { + if (!(i < rawurl.length)) { break; } + c = rawurl.charCodeAt(i); + if (97 <= c && c <= 122 || 65 <= c && c <= 90) { + } else if (48 <= c && c <= 57 || (c === 43) || (c === 45) || (c === 46)) { + if (i === 0) { + _tmp = ""; + _tmp$1 = rawurl; + _tmp$2 = $ifaceNil; + scheme = _tmp; + path = _tmp$1; + err = _tmp$2; + return [scheme, path, err]; + } + } else if ((c === 58)) { + if (i === 0) { + _tmp$3 = ""; + _tmp$4 = ""; + _tmp$5 = errors.New("missing protocol scheme"); + scheme = _tmp$3; + path = _tmp$4; + err = _tmp$5; + return [scheme, path, err]; + } + _tmp$6 = $substring(rawurl, 0, i); + _tmp$7 = $substring(rawurl, (i + 1 >> 0)); + _tmp$8 = $ifaceNil; + scheme = _tmp$6; + path = _tmp$7; + err = _tmp$8; + return [scheme, path, err]; + } else { + _tmp$9 = ""; + _tmp$10 = rawurl; + _tmp$11 = $ifaceNil; + scheme = _tmp$9; + path = _tmp$10; + err = _tmp$11; + return [scheme, path, err]; + } + i = i + (1) >> 0; + } + _tmp$12 = ""; + _tmp$13 = rawurl; + _tmp$14 = $ifaceNil; + scheme = _tmp$12; + path = _tmp$13; + err = _tmp$14; + return [scheme, path, err]; + }; + split = function(s, c, cutc) { + var c, cutc, i, s; + i = strings.Index(s, c); + if (i < 0) { + return [s, ""]; + } + if (cutc) { + return [$substring(s, 0, i), $substring(s, (i + c.length >> 0))]; + } + return [$substring(s, 0, i), $substring(s, i)]; + }; + Parse = function(rawurl) { + var _r, _tuple, _tuple$1, _tuple$2, err, frag, rawurl, u, url, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; frag = $f.frag; rawurl = $f.rawurl; u = $f.u; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _tuple = split(rawurl, "#", true); + u = _tuple[0]; + frag = _tuple[1]; + _r = parse(u, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + url = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, new Error.ptr("parse", u, err)]; + } + if (frag === "") { + $s = -1; return [url, $ifaceNil]; + } + _tuple$2 = unescape(frag, 7); + url.Fragment = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, new Error.ptr("parse", rawurl, err)]; + } + $s = -1; return [url, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.frag = frag; $f.rawurl = rawurl; $f.u = u; $f.url = url; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Parse = Parse; + parse = function(rawurl, viaRequest) { + var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, colon, err, err$1, rawurl, rest, slash, url, viaRequest, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; authority = $f.authority; colon = $f.colon; err = $f.err; err$1 = $f.err$1; rawurl = $f.rawurl; rest = $f.rest; slash = $f.slash; url = $f.url; viaRequest = $f.viaRequest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + rest = ""; + err = $ifaceNil; + if (stringContainsCTLByte(rawurl)) { + $s = -1; return [ptrType$1.nil, errors.New("net/url: invalid control character in URL")]; + } + if (rawurl === "" && viaRequest) { + $s = -1; return [ptrType$1.nil, errors.New("empty url")]; + } + url = new URL.ptr("", "", ptrType.nil, "", "", "", false, "", ""); + if (rawurl === "*") { + url.Path = "*"; + $s = -1; return [url, $ifaceNil]; + } + _tuple = getscheme(rawurl); + url.Scheme = _tuple[0]; + rest = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err]; + } + _r = strings.ToLower(url.Scheme); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + url.Scheme = _r; + if (strings.HasSuffix(rest, "?") && (strings.Count(rest, "?") === 1)) { + url.ForceQuery = true; + rest = $substring(rest, 0, (rest.length - 1 >> 0)); + } else { + _tuple$1 = split(rest, "?", true); + rest = _tuple$1[0]; + url.RawQuery = _tuple$1[1]; + } + if (!strings.HasPrefix(rest, "/")) { + if (!(url.Scheme === "")) { + url.Opaque = rest; + $s = -1; return [url, $ifaceNil]; + } + if (viaRequest) { + $s = -1; return [ptrType$1.nil, errors.New("invalid URI for request")]; + } + colon = strings.Index(rest, ":"); + slash = strings.Index(rest, "/"); + if (colon >= 0 && (slash < 0 || colon < slash)) { + $s = -1; return [ptrType$1.nil, errors.New("first path segment in URL cannot contain colon")]; + } + } + /* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 2: + authority = ""; + _tuple$2 = split($substring(rest, 2), "/", false); + authority = _tuple$2[0]; + rest = _tuple$2[1]; + _r$1 = parseAuthority(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$3 = _r$1; + url.User = _tuple$3[0]; + url.Host = _tuple$3[1]; + err = _tuple$3[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err]; + } + /* } */ case 3: + err$1 = url.setPath(rest); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + $s = -1; return [url, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.authority = authority; $f.colon = colon; $f.err = err; $f.err$1 = err$1; $f.rawurl = rawurl; $f.rest = rest; $f.slash = slash; $f.url = url; $f.viaRequest = viaRequest; $f.$s = $s; $f.$r = $r; return $f; + }; + parseAuthority = function(authority) { + var _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, authority, err, host, i, password, user, userinfo, username, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; authority = $f.authority; err = $f.err; host = $f.host; i = $f.i; password = $f.password; user = $f.user; userinfo = $f.userinfo; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + user = ptrType.nil; + host = ""; + err = $ifaceNil; + i = strings.LastIndex(authority, "@"); + /* */ if (i < 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (i < 0) { */ case 1: + _r = parseHost(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + host = _tuple[0]; + err = _tuple[1]; + $s = 3; continue; + /* } else { */ case 2: + _r$1 = parseHost($substring(authority, (i + 1 >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + host = _tuple$1[0]; + err = _tuple$1[1]; + /* } */ case 3: + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = ptrType.nil; + _tmp$1 = ""; + _tmp$2 = err; + user = _tmp; + host = _tmp$1; + err = _tmp$2; + $s = -1; return [user, host, err]; + } + if (i < 0) { + _tmp$3 = ptrType.nil; + _tmp$4 = host; + _tmp$5 = $ifaceNil; + user = _tmp$3; + host = _tmp$4; + err = _tmp$5; + $s = -1; return [user, host, err]; + } + userinfo = $substring(authority, 0, i); + if (!validUserinfo(userinfo)) { + _tmp$6 = ptrType.nil; + _tmp$7 = ""; + _tmp$8 = errors.New("net/url: invalid userinfo"); + user = _tmp$6; + host = _tmp$7; + err = _tmp$8; + $s = -1; return [user, host, err]; + } + if (!strings.Contains(userinfo, ":")) { + _tuple$2 = unescape(userinfo, 5); + userinfo = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$9 = ptrType.nil; + _tmp$10 = ""; + _tmp$11 = err; + user = _tmp$9; + host = _tmp$10; + err = _tmp$11; + $s = -1; return [user, host, err]; + } + user = User(userinfo); + } else { + _tuple$3 = split(userinfo, ":", true); + username = _tuple$3[0]; + password = _tuple$3[1]; + _tuple$4 = unescape(username, 5); + username = _tuple$4[0]; + err = _tuple$4[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$12 = ptrType.nil; + _tmp$13 = ""; + _tmp$14 = err; + user = _tmp$12; + host = _tmp$13; + err = _tmp$14; + $s = -1; return [user, host, err]; + } + _tuple$5 = unescape(password, 5); + password = _tuple$5[0]; + err = _tuple$5[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$15 = ptrType.nil; + _tmp$16 = ""; + _tmp$17 = err; + user = _tmp$15; + host = _tmp$16; + err = _tmp$17; + $s = -1; return [user, host, err]; + } + user = UserPassword(username, password); + } + _tmp$18 = user; + _tmp$19 = host; + _tmp$20 = $ifaceNil; + user = _tmp$18; + host = _tmp$19; + err = _tmp$20; + $s = -1; return [user, host, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parseAuthority }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.authority = authority; $f.err = err; $f.host = host; $f.i = i; $f.password = password; $f.user = user; $f.userinfo = userinfo; $f.username = username; $f.$s = $s; $f.$r = $r; return $f; + }; + parseHost = function(host) { + var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, colonPort, colonPort$1, err, err$1, host, host1, host2, host3, i, i$1, zone, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; colonPort = $f.colonPort; colonPort$1 = $f.colonPort$1; err = $f.err; err$1 = $f.err$1; host = $f.host; host1 = $f.host1; host2 = $f.host2; host3 = $f.host3; i = $f.i; i$1 = $f.i$1; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ if (strings.HasPrefix(host, "[")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (strings.HasPrefix(host, "[")) { */ case 1: + i = strings.LastIndex(host, "]"); + if (i < 0) { + $s = -1; return ["", errors.New("missing ']' in host")]; + } + colonPort = $substring(host, (i + 1 >> 0)); + /* */ if (!validOptionalPort(colonPort)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!validOptionalPort(colonPort)) { */ case 4: + _r = fmt.Errorf("invalid port %q after host", new sliceType$1([new $String(colonPort)])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return ["", _r]; + /* } */ case 5: + zone = strings.Index($substring(host, 0, i), "%25"); + if (zone >= 0) { + _tuple = unescape($substring(host, 0, zone), 3); + host1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + _tuple$1 = unescape($substring(host, zone, i), 4); + host2 = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + _tuple$2 = unescape($substring(host, i), 3); + host3 = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + $s = -1; return [host1 + host2 + host3, $ifaceNil]; + } + $s = 3; continue; + /* } else { */ case 2: + i$1 = strings.LastIndex(host, ":"); + /* */ if (!((i$1 === -1))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((i$1 === -1))) { */ case 7: + colonPort$1 = $substring(host, i$1); + /* */ if (!validOptionalPort(colonPort$1)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!validOptionalPort(colonPort$1)) { */ case 9: + _r$1 = fmt.Errorf("invalid port %q after host", new sliceType$1([new $String(colonPort$1)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return ["", _r$1]; + /* } */ case 10: + /* } */ case 8: + /* } */ case 3: + err$1 = $ifaceNil; + _tuple$3 = unescape(host, 3); + host = _tuple$3[0]; + err$1 = _tuple$3[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return ["", err$1]; + } + $s = -1; return [host, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: parseHost }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.colonPort = colonPort; $f.colonPort$1 = colonPort$1; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.host1 = host1; $f.host2 = host2; $f.host3 = host3; $f.i = i; $f.i$1 = i$1; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f; + }; + URL.ptr.prototype.setPath = function(p) { + var _tuple, err, escp, p, path, u; + u = this; + _tuple = unescape(p, 1); + path = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + u.Path = path; + escp = escape(path, 1); + if (p === escp) { + u.RawPath = ""; + } else { + u.RawPath = p; + } + return $ifaceNil; + }; + URL.prototype.setPath = function(p) { return this.$val.setPath(p); }; + URL.ptr.prototype.EscapedPath = function() { + var _tuple, err, p, u; + u = this; + if (!(u.RawPath === "") && validEncodedPath(u.RawPath)) { + _tuple = unescape(u.RawPath, 1); + p = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && p === u.Path) { + return u.RawPath; + } + } + if (u.Path === "*") { + return "*"; + } + return escape(u.Path, 1); + }; + URL.prototype.EscapedPath = function() { return this.$val.EscapedPath(); }; + validEncodedPath = function(s) { + var _1, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (64))) { + } else if ((_1 === (91)) || (_1 === (93))) { + } else if (_1 === (37)) { + } else if (shouldEscape(s.charCodeAt(i), 1)) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + validOptionalPort = function(port) { + var _i, _ref, _rune, b, port; + if (port === "") { + return true; + } + if (!((port.charCodeAt(0) === 58))) { + return false; + } + _ref = $substring(port, 1); + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + b = _rune[0]; + if (b < 48 || b > 57) { + return false; + } + _i += _rune[1]; + } + return true; + }; + URL.ptr.prototype.String = function() { + var buf, h, i, path, u, ui; + u = this; + buf = new strings.Builder.ptr(ptrType$2.nil, sliceType.nil); + if (!(u.Scheme === "")) { + buf.WriteString(u.Scheme); + buf.WriteByte(58); + } + if (!(u.Opaque === "")) { + buf.WriteString(u.Opaque); + } else { + if (!(u.Scheme === "") || !(u.Host === "") || !(u.User === ptrType.nil)) { + if (!(u.Host === "") || !(u.Path === "") || !(u.User === ptrType.nil)) { + buf.WriteString("//"); + } + ui = u.User; + if (!(ui === ptrType.nil)) { + buf.WriteString(ui.String()); + buf.WriteByte(64); + } + h = u.Host; + if (!(h === "")) { + buf.WriteString(escape(h, 3)); + } + } + path = u.EscapedPath(); + if (!(path === "") && !((path.charCodeAt(0) === 47)) && !(u.Host === "")) { + buf.WriteByte(47); + } + if (buf.Len() === 0) { + i = strings.IndexByte(path, 58); + if (i > -1 && (strings.IndexByte($substring(path, 0, i), 47) === -1)) { + buf.WriteString("./"); + } + } + buf.WriteString(path); + } + if (u.ForceQuery || !(u.RawQuery === "")) { + buf.WriteByte(63); + buf.WriteString(u.RawQuery); + } + if (!(u.Fragment === "")) { + buf.WriteByte(35); + buf.WriteString(escape(u.Fragment, 7)); + } + return buf.String(); + }; + URL.prototype.String = function() { return this.$val.String(); }; + Values.prototype.Get = function(key) { + var _entry, key, v, vs; + v = this.$val; + if (v === false) { + return ""; + } + vs = (_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil); + if (vs.$length === 0) { + return ""; + } + return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]); + }; + $ptrType(Values).prototype.Get = function(key) { return new Values(this.$get()).Get(key); }; + Values.prototype.Set = function(key, value) { + var _key, key, v, value; + v = this.$val; + _key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$2([value]) }; + }; + $ptrType(Values).prototype.Set = function(key, value) { return new Values(this.$get()).Set(key, value); }; + Values.prototype.Add = function(key, value) { + var _entry, _key, key, v, value; + v = this.$val; + _key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil), value) }; + }; + $ptrType(Values).prototype.Add = function(key, value) { return new Values(this.$get()).Add(key, value); }; + Values.prototype.Del = function(key) { + var key, v; + v = this.$val; + delete v[$String.keyFor(key)]; + }; + $ptrType(Values).prototype.Del = function(key) { return new Values(this.$get()).Del(key); }; + ParseQuery = function(query) { + var err, m, query; + m = {}; + err = parseQuery(m, query); + return [m, err]; + }; + $pkg.ParseQuery = ParseQuery; + parseQuery = function(m, query) { + var _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err1, i, i$1, key, m, query, value; + err = $ifaceNil; + while (true) { + if (!(!(query === ""))) { break; } + key = query; + i = strings.IndexAny(key, "&;"); + if (i >= 0) { + _tmp = $substring(key, 0, i); + _tmp$1 = $substring(key, (i + 1 >> 0)); + key = _tmp; + query = _tmp$1; + } else { + query = ""; + } + if (key === "") { + continue; + } + value = ""; + i$1 = strings.Index(key, "="); + if (i$1 >= 0) { + _tmp$2 = $substring(key, 0, i$1); + _tmp$3 = $substring(key, (i$1 + 1 >> 0)); + key = _tmp$2; + value = _tmp$3; + } + _tuple = QueryUnescape(key); + key = _tuple[0]; + err1 = _tuple[1]; + if (!($interfaceIsEqual(err1, $ifaceNil))) { + if ($interfaceIsEqual(err, $ifaceNil)) { + err = err1; + } + continue; + } + _tuple$1 = QueryUnescape(value); + value = _tuple$1[0]; + err1 = _tuple$1[1]; + if (!($interfaceIsEqual(err1, $ifaceNil))) { + if ($interfaceIsEqual(err, $ifaceNil)) { + err = err1; + } + continue; + } + _key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = m[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil), value) }; + } + err = err; + return err; + }; + Values.prototype.Encode = function() { + var _entry, _entry$1, _i, _i$1, _i$2, _keys, _ref, _ref$1, _ref$2, buf, k, k$1, keyEscaped, keys, v, v$1, vs, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; buf = $f.buf; k = $f.k; k$1 = $f.k$1; keyEscaped = $f.keyEscaped; keys = $f.keys; v = $f.v; v$1 = $f.v$1; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + v = this.$val; + if (v === false) { + $s = -1; return ""; + } + buf = new strings.Builder.ptr(ptrType$2.nil, sliceType.nil); + keys = $makeSlice(sliceType$2, 0, $keys(v).length); + _ref = v; + _i = 0; + _keys = $keys(_ref); + while (true) { + if (!(_i < _keys.length)) { break; } + _entry = _ref[_keys[_i]]; + if (_entry === undefined) { + _i++; + continue; + } + k = _entry.k; + keys = $append(keys, k); + _i++; + } + $r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = keys; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + vs = (_entry$1 = v[$String.keyFor(k$1)], _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil); + keyEscaped = QueryEscape(k$1); + _ref$2 = vs; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (buf.Len() > 0) { + buf.WriteByte(38); + } + buf.WriteString(keyEscaped); + buf.WriteByte(61); + buf.WriteString(QueryEscape(v$1)); + _i$2++; + } + _i$1++; + } + $s = -1; return buf.String(); + /* */ } return; } if ($f === undefined) { $f = { $blk: Values.prototype.Encode }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.buf = buf; $f.k = k; $f.k$1 = k$1; $f.keyEscaped = keyEscaped; $f.keys = keys; $f.v = v; $f.v$1 = v$1; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(Values).prototype.Encode = function() { return new Values(this.$get()).Encode(); }; + resolvePath = function(base, ref) { + var _1, _i, _ref, base, dst, elem, full, i, last, ref, src, x; + full = ""; + if (ref === "") { + full = base; + } else if (!((ref.charCodeAt(0) === 47))) { + i = strings.LastIndex(base, "/"); + full = $substring(base, 0, (i + 1 >> 0)) + ref; + } else { + full = ref; + } + if (full === "") { + return ""; + } + dst = sliceType$2.nil; + src = strings.Split(full, "/"); + _ref = src; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + elem = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _1 = elem; + if (_1 === (".")) { + } else if (_1 === ("..")) { + if (dst.$length > 0) { + dst = $subslice(dst, 0, (dst.$length - 1 >> 0)); + } + } else { + dst = $append(dst, elem); + } + _i++; + } + last = (x = src.$length - 1 >> 0, ((x < 0 || x >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x])); + if (last === "." || last === "..") { + dst = $append(dst, ""); + } + return "/" + strings.TrimPrefix(strings.Join(dst, "/"), "/"); + }; + URL.ptr.prototype.IsAbs = function() { + var u; + u = this; + return !(u.Scheme === ""); + }; + URL.prototype.IsAbs = function() { return this.$val.IsAbs(); }; + URL.ptr.prototype.Parse = function(ref) { + var _r, _tuple, err, ref, refurl, u, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; ref = $f.ref; refurl = $f.refurl; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + u = this; + _r = Parse(ref); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + refurl = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err]; + } + $s = -1; return [u.ResolveReference(refurl), $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.Parse }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ref = ref; $f.refurl = refurl; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; + }; + URL.prototype.Parse = function(ref) { return this.$val.Parse(ref); }; + URL.ptr.prototype.ResolveReference = function(ref) { + var ref, u, url; + u = this; + url = $clone(ref, URL); + if (ref.Scheme === "") { + url.Scheme = u.Scheme; + } + if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType.nil)) { + url.setPath(resolvePath(ref.EscapedPath(), "")); + return url; + } + if (!(ref.Opaque === "")) { + url.User = ptrType.nil; + url.Host = ""; + url.Path = ""; + return url; + } + if (ref.Path === "" && ref.RawQuery === "") { + url.RawQuery = u.RawQuery; + if (ref.Fragment === "") { + url.Fragment = u.Fragment; + } + } + url.Host = u.Host; + url.User = u.User; + url.setPath(resolvePath(u.EscapedPath(), ref.EscapedPath())); + return url; + }; + URL.prototype.ResolveReference = function(ref) { return this.$val.ResolveReference(ref); }; + URL.ptr.prototype.Query = function() { + var _tuple, u, v; + u = this; + _tuple = ParseQuery(u.RawQuery); + v = _tuple[0]; + return v; + }; + URL.prototype.Query = function() { return this.$val.Query(); }; + URL.ptr.prototype.RequestURI = function() { + var result, u; + u = this; + result = u.Opaque; + if (result === "") { + result = u.EscapedPath(); + if (result === "") { + result = "/"; + } + } else { + if (strings.HasPrefix(result, "//")) { + result = u.Scheme + ":" + result; + } + } + if (u.ForceQuery || !(u.RawQuery === "")) { + result = result + ("?" + u.RawQuery); + } + return result; + }; + URL.prototype.RequestURI = function() { return this.$val.RequestURI(); }; + URL.ptr.prototype.Hostname = function() { + var _tuple, host, u; + u = this; + _tuple = splitHostPort(u.Host); + host = _tuple[0]; + return host; + }; + URL.prototype.Hostname = function() { return this.$val.Hostname(); }; + URL.ptr.prototype.Port = function() { + var _tuple, port, u; + u = this; + _tuple = splitHostPort(u.Host); + port = _tuple[1]; + return port; + }; + URL.prototype.Port = function() { return this.$val.Port(); }; + splitHostPort = function(hostport) { + var _tmp, _tmp$1, colon, host, hostport, port; + host = ""; + port = ""; + host = hostport; + colon = strings.LastIndexByte(host, 58); + if (!((colon === -1)) && validOptionalPort($substring(host, colon))) { + _tmp = $substring(host, 0, colon); + _tmp$1 = $substring(host, (colon + 1 >> 0)); + host = _tmp; + port = _tmp$1; + } + if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]")) { + host = $substring(host, 1, (host.length - 1 >> 0)); + } + return [host, port]; + }; + URL.ptr.prototype.MarshalBinary = function() { + var _tmp, _tmp$1, err, text, u; + text = sliceType.nil; + err = $ifaceNil; + u = this; + _tmp = (new sliceType($stringToBytes(u.String()))); + _tmp$1 = $ifaceNil; + text = _tmp; + err = _tmp$1; + return [text, err]; + }; + URL.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); }; + URL.ptr.prototype.UnmarshalBinary = function(text) { + var _r, _tuple, err, text, u, u1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; text = $f.text; u = $f.u; u1 = $f.u1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + u = this; + _r = Parse(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + u1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + URL.copy(u, u1); + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.UnmarshalBinary }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.text = text; $f.u = u; $f.u1 = u1; $f.$s = $s; $f.$r = $r; return $f; + }; + URL.prototype.UnmarshalBinary = function(text) { return this.$val.UnmarshalBinary(text); }; + validUserinfo = function(s) { + var _1, _i, _ref, _rune, r, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + if (65 <= r && r <= 90) { + _i += _rune[1]; + continue; + } + if (97 <= r && r <= 122) { + _i += _rune[1]; + continue; + } + if (48 <= r && r <= 57) { + _i += _rune[1]; + continue; + } + _1 = r; + if ((_1 === (45)) || (_1 === (46)) || (_1 === (95)) || (_1 === (58)) || (_1 === (126)) || (_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (37)) || (_1 === (64))) { + _i += _rune[1]; + continue; + } else { + return false; + } + _i += _rune[1]; + } + return true; + }; + stringContainsCTLByte = function(s) { + var b, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + b = s.charCodeAt(i); + if (b < 32 || (b === 127)) { + return true; + } + i = i + (1) >> 0; + } + return false; + }; + ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + InvalidHostError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "setPath", name: "setPath", pkg: "net/url", typ: $funcType([$String], [$error], false)}, {prop: "EscapedPath", name: "EscapedPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String], [ptrType$1, $error], false)}, {prop: "ResolveReference", name: "ResolveReference", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Query", name: "Query", pkg: "", typ: $funcType([], [Values], false)}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Hostname", name: "Hostname", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Port", name: "Port", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType], [$error], false)}]; + ptrType.methods = [{prop: "Username", name: "Username", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Password", name: "Password", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Values.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([], [$String], false)}]; + Error.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); + temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]); + URL.init("", [{prop: "Scheme", name: "Scheme", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "User", name: "User", embedded: false, exported: true, typ: ptrType, tag: ""}, {prop: "Host", name: "Host", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "RawPath", name: "RawPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ForceQuery", name: "ForceQuery", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "RawQuery", name: "RawQuery", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", embedded: false, exported: true, typ: $String, tag: ""}]); + Userinfo.init("net/url", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "password", name: "password", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Values.init($String, sliceType$2); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket"] = (function() { + var $pkg = {}, $init, bytes, fmt, js, websocketjs, io, net, url, time, addr, closeError, deadlineErr, conn, messageEvent, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, chanType, errDeadlineReached, beginHandlerOpen, beginHandlerClose, Dial, getFrameData; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + websocketjs = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs"]; + io = $packages["io"]; + net = $packages["net"]; + url = $packages["net/url"]; + time = $packages["time"]; + addr = $pkg.addr = $newType(0, $kindStruct, "websocket.addr", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(URL_) { + this.$val = this; + if (arguments.length === 0) { + this.URL = ptrType$4.nil; + return; + } + this.URL = URL_; + }); + closeError = $pkg.closeError = $newType(0, $kindStruct, "websocket.closeError", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(Object_, Code_, Reason_, WasClean_) { + this.$val = this; + if (arguments.length === 0) { + this.Object = null; + this.Code = 0; + this.Reason = ""; + this.WasClean = false; + return; + } + this.Object = Object_; + this.Code = Code_; + this.Reason = Reason_; + this.WasClean = WasClean_; + }); + deadlineErr = $pkg.deadlineErr = $newType(0, $kindStruct, "websocket.deadlineErr", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function() { + this.$val = this; + if (arguments.length === 0) { + return; + } + }); + conn = $pkg.conn = $newType(0, $kindStruct, "websocket.conn", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(WebSocket_, ch_, readBuf_, readDeadline_) { + this.$val = this; + if (arguments.length === 0) { + this.WebSocket = ptrType.nil; + this.ch = $chanNil; + this.readBuf = ptrType$1.nil; + this.readDeadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil); + return; + } + this.WebSocket = WebSocket_; + this.ch = ch_; + this.readBuf = readBuf_; + this.readDeadline = readDeadline_; + }); + messageEvent = $pkg.messageEvent = $newType(0, $kindStruct, "websocket.messageEvent", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(Object_, Data_) { + this.$val = this; + if (arguments.length === 0) { + this.Object = null; + this.Data = null; + return; + } + this.Object = Object_; + this.Data = Data_; + }); + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(websocketjs.WebSocket); + ptrType$1 = $ptrType(bytes.Reader); + ptrType$2 = $ptrType(time.Location); + ptrType$3 = $ptrType(messageEvent); + sliceType$1 = $sliceType($Uint8); + ptrType$4 = $ptrType(url.URL); + ptrType$5 = $ptrType(addr); + ptrType$6 = $ptrType(closeError); + ptrType$7 = $ptrType(js.Object); + ptrType$8 = $ptrType(deadlineErr); + ptrType$9 = $ptrType(conn); + chanType = $chanType(ptrType$3, false, false); + addr.ptr.prototype.Network = function() { + var addr$1; + addr$1 = this; + return "websocket"; + }; + addr.prototype.Network = function() { return this.$val.Network(); }; + beginHandlerOpen = function(ch, removeHandlers) { + var ch, removeHandlers; + return (function $b(ev) { + var ev, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; ev = $f.ev; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = removeHandlers(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $close(ch); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.ev = ev; $f.$s = $s; $f.$r = $r; return $f; + }); + }; + closeError.ptr.prototype.Error = function() { + var _r, cleanStmt, e, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cleanStmt = $f.cleanStmt; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + e = this; + cleanStmt = ""; + if (!!(e.Object.wasClean)) { + cleanStmt = "clean"; + } else { + cleanStmt = "unclean"; + } + _r = fmt.Sprintf("CloseEvent: (%s) (%d) %s", new sliceType([new $String(cleanStmt), new $Int(($parseInt(e.Object.code) >> 0)), new $String($internalize(e.Object.reason, $String))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: closeError.ptr.prototype.Error }; } $f._r = _r; $f.cleanStmt = cleanStmt; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; + }; + closeError.prototype.Error = function() { return this.$val.Error(); }; + beginHandlerClose = function(ch, removeHandlers) { + var ch, removeHandlers; + return (function $b(ev) { + var ev, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; ev = $f.ev; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + ev = [ev]; + $r = removeHandlers(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $go((function(ev) { return function $b() { + var $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = $send(ch, new closeError.ptr(ev[0], 0, "", false)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $close(ch); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f; + }; })(ev), []); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.ev = ev; $f.$s = $s; $f.$r = $r; return $f; + }); + }; + deadlineErr.ptr.prototype.Error = function() { + var e; + e = this; + return "i/o timeout: deadline reached"; + }; + deadlineErr.prototype.Error = function() { return this.$val.Error(); }; + deadlineErr.ptr.prototype.Timeout = function() { + var e; + e = this; + return true; + }; + deadlineErr.prototype.Timeout = function() { return this.$val.Timeout(); }; + deadlineErr.ptr.prototype.Temporary = function() { + var e; + e = this; + return true; + }; + deadlineErr.prototype.Temporary = function() { return this.$val.Temporary(); }; + Dial = function(url$1) { + var _r, _tuple, _tuple$1, closeHandler, conn$1, err, ok, openCh, openHandler, removeHandlers, url$1, ws, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; closeHandler = $f.closeHandler; conn$1 = $f.conn$1; err = $f.err; ok = $f.ok; openCh = $f.openCh; openHandler = $f.openHandler; removeHandlers = $f.removeHandlers; url$1 = $f.url$1; ws = $f.ws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + closeHandler = [closeHandler]; + openHandler = [openHandler]; + ws = [ws]; + _tuple = websocketjs.New(url$1); + ws[0] = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + conn$1 = new conn.ptr(ws[0], new $Chan(ptrType$3, 1), ptrType$1.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil)); + conn$1.initialize(); + openCh = new $Chan($error, 1); + openHandler[0] = $throwNilPointerError; + closeHandler[0] = $throwNilPointerError; + removeHandlers = (function(closeHandler, openHandler, ws) { return function() { + ws[0].RemoveEventListener("open", false, openHandler[0]); + ws[0].RemoveEventListener("close", false, closeHandler[0]); + }; })(closeHandler, openHandler, ws); + openHandler[0] = beginHandlerOpen(openCh, removeHandlers); + closeHandler[0] = beginHandlerClose(openCh, removeHandlers); + ws[0].AddEventListener("open", false, openHandler[0]); + ws[0].AddEventListener("close", false, closeHandler[0]); + _r = $recv(openCh); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + err = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok && !($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + $s = -1; return [conn$1, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Dial }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.closeHandler = closeHandler; $f.conn$1 = conn$1; $f.err = err; $f.ok = ok; $f.openCh = openCh; $f.openHandler = openHandler; $f.removeHandlers = removeHandlers; $f.url$1 = url$1; $f.ws = ws; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Dial = Dial; + conn.ptr.prototype.onMessage = function(event) { + var c, event; + c = this; + $go((function $b() { + var $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = $send(c.ch, new messageEvent.ptr(event, null)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f; + }), []); + }; + conn.prototype.onMessage = function(event) { return this.$val.onMessage(event); }; + conn.ptr.prototype.onClose = function(event) { + var c, event; + c = this; + $go((function $b() { + var $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = $send(c.ch, ptrType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f; + }), []); + }; + conn.prototype.onClose = function(event) { return this.$val.onClose(event); }; + conn.ptr.prototype.initialize = function() { + var c; + c = this; + c.WebSocket.Object.binaryType = $externalize("arraybuffer", $String); + c.WebSocket.AddEventListener("message", false, $methodVal(c, "onMessage")); + c.WebSocket.AddEventListener("close", false, $methodVal(c, "onClose")); + }; + conn.prototype.initialize = function() { return this.$val.initialize(); }; + conn.ptr.prototype.handleFrame = function(message, ok) { + var c, message, ok; + c = this; + if (!ok) { + return [ptrType$3.nil, io.EOF]; + } else if (message === ptrType$3.nil) { + $close(c.ch); + return [ptrType$3.nil, io.EOF]; + } + return [message, $ifaceNil]; + }; + conn.prototype.handleFrame = function(message, ok) { return this.$val.handleFrame(message, ok); }; + conn.ptr.prototype.receiveFrame = function(observeDeadline) { + var _r, _selection, _selection$1, _tuple, _tuple$1, c, deadlineChan, item, item$1, now, observeDeadline, ok, ok$1, timer, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; deadlineChan = $f.deadlineChan; item = $f.item; item$1 = $f.item$1; now = $f.now; observeDeadline = $f.observeDeadline; ok = $f.ok; ok$1 = $f.ok$1; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + c = this; + deadlineChan = $chanNil; + /* */ if (observeDeadline && !$clone(c.readDeadline, time.Time).IsZero()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (observeDeadline && !$clone(c.readDeadline, time.Time).IsZero()) { */ case 1: + now = $clone(time.Now(), time.Time); + if ($clone(now, time.Time).After($clone(c.readDeadline, time.Time))) { + _selection = $select([[c.ch], []]); + if (_selection[0] === 0) { + _tuple = _selection[1]; + item = _tuple[0]; + ok = _tuple[1]; + $s = -1; return c.handleFrame(item, ok); + } else if (_selection[0] === 1) { + $s = -1; return [ptrType$3.nil, errDeadlineReached]; + } + } + timer = time.NewTimer($clone(c.readDeadline, time.Time).Sub($clone(now, time.Time))); + $deferred.push([$methodVal(timer, "Stop"), []]); + deadlineChan = timer.C; + /* } */ case 2: + _r = $select([[c.ch], [deadlineChan]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection$1 = _r; + if (_selection$1[0] === 0) { + _tuple$1 = _selection$1[1]; + item$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + $s = -1; return c.handleFrame(item$1, ok$1); + } else if (_selection$1[0] === 1) { + $s = -1; return [ptrType$3.nil, errDeadlineReached]; + } + $s = -1; return [ptrType$3.nil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.receiveFrame }; } $f._r = _r; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.deadlineChan = deadlineChan; $f.item = item; $f.item$1 = item$1; $f.now = now; $f.observeDeadline = observeDeadline; $f.ok = ok; $f.ok$1 = ok$1; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + conn.prototype.receiveFrame = function(observeDeadline) { return this.$val.receiveFrame(observeDeadline); }; + getFrameData = function(obj) { + var constructor, obj, uint8Array; + constructor = obj.constructor; + if (constructor === $global.ArrayBuffer) { + uint8Array = new ($global.Uint8Array)(obj); + return $assertType($internalize(uint8Array, $emptyInterface), sliceType$1); + } + return (new sliceType$1($stringToBytes($internalize(obj, $String)))); + }; + conn.ptr.prototype.Read = function(b) { + var _r, _tmp, _tmp$1, _tuple, _tuple$1, b, c, err, frame, n, receivedBytes, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; c = $f.c; err = $f.err; frame = $f.frame; n = $f.n; receivedBytes = $f.receivedBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + c = this; + if (!(c.readBuf === ptrType$1.nil)) { + _tuple = c.readBuf.Read(b); + n = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, io.EOF)) { + c.readBuf = ptrType$1.nil; + err = $ifaceNil; + } + if (n > 0) { + $s = -1; return [n, err]; + } + } + _r = c.receiveFrame(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + frame = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + receivedBytes = getFrameData(frame.Object.data); + n = $copySlice(b, receivedBytes); + if (n >= receivedBytes.$length) { + $s = -1; return [n, err]; + } + c.readBuf = bytes.NewReader($subslice(receivedBytes, n)); + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.c = c; $f.err = err; $f.frame = frame; $f.n = n; $f.receivedBytes = receivedBytes; $f.$s = $s; $f.$r = $r; return $f; + }; + conn.prototype.Read = function(b) { return this.$val.Read(b); }; + conn.ptr.prototype.Write = function(b) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, b, c, err, n; + n = 0; + err = $ifaceNil; + c = this; + err = c.WebSocket.Send(b); + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + _tmp$2 = b.$length; + _tmp$3 = $ifaceNil; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + }; + conn.prototype.Write = function(b) { return this.$val.Write(b); }; + conn.ptr.prototype.LocalAddr = function() { + var c; + c = this; + $panic(new $String("we are unable to implement websocket.conn.LocalAddr() due to limitations in the underlying JavaScript API")); + }; + conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); }; + conn.ptr.prototype.RemoteAddr = function() { + var _r, _tuple, c, err, wsURL, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; wsURL = $f.wsURL; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + c = this; + _r = url.Parse($internalize(c.WebSocket.Object.url, $String)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + wsURL = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $panic(err); + } + $s = -1; return new addr.ptr(wsURL); + /* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.RemoteAddr }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.wsURL = wsURL; $f.$s = $s; $f.$r = $r; return $f; + }; + conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); }; + conn.ptr.prototype.SetDeadline = function(t) { + var c, t; + c = this; + time.Time.copy(c.readDeadline, t); + return $ifaceNil; + }; + conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; + conn.ptr.prototype.SetReadDeadline = function(t) { + var c, t; + c = this; + time.Time.copy(c.readDeadline, t); + return $ifaceNil; + }; + conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; + conn.ptr.prototype.SetWriteDeadline = function(t) { + var c, t; + c = this; + return $ifaceNil; + }; + conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; + ptrType$5.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$8.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$9.methods = [{prop: "onMessage", name: "onMessage", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([ptrType$7], [], false)}, {prop: "onClose", name: "onClose", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([ptrType$7], [], false)}, {prop: "initialize", name: "initialize", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([], [], false)}, {prop: "handleFrame", name: "handleFrame", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([ptrType$3, $Bool], [ptrType$3, $error], false)}, {prop: "receiveFrame", name: "receiveFrame", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([$Bool], [ptrType$3, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}]; + addr.init("", [{prop: "URL", name: "URL", embedded: true, exported: true, typ: ptrType$4, tag: ""}]); + closeError.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType$7, tag: ""}, {prop: "Code", name: "Code", embedded: false, exported: true, typ: $Int, tag: "js:\"code\""}, {prop: "Reason", name: "Reason", embedded: false, exported: true, typ: $String, tag: "js:\"reason\""}, {prop: "WasClean", name: "WasClean", embedded: false, exported: true, typ: $Bool, tag: "js:\"wasClean\""}]); + deadlineErr.init("", []); + conn.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", [{prop: "WebSocket", name: "WebSocket", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "ch", name: "ch", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "readBuf", name: "readBuf", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "readDeadline", name: "readDeadline", embedded: false, exported: false, typ: time.Time, tag: ""}]); + messageEvent.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType$7, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: ptrType$7, tag: "js:\"data\""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = websocketjs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = net.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = url.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + errDeadlineReached = new deadlineErr.ptr(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["container/heap"] = (function() { + var $pkg = {}, $init, sort, Push, Pop, up, down; + sort = $packages["sort"]; + Push = function(h, x) { + var _arg, _arg$1, _r, h, x, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; h = $f.h; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = h.Push(x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _arg = h; + _r = h.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r - 1 >> 0; + $r = up(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Push }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.h = h; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Push = Push; + Pop = function(h) { + var _r, _r$1, _r$2, h, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; h = $f.h; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = h.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r - 1 >> 0; + $r = h.Swap(0, n); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = down(h, 0, n); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = h.Pop(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $s = -1; return _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: Pop }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.h = h; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Pop = Pop; + up = function(h, j) { + var _q, _r, _v, h, i, j, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _v = $f._v; h = $f.h; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + i = (_q = ((j - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (i === j) { _v = true; $s = 5; continue s; } + _r = h.Less(j, i); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + /* break; */ $s = 2; continue; + /* } */ case 4: + $r = h.Swap(i, j); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = i; + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: up }; } $f._q = _q; $f._r = _r; $f._v = _v; $f.h = h; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f; + }; + down = function(h, i0, n) { + var _r, _r$1, _v, h, i, i0, j, j1, j2, n, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; h = $f.h; i = $f.i; i0 = $f.i0; j = $f.j; j1 = $f.j1; j2 = $f.j2; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + i = i0; + /* while (true) { */ case 1: + j1 = ($imul(2, i)) + 1 >> 0; + if (j1 >= n || j1 < 0) { + /* break; */ $s = 2; continue; + } + j = j1; + j2 = j1 + 1 >> 0; + if (!(j2 < n)) { _v = false; $s = 5; continue s; } + _r = h.Less(j2, j1); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + j = j2; + /* } */ case 4: + _r$1 = h.Less(j, i); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + /* break; */ $s = 2; continue; + /* } */ case 8: + $r = h.Swap(i, j); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = j; + /* } */ $s = 1; continue; case 2: + $s = -1; return i > i0; + /* */ } return; } if ($f === undefined) { $f = { $blk: down }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.h = h; $f.i = i; $f.i0 = i0; $f.j = j; $f.j1 = j1; $f.j2 = j2; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sort.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux"] = (function() { + var $pkg = {}, $init, heap, binary, errors, fmt, io, math, net, sync, atomic, time, Allocator, Frame, rawHeader, updHeader, Config, writeRequest, writeResult, buffersWriter, Session, shaperHeap, Stream, ptrType, sliceType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, structType, ptrType$3, interfaceType, interfaceType$1, ptrType$4, arrayType, ptrType$5, sliceType$3, ptrType$6, ptrType$7, chanType, chanType$1, chanType$2, mapType, chanType$3, chanType$4, chanType$5, defaultAllocator, debruijinPos, init, NewAllocator, msb, newFrame, DefaultConfig, VerifyConfig, Client, newSession, newStream; + heap = $packages["container/heap"]; + binary = $packages["encoding/binary"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + io = $packages["io"]; + math = $packages["math"]; + net = $packages["net"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + time = $packages["time"]; + Allocator = $pkg.Allocator = $newType(0, $kindStruct, "smux.Allocator", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(buffers_) { + this.$val = this; + if (arguments.length === 0) { + this.buffers = sliceType.nil; + return; + } + this.buffers = buffers_; + }); + Frame = $pkg.Frame = $newType(0, $kindStruct, "smux.Frame", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(ver_, cmd_, sid_, data_) { + this.$val = this; + if (arguments.length === 0) { + this.ver = 0; + this.cmd = 0; + this.sid = 0; + this.data = sliceType$1.nil; + return; + } + this.ver = ver_; + this.cmd = cmd_; + this.sid = sid_; + this.data = data_; + }); + rawHeader = $pkg.rawHeader = $newType(8, $kindArray, "smux.rawHeader", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); + updHeader = $pkg.updHeader = $newType(8, $kindArray, "smux.updHeader", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); + Config = $pkg.Config = $newType(0, $kindStruct, "smux.Config", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(Version_, KeepAliveInterval_, KeepAliveTimeout_, MaxFrameSize_, MaxReceiveBuffer_, MaxStreamBuffer_) { + this.$val = this; + if (arguments.length === 0) { + this.Version = 0; + this.KeepAliveInterval = new time.Duration(0, 0); + this.KeepAliveTimeout = new time.Duration(0, 0); + this.MaxFrameSize = 0; + this.MaxReceiveBuffer = 0; + this.MaxStreamBuffer = 0; + return; + } + this.Version = Version_; + this.KeepAliveInterval = KeepAliveInterval_; + this.KeepAliveTimeout = KeepAliveTimeout_; + this.MaxFrameSize = MaxFrameSize_; + this.MaxReceiveBuffer = MaxReceiveBuffer_; + this.MaxStreamBuffer = MaxStreamBuffer_; + }); + writeRequest = $pkg.writeRequest = $newType(0, $kindStruct, "smux.writeRequest", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, function(prio_, frame_, result_) { + this.$val = this; + if (arguments.length === 0) { + this.prio = new $Uint64(0, 0); + this.frame = new Frame.ptr(0, 0, 0, sliceType$1.nil); + this.result = $chanNil; + return; + } + this.prio = prio_; + this.frame = frame_; + this.result = result_; + }); + writeResult = $pkg.writeResult = $newType(0, $kindStruct, "smux.writeResult", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, function(n_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.n = 0; + this.err = $ifaceNil; + return; + } + this.n = n_; + this.err = err_; + }); + buffersWriter = $pkg.buffersWriter = $newType(8, $kindInterface, "smux.buffersWriter", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); + Session = $pkg.Session = $newType(0, $kindStruct, "smux.Session", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(conn_, config_, nextStreamID_, nextStreamIDLock_, bucket_, bucketNotify_, streams_, streamLock_, die_, dieOnce_, socketReadError_, socketWriteError_, chSocketReadError_, chSocketWriteError_, socketReadErrorOnce_, socketWriteErrorOnce_, protoError_, chProtoError_, protoErrorOnce_, chAccepts_, dataReady_, goAway_, deadline_, shaper_, writes_) { + this.$val = this; + if (arguments.length === 0) { + this.conn = $ifaceNil; + this.config = ptrType$1.nil; + this.nextStreamID = 0; + this.nextStreamIDLock = new sync.Mutex.ptr(0, 0); + this.bucket = 0; + this.bucketNotify = $chanNil; + this.streams = false; + this.streamLock = new sync.Mutex.ptr(0, 0); + this.die = $chanNil; + this.dieOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); + this.socketReadError = new atomic.Value.ptr($ifaceNil); + this.socketWriteError = new atomic.Value.ptr($ifaceNil); + this.chSocketReadError = $chanNil; + this.chSocketWriteError = $chanNil; + this.socketReadErrorOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); + this.socketWriteErrorOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); + this.protoError = new atomic.Value.ptr($ifaceNil); + this.chProtoError = $chanNil; + this.protoErrorOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); + this.chAccepts = $chanNil; + this.dataReady = 0; + this.goAway = 0; + this.deadline = new atomic.Value.ptr($ifaceNil); + this.shaper = $chanNil; + this.writes = $chanNil; + return; + } + this.conn = conn_; + this.config = config_; + this.nextStreamID = nextStreamID_; + this.nextStreamIDLock = nextStreamIDLock_; + this.bucket = bucket_; + this.bucketNotify = bucketNotify_; + this.streams = streams_; + this.streamLock = streamLock_; + this.die = die_; + this.dieOnce = dieOnce_; + this.socketReadError = socketReadError_; + this.socketWriteError = socketWriteError_; + this.chSocketReadError = chSocketReadError_; + this.chSocketWriteError = chSocketWriteError_; + this.socketReadErrorOnce = socketReadErrorOnce_; + this.socketWriteErrorOnce = socketWriteErrorOnce_; + this.protoError = protoError_; + this.chProtoError = chProtoError_; + this.protoErrorOnce = protoErrorOnce_; + this.chAccepts = chAccepts_; + this.dataReady = dataReady_; + this.goAway = goAway_; + this.deadline = deadline_; + this.shaper = shaper_; + this.writes = writes_; + }); + shaperHeap = $pkg.shaperHeap = $newType(12, $kindSlice, "smux.shaperHeap", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); + Stream = $pkg.Stream = $newType(0, $kindStruct, "smux.Stream", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(id_, sess_, buffers_, heads_, bufferLock_, frameSize_, chReadEvent_, die_, dieOnce_, chFinEvent_, finEventOnce_, readDeadline_, writeDeadline_, numRead_, numWritten_, incr_, peerConsumed_, peerWindow_, chUpdate_) { + this.$val = this; + if (arguments.length === 0) { + this.id = 0; + this.sess = ptrType$2.nil; + this.buffers = sliceType$3.nil; + this.heads = sliceType$3.nil; + this.bufferLock = new sync.Mutex.ptr(0, 0); + this.frameSize = 0; + this.chReadEvent = $chanNil; + this.die = $chanNil; + this.dieOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); + this.chFinEvent = $chanNil; + this.finEventOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); + this.readDeadline = new atomic.Value.ptr($ifaceNil); + this.writeDeadline = new atomic.Value.ptr($ifaceNil); + this.numRead = 0; + this.numWritten = 0; + this.incr = 0; + this.peerConsumed = 0; + this.peerWindow = 0; + this.chUpdate = $chanNil; + return; + } + this.id = id_; + this.sess = sess_; + this.buffers = buffers_; + this.heads = heads_; + this.bufferLock = bufferLock_; + this.frameSize = frameSize_; + this.chReadEvent = chReadEvent_; + this.die = die_; + this.dieOnce = dieOnce_; + this.chFinEvent = chFinEvent_; + this.finEventOnce = finEventOnce_; + this.readDeadline = readDeadline_; + this.writeDeadline = writeDeadline_; + this.numRead = numRead_; + this.numWritten = numWritten_; + this.incr = incr_; + this.peerConsumed = peerConsumed_; + this.peerWindow = peerWindow_; + this.chUpdate = chUpdate_; + }); + ptrType = $ptrType(Allocator); + sliceType = $sliceType(sync.Pool); + sliceType$1 = $sliceType($Uint8); + sliceType$2 = $sliceType($emptyInterface); + ptrType$1 = $ptrType(Config); + ptrType$2 = $ptrType(Session); + structType = $structType("", []); + ptrType$3 = $ptrType(Stream); + interfaceType = $interfaceType([{prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}]); + interfaceType$1 = $interfaceType([{prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}]); + ptrType$4 = $ptrType($Int32); + arrayType = $arrayType($Uint8, 8); + ptrType$5 = $ptrType(shaperHeap); + sliceType$3 = $sliceType(sliceType$1); + ptrType$6 = $ptrType(time.Timer); + ptrType$7 = $ptrType($Uint32); + chanType = $chanType(writeResult, false, false); + chanType$1 = $chanType(time.Time, false, true); + chanType$2 = $chanType(structType, false, false); + mapType = $mapType($Uint32, ptrType$3); + chanType$3 = $chanType(ptrType$3, false, false); + chanType$4 = $chanType(writeRequest, false, false); + chanType$5 = $chanType(structType, false, true); + init = function() { + defaultAllocator = NewAllocator(); + }; + NewAllocator = function() { + var _i, _ref, alloc, i, k, x; + alloc = new Allocator.ptr(sliceType.nil); + alloc.buffers = $makeSlice(sliceType, 17); + _ref = alloc.buffers; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = [i]; + k = _i; + i[0] = k; + (x = alloc.buffers, ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k])).New = (function(i) { return function() { + var y; + return $makeSlice(sliceType$1, ((y = ((i[0] >>> 0)), y < 32 ? (1 << y) : 0) >> 0)); + }; })(i); + _i++; + } + return alloc; + }; + $pkg.NewAllocator = NewAllocator; + Allocator.ptr.prototype.Get = function(size) { + var _r, _r$1, alloc, bits, size, x, x$1, x$2, y, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; alloc = $f.alloc; bits = $f.bits; size = $f.size; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + alloc = this; + if (size <= 0 || size > 65536) { + $s = -1; return sliceType$1.nil; + } + bits = msb(size); + /* */ if (size === ((y = bits, y < 32 ? (1 << y) : 0) >> 0)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (size === ((y = bits, y < 32 ? (1 << y) : 0) >> 0)) { */ case 1: + _r = (x = alloc.buffers, ((bits < 0 || bits >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + bits])).Get(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return $subslice($assertType(_r, sliceType$1), 0, size); + /* } else { */ case 2: + _r$1 = (x$1 = alloc.buffers, x$2 = bits + 1 << 24 >>> 24, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).Get(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $s = -1; return $subslice($assertType(_r$1, sliceType$1), 0, size); + /* } */ case 3: + $s = -1; return sliceType$1.nil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Allocator.ptr.prototype.Get }; } $f._r = _r; $f._r$1 = _r$1; $f.alloc = alloc; $f.bits = bits; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; + }; + Allocator.prototype.Get = function(size) { return this.$val.Get(size); }; + Allocator.ptr.prototype.Put = function(buf) { + var alloc, bits, buf, x, y; + alloc = this; + bits = msb(buf.$capacity); + if ((buf.$capacity === 0) || buf.$capacity > 65536 || !((buf.$capacity === ((y = bits, y < 32 ? (1 << y) : 0) >> 0)))) { + return errors.New("allocator Put() incorrect buffer size"); + } + (x = alloc.buffers, ((bits < 0 || bits >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + bits])).Put(buf); + return $ifaceNil; + }; + Allocator.prototype.Put = function(buf) { return this.$val.Put(buf); }; + msb = function(size) { + var size, v, x; + v = ((size >>> 0)); + v = (v | ((v >>> 1 >>> 0))) >>> 0; + v = (v | ((v >>> 2 >>> 0))) >>> 0; + v = (v | ((v >>> 4 >>> 0))) >>> 0; + v = (v | ((v >>> 8 >>> 0))) >>> 0; + v = (v | ((v >>> 16 >>> 0))) >>> 0; + return (x = (($imul(v, 130329821) >>> 0)) >>> 27 >>> 0, ((x < 0 || x >= debruijinPos.length) ? ($throwRuntimeError("index out of range"), undefined) : debruijinPos[x])); + }; + newFrame = function(version, cmd, sid) { + var cmd, sid, version; + return new Frame.ptr(version, cmd, sid, sliceType$1.nil); + }; + rawHeader.prototype.Version = function() { + var h; + h = this.$val; + return h[0]; + }; + $ptrType(rawHeader).prototype.Version = function() { return new rawHeader(this.$get()).Version(); }; + rawHeader.prototype.Cmd = function() { + var h; + h = this.$val; + return h[1]; + }; + $ptrType(rawHeader).prototype.Cmd = function() { return new rawHeader(this.$get()).Cmd(); }; + rawHeader.prototype.Length = function() { + var h; + h = this.$val; + return $clone(binary.LittleEndian, binary.littleEndian).Uint16($subslice(new sliceType$1(h), 2)); + }; + $ptrType(rawHeader).prototype.Length = function() { return new rawHeader(this.$get()).Length(); }; + rawHeader.prototype.StreamID = function() { + var h; + h = this.$val; + return $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType$1(h), 4)); + }; + $ptrType(rawHeader).prototype.StreamID = function() { return new rawHeader(this.$get()).StreamID(); }; + rawHeader.prototype.String = function() { + var _r, h, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + h = this.$val; + _r = fmt.Sprintf("Version:%d Cmd:%d StreamID:%d Length:%d", new sliceType$2([new $Uint8(new rawHeader($clone(h, rawHeader)).Version()), new $Uint8(new rawHeader($clone(h, rawHeader)).Cmd()), new $Uint32(new rawHeader($clone(h, rawHeader)).StreamID()), new $Uint16(new rawHeader($clone(h, rawHeader)).Length())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: rawHeader.prototype.String }; } $f._r = _r; $f.h = h; $f.$s = $s; $f.$r = $r; return $f; + }; + $ptrType(rawHeader).prototype.String = function() { return new rawHeader(this.$get()).String(); }; + updHeader.prototype.Consumed = function() { + var h; + h = this.$val; + return $clone(binary.LittleEndian, binary.littleEndian).Uint32(new sliceType$1(h)); + }; + $ptrType(updHeader).prototype.Consumed = function() { return new updHeader(this.$get()).Consumed(); }; + updHeader.prototype.Window = function() { + var h; + h = this.$val; + return $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType$1(h), 4)); + }; + $ptrType(updHeader).prototype.Window = function() { return new updHeader(this.$get()).Window(); }; + DefaultConfig = function() { + return new Config.ptr(1, new time.Duration(2, 1410065408), new time.Duration(6, 4230196224), 32768, 4194304, 65536); + }; + $pkg.DefaultConfig = DefaultConfig; + VerifyConfig = function(config) { + var _r, config, x, x$1, x$2, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; config = $f.config; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (!((config.Version === 1) || (config.Version === 2))) { + $s = -1; return errors.New("unsupported protocol version"); + } + if ((x = config.KeepAliveInterval, (x.$high === 0 && x.$low === 0))) { + $s = -1; return errors.New("keep-alive interval must be positive"); + } + /* */ if ((x$1 = config.KeepAliveTimeout, x$2 = config.KeepAliveInterval, (x$1.$high < x$2.$high || (x$1.$high === x$2.$high && x$1.$low < x$2.$low)))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((x$1 = config.KeepAliveTimeout, x$2 = config.KeepAliveInterval, (x$1.$high < x$2.$high || (x$1.$high === x$2.$high && x$1.$low < x$2.$low)))) { */ case 1: + _r = fmt.Errorf("keep-alive timeout must be larger than keep-alive interval", new sliceType$2([])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + if (config.MaxFrameSize <= 0) { + $s = -1; return errors.New("max frame size must be positive"); + } + if (config.MaxFrameSize > 65535) { + $s = -1; return errors.New("max frame size must not be larger than 65535"); + } + if (config.MaxReceiveBuffer <= 0) { + $s = -1; return errors.New("max receive buffer must be positive"); + } + if (config.MaxStreamBuffer <= 0) { + $s = -1; return errors.New("max stream buffer must be positive"); + } + if (config.MaxStreamBuffer > config.MaxReceiveBuffer) { + $s = -1; return errors.New("max stream buffer must not be larger than max receive buffer"); + } + if (config.MaxStreamBuffer > 2147483647) { + $s = -1; return errors.New("max stream buffer cannot be larger than 2147483647"); + } + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: VerifyConfig }; } $f._r = _r; $f.config = config; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.VerifyConfig = VerifyConfig; + Client = function(conn, config) { + var _r, config, conn, err, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; config = $f.config; conn = $f.conn; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + if (config === ptrType$1.nil) { + config = DefaultConfig(); + } + _r = VerifyConfig(config); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, err]; + } + $s = -1; return [newSession(config, conn, true), $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Client }; } $f._r = _r; $f.config = config; $f.conn = conn; $f.err = err; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Client = Client; + newSession = function(config, conn, client) { + var client, config, conn, s; + s = new Session.ptr($ifaceNil, ptrType$1.nil, 0, new sync.Mutex.ptr(0, 0), 0, $chanNil, false, new sync.Mutex.ptr(0, 0), $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new atomic.Value.ptr($ifaceNil), new atomic.Value.ptr($ifaceNil), $chanNil, $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new atomic.Value.ptr($ifaceNil), $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $chanNil, 0, 0, new atomic.Value.ptr($ifaceNil), $chanNil, $chanNil); + s.die = new $Chan(structType, 0); + s.conn = conn; + s.config = config; + s.streams = {}; + s.chAccepts = new $Chan(ptrType$3, 1024); + s.bucket = ((config.MaxReceiveBuffer >> 0)); + s.bucketNotify = new $Chan(structType, 1); + s.shaper = new $Chan(writeRequest, 0); + s.writes = new $Chan(writeRequest, 0); + s.chSocketReadError = new $Chan(structType, 0); + s.chSocketWriteError = new $Chan(structType, 0); + s.chProtoError = new $Chan(structType, 0); + if (client) { + s.nextStreamID = 1; + } else { + s.nextStreamID = 0; + } + $go($methodVal(s, "shaperLoop"), []); + $go($methodVal(s, "recvLoop"), []); + $go($methodVal(s, "sendLoop"), []); + $go($methodVal(s, "keepalive"), []); + return s; + }; + Session.ptr.prototype.OpenStream = function() { + var _key, _r, _r$1, _selection, _tuple, err, s, sid, stream, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _tuple = $f._tuple; err = $f.err; s = $f.s; sid = $f.sid; stream = $f.stream; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + s = this; + if (s.IsClosed()) { + $s = -1; return [ptrType$3.nil, io.ErrClosedPipe]; + } + $r = s.nextStreamIDLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (s.goAway > 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (s.goAway > 0) { */ case 2: + $r = s.nextStreamIDLock.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [ptrType$3.nil, $pkg.ErrGoAway]; + /* } */ case 3: + s.nextStreamID = s.nextStreamID + (2) >>> 0; + sid = s.nextStreamID; + /* */ if (sid === (_r = sid % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (sid === (_r = sid % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) { */ case 5: + s.goAway = 1; + $r = s.nextStreamIDLock.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [ptrType$3.nil, $pkg.ErrGoAway]; + /* } */ case 6: + $r = s.nextStreamIDLock.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + stream = newStream(sid, s.config.MaxFrameSize, s); + _r$1 = s.writeFrame($clone(newFrame(((s.config.Version << 24 >>> 24)), 0, sid), Frame)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$3.nil, err]; + } + $r = s.streamLock.Lock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(s.streamLock, "Unlock"), []]); + _selection = $select([[s.chSocketReadError], [s.chSocketWriteError], [s.die], []]); + if (_selection[0] === 0) { + $s = -1; return [ptrType$3.nil, $assertType(s.socketReadError.Load(), $error)]; + } else if (_selection[0] === 1) { + $s = -1; return [ptrType$3.nil, $assertType(s.socketWriteError.Load(), $error)]; + } else if (_selection[0] === 2) { + $s = -1; return [ptrType$3.nil, io.ErrClosedPipe]; + } else if (_selection[0] === 3) { + _key = sid; (s.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: stream }; + $s = -1; return [stream, $ifaceNil]; + } + $s = -1; return [ptrType$3.nil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.OpenStream }; } $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._tuple = _tuple; $f.err = err; $f.s = s; $f.sid = sid; $f.stream = stream; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Session.prototype.OpenStream = function() { return this.$val.OpenStream(); }; + Session.ptr.prototype.Open = function() { + var _r, _returncast, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _returncast = $f._returncast; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _r = s.OpenStream(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _returncast = _r; + $s = -1; return [_returncast[0], _returncast[1]]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.Open }; } $f._r = _r; $f._returncast = _returncast; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.Open = function() { return this.$val.Open(); }; + Session.ptr.prototype.AcceptStream = function() { + var _r, _selection, _tuple, d, deadline, ok, s, stream, timer, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _tuple = $f._tuple; d = $f.d; deadline = $f.deadline; ok = $f.ok; s = $f.s; stream = $f.stream; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + s = this; + deadline = $chanNil; + _tuple = $assertType(s.deadline.Load(), time.Time, true); + d = $clone(_tuple[0], time.Time); + ok = _tuple[1]; + if (ok && !$clone(d, time.Time).IsZero()) { + timer = time.NewTimer(time.Until($clone(d, time.Time))); + $deferred.push([$methodVal(timer, "Stop"), []]); + deadline = timer.C; + } + _r = $select([[s.chAccepts], [deadline], [s.chSocketReadError], [s.chProtoError], [s.die]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = _r; + if (_selection[0] === 0) { + stream = _selection[1][0]; + $s = -1; return [stream, $ifaceNil]; + } else if (_selection[0] === 1) { + $s = -1; return [ptrType$3.nil, $pkg.ErrTimeout]; + } else if (_selection[0] === 2) { + $s = -1; return [ptrType$3.nil, $assertType(s.socketReadError.Load(), $error)]; + } else if (_selection[0] === 3) { + $s = -1; return [ptrType$3.nil, $assertType(s.protoError.Load(), $error)]; + } else if (_selection[0] === 4) { + $s = -1; return [ptrType$3.nil, io.ErrClosedPipe]; + } + $s = -1; return [ptrType$3.nil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.AcceptStream }; } $f._r = _r; $f._selection = _selection; $f._tuple = _tuple; $f.d = d; $f.deadline = deadline; $f.ok = ok; $f.s = s; $f.stream = stream; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Session.prototype.AcceptStream = function() { return this.$val.AcceptStream(); }; + Session.ptr.prototype.Accept = function() { + var _r, _returncast, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _returncast = $f._returncast; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _r = s.AcceptStream(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _returncast = _r; + $s = -1; return [_returncast[0], _returncast[1]]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.Accept }; } $f._r = _r; $f._returncast = _returncast; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.Accept = function() { return this.$val.Accept(); }; + Session.ptr.prototype.Close = function() { + var _entry, _entry$1, _i, _keys, _r, _ref, k, once, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _keys = $f._keys; _r = $f._r; _ref = $f._ref; k = $f.k; once = $f.once; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + once = [once]; + s = [s]; + s[0] = this; + once[0] = false; + $r = s[0].dieOnce.Do((function(once, s) { return function() { + $close(s[0].die); + once[0] = true; + }; })(once, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (once[0]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (once[0]) { */ case 2: + $r = s[0].streamLock.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = s[0].streams; + _i = 0; + _keys = $keys(_ref); + /* while (true) { */ case 6: + /* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 7; continue; } + _entry = _ref[_keys[_i]]; + if (_entry === undefined) { + _i++; + /* continue; */ $s = 6; continue; + } + k = _entry.k; + $r = (_entry$1 = s[0].streams[$Uint32.keyFor(k)], _entry$1 !== undefined ? _entry$1.v : ptrType$3.nil).sessionClose(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* } */ $s = 6; continue; case 7: + $r = s[0].streamLock.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = s[0].conn.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } else { */ case 3: + $s = -1; return io.ErrClosedPipe; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.Close }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f.k = k; $f.once = once; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.Close = function() { return this.$val.Close(); }; + Session.ptr.prototype.notifyBucket = function() { + var _selection, s, $r; + /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; s = $f.s; $r = $f.$r; } + s = this; + _selection = $select([[s.bucketNotify, new structType.ptr()], []]); + if (_selection[0] === 0) { + } else if (_selection[0] === 1) { + } + /* */ if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyBucket }; } $f._selection = _selection; $f.s = s; $f.$r = $r; return $f; + }; + Session.prototype.notifyBucket = function() { return this.$val.notifyBucket(); }; + Session.ptr.prototype.notifyReadError = function(err) { + var err, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + err = [err]; + s = [s]; + s[0] = this; + $r = s[0].socketReadErrorOnce.Do((function(err, s) { return function() { + s[0].socketReadError.Store(err[0]); + $close(s[0].chSocketReadError); + }; })(err, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyReadError }; } $f.err = err; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.notifyReadError = function(err) { return this.$val.notifyReadError(err); }; + Session.ptr.prototype.notifyWriteError = function(err) { + var err, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + err = [err]; + s = [s]; + s[0] = this; + $r = s[0].socketWriteErrorOnce.Do((function(err, s) { return function() { + s[0].socketWriteError.Store(err[0]); + $close(s[0].chSocketWriteError); + }; })(err, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyWriteError }; } $f.err = err; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.notifyWriteError = function(err) { return this.$val.notifyWriteError(err); }; + Session.ptr.prototype.notifyProtoError = function(err) { + var err, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + err = [err]; + s = [s]; + s[0] = this; + $r = s[0].protoErrorOnce.Do((function(err, s) { return function() { + s[0].protoError.Store(err[0]); + $close(s[0].chProtoError); + }; })(err, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyProtoError }; } $f.err = err; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.notifyProtoError = function(err) { return this.$val.notifyProtoError(err); }; + Session.ptr.prototype.IsClosed = function() { + var _selection, s, $r; + /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; s = $f.s; $r = $f.$r; } + s = this; + _selection = $select([[s.die], []]); + if (_selection[0] === 0) { + return true; + } else if (_selection[0] === 1) { + return false; + } + /* */ if ($f === undefined) { $f = { $blk: Session.ptr.prototype.IsClosed }; } $f._selection = _selection; $f.s = s; $f.$r = $r; return $f; + }; + Session.prototype.IsClosed = function() { return this.$val.IsClosed(); }; + Session.ptr.prototype.NumStreams = function() { + var s, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + s = this; + if (s.IsClosed()) { + $s = -1; return 0; + } + $r = s.streamLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(s.streamLock, "Unlock"), []]); + $s = -1; return $keys(s.streams).length; + /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.NumStreams }; } $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Session.prototype.NumStreams = function() { return this.$val.NumStreams(); }; + Session.ptr.prototype.SetDeadline = function(t) { + var s, t; + s = this; + s.deadline.Store(new t.constructor.elem(t)); + return $ifaceNil; + }; + Session.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; + Session.ptr.prototype.LocalAddr = function() { + var _r, _tuple, ok, s, ts, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _tuple = $assertType(s.conn, interfaceType, true); + ts = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = ts.LocalAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.LocalAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.LocalAddr = function() { return this.$val.LocalAddr(); }; + Session.ptr.prototype.RemoteAddr = function() { + var _r, _tuple, ok, s, ts, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _tuple = $assertType(s.conn, interfaceType$1, true); + ts = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = ts.RemoteAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.RemoteAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); }; + Session.ptr.prototype.streamClosed = function(sid) { + var _entry, _r, n, s, sid, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; n = $f.n; s = $f.s; sid = $f.sid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + $r = s.streamLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = (_entry = s.streams[$Uint32.keyFor(sid)], _entry !== undefined ? _entry.v : ptrType$3.nil).recycleTokens(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + if (n > 0) { + if (atomic.AddInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s))), ((n >> 0))) > 0) { + s.notifyBucket(); + } + } + delete s.streams[$Uint32.keyFor(sid)]; + $r = s.streamLock.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.streamClosed }; } $f._entry = _entry; $f._r = _r; $f.n = n; $f.s = s; $f.sid = sid; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.streamClosed = function(sid) { return this.$val.streamClosed(sid); }; + Session.ptr.prototype.returnTokens = function(n) { + var n, s; + s = this; + if (atomic.AddInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s))), ((n >> 0))) > 0) { + s.notifyBucket(); + } + }; + Session.prototype.returnTokens = function(n) { return this.$val.returnTokens(n); }; + Session.ptr.prototype.recvLoop = function() { + var _1, _entry, _entry$1, _entry$2, _entry$3, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _selection$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, err, err$1, err$2, hdr, newbuf, ok, ok$1, ok$2, ok$3, s, sid, stream, stream$1, stream$2, stream$3, updHdr, written, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hdr = $f.hdr; newbuf = $f.newbuf; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; s = $f.s; sid = $f.sid; stream = $f.stream; stream$1 = $f.stream$1; stream$2 = $f.stream$2; stream$3 = $f.stream$3; updHdr = $f.updHdr; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + hdr = arrayType.zero(); + updHdr = arrayType.zero(); + /* while (true) { */ case 1: + /* while (true) { */ case 3: + /* if (!(atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) <= 0 && !s.IsClosed())) { break; } */ if(!(atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) <= 0 && !s.IsClosed())) { $s = 4; continue; } + _r = $select([[s.bucketNotify], [s.die]]); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = _r; + if (_selection[0] === 0) { + } else if (_selection[0] === 1) { + $s = -1; return; + } + /* } */ $s = 3; continue; case 4: + _r$1 = io.ReadFull(s.conn, new sliceType$1(hdr)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + err = _tuple[1]; + /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 7: + atomic.StoreInt32((s.$ptr_dataReady || (s.$ptr_dataReady = new ptrType$4(function() { return this.$target.dataReady; }, function($v) { this.$target.dataReady = $v; }, s))), 1); + /* */ if (!((new rawHeader($clone(hdr, rawHeader)).Version() === ((s.config.Version << 24 >>> 24))))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((new rawHeader($clone(hdr, rawHeader)).Version() === ((s.config.Version << 24 >>> 24))))) { */ case 10: + $r = s.notifyProtoError($pkg.ErrInvalidProtocol); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 11: + sid = new rawHeader($clone(hdr, rawHeader)).StreamID(); + _1 = new rawHeader($clone(hdr, rawHeader)).Cmd(); + /* */ if (_1 === (3)) { $s = 14; continue; } + /* */ if (_1 === (0)) { $s = 15; continue; } + /* */ if (_1 === (1)) { $s = 16; continue; } + /* */ if (_1 === (2)) { $s = 17; continue; } + /* */ if (_1 === (4)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_1 === (3)) { */ case 14: + $s = 20; continue; + /* } else if (_1 === (0)) { */ case 15: + $r = s.streamLock.Lock(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$1 = (_entry = s.streams[$Uint32.keyFor(sid)], _entry !== undefined ? [_entry.v, true] : [ptrType$3.nil, false]); + ok = _tuple$1[1]; + /* */ if (!ok) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!ok) { */ case 22: + stream = newStream(sid, s.config.MaxFrameSize, s); + _key = sid; (s.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: stream }; + _r$2 = $select([[s.chAccepts, stream], [s.die]]); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _selection$1 = _r$2; + if (_selection$1[0] === 0) { + } else if (_selection$1[0] === 1) { + } + /* } */ case 23: + $r = s.streamLock.Unlock(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if (_1 === (1)) { */ case 16: + $r = s.streamLock.Lock(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$2 = (_entry$1 = s.streams[$Uint32.keyFor(sid)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$3.nil, false]); + stream$1 = _tuple$2[0]; + ok$1 = _tuple$2[1]; + /* */ if (ok$1) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (ok$1) { */ case 27: + $r = stream$1.fin(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + stream$1.notifyReadEvent(); + /* } */ case 28: + $r = s.streamLock.Unlock(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if (_1 === (2)) { */ case 17: + /* */ if (new rawHeader($clone(hdr, rawHeader)).Length() > 0) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (new rawHeader($clone(hdr, rawHeader)).Length() > 0) { */ case 31: + _r$3 = defaultAllocator.Get(((new rawHeader($clone(hdr, rawHeader)).Length() >> 0))); /* */ $s = 33; case 33: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + newbuf = _r$3; + _r$4 = io.ReadFull(s.conn, newbuf); /* */ $s = 34; case 34: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$3 = _r$4; + written = _tuple$3[0]; + err$1 = _tuple$3[1]; + /* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 35: + $r = s.streamLock.Lock(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$4 = (_entry$2 = s.streams[$Uint32.keyFor(sid)], _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$3.nil, false]); + stream$2 = _tuple$4[0]; + ok$2 = _tuple$4[1]; + /* */ if (ok$2) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (ok$2) { */ case 39: + _r$5 = stream$2.pushBytes(newbuf); /* */ $s = 41; case 41: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + atomic.AddInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s))), -((written >> 0))); + stream$2.notifyReadEvent(); + /* } */ case 40: + $r = s.streamLock.Unlock(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 37; continue; + /* } else { */ case 36: + $r = s.notifyReadError(err$1); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 37: + /* } */ case 32: + $s = 20; continue; + /* } else if (_1 === (4)) { */ case 18: + _r$6 = io.ReadFull(s.conn, new sliceType$1(updHdr)); /* */ $s = 44; case 44: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$5 = _r$6; + err$2 = _tuple$5[1]; + /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 45: + $r = s.streamLock.Lock(); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$6 = (_entry$3 = s.streams[$Uint32.keyFor(sid)], _entry$3 !== undefined ? [_entry$3.v, true] : [ptrType$3.nil, false]); + stream$3 = _tuple$6[0]; + ok$3 = _tuple$6[1]; + if (ok$3) { + stream$3.update(new updHeader($clone(updHdr, updHeader)).Consumed(), new updHeader($clone(updHdr, updHeader)).Window()); + } + $r = s.streamLock.Unlock(); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 47; continue; + /* } else { */ case 46: + $r = s.notifyReadError(err$2); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 47: + $s = 20; continue; + /* } else { */ case 19: + $r = s.notifyProtoError($pkg.ErrInvalidProtocol); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 20: + case 13: + $s = 9; continue; + /* } else { */ case 8: + $r = s.notifyReadError(err); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 9: + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.recvLoop }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hdr = hdr; $f.newbuf = newbuf; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.s = s; $f.sid = sid; $f.stream = stream; $f.stream$1 = stream$1; $f.stream$2 = stream$2; $f.stream$3 = stream$3; $f.updHdr = updHdr; $f.written = written; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.recvLoop = function() { return this.$val.recvLoop(); }; + Session.ptr.prototype.keepalive = function() { + var _r, _r$1, _r$2, _selection, s, tickerPing, tickerTimeout, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _selection = $f._selection; s = $f.s; tickerPing = $f.tickerPing; tickerTimeout = $f.tickerTimeout; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + s = this; + tickerPing = time.NewTicker(s.config.KeepAliveInterval); + tickerTimeout = time.NewTicker(s.config.KeepAliveTimeout); + $deferred.push([$methodVal(tickerPing, "Stop"), []]); + $deferred.push([$methodVal(tickerTimeout, "Stop"), []]); + /* while (true) { */ case 1: + _r = $select([[tickerPing.C], [tickerTimeout.C], [s.die]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = _r; + /* */ if (_selection[0] === 0) { $s = 4; continue; } + /* */ if (_selection[0] === 1) { $s = 5; continue; } + /* */ if (_selection[0] === 2) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_selection[0] === 0) { */ case 4: + _r$1 = s.writeFrameInternal($clone(newFrame(((s.config.Version << 24 >>> 24)), 3, 0), Frame), tickerPing.C, new $Uint64(0, 0)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + s.notifyBucket(); + $s = 7; continue; + /* } else if (_selection[0] === 1) { */ case 5: + /* */ if (!atomic.CompareAndSwapInt32((s.$ptr_dataReady || (s.$ptr_dataReady = new ptrType$4(function() { return this.$target.dataReady; }, function($v) { this.$target.dataReady = $v; }, s))), 1, 0)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!atomic.CompareAndSwapInt32((s.$ptr_dataReady || (s.$ptr_dataReady = new ptrType$4(function() { return this.$target.dataReady; }, function($v) { this.$target.dataReady = $v; }, s))), 1, 0)) { */ case 9: + /* */ if (atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) > 0) { */ case 11: + _r$2 = s.Close(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* } */ case 12: + /* } */ case 10: + $s = 7; continue; + /* } else if (_selection[0] === 2) { */ case 6: + $s = -1; return; + /* } */ case 7: + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.keepalive }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._selection = _selection; $f.s = s; $f.tickerPing = tickerPing; $f.tickerTimeout = tickerTimeout; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Session.prototype.keepalive = function() { return this.$val.keepalive(); }; + Session.ptr.prototype.shaperLoop = function() { + var _r, _r$1, _selection, chWrite, next, r, reqs, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; chWrite = $f.chWrite; next = $f.next; r = $f.r; reqs = $f.reqs; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + reqs = [reqs]; + s = this; + reqs[0] = shaperHeap.nil; + next = new writeRequest.ptr(new $Uint64(0, 0), new Frame.ptr(0, 0, 0, sliceType$1.nil), $chanNil); + chWrite = $chanNil; + /* while (true) { */ case 1: + /* */ if (reqs[0].$length > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (reqs[0].$length > 0) { */ case 3: + chWrite = s.writes; + _r = heap.Pop((reqs.$ptr || (reqs.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, reqs)))); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + writeRequest.copy(next, $assertType(_r, writeRequest)); + $s = 5; continue; + /* } else { */ case 4: + chWrite = $chanNil; + /* } */ case 5: + _r$1 = $select([[s.die], [s.shaper], [chWrite, $clone(next, writeRequest)]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection = _r$1; + /* */ if (_selection[0] === 0) { $s = 8; continue; } + /* */ if (_selection[0] === 1) { $s = 9; continue; } + /* */ if (_selection[0] === 2) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_selection[0] === 0) { */ case 8: + $s = -1; return; + /* } else if (_selection[0] === 1) { */ case 9: + r = $clone(_selection[1][0], writeRequest); + /* */ if (!(chWrite === $chanNil)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!(chWrite === $chanNil)) { */ case 12: + $r = heap.Push((reqs.$ptr || (reqs.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, reqs))), new next.constructor.elem(next)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + $r = heap.Push((reqs.$ptr || (reqs.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, reqs))), new r.constructor.elem(r)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else if (_selection[0] === 2) { */ case 10: + /* } */ case 11: + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.shaperLoop }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f.chWrite = chWrite; $f.next = next; $f.r = r; $f.reqs = reqs; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.shaperLoop = function() { return this.$val.shaperLoop(); }; + Session.ptr.prototype.sendLoop = function() { + var _r, _r$1, _r$2, _selection, _tuple, _tuple$1, _tuple$2, buf, bw, err, n, ok, request, result, s, vec, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; buf = $f.buf; bw = $f.bw; err = $f.err; n = $f.n; ok = $f.ok; request = $f.request; result = $f.result; s = $f.s; vec = $f.vec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + buf = sliceType$1.nil; + n = 0; + err = $ifaceNil; + vec = sliceType$3.nil; + _tuple = $assertType(s.conn, buffersWriter, true); + bw = _tuple[0]; + ok = _tuple[1]; + if (ok) { + buf = $makeSlice(sliceType$1, 8); + vec = $makeSlice(sliceType$3, 2); + } else { + buf = $makeSlice(sliceType$1, 65544); + } + /* while (true) { */ case 1: + _r = $select([[s.die], [s.writes]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = _r; + /* */ if (_selection[0] === 0) { $s = 4; continue; } + /* */ if (_selection[0] === 1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_selection[0] === 0) { */ case 4: + $s = -1; return; + /* } else if (_selection[0] === 1) { */ case 5: + request = $clone(_selection[1][0], writeRequest); + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = request.frame.ver); + (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1] = request.frame.cmd); + $clone(binary.LittleEndian, binary.littleEndian).PutUint16($subslice(buf, 2), ((request.frame.data.$length << 16 >>> 16))); + $clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(buf, 4), request.frame.sid); + /* */ if (vec.$length > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (vec.$length > 0) { */ case 7: + (0 >= vec.$length ? ($throwRuntimeError("index out of range"), undefined) : vec.$array[vec.$offset + 0] = $subslice(buf, 0, 8)); + (1 >= vec.$length ? ($throwRuntimeError("index out of range"), undefined) : vec.$array[vec.$offset + 1] = request.frame.data); + _r$1 = bw.WriteBuffers(vec); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + err = _tuple$1[1]; + $s = 9; continue; + /* } else { */ case 8: + $copySlice($subslice(buf, 8), request.frame.data); + _r$2 = s.conn.Write($subslice(buf, 0, (8 + request.frame.data.$length >> 0))); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + n = _tuple$2[0]; + err = _tuple$2[1]; + /* } */ case 9: + n = n - (8) >> 0; + if (n < 0) { + n = 0; + } + result = new writeResult.ptr(n, err); + $r = $send(request.result, $clone($clone(result, writeResult), writeResult)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $close(request.result); + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13: + $r = s.notifyWriteError(err); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 14: + /* } */ case 6: + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.sendLoop }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.buf = buf; $f.bw = bw; $f.err = err; $f.n = n; $f.ok = ok; $f.request = request; $f.result = result; $f.s = s; $f.vec = vec; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.sendLoop = function() { return this.$val.sendLoop(); }; + Session.ptr.prototype.writeFrame = function(f) { + var _r, _tuple, err, f, n, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + s = this; + _r = s.writeFrameInternal($clone(f, Frame), $chanNil, new $Uint64(0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.writeFrame }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.writeFrame = function(f) { return this.$val.writeFrame(f); }; + Session.ptr.prototype.writeFrameInternal = function(f, deadline, prio) { + var _r, _r$1, _selection, _selection$1, deadline, f, prio, req, result, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _selection$1 = $f._selection$1; deadline = $f.deadline; f = $f.f; prio = $f.prio; req = $f.req; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + req = new writeRequest.ptr(prio, $clone(f, Frame), new $Chan(writeResult, 1)); + _r = $select([[s.shaper, $clone(req, writeRequest)], [s.die], [s.chSocketWriteError], [deadline]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = _r; + /* */ if (_selection[0] === 0) { $s = 2; continue; } + /* */ if (_selection[0] === 1) { $s = 3; continue; } + /* */ if (_selection[0] === 2) { $s = 4; continue; } + /* */ if (_selection[0] === 3) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_selection[0] === 0) { */ case 2: + $s = 6; continue; + /* } else if (_selection[0] === 1) { */ case 3: + $s = -1; return [0, io.ErrClosedPipe]; + /* } else if (_selection[0] === 2) { */ case 4: + $s = -1; return [0, $assertType(s.socketWriteError.Load(), $error)]; + /* } else if (_selection[0] === 3) { */ case 5: + $s = -1; return [0, $pkg.ErrTimeout]; + /* } */ case 6: + _r$1 = $select([[req.result], [s.die], [s.chSocketWriteError], [deadline]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection$1 = _r$1; + if (_selection$1[0] === 0) { + result = $clone(_selection$1[1][0], writeResult); + $s = -1; return [result.n, result.err]; + } else if (_selection$1[0] === 1) { + $s = -1; return [0, io.ErrClosedPipe]; + } else if (_selection$1[0] === 2) { + $s = -1; return [0, $assertType(s.socketWriteError.Load(), $error)]; + } else if (_selection$1[0] === 3) { + $s = -1; return [0, $pkg.ErrTimeout]; + } + $s = -1; return [0, $ifaceNil]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.writeFrameInternal }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._selection$1 = _selection$1; $f.deadline = deadline; $f.f = f; $f.prio = prio; $f.req = req; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Session.prototype.writeFrameInternal = function(f, deadline, prio) { return this.$val.writeFrameInternal(f, deadline, prio); }; + shaperHeap.prototype.Len = function() { + var h; + h = this; + return h.$length; + }; + $ptrType(shaperHeap).prototype.Len = function() { return this.$get().Len(); }; + shaperHeap.prototype.Less = function(i, j) { + var h, i, j, x, x$1; + h = this; + return (x = ((i < 0 || i >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + i]).prio, x$1 = ((j < 0 || j >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + j]).prio, (x.$high < x$1.$high || (x.$high === x$1.$high && x.$low < x$1.$low))); + }; + $ptrType(shaperHeap).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; + shaperHeap.prototype.Swap = function(i, j) { + var _tmp, _tmp$1, h, i, j; + h = this; + _tmp = $clone(((j < 0 || j >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + j]), writeRequest); + _tmp$1 = $clone(((i < 0 || i >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + i]), writeRequest); + writeRequest.copy(((i < 0 || i >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + i]), _tmp); + writeRequest.copy(((j < 0 || j >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + j]), _tmp$1); + }; + $ptrType(shaperHeap).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; + $ptrType(shaperHeap).prototype.Push = function(x) { + var h, x; + h = this; + h.$set($append(h.$get(), $assertType(x, writeRequest))); + }; + $ptrType(shaperHeap).prototype.Pop = function() { + var h, n, old, x, x$1; + h = this; + old = h.$get(); + n = old.$length; + x$1 = $clone((x = n - 1 >> 0, ((x < 0 || x >= old.$length) ? ($throwRuntimeError("index out of range"), undefined) : old.$array[old.$offset + x])), writeRequest); + h.$set($subslice(old, 0, (n - 1 >> 0))); + return new x$1.constructor.elem(x$1); + }; + newStream = function(id, frameSize, sess) { + var frameSize, id, s, sess; + s = new Stream.ptr(0, ptrType$2.nil, sliceType$3.nil, sliceType$3.nil, new sync.Mutex.ptr(0, 0), 0, $chanNil, $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new atomic.Value.ptr($ifaceNil), new atomic.Value.ptr($ifaceNil), 0, 0, 0, 0, 0, $chanNil); + s.id = id; + s.chReadEvent = new $Chan(structType, 1); + s.chUpdate = new $Chan(structType, 1); + s.frameSize = frameSize; + s.sess = sess; + s.die = new $Chan(structType, 0); + s.chFinEvent = new $Chan(structType, 0); + s.peerWindow = 262144; + return s; + }; + Stream.ptr.prototype.ID = function() { + var s; + s = this; + return s.id; + }; + Stream.prototype.ID = function() { return this.$val.ID(); }; + Stream.ptr.prototype.Read = function(b) { + var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, ew, n, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; err = $f.err; ew = $f.ew; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + s = this; + /* while (true) { */ case 1: + _r = s.tryRead(b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + /* */ if ($interfaceIsEqual(err, $pkg.ErrWouldBlock)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(err, $pkg.ErrWouldBlock)) { */ case 4: + _r$1 = s.waitRead(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ew = _r$1; + if (!($interfaceIsEqual(ew, $ifaceNil))) { + _tmp = 0; + _tmp$1 = ew; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + $s = 6; continue; + /* } else { */ case 5: + _tmp$2 = n; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* } */ case 6: + /* } */ $s = 1; continue; case 2: + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.ew = ew; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.Read = function(b) { return this.$val.Read(b); }; + Stream.ptr.prototype.tryRead = function(b) { + var _r, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, err, n, s, x, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + s = this; + /* */ if (s.sess.config.Version === 2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.sess.config.Version === 2) { */ case 1: + _r = s.tryReadv2(b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* } */ case 2: + if (b.$length === 0) { + _tmp = 0; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + $r = s.bufferLock.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (s.buffers.$length > 0) { + n = $copySlice(b, (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + (x$2 = s.buffers, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = s.buffers, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), n))); + if ((x$3 = s.buffers, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).$length === 0) { + (x$4 = s.buffers, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = sliceType$1.nil)); + s.buffers = $subslice(s.buffers, 1); + defaultAllocator.Put((x$5 = s.heads, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))); + s.heads = $subslice(s.heads, 1); + } + } + $r = s.bufferLock.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (n > 0) { + s.sess.returnTokens(n); + _tmp$2 = n; + _tmp$3 = $ifaceNil; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + _selection = $select([[s.die], []]); + if (_selection[0] === 0) { + _tmp$4 = 0; + _tmp$5 = io.EOF; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } else if (_selection[0] === 1) { + _tmp$6 = 0; + _tmp$7 = $pkg.ErrWouldBlock; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + } + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.tryRead }; } $f._r = _r; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.tryRead = function(b) { return this.$val.tryRead(b); }; + Stream.ptr.prototype.tryReadv2 = function(b) { + var _q, _r, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, b, err, err$1, n, notifyConsumed, s, x, x$1, x$2, x$3, x$4, x$5, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; b = $f.b; err = $f.err; err$1 = $f.err$1; n = $f.n; notifyConsumed = $f.notifyConsumed; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + s = this; + if (b.$length === 0) { + _tmp = 0; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + notifyConsumed = 0; + $r = s.bufferLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (s.buffers.$length > 0) { + n = $copySlice(b, (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + (x$2 = s.buffers, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = s.buffers, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), n))); + if ((x$3 = s.buffers, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).$length === 0) { + (x$4 = s.buffers, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = sliceType$1.nil)); + s.buffers = $subslice(s.buffers, 1); + defaultAllocator.Put((x$5 = s.heads, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))); + s.heads = $subslice(s.heads, 1); + } + } + s.numRead = s.numRead + (((n >>> 0))) >>> 0; + s.incr = s.incr + (((n >>> 0))) >>> 0; + if (s.incr >= (((_q = s.sess.config.MaxStreamBuffer / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >>> 0)) || (s.numRead === ((n >>> 0)))) { + notifyConsumed = s.numRead; + s.incr = 0; + } + $r = s.bufferLock.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (n > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (n > 0) { */ case 3: + s.sess.returnTokens(n); + /* */ if (notifyConsumed > 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (notifyConsumed > 0) { */ case 5: + _r = s.sendWindowUpdate(notifyConsumed); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err$1 = _r; + _tmp$2 = n; + _tmp$3 = err$1; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* } else { */ case 6: + _tmp$4 = n; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + /* } */ case 7: + /* } */ case 4: + _selection = $select([[s.die], []]); + if (_selection[0] === 0) { + _tmp$6 = 0; + _tmp$7 = io.EOF; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + } else if (_selection[0] === 1) { + _tmp$8 = 0; + _tmp$9 = $pkg.ErrWouldBlock; + n = _tmp$8; + err = _tmp$9; + $s = -1; return [n, err]; + } + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.tryReadv2 }; } $f._q = _q; $f._r = _r; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.notifyConsumed = notifyConsumed; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.tryReadv2 = function(b) { return this.$val.tryReadv2(b); }; + Stream.ptr.prototype.WriteTo = function(w) { + var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, buf, err, ew, ew$1, n, nw, s, w, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; ew = $f.ew; ew$1 = $f.ew$1; n = $f.n; nw = $f.nw; s = $f.s; w = $f.w; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + s = this; + /* */ if (s.sess.config.Version === 2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.sess.config.Version === 2) { */ case 1: + _r = s.writeTov2(w); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* } */ case 2: + /* while (true) { */ case 4: + buf = sliceType$1.nil; + $r = s.bufferLock.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (s.buffers.$length > 0) { + buf = (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + s.buffers = $subslice(s.buffers, 1); + s.heads = $subslice(s.heads, 1); + } + $r = s.bufferLock.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(buf === sliceType$1.nil)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(buf === sliceType$1.nil)) { */ case 8: + _r$1 = w.Write(buf); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + nw = _tuple$1[0]; + ew = _tuple$1[1]; + s.sess.returnTokens(buf.$length); + defaultAllocator.Put(buf); + if (nw > 0) { + n = (x$1 = (new $Int64(0, nw)), new $Int64(n.$high + x$1.$high, n.$low + x$1.$low)); + } + if (!($interfaceIsEqual(ew, $ifaceNil))) { + _tmp = n; + _tmp$1 = ew; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + $s = 10; continue; + /* } else { */ case 9: + _r$2 = s.waitRead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ew$1 = _r$2; + if (!($interfaceIsEqual(ew$1, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = ew$1; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* } */ case 10: + /* } */ $s = 4; continue; case 5: + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.WriteTo }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.ew = ew; $f.ew$1 = ew$1; $f.n = n; $f.nw = nw; $f.s = s; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); }; + Stream.ptr.prototype.writeTov2 = function(w) { + var _q, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, err, err$1, ew, ew$1, n, notifyConsumed, nw, s, w, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; buf = $f.buf; err = $f.err; err$1 = $f.err$1; ew = $f.ew; ew$1 = $f.ew$1; n = $f.n; notifyConsumed = $f.notifyConsumed; nw = $f.nw; s = $f.s; w = $f.w; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + s = this; + /* while (true) { */ case 1: + notifyConsumed = 0; + buf = sliceType$1.nil; + $r = s.bufferLock.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (s.buffers.$length > 0) { + buf = (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + s.buffers = $subslice(s.buffers, 1); + s.heads = $subslice(s.heads, 1); + } + s.numRead = s.numRead + (((buf.$length >>> 0))) >>> 0; + s.incr = s.incr + (((buf.$length >>> 0))) >>> 0; + if (s.incr >= (((_q = s.sess.config.MaxStreamBuffer / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >>> 0)) || (s.numRead === ((buf.$length >>> 0)))) { + notifyConsumed = s.numRead; + s.incr = 0; + } + $r = s.bufferLock.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(buf === sliceType$1.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(buf === sliceType$1.nil)) { */ case 5: + _r = w.Write(buf); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + nw = _tuple[0]; + ew = _tuple[1]; + s.sess.returnTokens(buf.$length); + defaultAllocator.Put(buf); + if (nw > 0) { + n = (x$1 = (new $Int64(0, nw)), new $Int64(n.$high + x$1.$high, n.$low + x$1.$low)); + } + if (!($interfaceIsEqual(ew, $ifaceNil))) { + _tmp = n; + _tmp$1 = ew; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* */ if (notifyConsumed > 0) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (notifyConsumed > 0) { */ case 9: + _r$1 = s.sendWindowUpdate(notifyConsumed); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$1 = _r$1; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = err$1; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* } */ case 10: + $s = 7; continue; + /* } else { */ case 6: + _r$2 = s.waitRead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ew$1 = _r$2; + if (!($interfaceIsEqual(ew$1, $ifaceNil))) { + _tmp$4 = n; + _tmp$5 = ew$1; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + /* } */ case 7: + /* } */ $s = 1; continue; case 2: + $s = -1; return [n, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.writeTov2 }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.ew = ew; $f.ew$1 = ew$1; $f.n = n; $f.notifyConsumed = notifyConsumed; $f.nw = nw; $f.s = s; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.writeTov2 = function(w) { return this.$val.writeTov2(w); }; + Stream.ptr.prototype.sendWindowUpdate = function(consumed) { + var _r, _tuple, _tuple$1, consumed, d, deadline, err, frame, hdr, ok, s, timer, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; consumed = $f.consumed; d = $f.d; deadline = $f.deadline; err = $f.err; frame = $f.frame; hdr = $f.hdr; ok = $f.ok; s = $f.s; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + s = this; + timer = ptrType$6.nil; + deadline = $chanNil; + _tuple = $assertType(s.readDeadline.Load(), time.Time, true); + d = $clone(_tuple[0], time.Time); + ok = _tuple[1]; + if (ok && !$clone(d, time.Time).IsZero()) { + timer = time.NewTimer(time.Until($clone(d, time.Time))); + $deferred.push([$methodVal(timer, "Stop"), []]); + deadline = timer.C; + } + frame = $clone(newFrame(((s.sess.config.Version << 24 >>> 24)), 4, s.id), Frame); + hdr = arrayType.zero(); + $clone(binary.LittleEndian, binary.littleEndian).PutUint32(new sliceType$1(hdr), consumed); + $clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType$1(hdr), 4), ((s.sess.config.MaxStreamBuffer >>> 0))); + frame.data = new sliceType$1(hdr); + _r = s.sess.writeFrameInternal($clone(frame, Frame), deadline, new $Uint64(0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + err = _tuple$1[1]; + $s = -1; return err; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.sendWindowUpdate }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.consumed = consumed; $f.d = d; $f.deadline = deadline; $f.err = err; $f.frame = frame; $f.hdr = hdr; $f.ok = ok; $f.s = s; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Stream.prototype.sendWindowUpdate = function(consumed) { return this.$val.sendWindowUpdate(consumed); }; + Stream.ptr.prototype.waitRead = function() { + var _r, _selection, _tuple, d, deadline, ok, s, timer, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _tuple = $f._tuple; d = $f.d; deadline = $f.deadline; ok = $f.ok; s = $f.s; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + s = this; + timer = ptrType$6.nil; + deadline = $chanNil; + _tuple = $assertType(s.readDeadline.Load(), time.Time, true); + d = $clone(_tuple[0], time.Time); + ok = _tuple[1]; + if (ok && !$clone(d, time.Time).IsZero()) { + timer = time.NewTimer(time.Until($clone(d, time.Time))); + $deferred.push([$methodVal(timer, "Stop"), []]); + deadline = timer.C; + } + _r = $select([[s.chReadEvent], [s.chFinEvent], [s.sess.chSocketReadError], [s.sess.chProtoError], [deadline], [s.die]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = _r; + if (_selection[0] === 0) { + $s = -1; return $ifaceNil; + } else if (_selection[0] === 1) { + $s = -1; return io.EOF; + } else if (_selection[0] === 2) { + $s = -1; return $assertType(s.sess.socketReadError.Load(), $error); + } else if (_selection[0] === 3) { + $s = -1; return $assertType(s.sess.protoError.Load(), $error); + } else if (_selection[0] === 4) { + $s = -1; return $pkg.ErrTimeout; + } else if (_selection[0] === 5) { + $s = -1; return io.ErrClosedPipe; + } + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.waitRead }; } $f._r = _r; $f._selection = _selection; $f._tuple = _tuple; $f.d = d; $f.deadline = deadline; $f.ok = ok; $f.s = s; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Stream.prototype.waitRead = function() { return this.$val.waitRead(); }; + Stream.ptr.prototype.Write = function(b) { + var _r, _r$1, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, b, bts, d, deadline, err, err$1, frame, n, n$1, ok, s, sent, sz, timer, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; bts = $f.bts; d = $f.d; deadline = $f.deadline; err = $f.err; err$1 = $f.err$1; frame = $f.frame; n = $f.n; n$1 = $f.n$1; ok = $f.ok; s = $f.s; sent = $f.sent; sz = $f.sz; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + n = 0; + err = $ifaceNil; + s = this; + /* */ if (s.sess.config.Version === 2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.sess.config.Version === 2) { */ case 1: + _r = s.writeV2(b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $s = -1; return [n, err]; + /* } */ case 2: + deadline = $chanNil; + _tuple$1 = $assertType(s.writeDeadline.Load(), time.Time, true); + d = $clone(_tuple$1[0], time.Time); + ok = _tuple$1[1]; + if (ok && !$clone(d, time.Time).IsZero()) { + timer = time.NewTimer(time.Until($clone(d, time.Time))); + $deferred.push([$methodVal(timer, "Stop"), []]); + deadline = timer.C; + } + _selection = $select([[s.die], []]); + if (_selection[0] === 0) { + _tmp = 0; + _tmp$1 = io.ErrClosedPipe; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } else if (_selection[0] === 1) { + } + sent = 0; + frame = $clone(newFrame(((s.sess.config.Version << 24 >>> 24)), 2, s.id), Frame); + bts = b; + /* while (true) { */ case 4: + /* if (!(bts.$length > 0)) { break; } */ if(!(bts.$length > 0)) { $s = 5; continue; } + sz = bts.$length; + if (sz > s.frameSize) { + sz = s.frameSize; + } + frame.data = $subslice(bts, 0, sz); + bts = $subslice(bts, sz); + _r$1 = s.sess.writeFrameInternal($clone(frame, Frame), deadline, (new $Uint64(0, s.numWritten))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + n$1 = _tuple$2[0]; + err$1 = _tuple$2[1]; + s.numWritten = s.numWritten + (1) >>> 0; + sent = sent + (n$1) >> 0; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$2 = sent; + _tmp$3 = err$1; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* } */ $s = 4; continue; case 5: + _tmp$4 = sent; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.bts = bts; $f.d = d; $f.deadline = deadline; $f.err = err; $f.err$1 = err$1; $f.frame = frame; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.s = s; $f.sent = sent; $f.sz = sz; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Stream.prototype.Write = function(b) { return this.$val.Write(b); }; + Stream.ptr.prototype.writeV2 = function(b) { + var _r, _r$1, _selection, _selection$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, bts, d, deadline, err, err$1, frame, inflight, n, n$1, ok, s, sent, sz, timer, win, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _selection$1 = $f._selection$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; bts = $f.bts; d = $f.d; deadline = $f.deadline; err = $f.err; err$1 = $f.err$1; frame = $f.frame; inflight = $f.inflight; n = $f.n; n$1 = $f.n$1; ok = $f.ok; s = $f.s; sent = $f.sent; sz = $f.sz; timer = $f.timer; win = $f.win; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + n = 0; + err = $ifaceNil; + s = this; + if (b.$length === 0) { + _tmp = 0; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _selection = $select([[s.die], []]); + if (_selection[0] === 0) { + _tmp$2 = 0; + _tmp$3 = io.ErrClosedPipe; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } else if (_selection[0] === 1) { + } + deadline = $chanNil; + _tuple = $assertType(s.writeDeadline.Load(), time.Time, true); + d = $clone(_tuple[0], time.Time); + ok = _tuple[1]; + if (ok && !$clone(d, time.Time).IsZero()) { + timer = time.NewTimer(time.Until($clone(d, time.Time))); + $deferred.push([$methodVal(timer, "Stop"), []]); + deadline = timer.C; + } + sent = 0; + frame = $clone(newFrame(((s.sess.config.Version << 24 >>> 24)), 2, s.id), Frame); + /* while (true) { */ case 1: + bts = sliceType$1.nil; + inflight = (((atomic.LoadUint32((s.$ptr_numWritten || (s.$ptr_numWritten = new ptrType$7(function() { return this.$target.numWritten; }, function($v) { this.$target.numWritten = $v; }, s)))) - atomic.LoadUint32((s.$ptr_peerConsumed || (s.$ptr_peerConsumed = new ptrType$7(function() { return this.$target.peerConsumed; }, function($v) { this.$target.peerConsumed = $v; }, s)))) >>> 0) >> 0)); + if (inflight < 0) { + _tmp$4 = 0; + _tmp$5 = $pkg.ErrConsumed; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + win = ((atomic.LoadUint32((s.$ptr_peerWindow || (s.$ptr_peerWindow = new ptrType$7(function() { return this.$target.peerWindow; }, function($v) { this.$target.peerWindow = $v; }, s)))) >> 0)) - inflight >> 0; + /* */ if (win > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (win > 0) { */ case 3: + if (win > ((b.$length >> 0))) { + bts = b; + b = sliceType$1.nil; + } else { + bts = $subslice(b, 0, win); + b = $subslice(b, win); + } + /* while (true) { */ case 5: + /* if (!(bts.$length > 0)) { break; } */ if(!(bts.$length > 0)) { $s = 6; continue; } + sz = bts.$length; + if (sz > s.frameSize) { + sz = s.frameSize; + } + frame.data = $subslice(bts, 0, sz); + bts = $subslice(bts, sz); + _r = s.sess.writeFrameInternal($clone(frame, Frame), deadline, (new $Uint64(0, atomic.LoadUint32((s.$ptr_numWritten || (s.$ptr_numWritten = new ptrType$7(function() { return this.$target.numWritten; }, function($v) { this.$target.numWritten = $v; }, s))))))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n$1 = _tuple$1[0]; + err$1 = _tuple$1[1]; + atomic.AddUint32((s.$ptr_numWritten || (s.$ptr_numWritten = new ptrType$7(function() { return this.$target.numWritten; }, function($v) { this.$target.numWritten = $v; }, s))), ((sz >>> 0))); + sent = sent + (n$1) >> 0; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$6 = sent; + _tmp$7 = err$1; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + } + /* } */ $s = 5; continue; case 6: + /* } */ case 4: + /* */ if (b.$length > 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (b.$length > 0) { */ case 8: + _r$1 = $select([[s.chFinEvent], [s.die], [deadline], [s.sess.chSocketWriteError], [s.chUpdate]]); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection$1 = _r$1; + if (_selection$1[0] === 0) { + _tmp$8 = 0; + _tmp$9 = io.EOF; + n = _tmp$8; + err = _tmp$9; + $s = -1; return [n, err]; + } else if (_selection$1[0] === 1) { + _tmp$10 = sent; + _tmp$11 = io.ErrClosedPipe; + n = _tmp$10; + err = _tmp$11; + $s = -1; return [n, err]; + } else if (_selection$1[0] === 2) { + _tmp$12 = sent; + _tmp$13 = $pkg.ErrTimeout; + n = _tmp$12; + err = _tmp$13; + $s = -1; return [n, err]; + } else if (_selection$1[0] === 3) { + _tmp$14 = sent; + _tmp$15 = $assertType(s.sess.socketWriteError.Load(), $error); + n = _tmp$14; + err = _tmp$15; + $s = -1; return [n, err]; + } else if (_selection$1[0] === 4) { + /* continue; */ $s = 1; continue; + } + $s = 10; continue; + /* } else { */ case 9: + _tmp$16 = sent; + _tmp$17 = $ifaceNil; + n = _tmp$16; + err = _tmp$17; + $s = -1; return [n, err]; + /* } */ case 10: + /* } */ $s = 1; continue; case 2: + $s = -1; return [n, err]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.writeV2 }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.bts = bts; $f.d = d; $f.deadline = deadline; $f.err = err; $f.err$1 = err$1; $f.frame = frame; $f.inflight = inflight; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.s = s; $f.sent = sent; $f.sz = sz; $f.timer = timer; $f.win = win; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Stream.prototype.writeV2 = function(b) { return this.$val.writeV2(b); }; + Stream.ptr.prototype.Close = function() { + var _r, _tuple, err, once, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; once = $f.once; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + once = [once]; + s = [s]; + s[0] = this; + once[0] = false; + err = $ifaceNil; + $r = s[0].dieOnce.Do((function(once, s) { return function() { + $close(s[0].die); + once[0] = true; + }; })(once, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (once[0]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (once[0]) { */ case 2: + _r = s[0].sess.writeFrame($clone(newFrame(((s[0].sess.config.Version << 24 >>> 24)), 1, s[0].id), Frame)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $r = s[0].sess.streamClosed(s[0].id); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return err; + /* } else { */ case 3: + $s = -1; return io.ErrClosedPipe; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.Close }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.once = once; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.Close = function() { return this.$val.Close(); }; + Stream.ptr.prototype.GetDieCh = function() { + var s; + s = this; + return s.die; + }; + Stream.prototype.GetDieCh = function() { return this.$val.GetDieCh(); }; + Stream.ptr.prototype.SetReadDeadline = function(t) { + var s, t; + s = this; + s.readDeadline.Store(new t.constructor.elem(t)); + s.notifyReadEvent(); + return $ifaceNil; + }; + Stream.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; + Stream.ptr.prototype.SetWriteDeadline = function(t) { + var s, t; + s = this; + s.writeDeadline.Store(new t.constructor.elem(t)); + return $ifaceNil; + }; + Stream.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; + Stream.ptr.prototype.SetDeadline = function(t) { + var err, err$1, s, t; + s = this; + err = s.SetReadDeadline($clone(t, time.Time)); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + err$1 = s.SetWriteDeadline($clone(t, time.Time)); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + return err$1; + } + return $ifaceNil; + }; + Stream.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; + Stream.ptr.prototype.sessionClose = function() { + var s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = [s]; + s[0] = this; + $r = s[0].dieOnce.Do((function(s) { return function() { + $close(s[0].die); + }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.sessionClose }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.sessionClose = function() { return this.$val.sessionClose(); }; + Stream.ptr.prototype.LocalAddr = function() { + var _r, _tuple, ok, s, ts, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _tuple = $assertType(s.sess.conn, interfaceType, true); + ts = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = ts.LocalAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.LocalAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.LocalAddr = function() { return this.$val.LocalAddr(); }; + Stream.ptr.prototype.RemoteAddr = function() { + var _r, _tuple, ok, s, ts, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = this; + _tuple = $assertType(s.sess.conn, interfaceType$1, true); + ts = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = ts.RemoteAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $s = -1; return _r; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.RemoteAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); }; + Stream.ptr.prototype.pushBytes = function(buf) { + var buf, err, s, written, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; buf = $f.buf; err = $f.err; s = $f.s; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + written = 0; + err = $ifaceNil; + s = this; + $r = s.bufferLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s.buffers = $append(s.buffers, buf); + s.heads = $append(s.heads, buf); + $r = s.bufferLock.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [written, err]; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.pushBytes }; } $f.buf = buf; $f.err = err; $f.s = s; $f.written = written; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.pushBytes = function(buf) { return this.$val.pushBytes(buf); }; + Stream.ptr.prototype.recycleTokens = function() { + var _i, _ref, k, n, s, x, x$1, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; k = $f.k; n = $f.n; s = $f.s; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + n = 0; + s = this; + $r = s.bufferLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = s.buffers; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + k = _i; + n = n + ((x = s.buffers, ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k])).$length) >> 0; + defaultAllocator.Put((x$1 = s.heads, ((k < 0 || k >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + k]))); + _i++; + } + s.buffers = sliceType$3.nil; + s.heads = sliceType$3.nil; + $r = s.bufferLock.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return n; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.recycleTokens }; } $f._i = _i; $f._ref = _ref; $f.k = k; $f.n = n; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.recycleTokens = function() { return this.$val.recycleTokens(); }; + Stream.ptr.prototype.notifyReadEvent = function() { + var _selection, s, $r; + /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; s = $f.s; $r = $f.$r; } + s = this; + _selection = $select([[s.chReadEvent, new structType.ptr()], []]); + if (_selection[0] === 0) { + } else if (_selection[0] === 1) { + } + /* */ if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.notifyReadEvent }; } $f._selection = _selection; $f.s = s; $f.$r = $r; return $f; + }; + Stream.prototype.notifyReadEvent = function() { return this.$val.notifyReadEvent(); }; + Stream.ptr.prototype.update = function(consumed, window) { + var _selection, consumed, s, window, $r; + /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; consumed = $f.consumed; s = $f.s; window = $f.window; $r = $f.$r; } + s = this; + atomic.StoreUint32((s.$ptr_peerConsumed || (s.$ptr_peerConsumed = new ptrType$7(function() { return this.$target.peerConsumed; }, function($v) { this.$target.peerConsumed = $v; }, s))), consumed); + atomic.StoreUint32((s.$ptr_peerWindow || (s.$ptr_peerWindow = new ptrType$7(function() { return this.$target.peerWindow; }, function($v) { this.$target.peerWindow = $v; }, s))), window); + _selection = $select([[s.chUpdate, new structType.ptr()], []]); + if (_selection[0] === 0) { + } else if (_selection[0] === 1) { + } + /* */ if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.update }; } $f._selection = _selection; $f.consumed = consumed; $f.s = s; $f.window = window; $f.$r = $r; return $f; + }; + Stream.prototype.update = function(consumed, window) { return this.$val.update(consumed, window); }; + Stream.ptr.prototype.fin = function() { + var s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = [s]; + s[0] = this; + $r = s[0].finEventOnce.Do((function(s) { return function() { + $close(s[0].chFinEvent); + }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.fin }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + Stream.prototype.fin = function() { return this.$val.fin(); }; + ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$Int], [sliceType$1], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]; + rawHeader.methods = [{prop: "Version", name: "Version", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "Cmd", name: "Cmd", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "StreamID", name: "StreamID", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + updHeader.methods = [{prop: "Consumed", name: "Consumed", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Window", name: "Window", pkg: "", typ: $funcType([], [$Uint32], false)}]; + ptrType$2.methods = [{prop: "OpenStream", name: "OpenStream", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([], [io.ReadWriteCloser, $error], false)}, {prop: "AcceptStream", name: "AcceptStream", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [io.ReadWriteCloser, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "notifyBucket", name: "notifyBucket", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "notifyReadError", name: "notifyReadError", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$error], [], false)}, {prop: "notifyWriteError", name: "notifyWriteError", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$error], [], false)}, {prop: "notifyProtoError", name: "notifyProtoError", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$error], [], false)}, {prop: "IsClosed", name: "IsClosed", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "NumStreams", name: "NumStreams", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "streamClosed", name: "streamClosed", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Uint32], [], false)}, {prop: "returnTokens", name: "returnTokens", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Int], [], false)}, {prop: "recvLoop", name: "recvLoop", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "keepalive", name: "keepalive", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "shaperLoop", name: "shaperLoop", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "sendLoop", name: "sendLoop", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([Frame], [$Int, $error], false)}, {prop: "writeFrameInternal", name: "writeFrameInternal", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([Frame, chanType$1, $Uint64], [$Int, $error], false)}]; + shaperHeap.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$5.methods = [{prop: "Push", name: "Push", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [$emptyInterface], false)}]; + ptrType$3.methods = [{prop: "ID", name: "ID", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "tryRead", name: "tryRead", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "tryReadv2", name: "tryReadv2", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "writeTov2", name: "writeTov2", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "sendWindowUpdate", name: "sendWindowUpdate", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Uint32], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "writeV2", name: "writeV2", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetDieCh", name: "GetDieCh", pkg: "", typ: $funcType([], [chanType$5], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "sessionClose", name: "sessionClose", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "pushBytes", name: "pushBytes", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "recycleTokens", name: "recycleTokens", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [$Int], false)}, {prop: "notifyReadEvent", name: "notifyReadEvent", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "update", name: "update", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Uint32, $Uint32], [], false)}, {prop: "fin", name: "fin", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}]; + Allocator.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "buffers", name: "buffers", embedded: false, exported: false, typ: sliceType, tag: ""}]); + Frame.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "ver", name: "ver", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "cmd", name: "cmd", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "sid", name: "sid", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}]); + rawHeader.init($Uint8, 8); + updHeader.init($Uint8, 8); + Config.init("", [{prop: "Version", name: "Version", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "KeepAliveInterval", name: "KeepAliveInterval", embedded: false, exported: true, typ: time.Duration, tag: ""}, {prop: "KeepAliveTimeout", name: "KeepAliveTimeout", embedded: false, exported: true, typ: time.Duration, tag: ""}, {prop: "MaxFrameSize", name: "MaxFrameSize", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxReceiveBuffer", name: "MaxReceiveBuffer", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxStreamBuffer", name: "MaxStreamBuffer", embedded: false, exported: true, typ: $Int, tag: ""}]); + writeRequest.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "prio", name: "prio", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "frame", name: "frame", embedded: false, exported: false, typ: Frame, tag: ""}, {prop: "result", name: "result", embedded: false, exported: false, typ: chanType, tag: ""}]); + writeResult.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "n", name: "n", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + buffersWriter.init([{prop: "WriteBuffers", name: "WriteBuffers", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}]); + Session.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: io.ReadWriteCloser, tag: ""}, {prop: "config", name: "config", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "nextStreamID", name: "nextStreamID", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nextStreamIDLock", name: "nextStreamIDLock", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "bucket", name: "bucket", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "bucketNotify", name: "bucketNotify", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "streams", name: "streams", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "streamLock", name: "streamLock", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "die", name: "die", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "dieOnce", name: "dieOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "socketReadError", name: "socketReadError", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "socketWriteError", name: "socketWriteError", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "chSocketReadError", name: "chSocketReadError", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "chSocketWriteError", name: "chSocketWriteError", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "socketReadErrorOnce", name: "socketReadErrorOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "socketWriteErrorOnce", name: "socketWriteErrorOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "protoError", name: "protoError", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "chProtoError", name: "chProtoError", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "protoErrorOnce", name: "protoErrorOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "chAccepts", name: "chAccepts", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "dataReady", name: "dataReady", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "goAway", name: "goAway", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "deadline", name: "deadline", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "shaper", name: "shaper", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "writes", name: "writes", embedded: false, exported: false, typ: chanType$4, tag: ""}]); + shaperHeap.init(writeRequest); + Stream.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "id", name: "id", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "sess", name: "sess", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "buffers", name: "buffers", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "heads", name: "heads", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "bufferLock", name: "bufferLock", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "frameSize", name: "frameSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "chReadEvent", name: "chReadEvent", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "die", name: "die", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "dieOnce", name: "dieOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "chFinEvent", name: "chFinEvent", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "finEventOnce", name: "finEventOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "readDeadline", name: "readDeadline", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "writeDeadline", name: "writeDeadline", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "numRead", name: "numRead", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "numWritten", name: "numWritten", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "incr", name: "incr", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "peerConsumed", name: "peerConsumed", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "peerWindow", name: "peerWindow", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "chUpdate", name: "chUpdate", embedded: false, exported: false, typ: chanType$2, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = heap.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = net.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + defaultAllocator = ptrType.nil; + debruijinPos = $toNativeArray($kindUint8, [0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31]); + $pkg.ErrInvalidProtocol = errors.New("invalid protocol"); + $pkg.ErrConsumed = errors.New("peer consumed more than sent"); + $pkg.ErrGoAway = errors.New("stream id overflows, should start a new connection"); + $pkg.ErrTimeout = errors.New("timeout"); + $pkg.ErrWouldBlock = errors.New("operation would block on IO"); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/bridge"] = (function() { + var $pkg = {}, $init, fmt, proto, websocket, smux, io, time, Settings, sliceType, ptrType, Bridge; + fmt = $packages["fmt"]; + proto = $packages["github.com/xiaokangwang/BrowserBridge/proto"]; + websocket = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket"]; + smux = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux"]; + io = $packages["io"]; + time = $packages["time"]; + Settings = $pkg.Settings = $newType(0, $kindStruct, "bridge.Settings", true, "github.com/xiaokangwang/BrowserBridge/bridge", true, function(DialAddr_) { + this.$val = this; + if (arguments.length === 0) { + this.DialAddr = ""; + return; + } + this.DialAddr = DialAddr_; + }); + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(smux.Config); + Bridge = function(s) { + var DoConnect, _r, delay, s, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; DoConnect = $f.DoConnect; _r = $f._r; delay = $f.delay; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + s = [s]; + /* while (true) { */ case 1: + delay = time.NewTimer(new time.Duration(0, 1000000000)); + DoConnect = (function(s) { return function $b() { + var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, conn, err, err$1, smuxc, stream, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; conn = $f.conn; err = $f.err; err$1 = $f.err$1; smuxc = $f.smuxc; stream = $f.stream; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = websocket.Dial(s[0].DialAddr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + conn = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$1 = fmt.Println(new sliceType([err, new $String(s[0].DialAddr)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* } */ case 3: + _r$2 = smux.Client(conn, ptrType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + smuxc = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return; + } + /* while (true) { */ case 6: + stream = [stream]; + _r$3 = smuxc.Accept(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$2 = _r$3; + stream[0] = _tuple$2[0]; + err$1 = _tuple$2[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9: + _r$4 = fmt.Println(new sliceType([err$1])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + $s = -1; return; + /* } */ case 10: + $go((function(s, stream) { return function $b() { + var _r$10, _r$11, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple$3, _tuple$4, conn2, err$2, req, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; conn2 = $f.conn2; err$2 = $f.err$2; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r$5 = proto.ReadRequest(stream[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$3 = _r$5; + err$2 = _tuple$3[0]; + req = _tuple$3[1]; + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 2: + _r$6 = fmt.Println(new sliceType([err$2])); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + $s = -1; return; + /* } */ case 3: + _r$7 = websocket.Dial(req.Destination); /* */ $s = 5; case 5: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$4 = _r$7; + conn2 = _tuple$4[0]; + err$2 = _tuple$4[1]; + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 6: + _r$8 = fmt.Println(new sliceType([err$2])); /* */ $s = 8; case 8: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + _r$9 = stream[0].Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + $s = -1; return; + /* } */ case 7: + $go(io.Copy, [stream[0], conn2]); + _r$10 = io.Copy(conn2, stream[0]); /* */ $s = 10; case 10: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + _r$11 = stream[0].Close(); /* */ $s = 11; case 11: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.conn2 = conn2; $f.err$2 = err$2; $f.req = req; $f.$s = $s; $f.$r = $r; return $f; + }; })(s, stream), []); + /* } */ $s = 6; continue; case 7: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.conn = conn; $f.err = err; $f.err$1 = err$1; $f.smuxc = smuxc; $f.stream = stream; $f.$s = $s; $f.$r = $r; return $f; + }; })(s); + $r = DoConnect(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = $recv(delay.C); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r[0]; + /* } */ $s = 1; continue; case 2: + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Bridge }; } $f.DoConnect = DoConnect; $f._r = _r; $f.delay = delay; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Bridge = Bridge; + Settings.init("", [{prop: "DialAddr", name: "DialAddr", embedded: false, exported: true, typ: $String, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = proto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = websocket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = smux.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["log"] = (function() { + var $pkg = {}, $init, fmt, nosync, io, os, runtime, time, Logger, sliceType, arrayType, ptrType, sliceType$1, ptrType$1, std, New, itoa, Println; + fmt = $packages["fmt"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + io = $packages["io"]; + os = $packages["os"]; + runtime = $packages["runtime"]; + time = $packages["time"]; + Logger = $pkg.Logger = $newType(0, $kindStruct, "log.Logger", true, "log", true, function(mu_, prefix_, flag_, out_, buf_) { + this.$val = this; + if (arguments.length === 0) { + this.mu = new nosync.Mutex.ptr(false); + this.prefix = ""; + this.flag = 0; + this.out = $ifaceNil; + this.buf = sliceType.nil; + return; + } + this.mu = mu_; + this.prefix = prefix_; + this.flag = flag_; + this.out = out_; + this.buf = buf_; + }); + sliceType = $sliceType($Uint8); + arrayType = $arrayType($Uint8, 20); + ptrType = $ptrType(sliceType); + sliceType$1 = $sliceType($emptyInterface); + ptrType$1 = $ptrType(Logger); + New = function(out, prefix, flag) { + var flag, out, prefix; + return new Logger.ptr(new nosync.Mutex.ptr(false), prefix, flag, out, sliceType.nil); + }; + $pkg.New = New; + Logger.ptr.prototype.SetOutput = function(w) { + var l, w, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + l.out = w; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } + }; + Logger.prototype.SetOutput = function(w) { return this.$val.SetOutput(w); }; + itoa = function(buf, i, wid) { + var _q, b, bp, buf, i, q, wid; + b = arrayType.zero(); + bp = 19; + while (true) { + if (!(i >= 10 || wid > 1)) { break; } + wid = wid - (1) >> 0; + q = (_q = i / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + ((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = ((((48 + i >> 0) - ($imul(q, 10)) >> 0) << 24 >>> 24))); + bp = bp - (1) >> 0; + i = q; + } + ((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = (((48 + i >> 0) << 24 >>> 24))); + buf.$set($appendSlice(buf.$get(), $subslice(new sliceType(b), bp))); + }; + Logger.ptr.prototype.formatHeader = function(buf, t, file, line) { + var _q, _r, _r$1, _tuple, _tuple$1, buf, day, file, hour, i, l, line, min, month, sec, short$1, t, year, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; day = $f.day; file = $f.file; hour = $f.hour; i = $f.i; l = $f.l; line = $f.line; min = $f.min; month = $f.month; sec = $f.sec; short$1 = $f.short$1; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + buf.$set($appendSlice(buf.$get(), l.prefix)); + /* */ if (!(((l.flag & 7) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(((l.flag & 7) === 0))) { */ case 1: + if (!(((l.flag & 32) === 0))) { + time.Time.copy(t, $clone(t, time.Time).UTC()); + } + /* */ if (!(((l.flag & 1) === 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(((l.flag & 1) === 0))) { */ case 3: + _r = $clone(t, time.Time).Date(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + itoa(buf, year, 4); + buf.$set($append(buf.$get(), 47)); + itoa(buf, ((month >> 0)), 2); + buf.$set($append(buf.$get(), 47)); + itoa(buf, day, 2); + buf.$set($append(buf.$get(), 32)); + /* } */ case 4: + /* */ if (!(((l.flag & 6) === 0))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(((l.flag & 6) === 0))) { */ case 6: + _r$1 = $clone(t, time.Time).Clock(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + hour = _tuple$1[0]; + min = _tuple$1[1]; + sec = _tuple$1[2]; + itoa(buf, hour, 2); + buf.$set($append(buf.$get(), 58)); + itoa(buf, min, 2); + buf.$set($append(buf.$get(), 58)); + itoa(buf, sec, 2); + if (!(((l.flag & 4) === 0))) { + buf.$set($append(buf.$get(), 46)); + itoa(buf, (_q = $clone(t, time.Time).Nanosecond() / 1000, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 6); + } + buf.$set($append(buf.$get(), 32)); + /* } */ case 7: + /* } */ case 2: + if (!(((l.flag & 24) === 0))) { + if (!(((l.flag & 16) === 0))) { + short$1 = file; + i = file.length - 1 >> 0; + while (true) { + if (!(i > 0)) { break; } + if (file.charCodeAt(i) === 47) { + short$1 = $substring(file, (i + 1 >> 0)); + break; + } + i = i - (1) >> 0; + } + file = short$1; + } + buf.$set($appendSlice(buf.$get(), file)); + buf.$set($append(buf.$get(), 58)); + itoa(buf, line, -1); + buf.$set($appendSlice(buf.$get(), ": ")); + } + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.formatHeader }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.day = day; $f.file = file; $f.hour = hour; $f.i = i; $f.l = l; $f.line = line; $f.min = min; $f.month = month; $f.sec = sec; $f.short$1 = short$1; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.formatHeader = function(buf, t, file, line) { return this.$val.formatHeader(buf, t, file, line); }; + Logger.ptr.prototype.Output = function(calldepth, s) { + var _r, _tuple, _tuple$1, calldepth, err, file, l, line, now, ok, s, $s, $deferred, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; calldepth = $f.calldepth; err = $f.err; file = $f.file; l = $f.l; line = $f.line; now = $f.now; ok = $f.ok; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + now = $clone(time.Now(), time.Time); + file = ""; + line = 0; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + if (!(((l.flag & 24) === 0))) { + l.mu.Unlock(); + ok = false; + _tuple = runtime.Caller(calldepth); + file = _tuple[1]; + line = _tuple[2]; + ok = _tuple[3]; + if (!ok) { + file = "???"; + line = 0; + } + l.mu.Lock(); + } + l.buf = $subslice(l.buf, 0, 0); + $r = l.formatHeader((l.$ptr_buf || (l.$ptr_buf = new ptrType(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, l))), $clone(now, time.Time), file, line); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + l.buf = $appendSlice(l.buf, s); + if ((s.length === 0) || !((s.charCodeAt((s.length - 1 >> 0)) === 10))) { + l.buf = $append(l.buf, 10); + } + _r = l.out.Write(l.buf); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + err = _tuple$1[1]; + $s = -1; return err; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Output }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.calldepth = calldepth; $f.err = err; $f.file = file; $f.l = l; $f.line = line; $f.now = now; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } + }; + Logger.prototype.Output = function(calldepth, s) { return this.$val.Output(calldepth, s); }; + Logger.ptr.prototype.Printf = function(format, v) { + var _arg, _r, _r$1, format, l, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Printf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Printf = function(format, v) { return this.$val.Printf(format, v); }; + Logger.ptr.prototype.Print = function(v) { + var _arg, _r, _r$1, l, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Print }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Print = function(v) { return this.$val.Print(v); }; + Logger.ptr.prototype.Println = function(v) { + var _arg, _r, _r$1, l, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Println }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Println = function(v) { return this.$val.Println(v); }; + Logger.ptr.prototype.Fatal = function(v) { + var _arg, _r, _r$1, l, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + os.Exit(1); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatal }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Fatal = function(v) { return this.$val.Fatal(v); }; + Logger.ptr.prototype.Fatalf = function(format, v) { + var _arg, _r, _r$1, format, l, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + os.Exit(1); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Fatalf = function(format, v) { return this.$val.Fatalf(format, v); }; + Logger.ptr.prototype.Fatalln = function(v) { + var _arg, _r, _r$1, l, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + os.Exit(1); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalln }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Fatalln = function(v) { return this.$val.Fatalln(v); }; + Logger.ptr.prototype.Panic = function(v) { + var _r, _r$1, l, s, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $panic(new $String(s)); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panic }; } $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Panic = function(v) { return this.$val.Panic(v); }; + Logger.ptr.prototype.Panicf = function(format, v) { + var _r, _r$1, format, l, s, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $panic(new $String(s)); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicf }; } $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Panicf = function(format, v) { return this.$val.Panicf(format, v); }; + Logger.ptr.prototype.Panicln = function(v) { + var _r, _r$1, l, s, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + l = this; + _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $panic(new $String(s)); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicln }; } $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + Logger.prototype.Panicln = function(v) { return this.$val.Panicln(v); }; + Logger.ptr.prototype.Flags = function() { + var l, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + return l.flag; + /* */ } catch(err) { $err = err; return 0; } finally { $callDeferred($deferred, $err); } + }; + Logger.prototype.Flags = function() { return this.$val.Flags(); }; + Logger.ptr.prototype.SetFlags = function(flag) { + var flag, l, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + l.flag = flag; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } + }; + Logger.prototype.SetFlags = function(flag) { return this.$val.SetFlags(flag); }; + Logger.ptr.prototype.Prefix = function() { + var l, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + return l.prefix; + /* */ } catch(err) { $err = err; return ""; } finally { $callDeferred($deferred, $err); } + }; + Logger.prototype.Prefix = function() { return this.$val.Prefix(); }; + Logger.ptr.prototype.SetPrefix = function(prefix) { + var l, prefix, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + l.prefix = prefix; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } + }; + Logger.prototype.SetPrefix = function(prefix) { return this.$val.SetPrefix(prefix); }; + Logger.ptr.prototype.Writer = function() { + var l, $deferred; + /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); + l = this; + l.mu.Lock(); + $deferred.push([$methodVal(l.mu, "Unlock"), []]); + return l.out; + /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } + }; + Logger.prototype.Writer = function() { return this.$val.Writer(); }; + Println = function(v) { + var _arg, _r, _r$1, v, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = std.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: Println }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.Println = Println; + ptrType$1.methods = [{prop: "SetOutput", name: "SetOutput", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "formatHeader", name: "formatHeader", pkg: "log", typ: $funcType([ptrType, time.Time, $String, $Int], [], false)}, {prop: "Output", name: "Output", pkg: "", typ: $funcType([$Int, $String], [$error], false)}, {prop: "Printf", name: "Printf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Print", name: "Print", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Println", name: "Println", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatal", name: "Fatal", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatalf", name: "Fatalf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Fatalln", name: "Fatalln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panic", name: "Panic", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panicf", name: "Panicf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Panicln", name: "Panicln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Flags", name: "Flags", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetFlags", name: "SetFlags", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetPrefix", name: "SetPrefix", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Writer", name: "Writer", pkg: "", typ: $funcType([], [io.Writer], false)}]; + Logger.init("log", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "flag", name: "flag", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "out", name: "out", embedded: false, exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}]); + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + std = New(os.Stderr, "", 3); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"] = (function() { + var $pkg = {}, $init, fmt, js, bridge, log, url, sliceType, main; + fmt = $packages["fmt"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bridge = $packages["github.com/xiaokangwang/BrowserBridge/bridge"]; + log = $packages["log"]; + url = $packages["net/url"]; + sliceType = $sliceType($emptyInterface); + main = function() { + var _r, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _r = fmt.Println(new sliceType([new $String("V3")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $go((function $b() { + var _r$1, _r$2, _r$3, _tuple, err, host, link, urlw, $s, $r; + /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; err = $f.err; host = $f.host; link = $f.link; urlw = $f.urlw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + link = $internalize($global.window.location.href, $String); + _r$1 = url.Parse(link); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + urlw = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + $r = log.Println(new sliceType([err])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + host = urlw.Host; + _r$2 = fmt.Sprintf("ws://%v/link", new sliceType([new $String(host)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = log.Println(new sliceType([new $String(_r$2)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = fmt.Sprintf("ws://%v/link", new sliceType([new $String(host)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = bridge.Bridge(new bridge.Settings.ptr(_r$3)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $global.location.reload(); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.host = host; $f.link = link; $f.urlw = urlw; $f.$s = $s; $f.$r = $r; return $f; + }), []); + $s = -1; return; + /* */ } return; } if ($f === undefined) { $f = { $blk: main }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bridge.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = log.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = url.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ($pkg === $mainPkg) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($pkg === $mainPkg) { */ case 6: + $r = main(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $mainFinished = true; + /* } */ case 7: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$synthesizeMethods(); +var $mainPkg = $packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"]; +$packages["runtime"].$init(); +$go($mainPkg.$init, []); +$flushConsole(); + +}).call(this); +//# sourceMappingURL=bridgejs.js.map From 6c1abd9c6ab88c4798efbf0092cc3d97dd574672 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 21:36:20 +0000 Subject: [PATCH 20/60] added use browser forwarding setting to the websocket config --- infra/conf/transport_internet.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/infra/conf/transport_internet.go b/infra/conf/transport_internet.go index 80e18b58f..2dc5d14cf 100644 --- a/infra/conf/transport_internet.go +++ b/infra/conf/transport_internet.go @@ -135,10 +135,12 @@ func (c *TCPConfig) Build() (proto.Message, error) { } type WebSocketConfig struct { - Path string `json:"path"` - Path2 string `json:"Path"` // The key was misspelled. For backward compatibility, we have to keep track the old key. - Headers map[string]string `json:"headers"` - AcceptProxyProtocol bool `json:"acceptProxyProtocol"` + Path string `json:"path"` + Path2 string `json:"Path"` // The key was misspelled. For backward compatibility, we have to keep track the old key. + Headers map[string]string `json:"headers"` + AcceptProxyProtocol bool `json:"acceptProxyProtocol"` + MaxEarlyData int32 `json:"maxEarlyData"` + UseBrowserForwarding bool `json:"useBrowserForwarding"` } // Build implements Buildable. @@ -155,8 +157,10 @@ func (c *WebSocketConfig) Build() (proto.Message, error) { }) } config := &websocket.Config{ - Path: path, - Header: header, + Path: path, + Header: header, + MaxEarlyData: c.MaxEarlyData, + UseBrowserForwarding: c.UseBrowserForwarding, } if c.AcceptProxyProtocol { config.AcceptProxyProtocol = c.AcceptProxyProtocol From 69da0da0e48d02ecca974721d113484720c02fe3 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 21:37:06 +0000 Subject: [PATCH 21/60] added rename alias for index.html --- app/browserforwarder/forwarder.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/browserforwarder/forwarder.go b/app/browserforwarder/forwarder.go index 41e5a40e7..648a2cf5f 100644 --- a/app/browserforwarder/forwarder.go +++ b/app/browserforwarder/forwarder.go @@ -73,6 +73,9 @@ func (f *Forwarder) Close() error { func BridgeResource(rw http.ResponseWriter, r *http.Request, path string) { content := path + if content == "" { + content = "index.html" + } data, err := securedload.GetAssetSecured("browserforwarder/" + content) if err != nil { err = newError("cannot load necessary resources").Base(err) From aac35a833d9c7ca75f719b7731c7e7de2eaa98ba Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 21:40:38 +0000 Subject: [PATCH 22/60] added hash of browser forwarding asset to embedded hash --- common/platform/securedload/embedded.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/platform/securedload/embedded.go b/common/platform/securedload/embedded.go index bb29d8d85..0340cf79a 100644 --- a/common/platform/securedload/embedded.go +++ b/common/platform/securedload/embedded.go @@ -3,4 +3,7 @@ package securedload const allowedHashes = `SHA256 (!#project==v2fly) = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff SHA256 (!#version==embedded) = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff SHA256 (subscriptions/subscriptionsDefinition.v2flyTemplate) = 3f165dba7de0d7c506fbdff3275ea64b76f307df435316a3ea0914ee957793ab +SHA256 (browserforwarder/index.html) = 34f2c573724256421ade769bda18eeac85172bf0aaed00d7b90e41e843a2caef +SHA256 (browserforwarder/index.js) = 7de6de0bb7a1c8838f20fcba6bd9b02e1199d116b053836ad622184588d9a37e + ` From 27e7f93922c4e500b5955fd18404175b2fe41e01 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 21:43:49 +0000 Subject: [PATCH 23/60] exclude browser forwarder from conf build target --- app/browserforwarder/forwarder.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/browserforwarder/forwarder.go b/app/browserforwarder/forwarder.go index 648a2cf5f..b24cf356f 100644 --- a/app/browserforwarder/forwarder.go +++ b/app/browserforwarder/forwarder.go @@ -1,3 +1,5 @@ +// +build !confonly + package browserforwarder import ( From 664efadef00b9fae567229dfcc6c3c4e5d94ce0f Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 21:57:53 +0000 Subject: [PATCH 24/60] update dependency --- go.mod | 3 +++ 1 file changed, 3 insertions(+) diff --git a/go.mod b/go.mod index c223861f7..06639b4c4 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,9 @@ require ( github.com/stretchr/testify v1.7.0 github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc // indirect github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 + github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f // indirect + go.starlark.net v0.0.0-20210223155950-e043a3d3c984 + golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 From 1cc528636eeb3db15a240f5d0a6c38c0d7424014 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 20 Mar 2021 22:08:28 +0000 Subject: [PATCH 25/60] update dependency --- go.mod | 6 +- go.sum | 447 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 449 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 06639b4c4..13bc4dfce 100644 --- a/go.mod +++ b/go.mod @@ -15,13 +15,11 @@ require ( github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc // indirect github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f // indirect - go.starlark.net v0.0.0-20210223155950-e043a3d3c984 - golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb - golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 + golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b + golang.org/x/sys v0.0.0-20210314195730-07df6a141424 google.golang.org/grpc v1.36.0 google.golang.org/protobuf v1.25.0 h12.io/socks v1.0.2 diff --git a/go.sum b/go.sum index fe5410ecc..7d28ac7bf 100644 --- a/go.sum +++ b/go.sum @@ -2,52 +2,151 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.31.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.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +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/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +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/app/changes v0.0.0-20180602232624-0a106ad413e3 h1:hJiie5Bf3QucGRa4ymsAUOxyhYwGEz1xrsVk0P8erlw= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0 h1:SPOUaucgtVls75mg+X7CXigS71EnsfVUK/2CgVrwqgw= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412 h1:GvWw74lx5noHocd+f6HBMXK6DuggBB1dhVkuGZbv7qM= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c h1:ivON6cwHK1OH26MZyWDCnbTRZZf0IhNsENoNAKFS1g4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999 h1:OR8VhtwhcAI3U48/rzBsVOuHi0zDPzYI1xASVcdSgR8= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +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 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= +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/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625 h1:ckJgFhFWywOx+YLEMIJsTb+NV6NexWICk5+AMSuz3ss= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= 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/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/dgryski/go-metro v0.0.0-20200812162917-85c65e2d0165 h1:BS21ZUJ/B5X2UVUbczfmdWH7GapPWAhxcMsDnjJTU1E= github.com/dgryski/go-metro v0.0.0-20200812162917-85c65e2d0165/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a h1:YtdtTUN1iH97s+6PUjLnaiKSQj4oG1/EZ3N9bx6g4kU= github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a/go.mod h1:/CZpbhAusDOobpcb9yubw46kdYjq0zRC0Wpg9a9zFQM= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad h1:EmNYJhPYy0pOFjCx2PrgtaBXmee0iUX9hLlxE1xHOJE= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +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/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +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/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= +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 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +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/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 h1:uHTyIjqVhYRhLbJ8nIiOJHkEZZ+5YoOsAbD3sk82NiE= github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7 h1:2hRPrmiwPrp3fQX967rNJIhQPtiGXdlQWAxKbKw3VHA= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= @@ -65,6 +164,8 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= 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/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -73,50 +174,168 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/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= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +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 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 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +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/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe h1:rcf1P0fm+1l0EjG16p06mYLj9gW9X36KgdHJ/88hS4g= +github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/websocket v0.0.0-20191103002815-9a42957e2b3a h1:AG0ZwOFfTjzk5n1PXhWttuw3i7i0TeqypKSqCXhMlyM= +github.com/gopherjs/websocket v0.0.0-20191103002815-9a42957e2b3a/go.mod h1:jd+zY81Fx2lC4bfw58+Rflg1srqmedQjbBUejKOjYNY= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.0 h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= +github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1 h1:ujPKutqRlJtcfWk6toYVYagwra7HQHbXOaS171b4Tg8= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +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/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0 h1:ZqfnKyx9KGpRcW04j5nnPDgRgoXUeLh2YFBeFzphcA0= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= 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= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3 h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lucas-clemente/quic-go v0.19.3 h1:eCDQqvGBB+kCTkA0XrAFtNe81FMa0/fn4QSoeAbmiF4= github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= +github.com/lunixbochs/struc v0.0.0-20200521075829-a4cb8d33dbbe h1:ewr1srjRCmcQogPQ/NCx6XCk6LGVmsVCc9Y3vvPZj+Y= +github.com/lunixbochs/struc v0.0.0-20200521075829-a4cb8d33dbbe/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg= +github.com/lunixbochs/vtclean v1.0.0 h1:xu2sLAri4lGiovBDQKxl5mrXyESr3gUr5m5SM5+LVb8= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe h1:W/GaMY0y69G4cFlmsC6B9sbuo2fP8OFP1ABjt4kPz+w= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/qpack v0.2.1 h1:jvTsT/HpCn2UZJdP+UUB53FfUUgeOyG5K1ns0OJOGVs= github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= github.com/marten-seemann/qtls v0.10.0 h1:ECsuYUKalRL240rRD4Ri33ISb7kAQ3qGDlrrl55b2pc= github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= github.com/marten-seemann/qtls-go1-15 v0.1.1 h1:LIH6K34bPVttyXnUWixk0bzH6/N07VxbSabxn5A5gZQ= github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1 h1:SIYunPjnlXcW+gVfvm0IlSeR5U3WZUOLfVmqg85Go44= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.40 h1:pyyPFfGMnciYUk/mXpKkVmeMQjfXqt3FAJ2hy7tPiLA= github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +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-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +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= +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/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223 h1:F9x/1yl3T2AeKLr2AMdilSD8+f9bvMnNN8VS5iDtovc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86 h1:D6paGObi5Wud7xg83MaEFyjxQB1W5bz5d0IFppr+ymk= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c h1:bY6ktFuJkt+ZXkX0RChQch2FtHpWQLVS8Qo1YasiIVk= +github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= @@ -124,100 +343,258 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/openzipkin/zipkin-go v0.1.1 h1:A/ADD6HaPnAKj3yS7HjGHRK77qi41Hi0DirOOIQAeIw= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pires/go-proxyproto v0.5.0 h1:A4Jv4ZCaV3AFJeGh5mGwkz4iuWUYMlQ7IoO/GTuSuLo= github.com/pires/go-proxyproto v0.5.0/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY= +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/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= +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= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c h1:pqy40B3MQWYrza7YZXOXgl0Nf0QGFqrOC0BKae1UNAA= github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= +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/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4 h1:Fth6mevc5rX7glNLpbAMJnqKlfIkcTjZCSHEeqvKbcI= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48 h1:vabduItPAIz9px5iryD5peyx7O3Ya8TBThapgXim98o= github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470 h1:qb9IthCFBmROJ6YBS31BEMeSYjOscSiG+EO+JVNTz64= github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d h1:Yoy/IzG4lULT6qZg62sVC+qyBL8DQkmD2zv6i7OImrc= github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c h1:UOk+nlt1BJtTcH15CT7iNO7YVWTfTv/DNwEAQHLIaDQ= github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b h1:vYEG87HxbU6dXj5npkeulCS96Dtz5xg3jcfCgpcvbIw= github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20 h1:7pDq9pAMCQgRohFmd25X8hIH8VxmT3TaDm+r9LHxgBk= github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9 h1:MPblCbqA5+z6XARjScMfz1TqtJC7TuTRj0U9VqIBs6k= github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50 h1:crYRwvwjdVh1biHzzciFHe8DrZcYrVcZFlJtykhRctg= github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc h1:eHRtZoIi6n9Wo1uR+RU44C247msLWwyA89hVKwRLkMk= github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9 h1:fxoFD0in0/CBzXoyNhMTjvBZYW6ilSnTw7N7y/8vkmM= github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191 h1:T4wuULTrzCKMFlg3HmKHgXAF8oStFb/+lOIupLV2v+o= github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241 h1:Y+TeIabU8sJD10Qwd/zMty2/LEaT9GNDaA6nyZf+jgo= github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122 h1:TQVQrsyNaimGwF7bIhzoVC9QkKm4KsWd8cECGzFx8gI= github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2 h1:bu666BQci+y4S0tVRVjsHUeRon6vUXmsGBwdowgMrg4= github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82 h1:LneqU9PHDsg/AkPDU3AkqMxnMYL+imaqkpflHu73us8= github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +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/shurcooL/users v0.0.0-20180125191416-49c67e49c537 h1:YGaxtkYjb8mnTvtufv2LKLwCQu2/C7qFB7UtrOlTWOY= github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133 h1:JtcyT0rk/9PKOdnKQzuDR+FSjh7SGtJwpgVpfZBRKlQ= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d h1:yKm7XZV6j9Ev6lojP2XaIshpT4ymkqhMeSghO5Ps00E= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e h1:qpG93cPwA5f7s/ZPBJnGOYQNK/vKsaDaseuKT5Asee8= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc h1:aCcaF5bwDw30/dqc53Mzk9FfUBs77D53Qa+cdroB4R4= +github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc/go.mod h1:7eAekmJJmG7mE2yS+RdwqJbd/Kh+TRWz+ukHrqYU2TE= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 h1:p1UzXK6VAutXFFQMnre66h7g1BjRKUnLv0HfmmRoz7w= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848/go.mod h1:p80Bv154ZtrGpXMN15slDCqc9UGmfBuUzheDFBYaW/M= +github.com/viant/assertly v0.4.8 h1:5x1GzBaRteIwTr5RAGFVG14uNeRFxVNbXPWrK2qAgpc= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0 h1:6TteTDQ68CjgcCe8wH3D3ZhUQQOJXMTbj/D9rkk2a1k= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f h1:auUsxrxkHqXNHAqd1BpJOIcN/ktolAZRKBMWgteSkX0= +github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f/go.mod h1:V6E7dCHel6g4H++fZI6CA+xPRvA/ZPbjdDe0sjDM11w= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xtaci/smux v1.5.14 h1:1j+zJYDZRv9FHaWqCJfH5RPizIm0fSzJIFbfVn8zsfg= +github.com/xtaci/smux v1.5.14/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY= +github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb h1:4cM8hRkSWxRrHV7AQowcBrM91A8KJcUp2z0sfQOGMY0= go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= +go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go4.org v0.0.0-20180809161055-417644f6feb5 h1:+hE86LblG4AyDgwMCLTE6FOlM9+qjHSYS+rKqxUVdsM= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/dl v0.0.0-20210311202548-10a9b498f331 h1:U35nhDc23cFi00WSCnBTJqw06dH4Raz4H/1aYFNF+UM= +golang.org/dl v0.0.0-20210311202548-10a9b498f331/go.mod h1:IUMfjQLJQd4UTqG1Z90tenwKoCX93Gn3MAQJMOSBsDQ= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d h1:E2M5QgjZ/Jg+ObCQAudsXxuTsLj7Nl5RV/lZcQZmKSo= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/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-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b h1:wSOdpTq0/eI46Ez/LkDwIsAKA71YP2SRKBODiRWM0as= +golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136 h1:A1gGSx58LAGVHUUsOf7IiR0u8Xb6W51gRwfDBhkdcaw= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/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 h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de 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 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190313220215-9f648a60d977/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/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/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/perf v0.0.0-20180704124530-6e6d33e29852 h1:xYq6+9AtI+xP3M4r0N1hCkHrInHDBohhquRgx9Kk6gI= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= 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= @@ -225,15 +602,25 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/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-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-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/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/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -244,10 +631,15 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b h1:ggRgirZABFolTmi3sn6Ivd9SipZwLedQ5wR0aAKnFxU= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210314195730-07df6a141424 h1:+39ahH47SWi1PhMRAHfIrm8f69HRZ5K2koXH6dmO8TQ= +golang.org/x/sys v0.0.0-20210314195730-07df6a141424/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -256,16 +648,32 @@ golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -274,17 +682,32 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= 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-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -292,6 +715,7 @@ google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9M google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -307,29 +731,52 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +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 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= +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/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= 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/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c h1:grhR+C34yXImVGp7EzNk+DTIk+323eIUWOmEevy6bDo= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919 h1:tmXTu+dfa+d9Evp8NpJdgOy6+rt8/x4yG7qPBrtNfLY= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= h12.io/socks v1.0.2 h1:cZhhbV8+DE0Y1kotwhr1a3RC3kFO7AtuZ4GLr3qKSc8= h12.io/socks v1.0.2/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 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= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sourcegraph.com/sourcegraph/go-diff v0.5.0 h1:eTiIR0CoWjGzJcnQ3OkhIl/b9GJovq4lSAVRt0ZFEG8= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= From 9e039407d2587a394a647e7a5b5cdda142c43261 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Mar 2021 18:07:32 +0800 Subject: [PATCH 26/60] Chore: bump github.com/miekg/dns from 1.1.40 to 1.1.41 (#814) --- go.mod | 2 +- go.sum | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index c598d181b..b476f90a9 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/go-cmp v0.5.5 github.com/gorilla/websocket v1.4.2 github.com/lucas-clemente/quic-go v0.19.3 - github.com/miekg/dns v1.1.40 + github.com/miekg/dns v1.1.41 github.com/pires/go-proxyproto v0.5.0 github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c github.com/stretchr/testify v1.7.0 diff --git a/go.sum b/go.sum index e98351138..706250dc3 100644 --- a/go.sum +++ b/go.sum @@ -110,8 +110,8 @@ github.com/marten-seemann/qtls-go1-15 v0.1.1 h1:LIH6K34bPVttyXnUWixk0bzH6/N07Vxb github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/miekg/dns v1.1.40 h1:pyyPFfGMnciYUk/mXpKkVmeMQjfXqt3FAJ2hy7tPiLA= -github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= @@ -197,7 +197,6 @@ golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTk 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-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -210,7 +209,6 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/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-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -237,7 +235,6 @@ golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7w 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-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -245,6 +242,7 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e h1:XNp2Flc/1eWQGk5BLzqTAN7fQIwIbfyVTuVxXxZh73M= golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -266,7 +264,6 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From f3a56ca090160376e060d906360da45b40883df3 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Mon, 22 Mar 2021 22:26:30 +0800 Subject: [PATCH 27/60] Feat: update lucas-clemente/quic-go to v0.20.0 (#816) --- app/dns/nameserver_quic.go | 4 ++-- go.mod | 4 ++-- go.sum | 28 +++++++++------------------- transport/internet/quic/dialer.go | 6 +++--- transport/internet/quic/hub.go | 2 +- 5 files changed, 17 insertions(+), 27 deletions(-) diff --git a/app/dns/nameserver_quic.go b/app/dns/nameserver_quic.go index f5c391c26..902123a8c 100644 --- a/app/dns/nameserver_quic.go +++ b/app/dns/nameserver_quic.go @@ -28,7 +28,7 @@ import ( // by selecting the ALPN token "dq" in the crypto handshake. const NextProtoDQ = "doq-i00" -const handshakeTimeout = time.Second * 8 +const handshakeIdleTimeout = time.Second * 8 // QUICNameServer implemented DNS over QUIC type QUICNameServer struct { @@ -367,7 +367,7 @@ func (s *QUICNameServer) getSession() (quic.Session, error) { func (s *QUICNameServer) openSession() (quic.Session, error) { tlsConfig := tls.Config{} quicConfig := &quic.Config{ - HandshakeTimeout: handshakeTimeout, + HandshakeIdleTimeout: handshakeIdleTimeout, } session, err := quic.DialAddrContext(context.Background(), s.destination.NetAddr(), tlsConfig.GetTLSConfig(tls.WithNextProto("http/1.1", http2.NextProtoTLS, NextProtoDQ)), quicConfig) diff --git a/go.mod b/go.mod index b476f90a9..59af756e5 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/golang/protobuf v1.5.1 github.com/google/go-cmp v0.5.5 github.com/gorilla/websocket v1.4.2 - github.com/lucas-clemente/quic-go v0.19.3 + github.com/lucas-clemente/quic-go v0.20.0 github.com/miekg/dns v1.1.41 github.com/pires/go-proxyproto v0.5.0 github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c @@ -17,7 +17,7 @@ require ( golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e + golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 google.golang.org/grpc v1.36.0 google.golang.org/protobuf v1.26.0 h12.io/socks v1.0.2 diff --git a/go.sum b/go.sum index 706250dc3..d5a3cf56c 100644 --- a/go.sum +++ b/go.sum @@ -43,12 +43,9 @@ github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= 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.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= @@ -99,15 +96,15 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lucas-clemente/quic-go v0.19.3 h1:eCDQqvGBB+kCTkA0XrAFtNe81FMa0/fn4QSoeAbmiF4= -github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= +github.com/lucas-clemente/quic-go v0.20.0 h1:FSU3YN5VnLafHR27Ejs1r1CYMS7XMyIVDzRewkDLNBw= +github.com/lucas-clemente/quic-go v0.20.0/go.mod h1:fZq/HUDIM+mW6X6wtzORjC0E/WDBMKe5Hf9bgjISwLk= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= -github.com/marten-seemann/qtls v0.10.0 h1:ECsuYUKalRL240rRD4Ri33ISb7kAQ3qGDlrrl55b2pc= -github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= -github.com/marten-seemann/qtls-go1-15 v0.1.1 h1:LIH6K34bPVttyXnUWixk0bzH6/N07VxbSabxn5A5gZQ= -github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/marten-seemann/qtls-go1-15 v0.1.4 h1:RehYMOyRW8hPVEja1KBVsFVNSm35Jj9Mvs5yNoZZ28A= +github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/marten-seemann/qtls-go1-16 v0.1.3 h1:XEZ1xGorVy9u+lJq+WXNE+hiqRYLNvJGYmwfwKQN2gU= +github.com/marten-seemann/qtls-go1-16 v0.1.3/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= @@ -168,7 +165,6 @@ github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:Udh github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= @@ -179,7 +175,6 @@ github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848/go.mod h1:p80Bv154ZtrG github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.starlark.net v0.0.0-20210312235212-74c10e2c17dc h1:pVkptfeOTFfx+zXZo7HEHN3d5LmhatBFvHdm/f2QnpY= go.starlark.net v0.0.0-20210312235212-74c10e2c17dc/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= @@ -233,7 +228,6 @@ golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/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-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -242,12 +236,12 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201231184435-2d18734c6014/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e h1:XNp2Flc/1eWQGk5BLzqTAN7fQIwIbfyVTuVxXxZh73M= -golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -281,7 +275,6 @@ google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= @@ -289,7 +282,6 @@ google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmE google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= 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.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -329,7 +321,5 @@ honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWh 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-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/transport/internet/quic/dialer.go b/transport/internet/quic/dialer.go index d7f40ffa5..29ebe0a54 100644 --- a/transport/internet/quic/dialer.go +++ b/transport/internet/quic/dialer.go @@ -150,9 +150,9 @@ func (s *clientSessions) openConnection(destAddr net.Addr, config *Config, tlsCo } quicConfig := &quic.Config{ - ConnectionIDLength: 12, - HandshakeTimeout: time.Second * 8, - MaxIdleTimeout: time.Second * 30, + ConnectionIDLength: 12, + HandshakeIdleTimeout: time.Second * 8, + MaxIdleTimeout: time.Second * 30, } conn, err := wrapSysConn(rawConn, config) diff --git a/transport/internet/quic/hub.go b/transport/internet/quic/hub.go index 3bd64de0f..d8b26b744 100644 --- a/transport/internet/quic/hub.go +++ b/transport/internet/quic/hub.go @@ -106,7 +106,7 @@ func Listen(ctx context.Context, address net.Address, port net.Port, streamSetti quicConfig := &quic.Config{ ConnectionIDLength: 12, - HandshakeTimeout: time.Second * 8, + HandshakeIdleTimeout: time.Second * 8, MaxIdleTimeout: time.Second * 45, MaxIncomingStreams: 32, MaxIncomingUniStreams: -1, From 3db3ba5872f7454417324887c5d96880a4e0567a Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Tue, 23 Mar 2021 15:49:20 +0800 Subject: [PATCH 28/60] Fix: remove AA header flag in DNS query (#817) --- proxy/dns/dns.go | 1 - 1 file changed, 1 deletion(-) diff --git a/proxy/dns/dns.go b/proxy/dns/dns.go index 05f406bde..415947686 100644 --- a/proxy/dns/dns.go +++ b/proxy/dns/dns.go @@ -244,7 +244,6 @@ func (h *Handler) handleIPQuery(id uint16, qType dnsmessage.Type, domain string, RecursionAvailable: true, RecursionDesired: true, Response: true, - Authoritative: true, }) builder.EnableCompression() common.Must(builder.StartQuestions()) From 389ff73a2619fffa8f27eb5977bea42308892ca4 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Wed, 24 Mar 2021 11:49:32 +0800 Subject: [PATCH 29/60] Feat: vprotogen adds version detector (#819) * Feat: vprotogen adds version detector to block generation code from old protobuf version * Chore: update .gitignore --- .gitignore | 1 + infra/vprotogen/main.go | 77 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/.gitignore b/.gitignore index 8b4741025..436682076 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ v2ray v2ctl mockgen vprotogen +!infra/vprotogen/ diff --git a/infra/vprotogen/main.go b/infra/vprotogen/main.go index e7d6efe6d..4e1e7f892 100644 --- a/infra/vprotogen/main.go +++ b/infra/vprotogen/main.go @@ -3,11 +3,15 @@ package main import ( "fmt" "go/build" + "io" "io/ioutil" + "net/http" "os" "os/exec" "path/filepath" + "regexp" "runtime" + "strconv" "strings" ) @@ -77,7 +81,62 @@ func GetGOBIN() string { return GOBIN } +func getProjectProtocVersion(url string) (string, error) { + resp, err := http.Get(url) + if err != nil { + return "", fmt.Errorf("can not get the version of protobuf used in V2Ray project") + } + defer resp.Body.Close() + body, err := io.ReadAll(resp.Body) + if err != nil { + return "", fmt.Errorf("can not read from body") + } + versionRegexp := regexp.MustCompile(`\/\/\s*protoc\s*v(\d+\.\d+\.\d+)`) + matched := versionRegexp.FindStringSubmatch(string(body)) + return matched[1], nil +} + +func getInstalledProtocVersion(protocPath string) (string, error) { + cmd := exec.Command(protocPath, "--version") + cmd.Env = append(cmd.Env, os.Environ()...) + output, cmdErr := cmd.CombinedOutput() + if cmdErr != nil { + return "", cmdErr + } + versionRegexp := regexp.MustCompile(`protoc\s*(\d+\.\d+\.\d+)`) + matched := versionRegexp.FindStringSubmatch(string(output)) + return matched[1], nil +} + +func parseVersion(s string, width int) int64 { + strList := strings.Split(s, ".") + format := fmt.Sprintf("%%s%%0%ds", width) + v := "" + for _, value := range strList { + v = fmt.Sprintf(format, v, value) + } + var result int64 + var err error + if result, err = strconv.ParseInt(v, 10, 64); err != nil { + return 0 + } + return result +} + +func needToUpdate(targetedVersion, installedVersion string) bool { + vt := parseVersion(targetedVersion, 4) + vi := parseVersion(installedVersion, 4) + + return vt > vi +} + func main() { + targetedVersion, err := getProjectProtocVersion("https://raw.githubusercontent.com/v2fly/v2ray-core/HEAD/config.pb.go") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + pwd, wdErr := os.Getwd() if wdErr != nil { fmt.Println("Can not get current working directory.") @@ -103,6 +162,24 @@ func main() { protoc = path } + installedVersion, err := getInstalledProtocVersion(protoc) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + if needToUpdate(targetedVersion, installedVersion) { + fmt.Printf(` +You are using an old protobuf version. Please update to v%s or later. +Download it from https://github.com/protocolbuffers/protobuf/releases + + * Protobuf version used in V2Ray project: v%s + * Protobuf version you have installed: v%s + +`, targetedVersion, targetedVersion, installedVersion) + os.Exit(1) + } + protoFilesMap := make(map[string][]string) walkErr := filepath.Walk("./", func(path string, info os.FileInfo, err error) error { if err != nil { From 1454bed646387c3927e486b408c980b1651de9db Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Wed, 24 Mar 2021 13:03:14 +0800 Subject: [PATCH 30/60] Feat: vprotogen refine logic (#820) --- infra/vprotogen/main.go | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/infra/vprotogen/main.go b/infra/vprotogen/main.go index 4e1e7f892..08ea85690 100644 --- a/infra/vprotogen/main.go +++ b/infra/vprotogen/main.go @@ -81,6 +81,21 @@ func GetGOBIN() string { return GOBIN } +func whichProtoc(suffix, targetedVersion string) (string, error) { + protoc := "protoc" + suffix + + path, err := exec.LookPath(protoc) + if err != nil { + errStr := fmt.Sprintf(` +Command "%s" not found. +Make sure that %s is in your system path or current path. +Download %s v%s or later from https://github.com/protocolbuffers/protobuf/releases +`, protoc, protoc, protoc, targetedVersion) + return "", fmt.Errorf(errStr) + } + return path, nil +} + func getProjectProtocVersion(url string) (string, error) { resp, err := http.Get(url) if err != nil { @@ -126,19 +141,12 @@ func parseVersion(s string, width int) int64 { func needToUpdate(targetedVersion, installedVersion string) bool { vt := parseVersion(targetedVersion, 4) vi := parseVersion(installedVersion, 4) - return vt > vi } func main() { - targetedVersion, err := getProjectProtocVersion("https://raw.githubusercontent.com/v2fly/v2ray-core/HEAD/config.pb.go") + pwd, err := os.Getwd() if err != nil { - fmt.Println(err) - os.Exit(1) - } - - pwd, wdErr := os.Getwd() - if wdErr != nil { fmt.Println("Can not get current working directory.") os.Exit(1) } @@ -153,13 +161,17 @@ func main() { if runtime.GOOS == "windows" { suffix = ".exe" } - protoc := "protoc" + suffix - if path, err := exec.LookPath(protoc); err != nil { - fmt.Println("Make sure that you have `" + protoc + "` in your system path or current path. To download it, please visit https://github.com/protocolbuffers/protobuf/releases") + targetedVersion, err := getProjectProtocVersion("https://raw.githubusercontent.com/v2fly/v2ray-core/HEAD/config.pb.go") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + protoc, err := whichProtoc(suffix, targetedVersion) + if err != nil { + fmt.Println(err) os.Exit(1) - } else { - protoc = path } installedVersion, err := getInstalledProtocVersion(protoc) @@ -170,7 +182,7 @@ func main() { if needToUpdate(targetedVersion, installedVersion) { fmt.Printf(` -You are using an old protobuf version. Please update to v%s or later. +You are using an old protobuf version, please update to v%s or later. Download it from https://github.com/protocolbuffers/protobuf/releases * Protobuf version used in V2Ray project: v%s From 921c6d71ee652bb6593024bedbd4f00b10ff47f0 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Wed, 24 Mar 2021 14:43:00 +0800 Subject: [PATCH 31/60] Feat: format code in one-key (#802) --- format.go | 4 + infra/vformat/main.go | 180 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100644 format.go create mode 100644 infra/vformat/main.go diff --git a/format.go b/format.go new file mode 100644 index 000000000..27511d382 --- /dev/null +++ b/format.go @@ -0,0 +1,4 @@ +package core + +//go:generate go install -v golang.org/x/tools/cmd/goimports@latest +//go:generate go run ./infra/vformat/ diff --git a/infra/vformat/main.go b/infra/vformat/main.go new file mode 100644 index 000000000..ddd979f14 --- /dev/null +++ b/infra/vformat/main.go @@ -0,0 +1,180 @@ +package main + +import ( + "fmt" + "go/build" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "runtime" + "strings" +) + +// envFile returns the name of the Go environment configuration file. +// Copy from https://github.com/golang/go/blob/c4f2a9788a7be04daf931ac54382fbe2cb754938/src/cmd/go/internal/cfg/cfg.go#L150-L166 +func envFile() (string, error) { + if file := os.Getenv("GOENV"); file != "" { + if file == "off" { + return "", fmt.Errorf("GOENV=off") + } + return file, nil + } + dir, err := os.UserConfigDir() + if err != nil { + return "", err + } + if dir == "" { + return "", fmt.Errorf("missing user-config dir") + } + return filepath.Join(dir, "go", "env"), nil +} + +// GetRuntimeEnv returns the value of runtime environment variable, +// that is set by running following command: `go env -w key=value`. +func GetRuntimeEnv(key string) (string, error) { + file, err := envFile() + if err != nil { + return "", err + } + if file == "" { + return "", fmt.Errorf("missing runtime env file") + } + var data []byte + var runtimeEnv string + data, readErr := ioutil.ReadFile(file) + if readErr != nil { + return "", readErr + } + envStrings := strings.Split(string(data), "\n") + for _, envItem := range envStrings { + envItem = strings.TrimSuffix(envItem, "\r") + envKeyValue := strings.Split(envItem, "=") + if strings.EqualFold(strings.TrimSpace(envKeyValue[0]), key) { + runtimeEnv = strings.TrimSpace(envKeyValue[1]) + } + } + return runtimeEnv, nil +} + +// GetGOBIN returns GOBIN environment variable as a string. It will NOT be empty. +func GetGOBIN() string { + // The one set by user explicitly by `export GOBIN=/path` or `env GOBIN=/path command` + GOBIN := os.Getenv("GOBIN") + if GOBIN == "" { + var err error + // The one set by user by running `go env -w GOBIN=/path` + GOBIN, err = GetRuntimeEnv("GOBIN") + if err != nil { + // The default one that Golang uses + return filepath.Join(build.Default.GOPATH, "bin") + } + if GOBIN == "" { + return filepath.Join(build.Default.GOPATH, "bin") + } + return GOBIN + } + return GOBIN +} + +func Run(binary string, args []string) (string, error) { + cmd := exec.Command(binary, args...) + cmd.Env = append(cmd.Env, os.Environ()...) + output, cmdErr := cmd.CombinedOutput() + if cmdErr != nil { + return "", cmdErr + } + if len(output) > 0 { + return string(output), nil + } + return "", nil +} + +func RunMany(binary string, args, files []string) { + fmt.Println("Processing...") + for _, file := range files { + args2 := append(args, file) + output, err := Run(binary, args2) + if err != nil { + fmt.Println(err) + continue + } + if len(output) > 0 { + fmt.Println(output) + } + } +} + +func main() { + pwd, err := os.Getwd() + if err != nil { + fmt.Println("Can not get current working directory.") + os.Exit(1) + } + + GOBIN := GetGOBIN() + binPath := os.Getenv("PATH") + pathSlice := []string{pwd, GOBIN, binPath} + binPath = strings.Join(pathSlice, string(os.PathListSeparator)) + os.Setenv("PATH", binPath) + + suffix := "" + if runtime.GOOS == "windows" { + suffix = ".exe" + } + gofmt := "gofmt" + suffix + goimports := "goimports" + suffix + + if gofmtPath, err := exec.LookPath(gofmt); err != nil { + fmt.Println("Can not find", gofmt, "in system path or current working directory.") + os.Exit(1) + } else { + gofmt = gofmtPath + } + + if goimportsPath, err := exec.LookPath(goimports); err != nil { + fmt.Println("Can not find", goimports, "in system path or current working directory.") + os.Exit(1) + } else { + goimports = goimportsPath + } + + rawFilesSlice := make([]string, 0) + walkErr := filepath.Walk("./", func(path string, info os.FileInfo, err error) error { + if err != nil { + fmt.Println(err) + return err + } + + if info.IsDir() { + return nil + } + + dir := filepath.Dir(path) + filename := filepath.Base(path) + if strings.HasSuffix(filename, ".go") && + !strings.HasSuffix(filename, ".pb.go") && + !strings.Contains(dir, filepath.Join("testing", "mocks")) { + rawFilesSlice = append(rawFilesSlice, path) + } + + return nil + }) + if walkErr != nil { + fmt.Println(walkErr) + os.Exit(1) + } + + gofmtArgs := []string{ + "-s", "-l", "-e", "-w", + } + + goimportsArgs := []string{ + "-w", + "-local", "github.com/v2fly/v2ray-core", + } + + RunMany(gofmt, gofmtArgs, rawFilesSlice) + RunMany(goimports, goimportsArgs, rawFilesSlice) + fmt.Println("Do NOT forget to commit file changes.") +} From ad09269791449153aa7168350b31c58bf3bb1e3b Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Wed, 24 Mar 2021 15:18:07 +0800 Subject: [PATCH 32/60] Chore: refine errorgen (#821) --- .gitignore | 2 ++ common/errors/errorgen/main.go | 30 +++++++++++------------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 436682076..f0c90c071 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ v2ctl mockgen vprotogen !infra/vprotogen/ +errorgen +!common/errors/errorgen/ diff --git a/common/errors/errorgen/main.go b/common/errors/errorgen/main.go index 0d7278d8e..e41dda328 100644 --- a/common/errors/errorgen/main.go +++ b/common/errors/errorgen/main.go @@ -2,11 +2,8 @@ package main import ( "fmt" - "log" "os" "path/filepath" - - "github.com/v2fly/v2ray-core/v4/common" ) func main() { @@ -20,26 +17,21 @@ func main() { pkg = "core" } - moduleName, gmnErr := common.GetModuleName(pwd) - if gmnErr != nil { - fmt.Println("can not get module path", gmnErr) - os.Exit(1) - } - file, err := os.OpenFile("errors.generated.go", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) if err != nil { - log.Fatalf("Failed to generate errors.generated.go: %v", err) + fmt.Printf("Failed to generate errors.generated.go: %v", err) os.Exit(1) } defer file.Close() - fmt.Fprintln(file, "package", pkg) - fmt.Fprintln(file, "") - fmt.Fprintln(file, "import \""+moduleName+"/common/errors\"") - fmt.Fprintln(file, "") - fmt.Fprintln(file, "type errPathObjHolder struct{}") - fmt.Fprintln(file, "") - fmt.Fprintln(file, "func newError(values ...interface{}) *errors.Error {") - fmt.Fprintln(file, " return errors.New(values...).WithPathObj(errPathObjHolder{})") - fmt.Fprintln(file, "}") + fmt.Fprintf(file, `package %s + +import "github.com/v2fly/v2ray-core/v4/common/errors" + +type errPathObjHolder struct{} + +func newError(values ...interface{}) *errors.Error { + return errors.New(values...).WithPathObj(errPathObjHolder{}) +} +`, pkg) } From 5f851c05b14a1adf3240f6be0d73c39e5c146162 Mon Sep 17 00:00:00 2001 From: mzz Date: Thu, 25 Mar 2021 16:42:58 +0800 Subject: [PATCH 33/60] fix(tproxy): the problem that cannot find ipv6 destination in redirect mode of tproxy (#815) * fix(tproxy): the problem that cannot find ipv6 destination in redirect mode of tproxy * chore(lint): reformat the code * chore(lint): Codacy Static Code Analysis --- transport/internet/tcp/sockopt_linux.go | 35 ++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/transport/internet/tcp/sockopt_linux.go b/transport/internet/tcp/sockopt_linux.go index c7c44b5b2..1af96960a 100644 --- a/transport/internet/tcp/sockopt_linux.go +++ b/transport/internet/tcp/sockopt_linux.go @@ -23,14 +23,37 @@ func GetOriginalDestination(conn internet.Connection) (net.Destination, error) { } var dest net.Destination err = rawConn.Control(func(fd uintptr) { - addr, err := syscall.GetsockoptIPv6Mreq(int(fd), syscall.IPPROTO_IP, SO_ORIGINAL_DST) - if err != nil { - newError("failed to call getsockopt").Base(err).WriteToLog() + var remoteIP net.IP + switch addr := conn.RemoteAddr().(type) { + case *net.TCPAddr: + remoteIP = addr.IP + case *net.UDPAddr: + remoteIP = addr.IP + default: + newError("failed to call getsockopt").WriteToLog() return } - ip := net.IPAddress(addr.Multiaddr[4:8]) - port := uint16(addr.Multiaddr[2])<<8 + uint16(addr.Multiaddr[3]) - dest = net.TCPDestination(ip, net.Port(port)) + if remoteIP.To4() != nil { + // ipv4 + addr, err := syscall.GetsockoptIPv6Mreq(int(fd), syscall.IPPROTO_IP, SO_ORIGINAL_DST) + if err != nil { + newError("failed to call getsockopt").Base(err).WriteToLog() + return + } + ip := net.IPAddress(addr.Multiaddr[4:8]) + port := uint16(addr.Multiaddr[2])<<8 + uint16(addr.Multiaddr[3]) + dest = net.TCPDestination(ip, net.Port(port)) + } else { + // ipv6 + addr, err := syscall.GetsockoptIPv6MTUInfo(int(fd), syscall.IPPROTO_IPV6, SO_ORIGINAL_DST) + if err != nil { + newError("failed to call getsockopt").Base(err).WriteToLog() + return + } + ip := net.IPAddress(addr.Addr.Addr[:]) + port := net.PortFromBytes([]byte{byte(addr.Addr.Port), byte(addr.Addr.Port >> 8)}) + dest = net.TCPDestination(ip, port) + } }) if err != nil { return net.Destination{}, newError("failed to control connection").Base(err) From 09ae6e764a1e9580370471330c68c0205d9ecc9c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Mar 2021 00:06:38 +0000 Subject: [PATCH 34/60] update geoip, geosite --- release/config/geoip.dat | Bin 5224365 -> 5228255 bytes release/config/geosite.dat | 15357 ++++++++++++++++++----------------- 2 files changed, 7681 insertions(+), 7676 deletions(-) diff --git a/release/config/geoip.dat b/release/config/geoip.dat index 16b4335a43a9c727c396e95e54084d2be5e21021..eab1808606f50abbb482eceb0898d0a6c1f56619 100644 GIT binary patch delta 49239 zcmZsE2Ut``)He6--2w~C!tTPNl%qh*fsi}xp(&J|9v0NqxJv;?)Ko1*SnY=<^%Osj}{!zlO@ujT_2=O1}MjH=l7(d!dq>$^h9u_8v)` zcvI#@L=45LME#{*B|d&dLA7(DZ2U=s=U;KF7x%yseqJ?JE8?1FCy)y@UqXa_Z~#S6aiB7!>gxZA9@GaT_(_vMZZ zvj(k8RIHSlZr`)2o8Z(WMLCPJ`WkvOyQc=7VcB2y;+CFa6D5o@wlob3(Q#*q%G+7O zidp<)WSCaU%_SU<#f2^6xKW@x+$%9GfMtU4gygU>EaQZGrG_<^>iCAb1Q>0C1Gxm4 zNU@n&VdbvCI=55UY8Lx-4T}w7+;B;G*b@+PNtjN`{Y)F1 zyWl_1sz|q8fDTOjtY6ZuHr(ldS4X z>QJ6_y+A#f`!%dE2(Nh=reL|rKv?iF&kOH*9X6@CP+dT84RAv7{^m3eoJ5aC_?v%3 z@d4(QUL)<^8!*b|pmrnm28<>&)EHnk6i2m}qYAC*&QFW6wJvpDH1EKwHwLHHqdD)hgOk zg9omHo{B6<=4sp*@G7)D$^0W8m2B<-b>rJ9W-Y_@%T*ij8>@K`!~H@Se3@qcUC>vs z?IF~HlGDvsc*j6ZGR*O~PlkCq%l&&y?SuZ#GEYO}v(01B`)qR-D#$Sx2B@j?2G7&m zMV#kt7jd2+si8W@T!KAXo4XmxoQS4Ft)M<7k4gYJ^JoYl7aolPq~g(dK(0KR2#8mG zXc-`0C!u8uT1{w~l4?4%%$W)iS_Xn?`LbmO=&J%!S;1NYw1EZju&>OKGVV2$#w!M! zwK7yc(tMNgz(0;M-{){AU0y7MzyI3&mIZHJG10tFq0-Ts!a9?vfI56@UWcAvYo^6- zzBONzp$j*f>CoBP=AP*3jb>UDHOKq}nJdh`ToYp9tP1mI4BAv_Ztgm#&dzAgA;Rcn zrFnw1;swc-G1qMKM5i~J7jn>6H(b2Q3|(#Q7V}gF#nhPn^y#!{c-IW7f$*-`gh`hg zbMqE_qr$L<}&54)oE-fgt_Qm^n7 zFUB2zJ~8~VhEd~obHkrIl|65uicfofhbk@YISj=7@D0cy4C#O@Y9FF;KrMyw6HqH* z5&$Ssm;?ZVp@rt7Lx0+H`*5E2{5};r?FCVfy8;y~4{zWgi0N_2itrd&Z{EJ?dCXa% zUO){(y?`3+h@}lq&*P}{>3Ptl`Ocl5XYao0d7vy_ZRvSdYL@go8{aY3ggd$_h5UEB zklM%Z2$!hvcXi><82s&_@Pi7*6)!m%9^vZ8n>cezA?2UB1@iN*nz`lk8nrh%`FpsT z8^SC5T6i(b?I7&>-3b3#QpUSdR&%JFXOh+2&LpcjFyYk%$SNosP>IlJKtlv|0vaKx z7|>`z?SQ~lh>8JG6=yZ?N{yG*{4=VYtmZ1vD=%qQ^AgYmHr@`uCgZ@&p6I@#b2##M zaxTEqzrt^N?s{xFqAueDYkrjj4X61V0P*28zZwv4nf%Rw_>Pdj*+!d{zqx|yCV%rH zT4Vm^WmKU2&C97r0HWgNZ(c!#%->u^ZIr)RUrUXYzXdAcyL^5PAZNVO%`#J_0$cOJ zqD^}eXmBgNrHmDZpMvSWkcJO8u|SY?To~-j%)mNt%X>~*TmnKOmA_>gmqScc;cwZ= za95!`$_ca_LVw)M@x{s@%R-LP;@S{P4+%DfTDr^d+(=7TR#ImRL3g4p&DbOFFcV{$ zNuv4eI7@q0`urW?ajm6gIO^KU@-q%du!KnjkLo@Qe9;pZCR^6CFhlf6wdA3Zsg_=W zGeW4Iif33v6i+o)JR=cGp$n;&b@*wT<(-5Jf)so|%krxRpZUy^EyacsOC5v@e7m~3Jk)L9TrDMx*oWC;0rq~aXuiA^La}+nK6c5wEQB0 zHhp&0vX_hEYwf=@)gW{UK-6~tQQzsm6eeVR&Ha~V5RTd#78h9=-@*ECQQOnDz;GjQ z+hQMX`ft%wt@qzzpkCL1i4wXNha}djj@8{M7OvX zd5m^x0EG8FvvgCG@iQA6>56tAj28aWETmeK^ZGh;i4N#U4 zLjdInaRpGGNTVw`pwX3_Z9|8ybb<&(Y605@dx)`Zutyl%h7zhN+XfreqirJy%|{K} zCO~|LwvkAp!utO#-6TbPT6qhg@H#GUVW15vZvj1p_oea{p;UL}Ey8Id%Uf8e3d&np zsancg*r3*3BO>l|!m6d8G~%XA=#P`4fUg$kI!C;f==hc2q>;(JgysY4qc)&Ib;Lt% z0$CK?Rb3Ch>J3q4Yv!3_^BC;55+kVAxd1)K4PYm z>IfBXMs__2yxyZYLWX|U1zNDSS42B0*B_E`$yX6c3PGk>NB9`AeQ3lKWj3#wIl~;N zw&n~6#K+h*tJs5^B_GLd1e3-uiRCk)!#W@_RVJp&!E>pV+aipd>KU!Q!u1s(+%P%fU&fD@vBGSl zQdF2h9^R4_;Y1#MVQNG;n=RxT3%PiUR*aoYRaG%|Dz$CJ*lE=A6=N%Ciz~)f*}07c zzV3+oF5z4iz1#%I6Wlc znad)6a=}HLB7T?S*zFOl1P$NmrN!~PBC^>ip2z&fYRY5&Vkp7~q4|rOP;uuk_NI!M zzt{i`L^d4Jq^!M|&pvaVzqpfFqKjApx*O$JET)!-wLxIwRXl$&1SUR2&R;xOEHOk( zwNLQpFQyaxrri9+W5nd~V&REU80GAVh-ks4;P(eCSHVJ2?c|;|&pw43|%Y-FZ7AP+ATK@WkhDM@)eo8a&`m#63wF-++ZTz#zPe z7Ty3e@LdHE?F@iQ1i=7J7vck;nL-QzR3Qips7mNafNJere5gVe-XL=kGI}n&K@2P) z-0ObCO^M{8+81X%j5sLgilCL4eHLMG#JT@P+;R~{;U&60zy^mZBi}IC;u3j5!tEu5 z_v*+1R@ItTu_Qc~G|;SxTp{7WqxHDnBl3!rIfWN^M+TAg`e~oYa}vDKKeBBv{UWN_ zrPCKt%`Tn3nAHAsN@Nbl9S2q@d3t0X>u?O0PmgTh3EgOj^mON~wmiBWt#f&FC**c3 zvN=k-6`3N;x|TnrxjcKQCk3_wg5yY!+@yRE4Gp-O7yux9C=r41-I6sL@ugl5pUQPTi1x0){1P` zifq@4Y}blx*NK9FfAfyAVk_^Q?ej#Rj zDGKva6y{~E&^=a;dwI+*|I6d{HoZJ4bQDMxg?=dt{fY$7WREC`9Ic(^9EnqXqQaDT zVMx?e9d4BzHCe)`N%Xjs8WqDZUdTB;swed9ap_SduKMQ&p>f~8d`=q&2pWekw2KN> zAg)`K76){T8pU#nBse_m9t9oW4X^nkN}?2E^4bY!X>-?3xIk5~cEV-a+O-p|P`j_4 z&;VT)Z|E15?E+JGZcNl`9q*&-+fApL*SDKVDtSL9DqEuDU2c6Zh@Co|H9l$xhws~> zc1V$OZ(br^IyEXo=Enz_4GSh)1w#U=6%4dt!4zPL8fHcX=@DhVVZkCQ-G&9rfrf); zMGa-KPi52^vQKbwVN|{zcC7eOe8V#()dnD<4GW68BM~>bHd++4$r~-sl>J7Fi-S-( zAgjOz5bY9xh6n}*G*&PxpmBn!0gV?742XKxMvIDyyU_yXBVDIIx6z^(D~2G;t8b$P zf+FvN8!fQ0$1hy~*#w;cs<5;6TVSu)Z=t;^@8hB1Ki2{R*!f76XoTE9=wj)6##bT6h|c2fk$T6qhz?;m5;E{IV{`zEkA+6}k&x{*50q$$UJ0G{t|dB&Lt!z| zv+&`V=)aYCPinL)hvxs@T!)WkM(ZT_UQTo>%nov+8yJrGCU(w`ZY~A6CKpA&a>rA9 zMZaW(epl;fkNLHJ14v6I_K9X(Ko#?cN9Rj9H&XbwG0|=0!ftnM>T9Zk+SIoqdPfR| z*rI=O6Beko9ipjvYCFV1E_A0ddM>ujjUK___Y0%%OK{_o=)Yx55k9vn`hkjrJU(c5 zO>{qO+!lSnl|(8%zFiyLLk@y;ITk&hRn^!TqU|K{^zrB~G?18fBYKr2iSGinKkl{* z^dqKSxb{a(r$T@%LT3O(yEP!vt?%55UMA)46Q`biFZwQnYyOJvz;Hi6N5P5*(ZLcN z|2W#)85h5a-Xdd4v4n}~?2LQ4#I%!eq@B1%9g``;A3S2h7!<3ISx9#1ValM7iDfw= zH-6D1#>7PNQr3+!Q7P+2g@W41s8Kh{LR(iiDpE|1B}_uSfr;{pJ-O;P+|@T`F~f8~ zfBD7ua3>(oLPJcR^aS5uvJ5dkjP!8@F-Ng~%pD0wrt>(lSxmY_Ita!dPdqLp<|rdw zTT5ofiN=_Y(w~-*+%t_a5sWktyv!Z#F~$6-w9+aMbsUAh3XQpgCWnS-QJb)sMCn|< zuE}9BQ&{OGDB*@UOH3epw=edy#B_Azib*|VTE;l*(d?p_Mm()ujEcck?PHoas>o7; zH2Lt$X++=0K99*_gk4)jam->4|L|o@JBTXSQW~>}(?gu&l~y0tl&YmZ3?iNfJ~$xe z8pF)O3kJnR%7vL-eG*4fj*WzZTu`mLDgJC+4D5VpQQE|qa}c4j%3@|JRcbrSd1U_r zpPU}ETA9R)RKE=v2-R(a9?wrx>bF6De$i3C%|Pdx_1i!<{H&{fn+;lzhb)X)E(e)& zSH#S9!raD~FI`b8mI#ynqd`y`U+>W%=&QUeM}zG3 z9t|S(;tP9Yrs#xaqiz)6ikSA~(s;`4kBnGbtjUCAdTd1cD z4)od7DGMNe2j^5gAbu%)D&9s-bt=A!igzl$h6;5mekX1Asdxw&yedw`@1eq5Kbkk0P;Jwr^tgcC!{sUwuOy~ndaE99AV2pBtABg;Yh#6r7dGS zvqFqLwf%d0mD|^lwAzH&K{6bl7JI-+51IMF<+N9*O_(|WYEU;tjrp=hL;H(%FY=mM|})+g4;p^5!seet?}u{$`XDf(=1Y%~1b;MfNmm6q0bCd~s79`jA? z8rb}u8aq-Z%yZ7v{6Xk7Gh@TqB)(^z*-r*xQo))15VQD3pV<$5_)5?0hak!KyEFR@ z)a}pgw~{#CFgy0JzS3Uy=v;f*qw`5yHq42&NL178g@3CcvR|7U+d`7W_o6d@J5aAb z^9T^%6V5yqt9VSR;Dvf@qy6s8KO`RtS{Sez>P*yh;wQbvP*+a6njZ98J6WN)`(H=JMyO|2H(@N9=P+Jdtk zGHC11cF3U(INPC+G+-Z&RY-8iPqB$oJg7ESVc=>>9YY#o%ON0|Z^c?!Jm!zswG!y8 zpWTbC<;wi2g3hS|DEo7&Ajry{l`?L8-Mah+2^%XuA~Q$a0!Ks=|qBbL1{ zmTk0`byeGGt_C3=YW*;_wXo;1@L}vD7Nnf~4@AkbE_Oa$KDSHQrMrXB`_6Ug&Ivsd zkW5eyAcfE)0jY%^35do8Ky-Zss8Hn6LFCd&JYPq5VrSZOgMfW!~#}(Z}s){Q*qDXupIBuI8%w?y>$Nef1#>6WNfrAEr zmKYbv3HzZ}R@$tAqP2abUdnLhZ+QhwNr3z9bURW5{n$htG zwyw5)QXyyy5CkdIP!wm@524ar9R~UNE^&2a70{4-ySOj#ly-5yr=p=TE*hME!xtVj zMMz{CJbZqfQjMx_`8u*gYfDq>)iOg-gto1Q%LBd&7zKDD_ zpvtvzIy`MnTy9fzazUIUd#y@Hx>m!NWv}f(x7I+`YdeLa*Y@zdnQN%(mamSz?tpsK z0*9wR$JK_SO%LK=MW;qZ5973EM(;rX)G6*-C$)i*l{)w_O+>2o6RJ0={3}kA?#CF! zts=G6CsdnAZTXRkQvL>c&OeNs&bCYz$c|$iSO-`r34eBJc&bdKQfYXq0+sy} zr-O!&kGTKU4n9xQ|FfjGNKMAw|A{MgDYMvR2y}E{#8k01pt2&B>dA2oP(R8mwgRXM zF>lf*eAOZ~@e`_nP)o^wYN|_~v6WEBpPK5Dr`mWDp;BEEswl66I{qVLQC zzlqc8106*P9n>+Oq#E9VLLE`V`#5b_prh4Zn}a&?VbzErQsa3ZU*$^PP~?d&u!=8wTv4oAK6MHfdtf}l|2V@PsnlZ z0iT1}PjhUeJc2;3mRb+D5K($iVlyItu!9!W{m@i{ODrvW)aeyYpX6{*hwxe0ciT~q zJ3cyQhw!nJ|G)>Iv~&*fI6vC)3#Gk~n)jJt_B~3~hwAVjUahuIW>QhZ%2qmDx1v>N z20dKa%84mKIiN2$FMbh!Dq39$J$ zWNE^@{%GZF4{6h2`P&N75kY9G1EA{B&rXRtrV08WPt#3MX=<~#6R1X! zTKfq#RHUB$gv$3XQg_pHHdG`})UZv@qan&ft-k4nPqLZC!dFm@B2nwvwBeIflRecN zec_m>L$^AHYO#|%(Jdbhy^shV;ZTT*@}UidsE1#Y@I9g|QOgp#AyLN`x}mxnUoBhc zj*6aSX$bvE3Zd&!VFzGX7YP4Z+9!IVRaQcd{Fp78e2*8hWw%fC0Gkq4P}R^Nl9YjL zfr;d6Q7SJ$ZH+H4M*&G}C-N!JCf~aVe75=XS()*z1zFu%lEhwiPUkEj%`hSjlLjbq zV1hSUV(GtR3akj`C@T2p@?T8VzQCdHw(Lqj##H8rW39Hk5kRiYF7gPd^doTNsEhwT2IsB*Pd$Miy# z3tQ`$QnYOen9*r}8BfL;xkkTlg&5YV6VVI9rdx4^&^!Zf&^Z+ zk5qmL;;GNjlm1Fj@+;KvpG1qc&q>;k@;*o$%NRInX#W#NNRpp<@`<|nA)Qh`PBuQJ zilc%sF`;>#MZWy-PpKabM$9Ov8>%yinfZa9X10n{QQeT&CQ?OpGfzHI_b1h{qP{=c z9P*0IDEt4&|7Sbc|Fa$J|KASYj=})@AA?8V_^&?sIA?AtgBUSVv=Bdz88NruS z%quaIgE|ZksYu%I?!*seM#;t!2UI?g)36&$P^wO&kpKnNz46o%!V@PA|2edd(Xf(@ zXj_=Kme0^5h~_N+Psn+$E<`B$#Li=Aw;&CUTAkD+4fQY_D!69-uvOY@M+WjwYX<9y*3INv z0lw_)_LOxDqy9AN`DP3XXUQ)*9$L2QGIl(!{fa4r zy#jujDoudB0)9(Invg>`kfaHDbVo{>kpB^Z9?1TIG@*@Hwm?j6E0%3b7v0i?LXlPo z>uRBFk$`#tn|30b4kDY5VkNMBK#O!0(Pv_bZnbt{J{K4QKiFKLC5nLyo_<36j^lbl z5o|lFZ7B&~bWhvCO*q)I z@0E793a^pt;vKoK3EN9*-3Eo;LLURx?TGLe*41@8h&}KmFWnsp9^#`@vfX$MAMAXI zY6Or~*qQ)TBJ5@WqDRgE^%Xb)DixO9fQATrB7kU<4|cu`VxaMUx|NI`c^h=g#ND}r z-}1Y2XAQby7R3kZ5>?G;;}1;<27{wXfx30vK|nYlNaxRbG>)d}ha0hoUgCsc-7*$g zo;QiamqT<*{h*%8pCvlv$r(N1A-w-ZDNN9EbZHE%P)c+@`Pduws`3f+nT=047;$qkhX2V|=UZzAq8 za#yZRCOh^g>@w={lb>?KRCw$593)}yhv5^S$*@$%d%yYL25LD#UcNo40QV z59n3=?KeOY!GeG|!M=d#{uUs*zXix3_yHiR;L?DoeLHvrQd4yBAUk@v>zA?xGU?_s zq~5O()`q?pA$11%X=3@D_G}0aMZwpP7LfsP9Ie8jU)3n zKKVNI2+LIuerd%s-i5A~VCgxZ9Sk<#&kb{C|C)m<>H=2Ff&xlM(D)ND!bUeo14coo z;Wt(T#`EqSek>qZ!htjCaoZCCaLlp%Qox^)(tn2&N)N}t@lNW|&Jd#b{VJOS@jrZ3 z6L^Qg|L6icGSUP+bOxN_8TeK&9XgFjA7cqzpp-sZPjVhf2;6PutYjN%-uS?8Wb7DM zRChzF!=B#&3$$9w``@-b;EQi32Mz-Ni+BXSxcyX`C(1sXro&%N3B2uu=8SGC$L%Tt zdxfCtAG|&A?mdCCU70QD)-PHe$~YGI74ruB+||sI$PPUH9yTZOy1z7f3F9q<^aBqy zKe1@hJDRv*n0Yz!y|=YM8w!!c`c_U@deu&~8By@ZE>9rom`X4&br zc=i#)`4INIiMY#SgOkLy>kz8g@E4#&Pu%^9VVn=Qg0%Q|mH$2y$8XawZRM|NVO*0A zWD+&|uE~PD0wUX&0-8xV^8D_V9$ zWD4fy`e#eHV`Q5!bAkV_9Q(&9q+a4bKzh4|#KF-^{CCPw%qst{Vat2lD*p%xbegMc z{5!I2^w&6eJ&aqZ&rD}e7!pmJ{Jo?j&XR4vluiDDVY^sb&FWnom16ZSg@~NRR231o z`zHT?80iEEjC!11?GJazCRf0fiH@87AE0^b;kY+H3~ro1pBCFVe<6X7#pf;>ueBNJkZv)Is465v|)InDAfnBBrwDw^x;2WJ}-I>sR zIlbuvCP4H76CnD43DA9^;{$q#W4g%NF!-xQ$_ET?k=jDXvagn4pRMV;UGVjN>1{aG z1Zr&Qu8Gi8Y_3b6<|OXaD}E)N4<9~}-m{6c47$1=1>8-a20Kct?xxS+{vz75+)F=1 z?iD_3OjpUdZY0mUm+4nH^85&2d6j+@t{UL_x9M=1@YTEYCkof+Hrk=XUzkXqJJO6V zC8~}9iGxMTI}>8AV@8UM1Q6GZtvsQ`NqQX|*N~Ydi zdCN*S`73V`Yv7qDGBAgh;)t9U{9I=KV!J)&FNXOIul4zh2Z;#cv>s=j%?On99bv%b zj7@5;ib$uvpRt}T<736L^hwlAfNX-&0ZkT0C_qz0G*vJY(54Bd0|fn%vC%M*Y8HbW0*k^alTGHKr%q{S94Q=>#}Tr)$3Cvn?flREKi z*UT$YE|Qcf(Pd6o;AcLW>m2cx=9z(NCIt19>--oWd?7CLwFJDX3CcSem@1v|hzzG^ z6EY{To^&wYTNzXHLCKlv_(*c*H7VYek%=T638g42C$qVNk579y8*u-e z%;_w!g-d(6nFl?{u~|56+#@rdBj!SPdt@%dGr!Et*v_J2T%m;fNFCNoO+sTo_;c{k2RJ z!+7J<*E9Qayx+y&&OD_>6JBPP!Xr@CtIXke#;eQ`oOB)O2Kddp%v_c{iR1;ipyQ)W z@`ucH){lQue<5hSLGU&}pl%{2AS(ogNlaFROga?QqQ_h0S%-a9uc@vs?jyYxj|$Fu zFU1o>v(89_vkF&J!P$9jUQOklqQH_>?jk9K=x{74D~!b-QnKEYQ{T^0v&Kr8c-$*9 zD@qFAFXU!D3u1?!AkUF>_?N+1OBvZ~Il5wBpIkcQy?;BtroMY+OQt-M<2rXZiFZpt{SDPRippN3#5! z(a^OL9n%68y@Tmi|8rRnr4sooczRb1P3n9(Yo$`0%d4&U!R4$n4rO`9tDNYwBCo~) zs4f~F`juVF^72G}$0SmT(ZLnnx-8M*UH@jersChCvxm#r9~@AvE2qV660#fI(bl&T z8ICH*_H$Ol#=^&)DF?L$W?9)k%E)TKTAHoJvL4wB#-jr(<+3KKIc)96g@uDUklzyk zY6Cj+TegmEbU+Q)vbE;MkDDkCYGI22GBt`@K@L!hy=bE|vOpQ85uH1x&`2N~s&h>i zz|d>ix;~Azk5vi}28_V$lPxy-%!E*%e$48iZf>vQ*{9TCJN1*T7I-LumtD{99k zrmE*`R;|RS-pqevHlw2L;4SR)Y!Bq-t|3nVdpPInaM<(gEQYn^;1h@C`&hj7sC=l> zbzSENLWJ16t~1;&Kuv#@SIG9hA4|H_`d{UGXSB-+Jgl!5{P*)sxd#e92|iIYP^aN! z;|+U|+e%L@I8Nnj@P>;w*@IetbYPzpbZz z-Td|#9Sh8F&%#i!<4N&gDf`rjI$rSU3uh~yb_ol`br*aZBpj^r^?2(QpA8He`J2xa z2&7*4zu$aRY}pFhpW&P>9mW9Jgy;x}&Ncwm2tym7okEKN?G^?!KzoD`1Bk|UKn-H* zA7TkQe}mNfe2JDEz(z6SQ!(Q+vAS0x?Twi49jMy%x=*a6y5}C0eBGxHJbqt$-3N9A z=H2pX!QkRMKB-c+={Zy=PxL^m{_^?2JVpB^DW3^*i6mJA)m)P7J{>5MWDltV0NI3r zB1vXHx}PL_OtqdQYa}y(ZQm&OvbZ$4MIDQ?!!(Z>aFb~vz9(QBRocS0kx`AJ`MWM3 zPeSSECf^iB2%@FW$tsS-;nL?Y#qdDOLVY*F+CMAIcOZQ14D-E?Zn$Y=9CO0pfQmXK zY1k76)T1CsBLNB`tN5k>KIz5u5t@-uZ7B6%h!zf5Bg<6=J{yoB+*hk-8b5XmHUAup z&;5#|>R_r%3gLRQZ&!xhxe$%;%{?*A7D4O-PTo)m<^3OJyS z<+&5kgZA-`42vrB<8?S{QtmK6<_96(tX-A+6+80?UO2`5m=yJjEhxmrGu&O3+!msZ zz6;%Na2%P`;nqvt&nt1W_3nBZ%HHfAqKctP?P`i8S%+_SuaaS(o$j|Bk>Y@RZxtEJ ziMMro^Nvh3h8}RAuHY_0A@rf%y_1T}=ty$$wrG;v^{9I&i|72}eub57STLVg|4H{$ zC-(GhwCs|5Tm1Zz`#rgE9Btoa88OB68}73?4w0=dhl=XaDkW^A zLE%f;T2}HFMT{gH`9R;+MMW|kMddL@Ek3v}^c{yU)P-iKV9er&r=cnsl046bW--iT zBpF*U2!B1cfMsAKp-VgcNVZAon{9`LzzOJxi0WYh_Dcu-?-J%1s`=8lZBXrhPi#W$ z1~g3wx`1X1p%&0=xS#v>OW)3T!KvJ_46Z+5&@jwYJaJsXS`NpR6@0-+>st~_SK11c z99}oMK*dNq!P3G5ZJknZ8?NCLz&jllPb=_NGNb1Cr)u%ec?F+2;u3f3N`~>>t+k$G z*_r#cNk+3fCbJI|f@igz(+PO)7@`bec6{&b;l1NvNTs9m`?b`bd*83ykrz4K#6X{i z%_e3Kinz(?=3VICoVl?eJZ#mj-@;NDW*_=?nDR4e21oq*+A!r!SM*Dx{5i7+_fGS0 zV`X6bTCn}F43E_eyXzz_zT)zV9<&Twlnqs(&Np2i;x-K~`=nTN*QG6^)E>nHb@u!0a_JhqCegq$AgBg(u zcT=cfqVIyAJF12aZ8| zOXe#V4Lb8*3$F!1Mvn!3;NJ#_qg$Q%K1$}sxMz{-R}=FOT2;sCaO?z_i?OSx;Xzs2 zZF+75EH{wX7uts$Q3G}?fo&(ahON~(;lYEndsH}Lf;LEvznZ1(!6XUi+A4CWYOYq~ zQwv|MXhTmB0(6`)Wl2QSph{+VX6H#pYK)AYJ|HW{7wEG7pfw;N~~>f}7vi zghkuc&2Q~hZRX=*n>pGuEZWu+=6+4*YRLwCQ8mo;Bj##D(K9mBKXM*s@~?kQ(=mZ) zRTV_4;d8a~aM?;6mZC;n|fUJq8-GVfdelo9F##0riDh;Eq!QV8Y;q!u&`$RKDKkX2A4 zAgZ#y_5V_p^{szK`c&fJykZu%>?()mseHJk*D?31tD*3j6>y2z3C0-a||^ z)JIDB4fTP6gkP=#qD~2jdH^7+m|AKtD;r|xC*$Sg8OnhnUNSpxrW#vT=0(H*+w$P5 zc=q1BBqt7oXX1&6@^+Wt+@O4CIUZojH@M^Plk(M_=dpd^!N*JVWC3hNW}y7CmT2fh zIO-H6k3vuU;K9Eg^B!FlGI(JO>?hzGzj^dmuxko%>K`80+@-f0$mB`?!eculTTl+31M{$# z9&(A-E)U9Kb^SvTf!_7#*c*=z(xP?*9(?N&C|$4wAZ~c;Q3@}ea`9ZD^}^ZGM&^^H zB)<$|POo%8>J1U(^ zU{{^Ii4<-y8k)#Y%cYwx5!zq=^0`i23_vt8R31cL;-*LQLgoFiJWO87C+@cB|4=V{?@Zj;VDaa22!Q)R7?RX?>X2|05 zphxlP@CGaJNYYq9v|>QDLUn-d3nBn|1tZw93{4xdaKR5VG>;_cj~q=`+1z$l2;=zH znn1D{>5V$%X+qJckSJf-_dTE<4W62(xhla++iGSj%IaW!#LH7#w~5M7TlWK%0gz3o z84$gG3uwOJi-73$TR@8hxd2hK0itHBt*fRUQG3E}z}hp=dZ-s?bkV5YadAIQ3kkdW z1^#ZJW}XWxxr(0rq0r!_Uu&}94IO84n=<&~It^yn$6e5VbHQ1e;v94zE&eXN;A@!C46fwX6^bOPdjI$MWQYSsc5|f@h`` zJd&#S{+B?@?fq{cAUraspq@hf=c$MI);hsaD*keSr?* zXFlHUp*W(9;_p~|k!l4|h;hG21)=!o1Ye{=z~E1oWuU-mM#V$r%j#t8hNkMRozcPKU5lu`WT)AM12T5t$J2B9AV zf;vd+0fFiTbc-nYui?hOr4lc%T6A)(@q1x%9nd$OBn=*C>`N~FUH;k_uir!0^1<3# zs=i=PK<>zAys?HO9)Zq{H|BFTP$cr7VC=*}st!$=V9XSj?ZMXPz!aUBVC;udCK?Nw zVl;K4F`3b!GZT$@(k?J?d0<_cv5L{nq{ayDKO2e=VS@)0pxriOBXfHjxiyh4|fQzEaDMlaq9?^La;swTyBnj`GV%)+K4SV1o(~JrQ z9$sODr!uf53NG6W8DXobbct~SxY1H0yi&4kxzQ7zxS-|6ZzO(vFR(V$(q3R~XrN}a zHZ+prO;;HoNwD`?<0dJ7yvdlrs{W+!;Z1uE8MHWTvvHSFQVSvX_dUj6840)+UjL(U zrY!bz8nWPpdp1E~fT{!~0-~WPbBp~ETIQBw&du z0iqlM0UuQE>J^A>=Z)^HbQ)CVg=bwby2#ln2+#f9c-fItg2HgmKaGhD-f`FXHRG{G zLsi&+>sKP`hl1}Ld*I6Z#yt#f|F^Nk5%2%k__snYEfM60H!wl-h*W@phIYL(4rj+s zS#S8y$OdFvsJwB$)_0$u+da)*Wr-seZl!ebang%e! z3on*VuYg2S0lfBwdMLd1g(`CCbeOO4Bg4|^5KBF9lG3!CWt!kWT}*A^o*RzQm;xPz z2X^qP4F|A9S8vlxR(O@q>UwZI-fdRb+qWlI*Mkiy?J4EGx}J1MBE#zX7b1EE2#@tM zX&HBrvnG-Dl@3x?t+VIR7GNQdkQ@+Y&j1U9i%@HtQ zVMmk6#G>RdQ*UytOOKa_nGUjLQz^6Rp3|txs(XSic&$|TTqDxJWqB#9dma?gVKMcX zSmLZmyDxHvcJTsN_p~qOs{5z~$48SbrrF3l!c+{$D87y`rQxFyrY~6>6>Zue=ej^a zbTh$J!u2B(w@fs_k(JIxrsjBVk?ACZOWT_cF-%t+(9!gUg(vh0T}*dn^XGKz?*}jHwcj7;Ew-?~_(T+~mV@U@Z^y z*GgzvOqFQ~gOk2DwPJDk8q-ovx-^Aw^4w?|DZvY?P5as0J5;QbkN%{=?&PDpBJCb^ zQn*uX6?z7s5~1e;8Y1*pKsFf5I&U?>%=k);X%B;zY&R83x34C({kh%r&`F=`EOZ;V zVNA!V(_Z-?DZaSh6e1(jTrFY_n}TroVH3Q<+XH=d#PrgWI@#$~cube2zmZsoR{dfcE`97k!l~na~aTC0f0W{`;Tuy>bFOd3%o-_rp zX!&W=PL3nrJDxFZWTZX83|jp9tf_}Wx(hg{@$jpr{!)1BugM38-88LXP?|JOi_bNf zhI6>!Phc$7{Y9F${I2Oe%NdE|EcnaxT)OZqY08wpO?%l*6LIVV(_l$i1@*@(*XPo{ z4#+072oMdLfNBJV0-|R(0R1F%DnRt?2B2DDbh~nW9yQgK>+{7r7E+_ZRYNOps%9KO znC+8J4~VJ~5ViP~>-;9|%Eu;OhF?wLx_?ZYd^}-zwI!07j_@Zu9|)48)a`JssN5xV zkhXxI-^0BlxQ%4b2HN8fJPTB-NEXga3)I4o)EKe`6{ua%HUnIa8148uTICz6DI4ur z{4pPYV?oIG#YZZCH-S>c=Z(S?ky6Fyjp7|Ca&zi`96hIb)po{e;Rrn?8$>dH_MB3! zB9%XTPN_DL${(Q@s3mqHJt8hp#jFl${wz386~%RM&N?awlwBeyy5K>Vknp_5U^ zVWAz6VWf^@zQl`$g_ijS!8H&syO1AG?gRCcE1Af(GBl@*zr(FNqfD5bk@)@K}%#^HKgO>gJXhzk}wak%F@D%Q&$(q zK#U=bs*7Vu7Y~eXk?DloXQ=){eIEH-##>f-e8XWA7nCYv4{kucoPuUEUie?9AgdH7 zse|S^;y=BDe&k@G%b!N zsonrlwM!FPQ?*MIpe}w10!Q7&)cjgOSZP9mNNZ~q#Fi$s6={Vc=OU3ydy#Wl2Qgzu zF}b72x)ZdFm{Xe2Ma~mW<;4bEa*((*lSmgYLAOha-b@D$Nt~t?K z<(%YR3?~PO{;5cQ$W;;I#meM8Qd#(mF!JR)lzdVuYt;khD>_`XJb9Z0JFiN*&tvZLaSIPzu1JA%{ay|*z`G8|;C(Gp zx+$1JutSjYlwl9lqW*tHH@E%*?IsqeJ#bt^Cq#6T+NbuwX%WFF%J=Hp16PQe-bSUg zR7k6U>WRY>Q~qSIZ*odswd^?e6PN{+7o>#6r8$7qq?R*jY8na7r0HlaXVN@Hq^G>k zq(M71Xk$UjRN0xoY~(DUscp(15~;d^G}^I!%3=C|i6Y?`5cSfXaR72>5jSRQ{9r%DM zK5PCMI)Uo>f9CzT=^@_7g1o-}S6)^nQd8V>=&d-|H~BcwiP0CR;>O*_5df$$tqE~NnyD!sj6bqf!vOsnVK?^MK`?3xrHOH zP9&2K{W>ir9W7ZO;*4fiL;2M2Qo5p&4e&K_Gko3pUCLk-;U&{Zj=1{Hi?C{#Bk(%_ z@fs99J!Ju3f+q$QYoPHnNT4u zxR4Y?TW6*eA?NQ>9GPW219rIsI`>0}mRUiXqeG6fQhKA4Gg2JcYAcG^3<=eIxskI{ z6413Dpq{<6Qa+#+>p~PrKPN>c@VX!rzBNFpkwWV)JD|E5DOwahCuP6Tj=Mqz|B95h zL^3Blt|FyR2Aq}WALce(NLj$nHKE(1b7n~8g~anp$K=2$vU+TeGkFEli?4HPr2Og^ zRh2^m{J_bioSRDaL`U3nyyh<%`*bzR_(n4dAO1#TW1{#mZC3BqG`<2V5yA{0ddd;d z7{QGJkuZ}vMKi&%j1PQuJ1jIn0;(0l5+Hh>2M|5a1BjmI0YrCC0l^SNIwxG&p}`Fh zT?zow3(EsQKEiw#kgu>`Q@6t}f<{3g(kKWB#1j}s;^VV5u1dy)B9~}P$S1L_9Q9hF zX@;6E(Kz9aOEjU*Fm}Zx>9?`6HByL0UhvZ?dU&0DR=zI`x!+neN(r+9Z;#ifGWseS z99ocD7aApJoQ6z;d%;vPv?>Re`q6&C=mniH04H9&q!*=@-1c&9`Pc3tRn-jWBiaE>V|{d za(2RxKWTGb!&7-=^~~wWGRN^O&zt~GnyV#+H#N=qMbVqzH`-f2-aw64KR$pOuYP=> zh=K%lK)w)a?)vc-p}|0-z72@__TKslw84ApCz7#mVo=VXO8D`BoaZt;ATB4CWxejB zRZ|pN{C&%u=N9G%Y|YYNRG=YM5)KV_GP+}3TYVat@0IQgC}4z_xV3o^N%^;V5k>j8 zA$Mau@Xh@J#~6KgxgapS!>6-=E}mOUn)>t40cV(9r>tff|Fcl&gUmXY+fGsz$gM@N z?l=<&$Lum{42LA@gC-}oeLCp^Y`hc6vg(-9gGGU51zLoUD}80%{w3Q&=-hGTA?dX) zr1m){lo^byVuOujKXX#~lnWqUOL%N3f_WN6C6HI3eMJ~NI;UKMm!4OyS28tN>0^D_ z+_1(zX}ZqtL#eIJmBD`9iQ_XRc-fkq*yu-Iu zUpNXE?I0LX$C%#pSEwBaJyi8`4e%}%M1mJ<4-uLJ$R^UJ!L)VSTU8EM{2i6JYQ%IA z&7@kd8Zk$t%@@%^5iO!dtr`Iln2(%QBVf0mS9aBiHIRy)eo)cZLRF2ZhooIiTr*%# zj&Y5XNf%76f#xoeySB-Tq21``5^y_y%mHK&(Z^Jq5MO>SQToF{3h(x=O>l90Sme5@ z47B2Nss`ehf0w!Hvaqh+wfZH#ykC8n`}Ws^YW(X#w<*gdAzT@{^_#1XDMLdgYVzU# zn*Vm|F#pk`f&Vzymrq;up8r<#Oh`K}q%m+JyK9O2AQ`*$5DL8MeH5OyLEnIvw%+t+ z9r4rq-a3yKe7uG6hsIk#)K+2FGpV>?*RzN}C_Z?XdYWIKr+N(UI+mt~zmVgvK6t0I zz9mHaQQp<~WIW^naK&OVYR_)W0S%NDSdkQMp-B*7;-_;m9UE`=Bd`OMa! zgXKPhP^(Ek=K}(04Tt{?qSib7FAN&|#QpHU7UEs%Z+x!PUspK27t%cN;~73j;hOgm z7cJhg&gY01oV(gRwwV_P=dSqYeT#H0%fZwc;sS#h7i9j__| zIWYr-b@ib?6k|C7Cfry2#KNhsl!J!1DC3Y}FS8K6KV;|%YwJR2J8pm2(2`;CHGF?^ zv!z8GESB|n!lh+zd?y9sCR# z1wc7$r2uFmn`8mv-dzCk1rZ>=AOge}M1c4N1JE_Lq5yQ$S>J8Bz6tQ*Rd<<~0#wZ; zAgU9{5+@7hbeXH7I<4kh1yF{gn$@2=$XY$n@sZVhDu8l)DgcP{VN|Cz&YIUkGi6&W zs?%C0)oUw3)0plNINiXm<3tq{BmRkkV(y3pIFWy>pjgF;FDUll#1|A>nb1NxF312m z2q;+R=-q;KIlO5F>l}Smu#T%(Q3Vs$aUCnFU>*0=2M9d%<>4w==jf|~^_;__3N~^M zk18m25?$&fy3|Q@sgvkZC()%&qDvXkFf;|FPO8fs-Bz&K3Bl^Z_@tmb$IkzS~(L3=P9=akg_C)%Em2f#>w> zN?X*vzZ~T4yI+Tw-*-QT56Hgz8T_;R?sNSwYTtdX{{h4g$N}O9@g# z08hE2Thu<|eSW0?klQ#@&DETxuFx-`VKQnN+ zt2hG`G4jFUzS}oWWWbx$Wl+4G;l@*W4oNd{boW-$n6ki?HjFwOyI3gJUavx`?=-thpR@x(8Eox0YTkGI)M|#r$OHc zQUz6%$+$s5E$X^2dd&9t=TCuBfg&^Jo4X)*BZxj8{I{ouq-=7i0!hwznk z^XubWMmN7c&3hFf-ptLf&+sAH{Q4}sOU7*og7EZpz386QuApC)3OiK2a(_@)HF^76 z&`%mSy6V!N-2P}dEx-Cg&?7{OF9qF4p=!sYx2{eIWJT7#x4&)X#I*p3;448ZG(yG= z5`HhJ+(hmR_MZh(D%q!tF<1By?Ww-PhX|l@CM5uEVKM{|mu`S6nXCa+4T@cqtNocP zY2s}MuT7tN_GcQ%Oku%NuzfAr8f^bvAWK5+GhCz!U}OUhYHHu>acq|dC-2z7d`jM} zruI;+IO->8y?3l#P|IF<#52)eSAoAxvX@J`fwcLJlI>p!8hIhO@MWbD=8~0N?5z>L zlWPA$m~oPH?rQHOlI=b0Zm{u1Zy`pWgX;>-^>AI`V20g*htQi`&3^}<;8^My9DETR z}>mN^lJM}gfzH+ zghh{Y*V>Kv@ml+rcw4dkfM8+UNhpwQc`aCHp9~vgv2iJEV~kb|8)B1i|5hn*iEzEW z4?eWs-a}Z-ccJ_@*hA5BzHRoSTnC(3G%m4w!;kz|;d(nwjH#g&o7e1*it}ZU$sCIBXXcr202I`VhiXMy6@JNVRM5HgI{` z0qLwy`3Ij9EbsE|nmJmq2zMvJqY#>ylKa1GcR1dt8n zqh&XD8wrVPvsoaw+qWs!B1ER7w#l;zr&ajD8I-^hR;Rvf$R#E9WgwqzQeWEnY?J!3 zG1cRnokdu{o%h<+LQaf)hb%lN!`XASJ9}U)tn)@$&JdXe;M}f$8{o#%=g~QoL&jCs z8>}Mt4%PEh359NW@>~BW>?|+!B}~G6MTYfPo&Zx{&f+sq>Prx4S-VVqSx9&A$G-E2 zNX^*z-alF#3^O85eD5#&+8W5z_x^Q}V#u>mi{@E-iJ-O^D{fl95OAvtNG-%$WvasC z?f*q{d}u9f4Qn>WBM-p_cYKWe>l0sdmJLU<%%K{X5~nux(~AJ~lt1AepHZtaIizHW z0A61=A(EBHu>d6=t*|DeeEjv9wztTjvu(qW@as}?{t`N-7Av9IWaTaNy&m@AQeUA{ zdMWxQozeVt!Z=arbCTqH3j0L2TfED{@@~_oNd^Iu_87?|AHkOg_8VGXAJN&b+ za310^&hQg9!h`1ZgwrAmx8&YHxJj)V7;+zbc zo|f+C;)5DnQi2g~`HB+&e|M!|txN>LS3s zoVuhWRTv?n^VqAqkcGOEiQR#6F%1Tk;GP2bM*EOQy@fp*ShG>4@C#Ca1dx40gkVw1 zA4@0xJHvzk0@L&nAN+Q*kR=R`Cc~x(i(S|i*?yaT;6m1KljAVB-zK_=OBAyONGb7# zc68Dl;gW_lStj%n58-90yLS47(g>w(*fdl5CO_(A`1`~S%5%f$&??2 z^$6R2BO9^%_mI4ht1?)Kc~}dUV&PSb(I~ zSJs*8;l)1*v#Gz5H;LRNeC8@GrJ5L7v|acHGBpv;pM_PP(xM+IZqrdA&y~cU6GqZB zrHU)UZ=MRPhc7<$P}oNb9|>@j;7y)97Un7`x4aalNy3IVSa>IVO1^w2tfO0@CY9nZ z0hXcHu8KhEZ!jCd-$|qJlVdU%Nu-dq8045X-Cg)NVSS3uck-i&(K7q61j*_0MRyujLAND+%~TVa>xUO`Yk^Y$*F8r(BFQ&`;`EU)s3bTN$=?%VGNhM?K z{dyAkhA&UnAo5~%yn6%m2N5=DTtuQT*IYoP^$xwa7OlZWQdm07#tLQF&-josY>u#F z33=iXdynU8JnI$PS>>TRQ3v{kj<4!O4mcDOOTAdDh~|c@I`c+341rUFHqK@e^l zc&>M3?C-9)N$c2?q9^_TyVkMW1RDGa(&@B~9W63H=CBoP@3MVt6U45c_Wmfgy^0hk z#g-uHUud5X?vfHa3U07;;Ppp57icBRy2NhwC*4QHX1kM%6Jl>mKHZ7V(g2u$fisIS9pcD@n8@Ct{Av2=dqSiRdd-(c*|36^3)kzmorT)2Gp_gi z&v)+>oP(f2_*Y&z%&u%;rI=Sy~u_QiDgL0??Iy8)*IlZ zTUF&)z*begB6B<~gOPhGm}oL57N-uOL-44sWucO6GFb+Q*mI`8H+qh9U(}~Ro{Rmx ziHF7VwX0BklYDbq{0)f%={R)0D~8vFwKbH!|MhEes+BbHlNL$jM15(Ql6+;CUZ`38 z!@*6Yb83HCIC|$(ZlH|QJAVY9J$vVmr{dVAwbVu=Q)8rS$Ssyr*QYuTK81(INz=%` zanfL({4_lem`4idQwUVq(l$3~VYrq1?kNE(CvjW-}fMx*8ZR{kS5~ZwM z`f7F;>6(l906?79Q+fp6743UTk!I=bF#2@FXz99|<&vx%=U5La$2ly}%5ly4wi`em zY~BV4c!7QmAWkqqoZ!lF(RAkR`mJW@?59I!%qP6iZ8=6ZDZ90KC(k}he4*vTZ}S80Yj*1mA&p+0}qaSsEy-EMfH^86M z^v_Kr{8?{;+qZYmOI3L6?;tGl9eM~E0wPK_UXZ>HaT5)-RL;hDl&Jg{KVGQN;~YuZ zhdh>)GtKQ}my~*ra<%1!x)!JiK@j8MQ6{Kp`JFK+bKW>Hjn)WdOaZ8j_nHqfwWvf8%$f^QuX zI@quW!E-aI&NMs`+wzTC2tCL-1|ZHc0CA21h;s};j@tfNMX9+x%|*yx25+)^k|9$N zjCb*bsqnwRsfM{O?!#+35xUV%ewuA)q=#rFQjmUcl-#=TCku0!7y?wuI31vCjQhji zQ~su3jCk%x={^}mZ^?aGP3{NlKT)9D6`7C+Eccj;jr*3o?~JI+o`0PAH%z(!N2jI(g%EoS?1QNF;lbv8t8<^J0Y%v z!_&JS^(vYr+~7H}m(f)2-o&g(D3VCEDj^&ZyK6!Z0Z-Q^Sftmdp_|B$+JyB=s*4#& z7kxsZjl6E2Fwz4qn+~xlt#E4ZgdBzV5}L6!JpnBIdi@f% zkX!u{EOe2O%x;1*mc~ctuS-39^_)bv7!=Fdo_VLvM03KcRaT-l#}a3+h6)chF9i7~xLbeoSnkCihMS)K>~skdfhh z+itKpFFM~g#-rVULO#NsOTe5l<6Gz3j>lhJ00*NN7ut>xb7&L#Uu;{5$Vo#?C`7gM!Aj2 z(`T013hyzTH6ot7IiV=B_?6{(N0x9bv#2!}r_7@EPN)knoLSV(34w^o(?(`de@!LlujLuL{1F^9%FpTdeN3vXtT5oUD$3d~3xxe#zOz#DRb zRTUsua)DJ97XIy36;$V=Vz;X5o)$O*jw2q*ROcWerO`2uDaqUr7btGDiYq_<-b zAjsFIk^ZMiMUJ8kVrhUXGjx#uxChD z9MCJ|t@1K*6*_jqPYMm`W{A`=mszO*Iqs9beZ0`aA1AFe^oMXj3!?O`zzt>+(18y} z>2rnI56FtEnozj!44ncQDX(c(ie%(1i1jH4xyHlZX+9211WA(bmPPcjay>rcc`$Eg z#B@P<}83Rn1};3kP!hfV$e2E+o^W4RaG$)6#Q- zw4+(*MlnJQxy!9|2)0CNktmJ-77F0f=Gt{&DG!X+PE?ZWHrgjjQ;}m%&n$u#ajwXx zwf*st_A3FD@w9kt8@;$lejhi6q>6pCt*Kuagd6%q8z)Ut3rxyNn6%< znD)82gib6WUuah#JY~7M3I26BWR8};)T#v2!XLP7VM{1L_D!JqG zg_&gJx7rU7UOy*tAYSvGwxx2O9oBaPzWkkbHCZ=73wrvJiCUeKoXgYBQIOfQv>^&` z@qn`fvU#pHMi8lrKpxD~X29_t?c**#XiY-yFx>wKZC4nKEk9`CaO{Fy=h5X_U!9h5 z)AlRvn*r+&D9~;f9=9U;6V9+BI#DFjThLJbdVj# zz3aD+moP2^Tp?F4-#)H{73PQa+F9V*U#8utBX4$V$C||Xl(B}N*WyIt9-ynM2a~(M z+2TbGN9#f$)Ze#YC_L$}OY2Sg?$k|$M8LTIPA@&VvR{|uiWe2MGzf8ZFxmkLdqyAA z-BY0{_;{YJ6}X1jX;-;Sw~ZF;Z^)?Wux|o!C7_p?$USdP@@Cl{EAXUzTP|^%XS*Si ze;3)FAfaeJxs7dc0_<+tZb`}+4Zye z{Ae5DN*0ya#)>3hv(43owA*g$A_X4v^zFvH4I@%$_xMP};xS%sVl=Vw&{W0H~#)fWmKR}l*Cy#ONw>j$bHrOL8X zB*6z{?k$p_xLjG0bclZxoIUwOQ6wGapD&V*avm*`9MVuEU4xGj#URz!5W0A<%2zGD zZAu&bTw0^X`38VXZ)lDC_^A0Wjt zV6s2Ac(+q*^sta772e;vfWB%Xn|FG@pmW9gU%cmN@zA5*+ga$hQNtT>iboB%(ZRL- z<_$65$o${DN7Ad<&5n70G)T4wv!kuNqq3tL^Y&&(NAtF2N4MhjWJkB=t;~*&;XRZc zox_6vez?Ipsw+I#Crs>9&B4~%;0hn$?2pnoV4!2fFG$plxJRfZx zsWlaS#~YkkM5Uju1erxJEg8sw9P4opl0MIB_K{<>&=Ar%bzMsuv85@V7Z&P;#}!+L zqJK!=lEiLES@Iqj&l_+2DRDlFcM`WL5jMF({|WFF$}FB0pE8%~4kn(<{~J&h~{s?#uvo?~53 zwVNQ1Zv>5aAr7h#%!fbed2C(<6K3C*FvNPNmL|lsP|A#=8t68&$GS0cbz#3V^Cu_W*Q= zbsj*+9mJGfa}c=M`Hd~CNuEIKHfK94K^m~7gSxZ<^atx1IF@8M?3hySDwRV-XOVOqDJ)TG-_uHPx8rm3{fqgz}pO6nHL zHD5bz<-;AWGhv$8`m^i5ZjxIBEw}No>k1_Oy@poS;i&6ADQgTRQ~b?!acg36)!c+Q z<66yA1#aM>iNo3Ohn)1#j8Q}AyBLUyZ`Py=WTT(vUKH8TMYCQYpLf%Iq9j*(X|5_@ zeWVeW$j^N>F79~aFpaCB(xEQ{@$5_uE*FY8GA6}K>?lGY+WgHHFH<#g7OS~kBUVGW z#j?*e`U%yj=H8<7LJd4tIo_&CfCX4^@L>PsE246CBEVWXl4nz-cN_s5SZ9JOu{x#(Ti=oB6p3<{B5&PGXIYx0Xx}h!;udypB=;Nm%<&;6G~5%KQa8j1i!=?!hEM(B6Nj77 z*vns?0;Bx;FxaZTeIX8Fj$HM5rqFe+)rts$ZupG;81E^9P*|g*jj*S7&)-W3@xZa= zIxk!hZPY7{Os`8$^)p^o!gab7{?1*>8=4cjNH;XY++iSn@{Rv0phZ0v8dKmjtZboiECgx( z-dHV>u$9Kf0?u4zJcMjGu*mp`_^&pGBC!MQk&o6G1vOfN+iWs!^p|z1@K?uq)#0yB zbI}cdbsmHs-``|h1{S3(v$>_lvjX0u4D7~2wnVi*M2p~ZV+xz8z1^{k?cM`kU)nuTljUU%p!RIJ0*KQEP!~ouK%7E=fG|oy z+C91>KyYIdoaRCJ{j4Iv zROX7mx}02>3`{d6DDbHZ$}Xg&hsjrv4p-BL?CWI`MA3tSzxFlds7SZLrdzH!Zlq~3 zem}RpH@-2_^o7(Y4R`~08f6M6lSY|D#6rvFjyAPa;YVUn6Y}#nCL=Po;8dg!cC10^ zgXJ~o+<4P8Ns9d%I)?O`Xo?r6{cCP6y%dC8k@T@}631f^Et_kCO-An+{0i=ao=52t&KIrWGIzH`bauARGnf z-|nOHp#s{Ob4SDHfc|x+dHD4@lSK-r0*CeMO#xEB7~1y8^`=}TU5C#bamfbLK9arB z6oyDyiRmjPtdl`oOr6QJEv9)2m`}pCnMA?3zmTyPcn=P7Lf}h_KiFZ)fJxcI1D61V zeSS90A|*eYCMrmaUrfz)IQyu{0%>SVj+*?)siP(r7s>57CE@BRlNWLu#Jg~rcc$Fr z)22KW4?Z8JATgFAR-Q3^M}p6qc1gJUl4%HYTUdUqJ(u0($KrXLmmli_$|vr1+4S5n zbOd9xf=#dsEURV(n^up&saH%bg^zQ{q${RJ0t-L1BKs~cu_F5c7o`>1FOGl)Ir^Gu zKfd@RIfXR4Zu(Qi>9jr+j>$g|Io+K+$WhvxTSJ9mWlG?_cFNk!`CAVVC;JpliQQMpU5J{f| zvl}9#6U`AcNfzm3K8YYBL{5^qOhAi>y^Hy^LK0xoFyeY?=5X?Hn)!-?wC-sx)=C?m z(i!CHKr`%VFBoht05`7B%w5DC^dnO~Gfz}v&k^R6R6Y&ZGF=KI4@Q_#+Zl#+U=K*vL6zy*F%&;|AGT;1O2lLFCLNoX&wZ&amnIq99lD*2DE4cxm z$m_@6X+HFW&x*}gL~^;rd_+geel|Cez@gFHUMs?0JOsJ>-E2W9fcPCVCyHdmDf38` zaV{TBa2WyTJjz`FbpbcMgv;iSN%3X#pDJX)GjExr#r5E4f_L3A2jHi-%)vCqj}h0u zZMJD(TxG7U>hF#R-Zn21DFfoSx6MPvTnc@D$9xcyC`R2iXMp|-6ED7N9!lL#pkmf^fJ)c^0Q3_Z6o9zE0|bg#fcvs<4+(cx`A&wT z=o2d64-v8v$<;ShJ!Ay`$QkP>-d2EkTLI#21&Fs5ppC4B0BvHe28g#6AU+CbtfM&% zXRKprqZ{dcd+AVT{EgN3An9D+_bL)M(PlLa@O`Lg)-{LCQD>^U=CMu%D4$Ie02Q(U z1;|l-Rks`u6VV0v!cE?Dr9d$GHQ2WsY;i>TrX#I8456$xUT_~l@|*ZRLE3*Xz#hVjmVh|6_Y?EvwK382P|9)P+qDgdHiJkioOfd;mUXzja{#(Agy9{2?u zd4s}!{ZBXp&!VyT52gBUhm0rGn>wePuK{+}PS8w;MO0Z|+|Acl?G9PzYpLroWc??; zdb-+@e`cr8p95-PNV97j>c;O zB{;+1Kw0N;`~Q^nb5u;R6IfniC=9y~>|c#Z3Rs&H>$F4xYj;?!X2dwLH9aw*TF7ytojHzG)d~l)PEBrLRrP;a z->Uz#zE%HeeXIVT_1%P;^{U$Dx6}Go{ipSs=8il+!x{jc@?*9U%^ zCA_a`M+5nxmEYKg9+0A-)<2I3;@019YbeTCFfYZM?4Rv-uO8XA!OzqL70XV5Nd`=^0zc5rN6ogj_U z(#i5zc3q;3lJ^wP%(U`(8RbuA50=Tg!ft3~z6l3+Wy!?J7kBRA=#TcCRm;d<~8D2;;uj z4NzW9+ntvH8lV}qunuqT254q2EZ_4u(g4k>g?0FJH-LPo?-j5G003Oa@Dkt`t?|_p zv4f?Zl8nCRvQfadH8JnW-I8`u2))5iQ!EFeNein%zW}e+G7XvWovlPbyUB>6m}f}Z zlR^6~V@=F;DeO7zN4j!FJcreuLsXHHaj&6$@@ZPcyGpv#&}CzcLXeaX=pvc?Q_L3{ zsVI()+1Bkbhh4~wJu$5WcX}5_u4h$6OZuJ4eK7+xB>z~cL&;5 zlP`j7;NY7VZVPdR*soDdAS{RNf*|z0O(wOn5gVG1<9BLiDj~903^e}OPK`nk)s*sf>rZUAAZ!*nQsV%V|= z5U6#mT>tKDgO@Q3wa(4mJkqt z9icX23(99zOH*bbC1f2IK;}AspE6s)CeOY-GWbCE?EynB4}RYsV>xg1?UBv7u5XX= zR6o2}ka9=CoSsWFufj93_s102A}#rij{MoRDb1x{)=*GYoU)F6VW)77^Vd${Ca-s= zaGTe=Q@G2&x>KkIO33EolpkH;22^ejo8;S9nr>5i6le5McV z-x|rP;G|SH_o8^-xtT>76#J-oQkg=!{V!bszHgQEvuBiiege5JUb4vma#&cM5Z9jp zm*K#vXxpYIB^^{jXG0u=?nwt!(vng-H2Qu?ZZ0HYaFP~zD>jUr7b}erTGc@G<{U&L$i}J^UEXs-pCnl+pse+ocw8*N8ASV-t0gWbWBE~PK5rbVhK zH0ELw_}J2#PBhaQP!HJ`15dx002l(*J&7>+Fq>P+H37!CwXVg5a0XI45qZf76LIEo`vwMsW zPN7|hp&a^=VWTeA_rX>4oq1m*=<&0QNhW-m{J&45dqL&yF@|Eul+R9>Jj{={DV zN3HR}kDBYWSogQL8oP}2_d(_Ck?s;S!7>uw>fa7%A3%HI13G~IJ>ben;zMsA+>}0* zqM^Fo?44{N3>pi57LZx(5)koYcc3(pHfvk=7|7}jxwT-ZusK>6hBGL-ydJu?eYEZ)oH){7J3&4Nvm$8z^_p3oMW>8jj6zVr8R-VVgLR{78{u zn%dszTLV&ct*6ed0Z5qRM6)5LHXL9<7h(TutXaS+omgjNMZngW)J_W? zur;g$7Che?0JPOvh0~k`Y>X4@G-m;um9u06OTzaR(K^9cLy1K-WNPR8Mk) zNV`ku!iT21c}l|c_2u7e*d>SyV0~QB`X^KQXFq+*qIxY5%04!o&f(g=>J0RZY>ueT z0_0vkxa?y|h}d0TzO|oQGqChzy`oVrY-h?!W20Pp#7>*sD7Oh;aU11=70%01+q=B$ zfqTjiWkke%sFXpE9UqE#7UNWX5U(uaxkEdMcn(ITvAp+Dy9N*G6w#!7;yI%Rbt<3t z=UcR3$;}T~+WO3hf9fz*1|aS*29TC@BS3Df%K-9V9R-k;Sw{eIr5PY@CuK%Fph3E^Dx!WWc2P;Mp`AVp*1Q};&)0kxc)dD- z>XzSrbxSGfXyYoXkX^o=Wgu@L@(HA(B)uVQHbPx6c0*R+t8H!wf`2TfDkKi~L~+Kt zyfYW&Iy!w(t`(F;QtF9*6j4W#U_hawp~A+?t*QuwcbR4tLcTDg7lPa55v;Anix$H( zl3ou@L2N&I{m`R)9M%s#&MkrUL$A^LZ(0yU!2N?hC&nQ35-GNpw8!dT)Kl=y#=U}( zpWt_&d=ZR(0N)?dyAgs|ltwZv47Gxj&T#ZZL3Li)hOBxFReO`-Ca9^pfkRDU?~o6^vCbMwOzW+Y0!iCwtyZARWXaI@EEm`VKG6ys|J+B#pOA?E1DA0M za@^qc)>ZiHSK?ccj9hWqOk-c>d}|Fc<}i)`sF3v>K-(B!0aWQ>#_qF>Hr#QR(I4#o zdbr;#V;E^zocuHlPINn;O|B4$=2G$y2#I+)Ias0W^O{~wAseqIdnlBj;-0iOw*8qr zNo{g}%$uI?4vZ@s$Tgr933Z)!`%+OHUNCpcjkTEgv0r^`@(JG}qz*pd$ z;F^*l>ZqoktbxZ;vu%{z^STswh^s;Va8LO|z6kAwD?L-rk(G5*b|46c$!=PbPrOos zhARs0DM)O);5G^}y+iOF70FHsz9PvXs!8g{!S!7G$h#4J_T+F=1RyxGq&y2y2$NNS zLfM`MK#kcb0K_E}ATFVO_T=*B_SrL$a?h9jf=6mVlCBR8{!0+Sfb}5{yZ5wUuq|iK2rg5ybeW}DD%$7|=LJ_F+4hNC5KKH+1l67KgL2rM3{WNO zdVsDmq5=Bb2|Z-w1Fjm(mV2v$54a#mLAoJ0j>WCKzaiLF2}gVn%7WJz;X4Mh=y32u zl{lOd`t7OUIl;IL62uF$>fqR2ka=70719aeo<4Bj=az3s7)$%U7otn!x_*EgKu;@z z{6gAAlXu3Lkpg;0+B~eMKwyThhatxwKC1VE96KHW-q<-x^71d$5IFqAJszkU<9QEM zdL=~N9Rmwg;R96)B7eLOND_rV6}aRAx(BCMS1zJg!ejvtdl*m*71Dmg9*+WgknS#F W_XMmiX?K-$d>Vi?_?N9I5C0EYf589% delta 45004 zcmZU52Urx>_cnKCcImLNyL1p(kRq})6_BzZyA(mNcg2#3QS3byu*BYj*I>im4T^fy zSinkbv9}}!jT(FJ8vUO;GrPZh&zC&U@_Of%bIv{Iy>;fV*@w8T&kl0D-P>P)g!qo+ zgaRv-7KViRzOW%~Fd)V^ln8ECDtDL{>+9n~`orpc-*Q`M+0nOO1A1YyZ!&k=fllw{ z{fekzNq6so3V2jycxFx3!|C>}0R-N4a2+qe!mh4bJJ`|3b*43B4s_)RbRFdSh$w1@ zZBqHuW4^Ca;aTk-T>1M)EqCMaYvH!8Y{)5+_ugat<3hjgvbg0#Y6>kS)SY8NpQvL=+-T{UV%DUkeGlb&*u%_|xvzCpQkCo(Wu^Wrq|QLJ*^J^2n^9wf86`QY{NbMuxvS9szvSu!xWwf>{@a_fk; zNREQ2QnC;tvbop6c#4cVEP!u;@Piq&&hO(_@Us9;tcX<ucsY(Ay^|z!p{ZFcarMj>mRpNh=>Gp|v>Wq>C!k&o# zsp9|lm@_9@sha#RRrp_OACCkCFn5P*$qA|2*A3J5Li?QegOB*_i)5E%{$+ zv?aAAEu6&4w6Z+3Qt2&E+x#ar(vsRyEJI5Ib0>1|3GLzTpoW_>^OEc!YEhoE8k!%^ zIZ6a1C=Y5|n{yQ&*5(Ws;MwG`+dOfj_ojt~pl=VE9#+H&XIM{Pni)1*;0{{TC1YZ; zF)|##kD(mRa|y8)PWex>qA$k9XlV5Km_ytKfo`bEe~>A9|4IJ2?ENSC_gD|}tCRc( zD~Zq$$$pAR_PUe&N11?5@}Dv8>4Kg4AGj4|uz7LJZ?-UbRZN*$D>6jA(~D%%s&|?) z8NGJLTvWrmUt@*|F#K%HF9Kv-jL{SH-C>tvyg5{8-j$d@j_$t}bAc|t9)S}ivx$%?n!oWhvnj#KO)fp$~J4uC7_SXT~SYGYe6 z=`uWGYwTN!cI&9Al#6%N?39al)a+78F^b4vVm3quDOwT9*666&EnBdoW)F%3%AnXo zgl8724UP>H=%=t)KhHiYxq;4oG;;RNeQ>N>`*A@pVE*qt7;GwCf}~cAp-r_V(*0%fGi@ck~gFKl^nr zkwxj(y;^41e%-IheB7^loyr@ypJV4Li6<=B6+2Zyb-%=R7Q9%~qkf6~*%lQIJr?_r zqdv8=EM{VGlTiil{=J>=FLyb?I(ai~GE~4{ZTFXpM z?PB8|2i95A?#o?!Y3&nP*Gp@kGK)CH#f=Q5C%VLSq>a1AAfxSbaD?(iMKc6hG0Q@>D-qngtX* zE0_Hnk=!{2&qUuGPW9`c>znv8g<^9utKrGV_!UY;vT_Z468dpy%U}HxS~If9_fL4o(}JLcFZhq*;Dn0; z5JU*J#!);gg`KZ-o-jjRQ>$A*EM> zj~kshI^l(Yf#CtgV-oy*fzpJ__Ap{~!bE4J$^4oY|EyES%##Xu(@=4dLnF zfJim(@5)n`8+H9UU2w(HE%!`(T$LUoVx#GP7a1w@h| z5Rny-Lg=vUfYCs50$vmPOIu?BebYRkLU@j@Oy}kXEQLmS0Y&z7eTM*F=k08Q$`t6f zUCY}0r$a!o5{kM95If;V^c3jTH^AMN?1s5R0_+K_85%HzC|o%!l`psq4;XI;KTQZ& zXbp|0251$~c2>YKYY6%=V749oWqE)f{d;*pZ&C~?D*^@+I8qVNf&=f>0Uq`=d0W6N zxVSCAO$8GU1^lT{jPNQ)6SO}Tz$=M29e66>36E<5=zcn&qXNfcgkHuNIp3vUfrQ8i=WIF5UH z8BVWD4RL^fccj*6hzb<7sl`0~;Z*8<{KuiwsUrxbL!){_qqC{rw$SNnY9kxrH1mw< zf2Bq^(p!&HBS7~gRUhnCo@&QswPGga;%z@m;|dpV$MQz?&0Wvgi+&Zk8lA-huJy}( zA@#5YL12x4XAJKv8%H=@m_l~dYO&e1PeUVDjSnx#8EA z!mk&b8-87BLHnyv#ok_NW3AzJKw6jshGA%ATBO3sMb6U4kC6uy#HOVPba9ik7`W6V z?MG{&0-ra7ZDl%qUX}A0nvNO(GY!>CN+q@qM#4^r70EEV3!h2pAAY|%;Sm|W(-c_ak@n3 z3`r|SURMoG^R)$kd~yX>hbOeWVhM)6zYaLLdrG`_D*_IiV|8q#uO773uSnXoGvW zJyXrrgc%Q-N6-?sFm!s33&W3pq~9TwOm@}4A2-wA@|0xfY3cdf>CLFiA4yuO{yV)H z=}8BNyJ?}_-|53_q3&^d0Y_iNBx^zcEd60DP5b1e0e4-qEgZQa#P|Z8?brc_K4ub>dg9JJqOB7!5yrXOTL_Bz20ei z@CXIm+a0`7LGDAZ>y4}hVE}WI-hVdwi;!!;cg}rEBxXp9!m#szmtAsuD9AK=(LHA- z6nW%)B@nVM=T}?hng(`U>t>*M5bDNJ{i9Gn+Wt}KA@F}3no6MWlhCI^L@T*hHni+0 z_r->moh)gEa<6P?$*7Z#ei>TsxbYbyGZsY~pPdDVSE1YNy{>U~T!-c?E!fK>$5^l~ z9rG>h9sa|@*WrDo71!RazsY6y9$Lqq7BvW5_+tZa?w1!3`+af*N;Nilsi2ryhYYs6 zG+F6MRprU~iq7apYM51?yjH+@R?Ldz32Z}wTb2Bjce*1>o8@#5$5iTN;`KOC`Oss*E^HroFL{%a$~I_B22`p!S4e?59|&xtOh(Skx6U7 zGb_gHV?QSU#6i7(le-ZvCJ}~zNuI~o6IpGf17;QX+eSK6%f&}JiiN)8Qtpxo({OPq z3Os6BlDynOB=0dI>L9TNqAn8sA?haa2BJbqF+?SnTB;?c!L)M{`yi^5^Ud&=4K->; zAYt`Ep^%cs)6Lc?F9hUnH>j{lSwZMvyObEkvJ956+%CnDqq`hZ)XLK8b1dbkLrR_l zczdSA61u}HC6T`MN?A$!yc9x#dZ*mwh!qU=OL0@u>~YE%m>!feho`L{X+7*kuU$P1 zE75>!Xo{YP<_%Jsaxkx9N+&yE8rDspHc9cMF7YWj$kkoqQ+x@Xl#t?vzT-o+@rFFo znD&Y{MANMaDLbHVVu~$C20-7WlyCyel2g_a$W2XYD<}?P6Ixi>EG3V_S+T1rWtLJH z%S2zCo3g{vBMTu5mXqCa?^P7)WcL=Vn=?A4jQ51oLsRDGD7Hnglnw_|+|^Wh2Z^rR z9i+Sp_TzLH|5LeTZ zxoaxUT$>f8ezoE5o`qXWeBUdH8@;p2_p#u?6g|1x_pm~l*yA~~^|Xz?xG?gDdz*aQ zdVC{}^6k^m2SpEUpH?FKW&5-W**n^&t&$DXK5ex;TC`7FBb%*#+6H;n**>jO9$(t0 zRm*uGC<)2w_wfWVTClf>oiaVeLVvH1b zz*@u*EACJy*Ie8IbznQ`0wRAY8W06ZF@UJP6c>m>EGSfp0ZfaMVgQjG`iSJvFYYkm zg{)?AhnKSI#T{@ZD0)Y6hxf9Y#T`*4(QL)vIhdc8V4AZimgUT$coL?G^S$CpDs$OM ztUttjlYGo=Ou}gc^E+>$c#^+a<4Fdy6(*IiUGn}XeH)MoQWG<5C15}mww=0LONGY6RkomnFLLGdiC*+~@i*jjUmld$2GZx1#D zF`e-}1HNZ{|5ZZJW#9SsaH!5VM@1hV3>W~mFMNY+(7)0@_#X9y3bo(G1~5IE{ zuAbrPLLkzLxF=FEjI9Qleig$OTTlf)rJN$1?Uu$V!ZQfJYWY_ftPD?4!d{2)tmdu# zB?mfGXe&DqBH4_G3fWqLRe7k;Uf$Y6VX2&clgzN3R{5mp{<@Q*;Zr!>$`U38)WEIJYK!?J}@1q%50n}**hp>IL% zPj<9@X6{#V80NeT8A8DBbqG!hr+Q}pL@q&qSGFU8c<*dm4x0OB?@&$@fre;_6kdpyN@0koLJCbp)zScTX@s|IlS?De z-$jF8o+H%_Dr68d>DRq^Ql$92_GM4d#DTXxh4osC=Tq8@VQ`5OfV(hCqSIb zy3>jjpGbjCPT`Lfp9&>80Yi;G4{f*|wiN8O8jGKKxDsSZUxPpq-e3kLbj5#atXpHqaZ{}?up@cD&< zL8E=rY`M!S*f`Orxjl@UT#S0B=WmTdLW(rF`H9O%z?n<(Mu zZ9a4CNHy)dB=N8`(nWraXM%KFni#;r^yP_dcxY7W{ghO#t>21(^Og{Mp6sRr$0RqU zJI5rC;}*<=;--PMY*VU@F>t1mdglga@#t&tZEoNbUNOvoMx-qY0=vQPg1~wl{i{`A zuyR!o8)lx+)`8dgCbtla4!P-;t=z4MSxh**pw> ztI_bVX7~f{;CP-Cn&y|%$^vJ zhqQF%=v44Z_uKA4FL(00CnT{hKGfNdV5SAEBYx@b=Vez`&t!tjef{=0@zn>b;fGOv z4OC8r=yR;+E#Ee)CD7Xf8+{5Cb=o}UL7 z>e`ohAS;N46-@(WaTQIGf8C+ePp+Q@C|vFu%hP2mT|L6YY?1Eh;nF6Fd!kH=k?u|9 zqLJ>R*t=J{u24G9F%PvZ=CGj_3O2Z|aR>}I8>M~(3d_XqQop4otra48ztgpi3$#1# zTIodj5gzVZ@kD#?xVmJCju54&>g~SlnqmuCH(giR2#s0&+&`{&c#;Z#K6KUK*$mBn z;<|#k)5lL-ml9Vx;i;<|4ik%>x_09PHkQz*&t21cMo4VVpIO;|JLK7~Zi}45??BL8n<=vEimx<$9T(P<3~ z)kI6XMi`2*{HX}TU=k~K!l-H338L+AqTf|&7g4Qw8Nl||nPo>!OTp@Ba-_jn&ygjJ z`Ifn}h-xckImWzSjFr((k%o=+#5%_=%aR2fy9`AXg&n&LolFgD^@gtsx5kLY)J?f& z`qLd!O&JEJZ6tma|}Q6^fa4e zm$RvK)MNbV!hWvh8MIXQytx}Z$ukTLB=_LLt*pm*4E8Z=tOwZ!!Ha!eI53p^t{`0X zE?AJ7IMo((*@@c)c$t^j&ldW$Ph4-UD1VM3Qrqr{!}&s7NR)O@^yYDuM1M!X_KcYc z4qnG`OB@Fgl>jMBtRXy(+HkB#;w$DN?(pv0#9{&iiV{DvGl?Zb5(n8s!1%;I9Py;3 z6B4zsvm|khHDpXn3{rbtAa-14YgRM*K)E!ABHDtxS!JV>yHS@h$z7pyo8UrD>;61XFZ|*EkzV=J-w(e0>EFwRUdHtY^myjKTtl@&z!UE1W;kkUHpgA@1bajS zdEJ_|CY{B3WI=!QLD7*4`eRp%onFvCSB~a_{^li8LH`!Aw-od*kh{E~KXU}8WI_KD zc^+9%Y{izuE4w%A=?IR+&92zPyHU*sGp?IDzS(I9c97x@?PoUgRKS>d&FmsF#m28Y z-Ip7`?!>%;ReIg&iIp^~KxB|+8i)o-vlK+Kkk_4_vO1^iZ?@G)hjAGlAc)U+!-L*B z=PtO*zVf5LhCb_(p(Z8Z{c}hfajKM?3p+Fn$3i-+GGqvSUKuipj@up*COlw{ zxoLX{-kg{QEmnkV=fHMVNJk|pgLNlDFWbQUbD`-xISCnWeTL)Bj`u!Sc`^%n-_1$j zVEsQiZFy2oI}I_cq>7=2PyCrLE}-a|@s|>w_R8q4hV~;fdfDT4^=}h1l9aUfmAtMv z#eR4tFNkWVXQ-*;)jWUN6&UFjB>hl7fHk8zi9+70@0IMm3ux z(Yg^j9UbdnyrB5-+<=zJb~K)}6&QPgqr0&{NniOIqao7IXze8KH9$gy@dSaLkw#~w z5W!gQK%B9=;^q&mUH3-DZPsKE>`yXQSZl?g=s^EK8#2G_KyP9m+BL)I1*I9ra2|GL z8aLa)uvW%Q9_-s0alnY`VEmUC+*w`GU5q6*WF>6qZG39Sy&6jA3^XoR)Njq|XgbI^ zluD}>Pv(AW@0NA9D zI&LuPXvPNPEE>{3){masVDzK!@dx}j8pjg4ZjpCT-6Pl?=w#0mGq0!3f=j)1IDI~JTB@ff65rF?Jap?xl_|o(jbSZ zgod3m`fyF}L-Hx3v$aBH&6IC>!Kfj0^hM)D(wu(2XbfS8$L=)bl5xBs_VbEM#v=;F zx@+hqwCfFHF-F9L8^*WXkJa?e@5V$(_`~=Qo-NbVzl=wrb)E5+kTy+)@-a79HBBRH zyJ{M{cp;^sl|(05H4PV5a+RvGnR7H_`vuym#kjdc#*CVFgK!qy#a-x^nQ+y^}Ce{T$F(-Upal-lvJXNknVh$^Jm zLxdZ+@>4v}lFk^j_MkniC-E1-U~X$o-+%sq3b;iYw@UF5rE`^p6eB$@#xc@znUY$=BJ(C>!XwPXWu^^>0%o<4wG_ z@V6<5Q4Zdv{oCZp^~#_J|2CBgD(pDg{*LK8p@cmN|g2zhMkO;{ybnES*O&MD7-`pmj?*E3UN4&J;l1roadt!p%Odu4hKL9b08 zIS74cYQx8h&0T6-Dc5(Y@lNz$X8%i#akp3Or%R1@qnuLO9wyAVkESyU(>KF#XTbQ$ zWKhqZ*^$a z4-WL-u3pyk*6>IT42jQLtN{O%tWm+VW-p#y9`2R3Gy;ar%X;8T;kHIg)0Q;S!r*OL ziWrzxmxUW87Z20E{TrTu#NviuY=kzfQ)5On^mZd|bi}NNMeuo6!z4~6v>#S+xEGR!ALtZ z#9D~~-VE`M!HfL-)c@Ty#`qI&71x(iIrFZLbOTvV#W2uXu@BPBmCk#XHP$YKbK^;eV|WDG^^} zu##>xOPMVy%Qu>(REx@1D)C0Mlxk7VO4aCp69?%{mn91sbc?^*I*T5PFIQ7 zou$kr=0q!%c-^@^_nB^=?x=;7Vcy{i7(d#Z5ZZ5NqeC=qS0jyL{YUI#Xtt}7g3xC* zh6i+V>)@;8HT2q$&l5UmWBx003j#p>FM-g#>Tm66yU&`RxC`wdwJg4;26k}jmU!rY@KYiioq6U73_YlH;_JjHRgYnG% z{ej>VCvL4L@NwBk1z`iLsU|+V4CiY{qirClX?D62l?mCxlb6(J%02;Znb}+I;mv`Z zOeLwHKY#Ygr}h8!Y0Z7A0PEPCIt6inr3pE$IB-bHF*-o!tehkELISJTqfO3Mk|{3H z7l}K+j7}E~E0m*t(Xie!0WTU>gcK`19fX69gi7S)_@d$HHYzyYHYb-??!0*#3sI+z zIZYH>Gnh#X2<>5Z@0{ZfRNp5@iEA}lYVD-Pt0p;ko>DnE$BWRQaq*XgJFMi(aq(B- z;`sPZgsWB1X}fYhv|TezHuByz)8&BxQHeApBdV6>hKP>Jv!^xFPnhRq)8$<%e0okI za6~wxgR#4Fz9(GuK!{tCea_k=RMxr;X^<|JZ9|aQ+`(pbb~L+Q*J49s*Q1%uVZqZ`6(IE*hiT~L-X*#hH$EgOTfiR$J z(rjMaSyo5?*2#iGK-DAZZ6*@kvW-bc-Rb(8q`k;b{SGJns--?`<7xvt2%gM#ua2{y zICc;`i~ZbTKWS<&HO;@@+>>(bAh?$O%wea&=h#muyGFBx{XAtqL)gw&_|xVNw4p|A zP5*j^#m;NgYTofVM{7*^YTEBba}UVAmUL<+x8H#dpBwWEw=|c`iz$`1>^kzV<&Nmc zzmaw5$iGE%QQ!G7@wEH=7(b5@<_F7gwjfRnIxZW_ELu80#+A@z3u0QqhXpZxIGZrW z0^yvR&iBmFEOHA}(yT=>Ex3iz<-t!Q1H}nWk?o*fOoC9zzItTA#*XFr~C}COSK)fRP@{5m}klQr*XwF5Cjj|ax z{EMTP=t&#?-NGV8b1dgi>eDpamR7IG)Ci{nOA6UL7HW^cl0g>Iv{FTg#wDi$r_mKx znrf-)I37jpr~izO{6yN)>tiAhlUa1>_mLgp>-Uk32zUGt1S_={LV@VD91rd>+Tp&^ z#f^FS+Wid#99Oka@V!~_Rtc01x*Z@06A zG?lJ)#rnDpv?p28C9_qbZW%%JbFP~kUi5Yg`JVP{@1~(^Yu()8eyv-!FD$wi;^I!$ zz@>|!El8Lc0C{iYv5)vNIc`Gq==hr6%Uf%bxcZn2AK9>u`h7|lpKC{5PX5vr;YV(`5xOMzh`Ekz*~9-SyoqrkYWH4Njt+*J&mxVZ#>9T|)P6)8HMLpEbAb z=x_Tp*3fF7rgtc9nT~gfZ{606cBbbe618;7OHCW@tz*@?hy+>P0@3-|Xi<>6PS&Cz zcRj|Gl!l|5c41w^)5>9|zMHJ_tJ)A5O`6Qa9a-@*#@?Av!$m&7lyfveNv?{cttPW)5>7RO}wCEQ0sXYb12KvQ?;x5k6@f)9Z|5UBeYm_p#( zb^~teb=sFt?V;n(`FR4|>=2x$q+#8Ie?TX%>>g}T@YVAM!GqqxKiQIW+G9wt7A6h| z-X}n-p~1Kvd;~gQ&#o0PL?UlyujObzICV4I(^}d3ZYvZR>h5Mo+JWJD_H_<)ud;s* z;+FeDxB5vyoJ)db-5QqEXLO|sP3lU*#BsjW#qIL5Ru|3dfmRoH%GPUjaSx+|0bxn4 z>^ZxKup=iF&o{GMgmxG3;^d~3;5`#W$4{M$_7<1Whz!y$2BIvfR}tk&Rz}o9>R&_! z(s+$XUaljOeJ6G9a9OI>d5GZIny^g=o`HMjwe)#p=#%VD@77UlA6dV-lFkvPk&*; zI>?SrVZ+5e#y$(!jn?;NsiOqaPokEA<*D}8bOFIt-l&zStrXnyw_vx>HcXXuPYk9F27{Kwylkla{VLhi~HOGhKgD;>nkHi%3raQd&j2TXU#(-V@{oWgr$CeE%LFmu$WcS?|!5Yf%y+2U-Qu8X=H{A^{&il zJwXi4*bH2XitkJ#Qc13aNF%utA~(sE5P3*0hsa;D9wLL}kcecb!cz$=iJB0}CPaiL zWK@8t&fMCB(4c<`So6 z0>*QgD0A7<@hZOwl1`_S%o?9gF#Rkrvlg+=ZZy|&c9Xg0 zvzDWvvlda$I$C7?jrq%puaQHnA}Rzt@N2 z$v?|Hbc%kM9W5Bc`#H@Bl-kRmJCi+mG*>@g;oK!x=97Xh`7Cv0nSK@#%B^r@)-KlL z1tEK=Uaog>p^Yl_7buA|cEv@W{dWCKoV)MZt{=_Eifq(&Pdb)nc51t)*(Ir+wtF(< zKxn%sOCELF?kQlSx_*~_h7BA!pm!$<{xw<-{yL~XC0-nWtw;2qJ)r6j{WV)CyQdHH zq(Niwoaw+?Ne@(e^O$(InxPJl>ug3YcdkZ6w0u56mZMA+<#11{QbSkwW=PQ#*d z?SGduZ5j9nxDAg|JCjb3GCAsdB^;R%HO0q$zhuZAAB$u)c6>a?6rH+0s=q7zyEp2H z5>8e}HMf<{_MA^f?X-uhm!lpKhgar>%HCJ+V9(X4SJJ&dxOzQmg*}wqjoR!)SnjM(A!D!FuPxf?taC8Mf3J(qlSa z97x4{I_FqdEA z{;D`eA~HxJh^SC9DxzUh&?3SXnE?^W=DqxKh}L^l&A7-SP(-;KT~cINfnIaX2|hy*DD5h*33Ba*usk=)gY{3S^d z$(@c!mg@TM=CW?rcblUMCz@6wFH8^+mYADsG1=T)iyzF*wU{QUiTUP9MnHttWU3>o zmW*|MH-@P=p+r<-Nvk&3l7HA-bN*3tYx%e-Af6{-k#pv%^Xtr27qG}U&?;JEOVwSX z-JrBf^d|up^oZtCX|!_)?tE874*>U-(Kwy!(I7-komNNdITh|}td7R_#VGl%h1%k%L#(v>zWpqP( zn!Z1}0sOQ-8sA8(e=zzH2YqXzM+xxmShOckpN)&ra)BjMt)~J@MG?4Dfpq(erfLD# zyOU{}ONbhRevN*T1R?mIfClG+es1JBz4cI|h1Xs&SJ=r?%jNl6`qnpQDQxhIxnWNi zhsRvSmv9y0gV|8-*aw2ZtPJ zaa#f1j?QayacKj&Mz zO3Bd?YAsc&{oL_NQ&TPH;XujB1Px}Kf6P`tT9SZI{E`E*Tcb!CA_#S7Qa=gVgE{Vl!OmZ zqsU#%_I7a;v#z|tOx06TB!v8@X=9$tZ z&Ycc^?}-%+5i7z*U1G%|X*$;E2&wu6EJ{nSi!!ftLYe*N__&jCVqKiacyrMgVwqBN z6Wgz$^*R(}qS2kjI_JA%(QjB?Y50aPwzV=y{4+RC{L|yQr2GxBogRUi@97Li+^5VX3k@oMF5qUXC*KGIWLu{xgoZa_J>%aMk=_{6D6ye z7VpM+Y&4f{DKJIXp%n-JE*5zq6&d_QYU`1h*wPDgRX)RWHSARvv7zWDn6yLe)etcu z;3?X=mL(8xCg4HIs*UIPuu?9rVy5j1Ny;yxo8Q7Z@L9_zXu@{|Ni5%se_21B7Tth0 zUe`oyQ7L94Vfgkxi`|y_nWA04h$0SFqaYWV(FTW!`O*@^KQ2;)zc`zs7O>P!bN{vc zDi#aSh`Dav6cy}IC#fqH4G3onJdkZvMnqS{4P(~o{J+EkF1N%2D-*@U^H_i>`5YB_ zfTEObXYu#e++?X%d|V@yY1tG7*6vJTstrEJ{QHY!s$ptmYfrkei^x%)bbdP)Q}|cp z9#4sTJVoxoY$EY^%EYt1OB^dIQjaGUsV8kGMuJQ|n41w+dzK{g4kj_)X)IueiLB!( zvJR_cmXFx1NIfVHqn@5(Hbyr>(+Mge z=9lRNMP_tjV8e(=CujOE9QlO0D$rsgmw3`1 zj7vgUg2*LU12V(HOD&kOL_R@@87-g$j88meK0yf>pI{S=Pf%UPCuj)d6FLdqhl*T+ zkC97QS(1TeWj4VsW^AG<&S#B?e1bWUPdLv?*;95({Ej(8Bh|E(!V9Hf%z(`zGtixG zYF1R_1EVf8i*OFEz4f(1X;hXjHDu8~TW{wZo-6N-g@V&e5+T!H?ATtP>yYl4C@ zmOyD3OZw_!XyUh~yO!BAjWlX&WMWMTDrtl2#$DH!!WzQg){_ z<-;_Prh$m|SlW;mI)an5gobuDx@1n_gbQB{onxnKtg?y3Jy3BC>A*fE=LXewx?V&v ztB~D?@^jElv6pUixIeyiQK}!&CA{-?#a;JMK~MVXmf)Oqke?3Up!0)$-!7 zzNVHfCqw;pmEuKF`iH+RS73`_8WEst=X6+JI@UKFW%+&x&>69cD*?Li1SLMAiGjLy zv^-GPNV?%vzk`^1E>PDTf_2y|nL{rJ>0qk^$1w6!~} z4aVj>AzDAAzK+nk5Zxd2c&M%^H*p005ULwP-083|U8(fRrTTM{P!!e!_2+ajqq$LN zEirAr6og7k3oW!#iRo2+Y>~ ztk6|e$hJtYs+0vwuQKoGr&sM^adEnZ&cF$E%z?aG>UP<~^)9;81b*(Oo1$b}7#{H5 zH@a*W;796Q@xAoXIvZ<PiW{K1B)t)#-mJIF-iKM9hRa%)y^pYISoqYpwcOw~VtF!+p6|8ulI-cA)>_s%{?W zbnHFRgVnlsT$s4MvikT#xslb!AIlE6`uKC%n^qrx&uadBM5iG_4C^hsV>(=RUOu7g zWzDWrd(ck5VL+fis$u7Ex(1x$mMyLZ>5cQc@1Vs6bWLiytkVc@u^Kw|vTg}C@Hut9 zqWc!-RU@wG(gli&!Hz4sB98cj%XQs$YoQ~n_IRDH5Tb7BoU}wi8@<&szufFn)Y;8ocwX3gu%anQkS$9tfb$rkoXqZV z;v-tqo&J~+luk~=nT(*-q$msXGdDTykZmP79wK@78-^)b zgGLg?)Do5)-!|v~QEUvt^7MJTptg|TKIk7i>BWN-&J9a9t(Lp4hR}RHxCF}$xh`l=mrLLB6QQBpiaUSW<{I9 zL4lmWxQ7M}4caFt9^skr?V&*%vHsyfU2Hrjyp#vBbGy(Z#W%;#?U}=hz8x3TPvMBC z1k9f2N9{1+;cTZ#K|vl>@^0VxQB~Cv&mp>x>@aFl&?W+nrvwefOSA??KWnB3btGUt zGw1_H?dAkMqx{^UolrA3s1FYp76##43!_-Jr#}X5^5v|X(-&VIHE?uC&;Si>*v-)z zj@1TTSHRA*LFc>{&2e&r$q$0!y=dQE&Tg=u51uWMHnimf{6~&WaG4{#(FXVB=-PF7 z-F2`>@KpNeR+T;d<$%VXzV`@j13f*12l#O~A?UFpT0>pqgTtXZKKOw`RX)s)%WcEd z6!~_04?X%ux zVQP^z1l0L_#!o-a%W?zXyFM9CF#DAcUhFK-g6nZff&l--Cp96El$exa-B}#u=oe&7 z(Zldn2HETA7bH#5pXnDHnP2D^6}HHPrCHR^`v(R&^>`i1vL3hn>6Q5h`Qo&SIXr~Ntq5V-M+L92w)oZM6%t{pZU zAY4U7Rq}}O`~>j@LILj;N}misHI(IGI%!oXn~V zPX4m$f|Eg3U2rOqRTrGGX3>=eRn_6qf!eC4b2@OsXH>4rFyBj2)qBwbLA>2p^|3sV ztE#_jASZp&%ApiXipF&)#iLrWeTPyUn?wh2DD{_HbtpB+tvZyJ$gMg|#IoW?7#t=e z5YOZ=aAsx2TAXJg z61&%VmO+-lc~*(suJdesD%RpW2a$7Co1LpU#VPbvEgklacSP0O-AzL6#p0To)mXeL z@~;;jicmC%Tb0*)d|Bck_Cr_hsjpbKI*> z?y(Dsw;GaGI4s6RlG7Z!G^7QmXi^ZAbIVE^r*UQ~kGhCtnm}|;njs^)V41;Qv7}v- z2pFH%A_yi-ZtoxG{_1=ggy+MxSSs zTEf;B9`xW`QYciTov6n=f?s5qM<&Q)S^XRqxAfe6QijuoF$+i=jtKPFkL0}Y8monQ zWn_>bzRE~H{zN+BS^JQ3Qs`76+o^tWMK#WgPL~reVHK;Wt{guQHDn2@h&s4~|5DON zekG*-@Gh*vY0C)CEQ*+b70by0LOm+TWt^2)yl6WUKtd`lL{v>y1LFFnk zkE0c9$V7n+>C|T}883b=f&RFb78hT?bY3Ia-5wYAt7HqWDI#e93p@A*yNDqHv z3*{$Bj1sP#Ax=sbaUwl644=pJu=K%}Ac}V48g5k0`-h;lV_6 zg$I+&%^ftDH9lw&=3up@zB+Tm2k%=-JT})Cc<`yE!slkW%%3sPCsZTpK!pQ0lPGcw z$Yiv>6BoqZufrWDCoZI(xQx?xERo|_-^qeH4`QBo+=T{8h3hFZ0*P+P%z|S94gRlBvY{_+@^z zY^0Y3X7_nnXc4AbW@-H^E18k?Z%{yydi8Hg%<8?xr;>}l#gR=6HvL-+JIOKMI-7-l zt1`Fo*568%EN8^oqnxq6C1a?i!YB)hw^W^kCFn2}XPh98Ci>6VzBo?lzaSDntfc=^ zZO;DXsJVeJ$Ibrv<+#};z8tTX9pTIITG@PGj-Qmx_vQF$*?eD)oBi|4@jBVyUp!8j zCH_)tmh;Ow*2A||ToDJ|)Z7;(eCx#xwBvundFt69uDecgpbia8L$kPb_8aB$aldbZ zV_96OBYwB)KGsCj+i_nN{)H@KQhQFvwXlNW?KwkzMcZ!gy*g1`~}+NP;LxVuIKbh zyuWL+jmzVq`*!Y-GsM(zsh-l;+|$DgWO>uWJIKs{NTxH~hLBw&J-m~wO?r42S)255 z)LIQgZg5xC(zor>t582N%G0aZvXF_HUR90uf}E$^8#@XgxPM^7M&Jg0Y%&T4fBsjSmZBdUBd{T{uZF!eg2+)cAB0;*Y-}dHYS(COm*|dmB-S*}* z)Dt47@;!KkI+RH?V+P+-sqFY6meqfM9^aLt`3reJ7`c$2%sxK`Hu0x2)j%(&P$$_OcsN0vzLifEGL!ieNEb41f5 z7e+Ksa(YB^$Rd&nxmzVhmDt_gDi=v@z}*TSKkaa54Sz=My!@lwaL?smP#D;^C-xoT8?sMJzdXS=q+zxEKyl3s3u^hF*vE+?PV%@Bd-@X7dd4Y!Bu*u{ z)BH!R^d5=bZGN0u`igncWVDf}Ytdx1k=R8=lb0ic1#fr_(VA~B6-|C`$@mEuv59Kf z_m+>sn+$O4Jzt|0x?&l+)Je#nAo5SqQk+>!)h)ekF1hrMY-0R|Wue3kh~)mjuUTSr zFdr#e`q)Yuw-8zKJ(f8g)9TFmo>(9+xg&1Gde}rDp zbJFUrUlzuT7=Qh;O5_;omsKIhRllrCS>AqGRdW6PvUbXn_siNNcU-@$YB_fMWn+CJ zsrJi3B+_BOTuWLWqW^2_$^&D%zW=H}A*Kk@R6ITr=zA^-guMB}oV}gL<6AMs$>Hx~EJ}qKO0&g!<5-3oOIN7vD zUc53ux#`mc!sMM6C|(<&_$n4CzDfY97Dn>=Oi>5$DgDGjGJNjV`XzCg4(fSngm_)_ zA$^a?$*nj~2E6Y^i$4R9CEop-_@~Z`eoC-#W~Z^12y}FkcoV)073=WsDI&m^EFRXT zg%?$E(bZ#Md317Enl+|X%D67pCpg)r9 z#S9vE1!dNYp*X)@yh6_0^E~2KL2O0p9M>Q|(6P`gv5&<4-qP|k$cQf)B)Fz&Bq{d# zO0o{0^_O0N`k~AqDHOfwZR?#w+jUK0{|e@!K-DrA1*(p@C{P?61E@!Af&q%dU#uw{ zz|FL#@I`K%HHAZX1FtE}=5}9GNX$YUa7|&Jnhu2rOIE1M@L(yzOWX@)#xojAeg!k3Z(8x$PEwtKPNqqX@clH&EpV8W z2eHt&L@K<+AU$MOSLru0L09#Z?&x&aVZC}VUHaO9m%%${V^k4WtWaCbTf9(P!qqO+ zl4il{he^MAgWu=BCOs0!5oaJ?JW={VhsRHm!nNeve>#|bkN}HZn6suyfMuRMQ#uWx zGH*&@{G<2}QWh)eQt0_i>-o|t9lX{I#gB8OL1XdMt5R1{JPt*mJ=Y}{_WG~n8bl#C zP*!I>Odn`+XMLzJ4CQpz#|W>Wk2~vofl_sy_2n`{$^W<*>`hm49~W2fPWEweHLuLa z#kF8YRNPA+PmsZ^_&mJlBI|ZXKm7F z`{I*jdb=D2b*ARuG<_k@y=gj_nht!MrssiZ{P;`#d@V$RV&l%Ha*)lklm{va%WYi8 zP33m=X%nTu@@O?(teTD*X8u?Dw|StWO&-WeN48BKct#z6lc$4{)03){>q#R$ReMOU z^MZk=!*}`@yqW86P6H33nr%+YfPBb(PX7=(!>aT87l;Sf{-}r8NIrGFTjQ)+{VoZ2 zzNYW42hZ4eQy(1#YdD&>q+p#&!ODsnw4?x5R#trJrhb|>rvxlPhoX`a(3m|hY0PIL zz`${{?gJDbB7ovU1WP^NZC zb5)r*wLr2VARbXt(o!wDrCM}Lwdj_rTJdUmq=8soVsJ*eHI^JsR;X5}RTI|nb}K1) zz}u~)H_#RyxmXtiJE2;I?%NC`W%XUTnWzdA_blJ_MF-IlzK3)z-j3PP~EkpXrr!8kh70C-w)M7yZQhPI;M#C@6?%5^?VlrqNTK~D5I z)({;8eT??-ZDT+dRe9T(Pf_D$hDPaoRmK4|;~_=(m@AmjLT=MpKzO@s# z$0Ijvu4|JG@VUsKK865ONb(Ratu%R;Tw5(eQtOmxr%UHe`8;ZxZ3H=NV%3QrM&ZfGhQ)+YpaexDBEpyn>hJ8URD!9@@FY z&{w=ha%-0wVg=kb&kznT7V!(q3{!MI0vEq8UrQ?c?uHmndEkAbtUi1!V3UgCS?x%`PCNW`r+8G?1v>=|G=+_l)y6TV)?Ihzgt74Y;e zhQ<;L|9EIz1n(d~@s0`@*C}PbH!vlZv3fhL3 z95(z#!b7b)Vi3I9LbW0h<`+7+RV30k3LjJ(G9+C0AHxd<=wyR_GVJ#gf{^2mVYQHh zciu595JloB*x@nU)(Oq9*8{^nJ(mAA{NjT=-tt(noILICBOmp}_6T_x2hXcmD*~UW zRk2o2Ogz7-JReXmV&$Pc8eqi^my%*f1~JboDe?x0Wr(|XmOqkwZYXMgb(1{2+FiaT zposmB2-|Tb+rg7cnuF)T^#Slwen}u89YHv%m+a8d`xLmVOO7&=kY%BG8c~M^Bg(qK^KPDKNy*%>A zhK|(al?P>|0td}Xi3fcYu?H0fqNQ=K8P_HmmjF&piZPW1`72H_#+X<~`sSLV z&^OnJLil74W1IorkVAWUGK}zrR~;dnXByw+{`1Y>--1L`+}HRG2wah6Y$j^U1M&73 zjl}}nx>nIm8)@4ridf006#X-h? zI(A}SWlrNQ4Oe0KcluT4ETuGaHfjChp~e{!j(*uVA_DBNdx3GZPP9W6kR{i+8gI)r zcGNQDv8tLPMS4vIG4_o`#;Kz1DmQG^tzY@PUv=vmG0gNlBU}OUCL{grcfcADnx|p8 zv2Qav(VkeU;nU`crAqZqEL8-YSV{%-Tw#38$U=9X*kb1%abim>uhfYxiM%Q&wxn@$ zoY>-qa&c(^X^D8EM%`NDU~>L7ywEsVPp@U+qn{X$ngI9GI2OP3x$zG#X!q~15dgx+ zerb${n2m>wHv}7)iTdKn4`1R9aq>gjRhu6+{-8rX$Bd`3=a?~?ZcA*)|2rW4iNM6~ zjBwBsif)`VHr1uUu225nSRX*%2g7;&72~H`+f;6{@B2^ZMStI)&J@MJ8Ub`O7{}c- z!iL@tt-EbJN?Jb%&$weu)Dbrcz-9HuW;)pIU%YP&C8hczTZ3^|N9qmVlLbBXkncU& zyaL~Q#&gqs@0p}X_DohJdq5l5kv15=FthQlIuV>1BAe(;{M}x4ViC7T&&R$9?XO@!F3F-vkQrSdKsL^dN(@hHGkI$M-LnXH7sLsq# zO2{PnP`tk>8!h_1XAs)>d(T9?(%%I86gs(7_kW9+dQFfC-u9C!dI>J=vz*>^-4}fyBg)LB}Y^e=Y1zVg~=iF0t%<&Kte%aXscRUkGBYV1-KG$`m zhojYd-HHwO<|$U$s|*R%d-D~$?uE9Y4PL#sf_PX_4^xGx;;)|a0pn25I7Qy}`=M{s zP1($&;#{U%S{RT*Gfks)IK01UoT)K?oebB-da=_Npt4vEfXcRnp;g08GduIseYiK4 zrzG2zuO!=5#3~O@t5qI1H}L9Uldm6PiZY<6x1(X(J=WCM22<~x`6d#YW9xiVOEHI@ z($?5D{PImrEKu|`x28Ez)IK%M-MnHo%`3PCYMR$_tJE~Fmn#-e@(=bN=S9mVwD%Ed#}0Edy1;Dh*UAs~}Lkb!%FHf^>kZi35tB z1J)!0MUS9s(tt8i!ET_8ggU1IN+#5KLXjN!SGVa0GAY$BHhtj-R{34+$B%FR53b!Z z|9@~3Eern5&4KWl9V~DCn+@Dl*u6g=YO}M&E&PwfX_k5agX^};eV%L5SZ4pj%~67Q znl+YL|F9LVMPr%qJlC$Vyzx9YO=FqJR|f8+=eQQ&zWyB74%~^)anpc1fpH^3{)uMl2KH;uCPt%Xdj&8ZK}C(_)n^}T zG@zo!^2)!tprXby?%!NcQDYhVZ?2ti$NZa{M!2IH_bDCSggxrn#K>4A;%My`Scy$a!8tEw#)#Ap3=UeZ19@gP7Wa{0m%~yBf~C%>=&;*Z~Z*ghbKB7Q#g+|rUi zUaDb@O`kD2G_6sis`U&2E9^|zzh}6{|G_mWJW!@xf-27Z6q{loP;rVe;UR<7BU~i( zF$ZelcT_(6-QZ%sciZyc73|k9-W+JtEq$sc8cS0}BD(u!bbyW&*SLWve~4Lv!g>CpXSiXUTk#Ax6rX5eUN8#9uI+6`@eO7J9=FQ;@?q`cJt!AP z2jMnZ-VHIr8S)2&hnnMEwpg21xArkytk?hLJxM^`CLaUNf8w3d4-i+sc*zIePxbX_ z+6h}%`LynZUao;__8V$^e0O4J z2J9kE<@p9`vl8jAkcC?1hX-l1vgn`aT)8iN=CQ{Yu=lFbhK0U?=*V7QD{8&ZH%Qx0 zgYIsGto=1C?U^s(B7c|tzNeR?4eemL;QxZUxfwFwQt3Ck>P!_nMgOB~)` zY>9${DfGox0041syXB4`w8bf;^S$-#*;<8zOx57~QYQF*69UtRqEn0u!Bb4Bfu_FI8t&uw7%jjx}Xg{cLUooxqzN`n{O?w=hs zma`87`6Be}LmOFJ_OErkXcnizWjMU`rlXx+h`_b=j?G$#HTcnehiJfi9y_*L;Noe_ z0+RxJ;uDIhHv&|N9ogXri@q^4wP=B}sR6nDVul5${nP8%07mdrEEJ~%KwJD6&I*$J zW4e2Hc`9il8sr}{o0JTgDRzQg5`>}y09W$j##XY{cOipVc@hxQ)J}&*QtG0trwUNi z^Ib$`p|rr5SK;<^NnlK&NzJjE6*Dp@rU#`!BgAlP(AA)rB($n|vL1~Kju}rYwALDv zLJ8c}8Uww9R1y$eP9Qhn(zHBL@s#v`kYc`limS>!$tzY(Y!-+%*`G>zcabx03$^HIkvEA6Nodlr0Eu&P>m17 z^nO>s1Do~kX2f;pW8?Mo`wJBHbL?ty7wJ%Ye~#@ZBLD8a|HdDm>iwpKS4BbCDj^cb zM>jg9#R<`=Ew%XWXMLw>ap2gF@a=6L-v1=_j~M)equD!tDDnot6E+ZN;3xumJ*Gpm z@c@RB)hrl3|7mu-4c>ewW+)8Dc-p|;_XRw4aPNzf?~}^o%n}JtYRQl_cSLWvh_mG7 z-s8RSg9*Kl8T8BN(Fgmc_wEd5+cSHQ@IsdfM(as}TI?iXh@nK}?wcU;HFxiWLAc}E z-uFeV$Mv3WyAZf5624Io0(LdhJ&|@bHFors&XV$Wjj)Z??K&5B!US_dI@Ye|>u z{a1$@>e}^`0avqKxQJ){)y`nypB2cDcq6xjRR9cmtG%5kP3VTzVM5t9=V_c8;w;nR z2Vu@hfS-w{+MN)MW-Uor+}PQjegy1?uQqe;f?(w>oRiR^Tk#ihRGf21q`v=|QYac% zxtwqLifstleVFs61Ut-_QO;Bn0dn$qCw$j*>@jLG!P!b^gIyDxJAHimafOD}^e1vW zbDR-g!g_36?0hXi*o0m~&Q>&L5H3N^TCGnDo_x3?3n;Yq1Ltbo`a|dIb|HFm!G5Ps z8VMU{xSny)`2Y;*?s~!bqdCNo$W`)O7|j3@VP-$BHs1KQ^c?7%a5VEYdPpm)}cZyzmwO)EOS{aPXJBJXKO)?eiP1}NTd zj;#NQYjI@#C6Zz60tK7qi<5u|Gc*hKI{@r>+FhNl8t0#5|;2&R!8QA{Iy z0l_o^EeWO(WG9$LexF4JYwcYaj0^AxAjyE804HH*kR(tpfi#+~2dD=MM*@5TX*9k+ zp!qN;5-5;Bk>rsi6p94I5l|7R7l9(NGe{$_5rH%UCP5(qNq|Cv#1b$)MIZr90f7YJ za)5k+suM^fJBJ_{NScg7kbsE@pwU7C{Xx-3fI-klULz*vfJRUdppQTq6wS!ap+}%) z3G@g^Cr~1G4n6XVwmU~N0+9sGXgAbBK{K**_z_T?=Hc)oP=A0Qfs$GgbRsYhK{Nsr z5C{@zA_74IQV0YIlnD?d@I&E8pvDA#KfS`}qIr<1F0O%vAmYADD7=gnyp{PHQkU)*tIn)T~MxaL45o=MP5qM63i@-Dl zxCs6tz(tUX02i$x?MY#apk@F$q_yu=Jc)o7Y3&CXDhbq$fQx`?1Y87kA&?{uL>CH3 z0;K^U3Gg`<2?$}yDHaK6O0YOs&% zps5H*5j}KV9ELywY7mg3yb{1)0;LH8iJc*kpxh6<0#R8> z`)PR5*7j`@(cO{3fq3^1?U%3Lb2nzC@czyg_tBgC`u>dldh~81XwR;~rdz>#yrp~} zGG*_76x?5Af#bve4$d?Aqz`5DseG!>Kp3vSFj~iiqKIhgBJ_E*bs@b4fm=1T9x)0b z_w2KZGM#~Xg{_c)8qZcuKuv{n_m~{(69YOCa=hjSrAqjiFvfdZ*y|1lH1i0Wb^{CZX#P57-Jumu@iyWka z!(-+X+YCEl?JG#Lo)BAncGCJwp!g>wK+CUK&*9gvTAg~l?S^%=C@r5tQY786j?|9K z2C1Zo8OO)-ip@B#+)M(Be+3T|e}@57K3i=9RmAKI6!?cfEoCBCX~yx_iAo>dwJz7= z#0S=VolXxRF8ltp9y7z){4v>vMIA(O!?(O`O$<87g#&_YTP^sTrnU{_dhh*M8|=71 zy+FJn&URPC00McIeA)4KTU)e5zZ}5ZlWaDv*ob64lwt$WlO)w?xPmQxRv*=Pm!LV7j zhdLbqDBuzEYzwrF!FHso``(Lovq}S1!3?qQy{7OK-JNgihL*JG8Hn31uw9gpe=8s@ zi)=`TzF1;wj4v*+6pu|_-v3(tk+7#JZqbWtUwPO5oVE$cXbBXZE>BwicqEO*W z{89x3g~VYsw(bT%Oc?Z&t(An{`^6SWj1z=E`Nf7r>E2#KxBAT%XC{%+Y# zk+$4{Paf$2LXgWD@`mJr*0te%&XBnxPE85vp~VFqLpnm}SA4f~NGm;#>ltz=f`lUn zaDlNQPb59O{MiI`yEh>O-q8f&A18<8dgE8-hd8vt0les~5Q7%4afeLRVV}hz%_Vlf z;li|7uFi#N&A8ct;${b`mYMy+wB}sd3)A9=$fS2dJkhw@j*yRp&G&bP*s)i2NOT)? zAJEItHYv0eM;SsR&3IBk=xj@0EBd6nuY_ycg~oJ2 zUY&XcVg2mT8G4+*Ahg#1{dZqA;Mw`15oTd4y1M~T2M&J}x?YcGZVD}!kKP&@W57Kc zhhI=F9yfm*Sau)E zqp#h{8i4Xem)?jSh&#@R4HfaIIk87&euJy>EuzS>+}K~eq^0W!Jz-_+BR#>Dw&Ia% zVpFxabZzYYM4=L|EbTMffJ688IVEY=#G#ubW0vFGmt*1tsQ~0d(5-BU8Oy@DL!o%P!v;!_YtZaW49wy@#>1+!R!&wo$1RfnzDxn$UV_Lkx`rzO3 z>>~_u-{0|hY&ZvM85`n(TEUNV{*LE^7V!9>1r!WgxM+OL&t7-{Zs!|?EBa(?(c<+V z1t1+@$}bRtJ`}_sK?CHk3z{GnliIs=K@bu0kG**2?&L&)xv7*d^Cpq<&AbvYWpalF ziaV^7uWYfUdyz5*dR@$SdTpGxr%@{-F1ipvFxk553=vcVfD zxHX4g)TY4RaX4vWw=QLbR(c4NtPP!)Qkq~%pYoYr>_(pLFsBqnv-!7ItCZOm?f#E2 z?virOh}XGNddb)`AZ4Bo&l#NJEokKmv|vce0pICUc^hAtSwt$^c4$g%0D2v8(eTkp zDMjIEq^+qJ8n!aU3(Z@W(iOgp7Z#-i;@_5~44#b+h^a=cu>u|b6IgF(Q$u{U>k829 z%EaAxiTv(|{d<|Eh3xhC7Y0x?- z;^(lTaJ^;W&tVBN-v3+JQNi2I2J-(@4j@IY_-|M@9lCHc>}@>bR+vKzU*?DXBqB3h zazdjz_X!m3{yGaPx*rDT=iw-;A&eY!x4I82Lk${rr*i;GxF5C}{pkra3IPlT((VsL zVsHR@;c}8Mdi`>e2{ma5n}>!qgqaX*v;uT?|3I?G3V^Z$W6|L?Uf>fAVR@0LdvN$` zc!ghTl2KTV+PvRksJ>-$vIN0-?{_E{gzNa?jBK{$(dFARty zpZfj2G{6nR(W-!EKG<2+bhZx9{VRN~fZH#Q3KQ_i6X~K(q_g2G)#+;}3QQn=awdJ8 zA3k&`pru*6;RoEMGGdw5caeq<8S>kNLO*;P5lTKtql1xrI*)t4e0l}W58t2t`br(}v|T3yj7T3xXyCc46-Ldd7Du&59@P~j^!rJ7e%Yh6*T zbw#z-RaKemDs@v8cT1yK`W8PlluzH{hlW6L@C2YZcmhyxXc)_My`_pHCx480Tdh+a z>E#c;jd)E$ANmWic+|;=BLa%Aj_A?kHY}Ct*lxYOgsWn`4X#6-$a))^H4sm(ju-^^ z8y5tpfRA2{2s7s-fx}TNB_s(N<`zJuu?hgi*YrS*V{Hr+U(*A{*YrS5WflgCYn_m! zWsU@Z7FzB{KvgK|wAG{~DBgt@kOxUc;qf^|i1s{d3E*)@N=SkQEZu4VWmj_Oc*F+a zMYE;_Dptu0gEtKa0z7V3pi~7#`09arVM3CuTEVDV!Khlnn5`6O9Ips5zOJZXoT4ag zRIOlCg_wA&BqW(tdzjryMRLsieh)lWpd*sZ{C*GcN)*B7Ql%#53Z!nHw)3fJI{GW9ptwH(lald1~8skOVVs!*qj zt5?OjlOC>!C|CE7hwVv>rMr^O}0-3Cynb z&=Kf>kx*|T4WC20WxboPkQ2x%mtOx(@Z>8AJ%x&b9)3UZ^l6$^4>dHWRPCaS!)s;X_>%s2(PZ7USPZI38|+a6T} zxBXU8ux+(cxwf^eQ3`U~X>!=)QIPA@C!8nV09vO*JdxQhgM0sTM`oRJ)>UYMP>8sw$+TDx?!w5Esvl z{MmqX*Yv6Q?cB(YCS0{VvNRjLf87;~=iiJp8{qrWY0ZO!aNfO0yT4G3Mm>%U!X=X3 zG8o`2vr zmKcQ#yGiw*g}z*+_idERKJd&!ud7h5K~1VrZsEY)oTqM@&==8qc4Y@`SkxyV1fJWU z%GE-Zi*l1X2k782>es1rKub@>AO9qK>gLabr@8bROSJe0I*h_qmz=c2nPBpgWs*$mSW2rTknOfj){acNs%`8K*d0x6H7oZ_~!r z&j(;_UE6dxvxjSsUmH4L0e(OS<{m&zRjE>i^2$@G3fPpjAME-@){&bTLbmIejH}1H zjE1OJc?VhW_*FM^9H4mL0}A>cJ~PGT4{?>Ix_o^Z3Q{3CK%iHG3(1C`UUw~QaPt}! zHWcxWSlCd)J-M)98+W|IhV5J;P`pb5Rl#HfRm&V1s5<8HKzW#(7dE7AZ(zO;%s*7> z0jpAS8A1hQn*d#*E9AqaKe;`$Lb(%rVYK5mR}9CuAN;n6j&Ro-Yd39Na8{5OO|*ObYN z+^x`Qkc~vw{F1!VJx`*{){^(S`6R^V0rKA-5@Pd}I#(PzOQPQ$yX$I5=$oa13!m&C zyQ&o}J`mhlaLH8R(g@m|t2)1h2F2!F)y*ww_;FOm|Ao^K>bSH^#&Q7-&+_Z4HO)q+ zGJFHj_pKu&Jg{4aR@8nv6nQO;s>Z)Ajhd~Ms@6ig;K9qHhKp!Ucz9o2wkpaZSoz2i z|2xcYY}Gt08*Ga&yc-p!bM5WM8xsP2@x}zIf;Ayfbj3@jneJ$dc&!TL4Jn{1=Um2gD-E@l{-x=T!Sa^%^ zyGH`xa?FY20h#1G_3#q`i;T#24&Kc_KxaJRlcnazNu^TnhrQ@Ok* z15Yg^W8h}7(HH>->Ko}rDex>j!$GD-0Rn36)#xVz1Z%@ab0hfPe?Ce4mv^HmFWfGq z(NH7qwWpnzpuP4j9#hpvFo})!LMIz?uFu1kZRolq>tP)?Ue?3ATx8b6dhViG4?VnZ zWIZHnAKYKcEEgs8GZCmYWkN{6f}MPJ9a^vxR>gRNS7y8pZ}iDD>+oK`%p4;g7?!!- zfV8zeve3P#%v1VJ9y+R5G=c1rzZPZ!9NRSWgpnV>eLWf!LZ*bw&=)`B3hg^m%oW;q zY>&dL3|FZL-oE=PBlz$D6dxXdg5iOze)d&HLJrh3A@j2I;{-xRC1zIP2Z@=>wRmNl zOi_z?SeY<3SE#R1LnX!|F+FhfD zer;l(KAnw#S)8tv&PKr07_=*6>~f>FrZcX3JH4GCH31*Ap~p+ocWOTvj5aMzzi8!3 zcM_AhQvyX?Y(-xBG6CC{rN2Wi^j}<=4tNm3_~d)(AriW~HoY}!iPArXC*r#FjV9Fi TP-qZ7wK08=4&6Q0_xAq-6COY0 diff --git a/release/config/geosite.dat b/release/config/geosite.dat index 544fa4818..438f28124 100644 --- a/release/config/geosite.dat +++ b/release/config/geosite.dat @@ -1,7 +1,932 @@ +Œ +DETTOLdettol-prize.com  dettol.at  dettol.be  dettol.ch  dettol.cl dettol.co.id dettol.co.in dettol.co.ke dettol.co.nz dettol.co.uk +dettol.com dettol.com.au dettol.com.bd dettol.com.br dettol.com.cn +cn dettol.com.eg dettol.com.hk dettol.com.my dettol.com.ng dettol.com.sg  dettol.cz  dettol.fr  dettol.hu  dettol.ie +dettol.net  dettol.nl  dettol.pk  dettol.pl  dettol.pt  dettol.rudettolarabia.comdettolcleannaija.comdettolsitishield.co.indettolthailand.comespadoldettol.com.ar +` +GEMFURY  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com +p +KKBOX +kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me +M + MESSENGERfbmessenger.comm.me messenger.com +nbabot.net +‰ +SONY playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net +Í + TENCENT-ADS ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +? + BONGACAMS bongacams.com +bcicdn.com bcrncdn.com +A + PINDUODUO +pddpic.com pinduoduo.com yangkeduo.com +T + +PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me + +QUANTIL quantil.com +k + CHEETAHMOBILE cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.com + +MOCHA mochajs.org +ª +OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads +ô* +PAYPALaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.org anfutong.cn +cn anfutong.comanfutong.com.cn +cn beibao.cn +cn +beibao.com beibao.com.cn +cn bill-safe.combillmelater.combillmelater.infobillmelater.net bml.infobuyfast-paysmart.net cashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com +gmoney.org +i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net +pa9pal.com paaypal.com  paily.net  paily.org +paipal.com +pavpal.com paydiant.com paylike.com +paypa1.com +paypa1.org paypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net  paypal.ca +paypal.com paypal.com.cn +cn paypal.com.hk paypal.com.sg  paypal.hk paypal.info  paypal.jp  paypal.me paypal.net.cn +cn paypal.org.cn +cn  paypal.so  paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.cn +cnpaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.org paypalhere.cn +cnpaypalhere.compaypalhere.com.cn +cnpaypalhere.infopaypalhere.netpaypalhere.org paypalhere.tv paypali.net paypalinc.compaypalindia.compaypalinsuranceservices.org paypall.compaypallabs.com paypalme.com paypalnet.net paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.com paypalx.com paypaly.com payppal.com payypal.compdncommunity.com +pp-soc.com ppaypal.com  pppds.com pypl.com  pypl.info pypl.net pypl.tvsecure-paypal.infosecurepaypal.info sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info www-paypal.usxn--bnq297cix3a.cn +cnbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tv card.iogetbraintree.com krakenjs.comloanbuilder.comswiftcapital.com simility.com cashify.netswiftbank.info swiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com  venmo.com +venmo.info  venmo.net  venmo.org  cash2.comfilipino-music.net +s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.com wwwxoom.comxoom-experience.com xoom.com xoom.io xoom.net.cn +cn xoom.us xoomcom.comvenmo.s3.amazonaws.com +$ +SCMP scmp.com +i-scmp.com +Y +JFROG  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net +1 +GODADDY godaddy.comx.co godaddy +Ò + +SF-EXPRESS  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org +f + TAYLORFRANCIS tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com +Ò + CALGONCARBON  calgon.at  calgon.be  calgon.ch calgon.cn +cn calgon.co.uk +calgon.com calgon.com.tr  calgon.de  calgon.es  calgon.fr  calgon.ie  calgon.it  calgon.nl  calgon.pt  calgon.ru  calgon.tvcalgoncarbon-china.comcalgoncarbon.com calgonit.com + +LINUX  linux.org +» + MCDONALDSmcd  mcdonalds4008-517-517.cn +cnaboutmcdonalds.comhappymeal.co.nzhappymeal.com.au mcd.commcdelivery.co.idmcdelivery.co.krmcdelivery.com.aumcdelivery.com.mymcdelivery.com.sgmcdelivery.com.twmcdindonesia.com mcdonalds.camcdonalds.co.uk mcdonalds.commcdonalds.com.hk mcdonalds.hk mcdonalds.it mcdonalds.no mcdonalds.semcdonaldsarabia.commcdonaldsparties.co.nzmcdonaldsparties.com.au!xn--qhrx81fxh2a.xn--55qx5d.hk +é +ATTaccbusiness.com +atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn +cn att.com att.jobs att.net +att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com +attcorp.cn +cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com +attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com +attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net +budatt.com +cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com +uverse.comwebhosting.com att-idns.net +attdns.com +attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com +dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com +diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.com + + MANMANBUY manmanbuy.com +; +UBERuber-assets.com uber.com ubereats.com +. + +AMAZON-ADS amazon-adsystem.com +ads +x +FASTLY +fastly.com +fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com +zencdn.net + +IPIP ipip.net +> +NOTION  notion.sonotion-static.com +notion.new +$ +AFP afp.com afpforum.com +r + +PURIKONEJP"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.net +1 +TIANCITY tiancity.comtiancitycdn.com +? +MAFENGWO mafengwo.cn mafengwo.com mafengwo.net +b + +EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la +( +UDEMY  udemy.com udemycdn.com +Þ +VERCEL +now.shvercel-dns.comvercel-status.com +vercel.app +vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com + + WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com +wp.com  wpvip.com +] +BUYPASSbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no +Î +DNSPOD dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub + +MIAOPAI miaopai.com +0 +OPENWRT openwrt.orglede-project.org +ä +TLD-CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b + +ADDTOANY addtoany.com +9 +DOUBAN +douban.com  douban.fm doubanio.com +2 + GROWINGIO-ADS!assets.growingio.com +ads +{ +OREILLY oreil.ly oreilly.comoreilly.com.cn +cnoreilly.revieworeillystatic.com +orl.ly +" + ADBLOCKPLUSadblockplus.org + + APPLE-DEVappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net +î? + CATEGORY-DEV anaconda.com anaconda.org conda.io android.comandroidify.comappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net archlinux.orgarchlinuxarm.orgbootstrapcdn.comgetbootstrap.combraventures.com braveux.com +compass.isfightforux.comforthebadge.comstockagainstphotography.com launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io +ubuntu.com +ubuntu.netubuntuforums.org canonical.com dart.dev dartlang.org dartpad.dev +debian.org +dotdeb.orgcompose-spec.io +docker.com  docker.io embed.ly embedly.com playerjs.ioaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com fastlane.cifastlane.tools getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org flathub.org flatpak.org flutter.devflutterapp.comfontawesome.comfortawesome.com  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com gitbook.com +gitbook.io npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io haskell.orghaskellstack.org stackage.org brew.shhomebrew.bintray.com +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.orgjava java.com java.net jetbrains.com jetbrains.net datalore.iokotlinlang.org  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net +cn kubernetes.io +k8s.ioadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net mongodb.com mongodb.org  nginx.com  nginx.org openwrt.orglede-project.org perl.org cpan.org metacpan.orgpolymer-project.orgpolymerproject.org  pycon.org pypa.io pypi.io pypi.org +python.orgpythonhosted.org qt.ioqt-project.orgreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org redis.io redislabs.com remirepo.net ruby-lang.org rubygems.orgscala-lang.org scala-sbt.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.commystrikingly.comstrikingly.comstrikinglycdn.com +kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.orglfai.foundationlinuxfoundation.org  unity.com unity3d.com!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +v8.dev v8project.org vim.orgxda-developers.com xda-cdn.comalpinelinux.org +apache.org atom.io +badgen.net bitvise.com  cdnjs.com +centos.orgchocolatey.org clojure.org +cnpmjs.org +cygwin.com +cython.org  deno.landelixir-lang.org +elrepo.org +erlang.org +ffmpeg.org freebsd.org +gentoo.orggetcomposer.org git-scm.com gnu.orggreenend.org.uk +ius.io +jenkins.io +js.org jupyter.org kali.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mobatek.net  mysql.com  nixos.orgnodesource.comnotepad-plus-plus.org +openai.com openresty.org openssl.org opensuse.org packagist.org pcre.org phantomjs.org php.net  putty.orgpostgresql.org r-project.orgraspberrypi.org raspbian.org rpmfusion.orgscientificlinux.org scoop.sh +shields.io +sqlite.orgsublimetext.com termius.com  unpkg.com videojs.com videolan.org wireshark.org x.org xposed.info yarnpkg.com zsh.org +7 +DART dart.dev dartlang.org dartpad.dev + +DOI doi.org doi.info +G +TEX ctan.orglatex-project.org +miktex.org tug.org + +TINYURL tinyurl.com ++ + MXPLAYER-ADSevt.mxplay.com +ads +ñ +WANGSU  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org +- +MYRADIO +myradio.hkmyradio.com.hk +Y +UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com +£ +YANDEXxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il +yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md +yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net +yandex +H + ZYNGA-ADS zynga.com +ads#zyngaplayersupport.com +ads +B + LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com +” + EASTMONEY1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn +á2 +ALIBABA alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to +ele.me elemecdn.com eleme.cnteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net +' +MOJI moji.com mojichina.com +† +MUJI muji.com muji.com.cn +cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.net +j + PLAYSTATION playstationplaystation.complaystation.net sonyentertainmentnetwork.com +C + SCIENCEDIRECTsciencedirect.comsciencedirectassets.com + +ABEMA abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net +¶ + APPLE-UPDATEappldnld.apple.com gg.apple.comgnf-mdn.apple.comgnf-mr.apple.com gs.apple.com ig.apple.commesu.apple.comns.itunes.apple.comoscdn.apple.comosrecovery.apple.com skl.apple.comswcdn.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.com xp.apple.com +ß + CANONICAL launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io +ubuntu.com +ubuntu.netubuntuforums.org canonical.com + +SVP svp-team.com +/ +FASTLANE fastlane.cifastlane.tools +y +FONTSHOP fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com + + SITEPOINT sitepoint.com +¹ +UBI ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +cn +Ë{ +CATEGORY-ECOMMERCE  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk +adidas.com adidas.com.cn +cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com +bestbuy.ca +bestbuy.cn +cn bestbuy.combestbuy.com.cn +cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn +cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info +gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com +booking.cn +cn booking.com bstatic.comcostco-static.com +costco.comcostcobusinessdelivery.comcraigslist.org dmm.com  dmm.co.jpdmm-extension.com dmmapis.com21centuryaccess.com4ebaytraders.com adcommerce.cn +cn adcommerce.tv appforebay.cn +cnappsonebay.net +asebay.com +baazee.com +bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn +cn"connectcommerce.com.cn +cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn +cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn +cncyber-bay.com.cn +cncyber-bay.info cyber-bay.org +dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn +cn +ebay.co.nz +ebay.co.uk +ebay.co.ve +ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn +cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn +cn ebay.nl ebay.org ebay.org.cn +cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn +ebay.yn.cn +cn +ebay.zj.cn +cn +ebay25.com +ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn +cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com +ebayca.com +ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn +cnebayclassifieds.com"ebayclassifieds.com.cn +cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com +ebayde.com ebaydesc.cn +cnebaydesc.com.cn +cnebaydlassifieds.com +ebaydns.cn +cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn +cnebayenterprise.com!ebayenterprise.com.cn +cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com +ebayit.comebayjewelry.com ebayjob.com +ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn +cnebaymotors.comebaymotors.com.cn +cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com +ebayon.com +ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn +cnebaypedia.com.cn +cnebayprivacycenter.com +ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn +cnebayshopping.com.cn +cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn +cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn +cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com +ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn +cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net +myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn +cn prostores.comprostores.com.cn +cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com +svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn +cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com +gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn +cnkijijidns.com.cn +cnkijijiforbusiness.ca +kijijii.ca kijijiraps.ca kijji.ca +kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn +cn +q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn +cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com +nexcat.com nexpart.com +nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.comfarfetch-apps.comfarfetch-contents.com farfetch.cn +cn farfetch.comfarfetch.com.cn +cn farfetch.netfarfetch.net.cn +cn  fflnk.net gfashion.com guccichimeforchange.orggucci.cn +cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com +hm.com hm.com.cn +cnhomedepot-static.com homedepot.comikea.cn +cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.comloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn +cn  miniso.co miniso.co.id miniso.co.tz +miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn +cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn +cn myminiso.com muji.com muji.com.cn +cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.netnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com +eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com +gonike.comhandbags-nike.comhightopnikes.com +idnike.cominikesneakers.com just-do-it.cn +cn justdoit.uskicksnike1.comkidsnikeshoes.com +mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn +cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn +cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com +nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn +cnnikebetterworld.com"nikebetterworld.com.cn +cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com +nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn +cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org +nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn +cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn +cn nikeid.com.cn +cnnikeidshoes.com nikeinc.comnikeinc.com.cn +cnnikeincchemistry.comnikeinstock.com +nikeit.comnikeitalia.com nikeitaly.com +nikekd.com nikekid.com +nikelab.cn +cnnikelab.com.cn +cn nikelink.comnikeliuxiang.cn +cnnikeliuxiang.comnikeliuxiang.com.cn +cn nikelives.comnikelunarglide.com nikemall.cn +cnnikemall.com.cn +cnnikemarketing.com nikenews.com +niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn +cnnikerunclub.com.cn +cnnikerunner.comnikerunning.com.cn +cnnikerunningshoes.com +nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn +cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh +swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e nordstrom.comnordstrommedia.com shopee.cn +cn shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com +cn +shp.ee +target +target.comtargetimg1.com walmart wal-mart.com +wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com +wmt.co +ã +TESLA solarcity.comtesla.cn +cn  tesla.com tesla.com.cn +cnteslamotors.cn +cnteslamotors.comteslamotors.com.cn +cntesla-cdn.thron.cn +cntesla-cdn.thron.com +– + SOUNDOFHOPE bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com +_ +FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org +Z +INTERCOM intercom.com intercom.iointercomassets.comintercomcdn.com + +OK ok.ru +. +SCALAscala-lang.org scala-sbt.org +– +WEBEX webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr +% +CDN77  cdn77.com  cdn77.org +€ + INTEL-DEV +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org +. +JIEMIAN jiemian.comjiemian.com.cn +„ + TONGCHENG 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com + +GEEKPARK geekpark.net +` +OAN aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com +Û +SPOTIFY byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net +b + YAHOO-ADS ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads + + FASTSTONE faststone.org + + +TYPOGRAPHYtypography.com +… +AMP amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.net +‰ + +APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com + +ISGD is.gdv.gd + +JINJIANG  jjwxc.net +ô +EPOCHMEDIAGROUP dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net +etviet.comlagranepoca.com ntd.com  ntdca.com +ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz +1 +HOMEBREW brew.shhomebrew.bintray.com +& +JABLE cdnlab.live jable.tv +7 + +LONDONREALfreedomplatform.tv londonreal.tv g -SPRINGER -apress.com springer.comspringerlink.comspringernature.com wkap.nl + READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org +% +RTHK etvonline.hk rthk.hk +( +DEBIAN +debian.org +dotdeb.org +* +TELEKOM telekom.com +telekom.de +— +WALMART walmart wal-mart.com +wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com +wmt.co +s +EHENTAI e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org +p +ONEPLUS oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com +¤ + SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads + + SPOTIFY-ADS'adeventtracker.spotify.com +ads$adstudio-assets.scdn.co +ads#bloodhound.spotify.com +ads +Ì +EA dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.net +° + EPICGAMESbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn +› +NAVER +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com +ý +RIOThistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net +lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com +lpl.com.cn +cn pvp.net +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.com +M + +STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com ++ + MYTVSUPER mytvsuper.com tvb.com +À +ADIDAS  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk +adidas.com adidas.com.cn +cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se + +AP +ap.org +apnews.com +E +HCAPTCHA botstop.com hcaptcha.comhcaptchastatus.com +- + ACFUN-ADS apilog-web.acfun.cn +ads +\ +TAIKANG taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +Þ +HEROKU  heroku.co +heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh +codeish.co +codeish.io +Ô +GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com +8 + CLUBHOUSEclubhouseapi.comjoinclubhouse.com +å +NETFLIX fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.net + +SOLIDOT solidot.org +U +TVER +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp + +3TYPE 3type.cn + +EGGHEAD +egghead.io +* +GITBOOK gitbook.com +gitbook.io +B +MITmit mit.edu mit.netmitpressjournals.org + +PASTEBIN pastebin.com + +PINGPE ping.pe +g + ATLASSIAN atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.com +Ñ +RARBG rarbg.me rarbg.toproxyrarbg.org rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com +Ð +VK mvk.com userapi.com  vk-cdn.me +vk-cdn.net vk-portal.net vk.cc +vk.com  vk.design vk.link vk.me vkcache.com vkgo.app +vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net +‡ +WHOLEFOODSMARKETwholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.org +' +POLYV  polyv.net videocc.net +4 + KHANACADEMYkhanacademy.org kastatic.org +  +ORACLE +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net +F +SOGOU +go2map.com sogo.com  sogou.com sogoucdn.com ++ +FORBES +forbes.com forbesimg.com +E +PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net +( +CHINAZ +chinaz.com +chinaz.net +ñ +SHOPEE shopee.cn +cn shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com +cn +shp.ee +< +TIDAL  tidal.com tidalhifi.com wimpmusic.com +ž +CNN cnn.com +cnn.io +cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com +þ +JIGUANG +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn +ß +THETIMES driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.com + +WEBFLOW webflow.com +, +GANJI  ganji.comganjistatic1.com +d + JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net +0 + +SOUNDCLOUDsoundcloud.com +sndcdn.com + +TUMBLR +tumblr.com + +CUTTLY cutt.ly +¡ + +FAMILYMARTfamifun.com.tw family.co.jp family.com.twfamilymart.com.cn +cnfamilymart.com.myfamilymart.com.ph  famima.vn +¿ +GIGABYTE  aorus.com aoruszone.cn +cn gigabyte.cn +cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net +% +NGINX  nginx.com  nginx.org +U +SB +dns.sb ip.sb loli.net sb.sb sm.msu.nu +www.sb +, +BANDCAMP bandcamp.com +bcbits.com +ê +HP +123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com +compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info +hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com +hp.com +hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net +hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com +hpfaqs.comhpfeedback.com +hpgift.com +hpgpas.comhpgraphicspartners.com  hpiie.org +hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com +hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com +hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com +hpstore.cn +cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com +hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.com +ê + SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.com +i +HKBN csifund.org hkbn.com.hk hkbn.net +hkbnes.net jos.comspeedtest.com.hk +¢ +WIX editorx.comparastorage.com wix-code.com wix.comwixanswers.com wixapps.net  wixmp.com wixsite.com wixstatic.com + +ANTUTU +antutu.com +â + HUNANTV-ADSclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com +ads + +J-TEST +j-test.com +· +HANYI hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cn +û + STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com +' + UBERADS-ADS uberads.com +ads ô’ BEATS100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com @@ -27,65 +952,5619 @@ scnshop.cc shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.net -% -IMGIX  imgix.com  imgix.net +¡ + BYTEDANCE  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com +Q + CHINANEWS chinanews.comchinanews.com.cn +cns.com.cn ecns.cn +7 + BOOTSTRAPbootstrapcdn.comgetbootstrap.com +5 +COLORFULCLOUDS caiyunai.com caiyunapp.com + +GUOKR  guokr.com +B +HKEDCITY  edcity.hk hkedcity.nethkreadingcity.net +žŸ +CATEGORY-COMPANIESacer-group.com acer.com acer.com.cn +cn typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com +adobedc.cn +cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com +demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com +omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com +fotolia.cc fotolia.com +fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net +marketo.tvmarketodesigner.commarketolive.com +mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.newalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon-adsystem.com +adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws +amazonimdb +kindle xn--cckwcxetdxn--jlq480n2rg yamaxun +zappos a2z.comaboutamazon.cn +cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn +cnalexafund.com.cn +cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn +cn amazon.co.jp amazon.co.uk +amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl +amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn +cn!amazonbusiness.com.cn +cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn +cnamazonchoice.com.cn +cnamazonchoices.cn +cn amazonchoices.com.cn +cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn +cn amazoninspire.com.cn +cnamazonlaunchpad.cn +cnamazonlaunchpad.com"amazonlaunchpad.com.cn +cn amazonlending.com.cn +cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn +cnamazonnow.com.cn +cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn +cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn +cnprimeday.com.cn +cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de +yamaxun.cn +cn yamaxun.comz.cn +cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn +cnamazonworkdocs.com!amazonworkdocs.com.cn +cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn +cn kindle.co.jp kindle.co.uk +kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn +cnkindleoasis.comkindleoasis.com.cn +cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn +cn#amazonprimevideo.com.cn +cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com +cn-!images-cn-8.ssl-images-amazon.com +cn amd.comamdfanstore.com +radeon.comiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com +aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com +airmay.com +ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com +beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn +cn  beats1.tv beats1.com.cn +cn beats123.com beats2.com.cn +cn beats4.cn +cn +beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com +beatsep.cn +cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com +biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net +bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com +cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com +dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com +lyzsxx.com mairbeats.com +makeeu.commallheadphone.commbeats-tech.commbheadphone.com +micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com +ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com +scnshop.cc +shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com +theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net +unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.netapple-icloud.cn +cnappleicloud.cn +cnapplemx-icloud.comicloud-apple.cn +cnicloud-content.comicloud-isupport.com  icloud.ch +icloud.com icloud.com.cn +cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn +cn  icloud.om +icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn +cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com +icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com +me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn +cn itun.es itunbes.com ituneas.comitunes-apple.cn +cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th +itunes.com  itunes.hk  itunes.mx +itunes.org +itunes.rio  itunes.usitunes12days.comitunesapple.cn +cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn +cnitunesradio.comitunesradio.com.cn +cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.netappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cn apple apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cmapple.cn +cn apple.co apple.co.cr apple.co.hu apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk  apple.com apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn +cn apple.com.co apple.com.de apple.com.do apple.com.gr apple.com.gy apple.com.jm apple.com.lk apple.com.mg apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pl apple.com.pr apple.com.pt apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.eu apple.fi apple.fr apple.hamburg apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.jp apple.kr apple.lk apple.lt apple.lv apple.me apple.my  apple.net apple.net.gr apple.nl apple.no apple.pk apple.pl apple.pt apple.ro apple.rs apple.ru apple.sa apple.se apple.sg apple.si apple.sk apple.so apple.tt apple.tw apple.uk apple.usapple.xn--czr694bapple.xn--fiqs8s  apple.xyz aplestore.comapple-store.cn +cnapple-store.netapple-store.wang applestor.com applestore.bg applestore.cc applestore.ch applestore.cm applestore.cn +cnapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.comapplestore.com.auapplestore.com.bnapplestore.com.cn +cnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.tw applestore.de applestore.hk applestore.kr applestore.meapplestore.netapplestore.net.gr applestore.ph applestore.qa applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comapple-appstore.cn +cnappleappstore.cn +cnappleappstore.netappleappstore.tv  appsto.reappstore.co.id appstore.hk appstore.my appstore.phappstoreapple.cn +cn asto.retvappstore.netapple-imac.com appleimac.comimac-apple.comimac-applecomputer.com imac.co +imac.co.nz imac.com imac.eu imac.gr imac.one imac.rs imacapple.comimacapplecomputer.comebookforipad.com euroipad.comfindmyipad.com indiaipad.com +ipad.co.kr ipad.de  ipad.host  ipad.wang  ipad3.com +ipadair.cl +ipadair.cmipadair.com.bripadair.com.es +ipadair.fr +ipadair.hk +ipadair.ie +ipadair.jp +ipadair.twipadaustralia.com ipadmini.cmipadmini.com.lk ipadmini.lk ipadpro.buzz +ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com dl-iphone.comfundaiphone5s.com hebiphone.com hf-iphone.com +iphine.comiphone-8.com.cn +cn iphone-cd.com iphone-cn.com iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.com iphone-x.tv iphone-yh.com iphone-zh.com  iphone.cm +iphone.com iphone.com.au iphone.com.gr  iphone.es iphone.host iphone.net.gr  iphone.pt  iphone.rs  iphone.ru iphone.wang iphone4.comiphone4.com.br iphone4s.com iphone5.comiphone5casescovers.comiphone5s5case.comiphoneacessorios.com.briphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comiphoneclaro.com.briphonecollcase.com iphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang iphonerip.net iphonese.tviphoneunlockimei.com iphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.com ipod.ca ipod.ch ipod.cm ipod.co +ipod.co.nz +ipod.co.uk +ipod.co.za ipod.com ipod.com.au ipod.com.cn +cn ipod.com.fr ipod.com.hk ipod.com.sg ipod.com.tw ipod.de ipod.es ipod.eu ipod.fr ipod.gr ipod.hk ipod.is ipod.net ipod.no ipod.pk ipod.rs ipod.ru ipod.tw ipodcentre.nlipodcleaner.comipoditouch.com ipodnano.com ipodnano.netipodprices.com +ipodrip.caipodrocks.com.au  ipods.comipodshop.com.au ipodtouch.co ipodtouch.com +myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wang mac.wang +macbook.co +macbook.hk +macbook.tw macbook.wang macbookair.cn +cnmacbookair.co.krmacbookair.co.ukmacbookair.commacbookair.com.aumacbookair.com.cn +cnmacbookair.com.es macbookair.es macbookair.hk macbookair.kr macbookair.jpmacbookair.net macbookpro.comacbookpro.commacbookpro.com.aumacbookpro.net macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapple-watch.com.ru applewatch.hk applewatch.tv applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin applemusic.coapplemusic.comapplemusic.com.auapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.com musickit.netwwwapplemusic.comapple.comscoreresearch.com +apple.newsappleenews.comapplenews.berlinapplenews.hamburg applenews.tvapplenewsformat.com apple-pay.com apple-pay.rsapple-pay.wangapplepay.berlinapplepay.co.rsapplepay.com.twapplepay.hamburg applepay.hk applepay.info applepay.jp applepay.rs applepay.tvapplepaycash.cn +cnapplepaycash.com.cn +cnapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.cn +cnapplepaysupplies.com#applepaysupplies.com.cn +cnapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv +i-book.com +i-book.net ibook.co.nz  ibook.com ibook.eu  ibook.netibookpartner.comibooksauthor.com  iphoto.eu  iphoto.no  iphoto.se iphoto.wang  imovie.euimoviegallery.comimoviestage.comapplecare.berlin applecare.cc applecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com appleid-uk.usappleid.berlin appleid.comappleid.hamburg +appleid.hk ids-apple.com myappleid.com appletv.com +appletv.fr appletv.wang appletv4.cn +cnappletv4.com.cn +cnappletvapp.appleappleone.audio appleone.blog appleone.chatappleone.cloud appleone.clubappleone.community appleone.filmappleone.guide appleone.hostappleone.space appleone.techappleone.website +shazam.com1to1computing.com.au1to1conference.com.au 5lml.com +a0pple.net aapl.twairport.brussels airport.com +airport.euairsupportapp.com airtunes.com airtunes.info airtunes.netalchemysynth.com  ap0le.com aple.com  apole.com +app0le.com +appl-e.com appl.com +appl4e.com  appla.comapple-darwin.comapple-darwin.netapple-darwin.org apple-dns.cn +cn apple-dns.comapple-dns.com.cn +cn apple-dns.netapple-enews.comapple-expo.com apple-expo.eu apple-hk.comapple-ibooks.cn +cn apple-inc.netapple-livephotoskit.com apple-maps.cn +cnapple-online.com apple-usa.netappleafrica.comappleantilles.comappleaustralia.comappleaustralia.com.auappleaustralia.net.au applebk.netapplecarbon.com applecard.tvapplecentar.co.rsapplecentar.rsapplecenter.cn +cnapplecenter.com.cn +cnapplecentre.com.auapplecentre.infoappleclub.com.hk applecom.comapplecomputer-imac.comapplecomputer.cn +cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com applecomputer.com.cn +cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoapplecomputers.co.nzapplecoronavirus.com appledns.cn +cnappledns.com.cn +cn appleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comapplehongkong.com.hkappleinclegal.comappleipodsettlement.comappleiservices.com applelink.comapplemagickeyboard.comapplemalaysia.com.myapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com +appleos.tvapplepencil.netapplepodcasts.comapplepremiumreseller.com.au applepremiumresellers.com.auapplereach.comapplereach.net apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoappleshop.co.uk applesiri.cn +cnapplesurveys.comappletaiwan.com appletips.net appleweb.net applexpo.net applezh.com  applf.com +applfe.com +applle.com  applw.comappmediagroup.com +appule.com  appye.com  apyle.com  beddit.tvbraeburncapital.com burstly.netburstlyrewards.com buyaapl.com buyaapl.net buyaple.com camelphat.comcamelspaceeffect.com +carbon.com catalina.hk cdn-apple.com  chomp.com +coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com +dot-mac.de  dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us +earpod.net ecgapp.com.cn +cn +ecgapp.netedu-research.org +emac.co.in emac.in  emagic.de +eworld.com faceid99.com faceid99.netfaceidglobal.com faceshift.cn +cn facetime.netfinalcutpro.comfind-apple.com firewire.cl firewire.eu geoport.com +homepod.cn +cn +hopstop.tv ichat.co.in idvd.eu  ikids.comilecture.co.nz ilife.eu ilife.gr +ilife.wang imessage.tv insidear.cn +cninsidemacintosh.comiosinthecar.comipa-iphone.net  ipple.com ischool.com itools.info  iwork.com iwork.se +iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com livephotos.cn +cnlivephotos.com.cn +cn livephotos.tvlojaiphone.com.br mac-mini.com mac.com +mac.com.au +mac.eu +mac.rs macappsto.re macboxset.com mach-os.com mach-os.net +machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com +newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us +touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn +cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com +cn"amp-api.apps.apple.com +cn aod.itunes.apple.com +cn#api-edge.apps.apple.com +cn(apptrailers.itunes.apple.com +cn bag.itunes.apple.com +cn'bookkeeper.itunes.apple.com +cnbooks.apple.com +cn'client-api.itunes.apple.com +cn cma.itunes.apple.com +cn!communities.apple.com +cn(discussionschinese.apple.com +cnfides-pol.apple.com +cn(gspe11-2-cn-ssl.ls.apple.com +cn&gspe12-cn-ssl.ls.apple.com +cn&gspe85-cn-ssl.ls.apple.com +cn!init.itunes.apple.com +cn$iosapps.itunes.apple.com +cn"js-cdn.music.apple.com +cn km.support.apple.com +cnmaps.apple.com +cn$osxapps.itunes.apple.com +cnpd.itunes.apple.com +cn!play.itunes.apple.com +cn$se-edge.itunes.apple.com +cn se2.itunes.apple.com +cn#search.itunes.apple.com +cn1%sf-api-token-service.itunes.apple.com +cnsp.itunes.apple.com +cn&stocks-sparkline.apple.com +cn+streamingaudio.itunes.apple.com +cnsu.itunes.apple.com +cn!sync.itunes.apple.com +cn upp.itunes.apple.com +cn"weather-data.apple.com +cn#^a[1-5]\.mzstatic\.com$ +cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$ +cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$ +cn!^cl[1-5]\.apple\.com$ +cn+^is[1-5](-ssl)?\.mzstatic\.com$ +cn$^s[1-5]?\.mzstatic\.com$ +cna1.mzstatic.com +cna2.mzstatic.com +cna3.mzstatic.com +cna4.mzstatic.com +cna5.mzstatic.com +cn, adcdownload.apple.com.akadns.net +cn!adcdownload.apple.com +cnappldnld.apple.com +cn"appldnld.g.aaplimg.com +cnapps.apple.com +cnapps.mzstatic.com +cn$cdn-cn1.apple-mapkit.com +cn$cdn-cn2.apple-mapkit.com +cn$cdn-cn3.apple-mapkit.com +cn$cdn-cn4.apple-mapkit.com +cn cdn.apple-mapkit.com +cn!cdn1.apple-mapkit.com +cn!cdn2.apple-mapkit.com +cn!cdn3.apple-mapkit.com +cn!cdn4.apple-mapkit.com +cn!cds-cdn.v.aaplimg.com +cn$cds.apple.com.akadns.net +cn cds.apple.com +cn/#cl1-cdn.origin-apple.com.akadns.net +cn cl1.apple.com +cncl2-cn.apple.com +cn<0cl2.apple.com.edgekey.net.globalredir.akadns.net +cn cl2.apple.com +cn/#cl3-cdn.origin-apple.com.akadns.net +cn cl3.apple.com +cn/#cl4-cdn.origin-apple.com.akadns.net +cncl4-cn.apple.com +cn cl4.apple.com +cn/#cl5-cdn.origin-apple.com.akadns.net +cn cl5.apple.com +cn+clientflow.apple.com.akadns.net +cn clientflow.apple.com +cn."configuration.apple.com.akadns.net +cn#configuration.apple.com +cncstat.apple.com +cn."dd-cdn.origin-apple.com.akadns.net +cn(download.developer.apple.com +cngs-loc-cn.apple.com +cngs-loc.apple.com +cn%gsp10-ssl-cn.ls.apple.com +cn!gsp11-cn.ls.apple.com +cn!gsp12-cn.ls.apple.com +cn!gsp13-cn.ls.apple.com +cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net +cn, gsp4-cn.ls.apple.com.edgekey.net +cn gsp4-cn.ls.apple.com +cn gsp5-cn.ls.apple.com +cn%gsp85-cn-ssl.ls.apple.com +cn&gspe19-cn-ssl.ls.apple.com +cn-!gspe19-cn.ls-apple.com.akadns.net +cn"gspe19-cn.ls.apple.com +cn#gspe21-ssl.ls.apple.com +cngspe21.ls.apple.com +cn#gspe35-ssl.ls.apple.com +cniadsdk.apple.com +cn, icloud-cdn.icloud.com.akadns.net +cn icloud.cdn-apple.com +cn'images.apple.com.akadns.net +cn?3images.apple.com.edgekey.net.globalredir.akadns.net +cnimages.apple.com +cn3'init-p01md-lb.push-apple.com.akadns.net +cn init-p01md.apple.com +cn3'init-p01st-lb.push-apple.com.akadns.net +cn%init-p01st.push.apple.com +cn3'init-s01st-lb.push-apple.com.akadns.net +cn%init-s01st.push.apple.com +cn(iosapps.itunes.g.aaplimg.com +cniphone-ld.apple.com +cn is1-ssl.mzstatic.com +cnis1.mzstatic.com +cn is2-ssl.mzstatic.com +cnis2.mzstatic.com +cn is3-ssl.mzstatic.com +cnis3.mzstatic.com +cn is4-ssl.mzstatic.com +cnis4.mzstatic.com +cn is5-ssl.mzstatic.com +cnis5.mzstatic.com +cn'itunes-apple.com.akadns.net +cnitunes.apple.com +cn#itunesconnect.apple.com +cn)mesu-cdn.apple.com.akadns.net +cn+mesu-china.apple.com.akadns.net +cnmesu.apple.com +cnmusic.apple.com +cn(ocsp-lb.apple.com.akadns.net +cnocsp.apple.com +cnoscdn.apple.com +cn-!oscdn.origin-apple.com.akadns.net +cnpancake.apple.com +cn, pancake.cdn-apple.com.akadns.net +cnphobos.apple.com +cn1%prod-support.apple-support.akadns.net +cn#reserve-prime.apple.com +cns.mzstatic.com +cn4(stocks-sparkline-lb.apple.com.akadns.net +cn>2store.apple.com.edgekey.net.globalredir.akadns.net +cn'store.apple.com.edgekey.net +cnstore.apple.com +cn2&store.storeimages.apple.com.akadns.net +cn+store.storeimages.cdn-apple.com +cn2&support-china.apple-support.akadns.net +cnsupport.apple.com +cn."swcatalog-cdn.apple.com.akadns.net +cnswcatalog.apple.com +cnswcdn.apple.com +cnswcdn.g.aaplimg.com +cn'swdist.apple.com.akadns.net +cnswdist.apple.com +cn+swscan-cdn.apple.com.akadns.net +cnswscan.apple.com +cn1%updates-http.cdn-apple.com.akadns.net +cn&updates-http.cdn-apple.com +cnvalid.apple.com +cn-!valid.origin-apple.com.akadns.net +cn<0www.apple.com.edgekey.net.globalredir.akadns.net +cn%www.apple.com.edgekey.net +cn www.apple.com +cn asus.com asus.com.cn +cn atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.comaccbusiness.com +atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn +cn att.com att.jobs att.net +att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com +attcorp.cn +cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com +attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com +attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net +budatt.com +cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com +uverse.comwebhosting.com att-idns.net +attdns.com +attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com +dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com +diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.combandwagonhost.com bwh1.net bwh8.net  bwh88.net canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn +cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn +cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn +cn  cisco.com cisco.com.cn +cn +cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co +devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com +mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com +mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn +cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com +versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org +mearki.com meraki-go.com  meraki.hk merakigo.com +tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net clco.cc +cloudc.one cloudcone.com cloudcone.net +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.comaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com +nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org +atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com +facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com +faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com +fb.careers +fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com +fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com +fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net +freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com +groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com +redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net  aorus.com aoruszone.cn +cn gigabyte.cn +cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net godaddy.comx.co godaddy android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org +v8.dev v8project.org youtubeggpht.cn +cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com +youtube.ae +youtube.al +youtube.am +youtube.at +youtube.az +youtube.ba +youtube.be +youtube.bg +youtube.bh +youtube.bo +youtube.by +youtube.ca youtube.cat +youtube.ch +youtube.cl +youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve +youtube.cr +youtube.cz +youtube.de +youtube.dk +youtube.ee +youtube.es +youtube.fi +youtube.fr +youtube.ge +youtube.gr +youtube.gt +youtube.hk +youtube.hr +youtube.hu +youtube.ie +youtube.in +youtube.iq +youtube.is +youtube.it +youtube.jo +youtube.jp +youtube.kr +youtube.kz +youtube.la +youtube.lk +youtube.lt +youtube.lu +youtube.lv +youtube.ly +youtube.ma +youtube.md +youtube.me +youtube.mk +youtube.mn +youtube.mx +youtube.my +youtube.ng +youtube.ni +youtube.nl +youtube.no +youtube.pa +youtube.pe +youtube.ph +youtube.pk +youtube.pl +youtube.pr +youtube.pt +youtube.qa +youtube.ro +youtube.rs +youtube.ru +youtube.sa +youtube.se +youtube.sg +youtube.si +youtube.sk +youtube.sn youtube.soy +youtube.sv +youtube.tn +youtube.tv +youtube.ua +youtube.ug +youtube.uy +youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand +chromedclkgbizgle gmailgoogoog +googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca +google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn +cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw +google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com +466453.com abc.xyz adgoogle.net +admeld.comangulardart.org +api.ai +apigee.com appbridge.ca appbridge.io appbridge.it appspot.com +apture.com area120.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +brotli.org bumpshare.com +bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org +chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com +foofle.com froogle.com fuchsia.dev  g-tun.comg.cn +cng.co g.dev +g.page gateway.dev +gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn +cn globaledu.org  gmail.com gmodules.com  gogle.com +gogole.comgonglchuangl.net +goo.gl +googel.com +googil.com  googl.comgoogle-syndication.com google.berlin +google.dev +google.net +google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn +cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn +cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com +googlr.com +goolge.com gooogle.com gridaware.app gsrc.io +gstatic.cn +cn gstatic.comgstaticcnapps.cn +cn +gsuite.com +gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org +picasa.com picasaweb.com picasaweb.net picasaweb.org +picnik.com pittpatt.com +pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com +revolv.comridepenguin.com run.appsavethedate.foo +saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com +verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org +wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com +webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company +x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com +cnwww.recaptcha.net +cn265.com +cn2mdn.net +cn adservice.google.com +cnapp-measurement.com +cn beacons.gcp.gvt2.com +cnbeacons.gvt2.com +cnbeacons3.gvt2.com +cn c.admob.com +cn(c.android.clients.google.com +cn!cache.pack.google.com +cncheckin.gstatic.com +cn%clickserve.dartsearch.net +cn)clientservices.googleapis.com +cn)connectivitycheck.gstatic.com +cncorp.google.com +cn crl.pki.goog +cncsi.gstatic.com +cn dl.google.com +cndl.l.google.com +cndoubleclick.net +cn-!firebase-settings.crashlytics.com +cn fonts.googleapis.com +cnfonts.gstatic.com +cn google-analytics.com +cn googleadservices.com +cngoogleanalytics.com +cn!googlesyndication.com +cn googletagmanager.com +cn!googletagservices.com +cngtm.oasisfeng.com +cn!imasdk.googleapis.com +cn ocsp.pki.goog +cn, pagead-googlehosted.l.google.com +cn!pki-goog.l.google.com +cn recaptcha.net +cnredirector.gvt1.com +cn)safebrowsing-cache.google.com +cn'safebrowsing.googleapis.com +cn$settings.crashlytics.com +cn-!ssl-google-analytics.l.google.com +cnssl.gstatic.com +cn%toolbarqueries.google.com +cntools.google.com +cntools.l.google.com +cn$translate.googleapis.com +cn!update.googleapis.com +cn-!www-googletagmanager.l.google.com +cnwww.gstatic.com +cn  hinet.net csifund.org hkbn.com.hk hkbn.net +hkbnes.net jos.comspeedtest.com.hk +123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com +compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info +hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com +hp.com +hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net +hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com +hpfaqs.comhpfeedback.com +hpgift.com +hpgpas.comhpgraphicspartners.com  hpiie.org +hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com +hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com +hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com +hpstore.cn +cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com +hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.comibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn +cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn +cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt +altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com +intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn +cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com +niosii.com +niosii.netomekinteractive.com +omnitek.tv openamt.comopendroneid.orgoptanedifference.com +pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com +siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net +vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn +xscale.combarefootnetworks.com +lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com +lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net linkedin.com  licdn.com logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net imgsmail.ru mail.ru mycdn.me azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv  microsoft azure hotmail +office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com +m12.vc +aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com +binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com +ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com +gears5.com gearspop.comgearstactics.com +gfx.ms +gigjam.com hololens.com +hotmail.co hotmail.com +hotmail.eu hotmail.net hotmail.orghummingbird.ms +ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl +ingads.comintunewiki.comiotinactionevents.com +kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn +cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn +cn +msauth.netmschallenge2018.com +msecnd.net +msedge.net  msft.info msft.net msftauth.cn +cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com +msocdn.com +msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com +office.com +office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net +pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com +pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net +sfx.ms sharepoint.cn +cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com +techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com +userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net +wbd.ms what-fan.netwindows-int.net windows.com windows.net +windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com +winhec.com +winhec.net +yammer.com(dl.delivery.mp.microsoft.com +cn&download.windowsupdate.com +cn'bg.v4.a.dl.ws.microsoft.com +cn(bg4.v4.a.dl.ws.microsoft.com +cn2&cdn.marketplaceimages.windowsphone.com +cn cn.windowssearch.com +cn#ctldl.windowsupdate.com +cn#developer.microsoft.com +cndocs.microsoft.com +cn"download.microsoft.com +cn/#download.visualstudio.microsoft.com +cnfs.microsoft.com +cn(msgr.dlservice.microsoft.com +cn, msgruser.dlservice.microsoft.com +cn#officecdn.microsoft.com +cn&qh.dlservice.microsoft.com +cnsdx.microsoft.com +cn/#silverlight.dlservice.microsoft.com +cn, slupdate.dlservice.microsoft.com +cn, storeedgefd.dsx.mp.microsoft.com +cn&wl.dlservice.microsoft.com +cn&wscont1.apps.microsoft.com +cn&wscont2.apps.microsoft.com +cnwww.microsoft.com +cn&xb.dlservice.microsoft.com +cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com neuralink.com +geforce.cn +cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn +cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn +cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk +nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net  panasonic panasonic.cn +cn panasonic.com panasonic.jp technics.com 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hkairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org +iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com +qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com +uplinq.com wipower.comwirelessreach.com +brewmp.comqualcomm.sc.omtrdc.net  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com samsung +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn +cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.combarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com +snapkit.co playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net +spacex.comboringcompany.com x.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com +twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.couber-assets.com uber.com ubereats.com +oath.cloud oath.com ouroath.comstatic-verizon.com +uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com +xo.com mvk.com userapi.com  vk-cdn.me +vk-cdn.net vk-portal.net vk.cc +vk.com  vk.design vk.link vk.me vkcache.com vkgo.app +vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netg-technology.com +sandisk.ae +sandisk.it +sandisk.cn +cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw +sandisk.de +sandisk.es +sandisk.fr +sandisk.hk +sandisk.id +sandisk.in +sandisk.nl +sandisk.sg +wd.com wdc.comwesterndigital.com +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.comxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il +yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md +yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net +yandex + + +CRAIGSLISTcraigslist.org +‰ +BRAVEUXbraventures.com braveux.com +compass.isfightforux.comforthebadge.comstockagainstphotography.com +| +MEITUAN dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com +® +OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com +Ý +BESTBUY bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com +bestbuy.ca +bestbuy.cn +cn bestbuy.combestbuy.com.cn +cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn +cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info +gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com +/ +CLEARBITJS-ADSx.clearbitjs.com +ads +ž +DIGICERT digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com +thawte.com  thawte.de  thawte.fr +Ö + INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com +v +NATIONALGEOGRAPHICnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.com +a +NOW now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +6 +UDN udn.com +udn.com.twudnfunlife.com +L +APKPURE apkpure.com cdnpure.com pureapk.com +winudf.com +Ò + YOUKU-ADSactives.youku.com +ads ad.api.3g.youku.com +ads$ad.api.mobile.youku.com +ads ad.mobile.youku.com +ads(a-dxk.play.api.3g.youku.com +ads atm.youku.com +ads#b.smartvideo.youku.com +adsc.yes.youku.com +adsdas.api.youku.com +ads!das.mobile.youku.com +ads!dev-push.m.youku.com +adsdl.g.youku.com +adsdmapp.youku.com +adse.stat.ykimg.com +ads#gamex.mobile.youku.com +ads!guanggaoad.youku.com +ads hudong.pl.youku.com +ads!huodong.pl.youku.com +ads"huodong.vip.youku.com +ads hz.youku.com +adsiyes.youku.com +ads l.ykimg.com +adslstat.youku.com +ads mobilemsg.youku.com +ads msg.youku.com +adsmyes.youku.com +ads p.l.youku.com +ads pl.youku.com +ads#passport-log.youku.com +adsp-log.ykimg.com +adspush.m.youku.com +ads r.l.youku.com +ads s.p.youku.com +adssdk.m.youku.com +adsstat.youku.com +ads$statis.api.3g.youku.com +ads&store.tv.api.3g.youku.com +ads&store.xl.api.3g.youku.com +adstdrec.youku.com +adstest.ott.youku.com +ads!test.sdk.m.youku.com +ads v.l.youku.com +adsval.api.youku.com +ads wan.youku.com +adsykatr.youku.com +adsykrec.youku.com +ads +· +ROCKSTARrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.net +; +XUEERSI speiyou.com +xesimg.com xueersi.com +) +KEEP gotokeep.com keepcdn.com +¹ +IBMibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com + +GAMERSKY gamersky.com +7 + FONTAWESOMEfontawesome.comfortawesome.com +©$ +INTEL +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn +cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn +cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt +altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com +intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn +cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com +niosii.com +niosii.netomekinteractive.com +omnitek.tv openamt.comopendroneid.orgoptanedifference.com +pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com +siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net +vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn +xscale.combarefootnetworks.com +– +NYTIMES nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com +* +BETTEREXPLAINEDbetterexplained.com +; + SCORELAND scoreland.comcdn77.scoreuniverse.com +æ +ADOBE typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com +adobedc.cn +cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com +demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com +omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com +fotolia.cc fotolia.com +fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net +marketo.tvmarketodesigner.commarketolive.com +mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.new ++ +TRELLO +trello.com trellocdn.com +E + HIIDO-ADSmlog.hiido.com +adsylog.hiido.com +ads +J +HUPUhoopchina.com.cn hupu.com hupucdn.com  shihuo.cn + + LARACASTS laracasts.com +Ì +NVIDIA +geforce.cn +cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn +cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn +cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk +nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net ++ +RUBY ruby-lang.org rubygems.org +/ + JIBENCAOZUO jbcz.tvjibencaozuo.com +« +YOUTUBE youtubeggpht.cn +cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com +youtube.ae +youtube.al +youtube.am +youtube.at +youtube.az +youtube.ba +youtube.be +youtube.bg +youtube.bh +youtube.bo +youtube.by +youtube.ca youtube.cat +youtube.ch +youtube.cl +youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve +youtube.cr +youtube.cz +youtube.de +youtube.dk +youtube.ee +youtube.es +youtube.fi +youtube.fr +youtube.ge +youtube.gr +youtube.gt +youtube.hk +youtube.hr +youtube.hu +youtube.ie +youtube.in +youtube.iq +youtube.is +youtube.it +youtube.jo +youtube.jp +youtube.kr +youtube.kz +youtube.la +youtube.lk +youtube.lt +youtube.lu +youtube.lv +youtube.ly +youtube.ma +youtube.md +youtube.me +youtube.mk +youtube.mn +youtube.mx +youtube.my +youtube.ng +youtube.ni +youtube.nl +youtube.no +youtube.pa +youtube.pe +youtube.ph +youtube.pk +youtube.pl +youtube.pr +youtube.pt +youtube.qa +youtube.ro +youtube.rs +youtube.ru +youtube.sa +youtube.se +youtube.sg +youtube.si +youtube.sk +youtube.sn youtube.soy +youtube.sv +youtube.tn +youtube.tv +youtube.ua +youtube.ug +youtube.uy +youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com + +BETHESDA +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.com +£ +CATEGORY-MEDIA-CN36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.com  -J-TEST -j-test.com -z -CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org -i -HKBN csifund.org hkbn.com.hk hkbn.net -hkbnes.net jos.comspeedtest.com.hk -( -OPENCOLLECTIVEopencollective.com +GFYCAT +gfycat.com + +TGBUS  tgbus.com +) + ADCOLONY-ADS adcolony.com +ads +‹ + HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io + +UDACITY udacity.com _ GUO  guo.media  gnews.org gtv.org gtv1.org gclubs.com g-tvapp.com + +MEWE mewe.com + +CAIXIN +caixin.com + + NEURALINK neuralink.com +. +OP op.ggopgg-static.akamaized.net + +PKOPLINK pkoplink.com +Ž +ELSEVIER els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com +scopus.com + LINKEDIN linkedin.com  licdn.com -6 - NORDSTROM nordstrom.comnordstrommedia.com + +SFACG  sfacg.com +Ó +UU-CHAT  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com +# + EMOGI-ADS emogi.com +ads + + +JINRISHICIjinrishici.com +É +LETV-ADS#api.game.letvstore.com +ads ark.letv.com +ads dc.letv.com +adsdev.dc.letv.com +ads fz.letv.com +ads g3.letv.com +adsletv.allyes.com +adsminisite.letv.com +adsmsg.m.letv.com +adsn.mark.letv.com +adsplog.dc.letv.com +adspro.hoye.letv.com +ads pro.letv.com +ads stat.letv.com +ads"static.app.m.letv.com +ads +ƒ +MSNmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com +k + PANASONIC  panasonic panasonic.cn +cn panasonic.com panasonic.jp technics.com +5 +V2RAY  v2ray.com +v2ray.cool  v2fly.org + +5CH 2ch.net 5ch.net +W +HAINANAIRLINEShainanairlines.com hnacargo.com  hnair.com 10044.cn +1 +JINSHUJU jinshuju.netjinshujucdn.com ++ + +KUBERNETES kubernetes.io +k8s.io +r +ZENDESK outbound.io zdassets.comzdusercontent.com zendesk.com  zndsk.com  zopim.com +˜ +CCTV cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn +P + KUAISHOU-ADS log-sdk.gifshow.com +adswlog.kuaishou.com +ads +3 +QUORA  quora.com quoracdn.net qr.ae +Ô +VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com +5 +YOUJIZZ youjizz.comyjcontentdelivery.com +i +ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net . -SCALAscala-lang.org scala-sbt.org - -KNOVEL -knovel.com -å -NETFLIX fast.com -netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.net +FLUTTER flutter.devflutterapp.com +% +IMGIX  imgix.com  imgix.net +, +MATTERS matters.news matters.one + +SAFECHAT safechat.com +, +CYLINK +cylink.procylink0122.icu +( +LAGOU  lagou.com lgstatic.com +9 +MOGUJIE mogu.com mogucdn.com mogujie.com + +TIKTOK  amemv.com +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net +- +BITFLYER bitflyer.com bitflyer.jp 7 OSCHINA  gitee.com gitee.io oschina.net +6 + RULEOFLAWrolfoundation.orgrolsociety.org +œ +TMTPOST tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com + +HINET  hinet.net + +ZHANQI  zhanqi.tv À FANDOM cursecdn.com fandom.com  wikia.com  wikia.org dndbeyond.com futhead.com gamepedia.com muthead.comwikia.nocookie.netfandom.zendesk.com -' -HM -hm.com hm.com.cn -cn -d - JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net -ý -ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com -7 -DART dart.dev dartlang.org dartpad.dev - -GRAVATAR gravatar.com -( -IMGUR  imgur.com imgurinc.com - ++ +FLATPAK flathub.org flatpak.org +* -KINDLE4RSSkindle4rss.com +FLURRY-ADSdata.flurry.com +ads +— + GETTYIMAGESgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chgettyimages.co.jpgettyimages.co.nzgettyimages.co.ukgettyimages.comgettyimages.com.augettyimages.com.brgettyimages.com.mxgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.se + +OPENJSFOUNDATION amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.org +k +SLING dishworld.comslinginternational.com  sling.commovenetworks.com +movetv.com + +DMZJ dmzj.com += +LANDIAN +lancdn.comlandiannews.com  wsoso.com +; +WJX +sojump.com +wjx.cn wjx.com wjx.top +" + ACCUWEATHERaccuweather.com +C +MAOCLOUD +maoyun.commaoyuncloud.cnmaoyuncloud.com + +MZED mzed.com +% +NEOWIN neow.in +neowin.net +µ +HUFFPOSThuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com +: + ENTERMEDIADBentermediadb.netentermediadb.org +è +ALIYUNalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com +Œ +AMAZON amazon-adsystem.com +adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws +amazonimdb +kindle xn--cckwcxetdxn--jlq480n2rg yamaxun +zappos a2z.comaboutamazon.cn +cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn +cnalexafund.com.cn +cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn +cn amazon.co.jp amazon.co.uk +amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl +amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn +cn!amazonbusiness.com.cn +cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn +cnamazonchoice.com.cn +cnamazonchoices.cn +cn amazonchoices.com.cn +cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn +cn amazoninspire.com.cn +cnamazonlaunchpad.cn +cnamazonlaunchpad.com"amazonlaunchpad.com.cn +cn amazonlending.com.cn +cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn +cnamazonnow.com.cn +cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn +cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn +cnprimeday.com.cn +cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de +yamaxun.cn +cn yamaxun.comz.cn +cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn +cnamazonworkdocs.com!amazonworkdocs.com.cn +cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn +cn kindle.co.jp kindle.co.uk +kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn +cnkindleoasis.comkindleoasis.com.cn +cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn +cn#amazonprimevideo.com.cn +cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com +cn-!images-cn-8.ssl-images-amazon.com +cn +e +METART +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net +é +MINImini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com +mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl +mini.co.cr +mini.co.id +mini.co.il +mini.co.kr +mini.co.me +mini.co.th +mini.co.uk +mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua +mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com +minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com +minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com +trmini.comtroisrivieresmini.comyours-customised.mini.com +6 +AGORA agora.io +agoraio.cn agoralab.co + +GOFUNDME gofundme.com +j +IMPERIALCOLLEGE ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com + +SHORTURL shorturl.at +± +ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com +® +CATEGORY-BANK-CN +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +² +HUAWEI  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com +J +36KR36dianping.com 36kr.com 36krcdn.com 36krcnd.com + +KNOVEL +knovel.com +€ +GOOGLE android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org +v8.dev v8project.org youtubeggpht.cn +cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com +youtube.ae +youtube.al +youtube.am +youtube.at +youtube.az +youtube.ba +youtube.be +youtube.bg +youtube.bh +youtube.bo +youtube.by +youtube.ca youtube.cat +youtube.ch +youtube.cl +youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve +youtube.cr +youtube.cz +youtube.de +youtube.dk +youtube.ee +youtube.es +youtube.fi +youtube.fr +youtube.ge +youtube.gr +youtube.gt +youtube.hk +youtube.hr +youtube.hu +youtube.ie +youtube.in +youtube.iq +youtube.is +youtube.it +youtube.jo +youtube.jp +youtube.kr +youtube.kz +youtube.la +youtube.lk +youtube.lt +youtube.lu +youtube.lv +youtube.ly +youtube.ma +youtube.md +youtube.me +youtube.mk +youtube.mn +youtube.mx +youtube.my +youtube.ng +youtube.ni +youtube.nl +youtube.no +youtube.pa +youtube.pe +youtube.ph +youtube.pk +youtube.pl +youtube.pr +youtube.pt +youtube.qa +youtube.ro +youtube.rs +youtube.ru +youtube.sa +youtube.se +youtube.sg +youtube.si +youtube.sk +youtube.sn youtube.soy +youtube.sv +youtube.tn +youtube.tv +youtube.ua +youtube.ug +youtube.uy +youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand +chromedclkgbizgle gmailgoogoog +googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca +google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn +cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw +google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com +466453.com abc.xyz adgoogle.net +admeld.comangulardart.org +api.ai +apigee.com appbridge.ca appbridge.io appbridge.it appspot.com +apture.com area120.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +brotli.org bumpshare.com +bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org +chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com +foofle.com froogle.com fuchsia.dev  g-tun.comg.cn +cng.co g.dev +g.page gateway.dev +gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn +cn globaledu.org  gmail.com gmodules.com  gogle.com +gogole.comgonglchuangl.net +goo.gl +googel.com +googil.com  googl.comgoogle-syndication.com google.berlin +google.dev +google.net +google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn +cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn +cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com +googlr.com +goolge.com gooogle.com gridaware.app gsrc.io +gstatic.cn +cn gstatic.comgstaticcnapps.cn +cn +gsuite.com +gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org +picasa.com picasaweb.com picasaweb.net picasaweb.org +picnik.com pittpatt.com +pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com +revolv.comridepenguin.com run.appsavethedate.foo +saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com +verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org +wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com +webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company +x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com +cnwww.recaptcha.net +cn265.com +cn2mdn.net +cn adservice.google.com +cnapp-measurement.com +cn beacons.gcp.gvt2.com +cnbeacons.gvt2.com +cnbeacons3.gvt2.com +cn c.admob.com +cn(c.android.clients.google.com +cn!cache.pack.google.com +cncheckin.gstatic.com +cn%clickserve.dartsearch.net +cn)clientservices.googleapis.com +cn)connectivitycheck.gstatic.com +cncorp.google.com +cn crl.pki.goog +cncsi.gstatic.com +cn dl.google.com +cndl.l.google.com +cndoubleclick.net +cn-!firebase-settings.crashlytics.com +cn fonts.googleapis.com +cnfonts.gstatic.com +cn google-analytics.com +cn googleadservices.com +cngoogleanalytics.com +cn!googlesyndication.com +cn googletagmanager.com +cn!googletagservices.com +cngtm.oasisfeng.com +cn!imasdk.googleapis.com +cn ocsp.pki.goog +cn, pagead-googlehosted.l.google.com +cn!pki-goog.l.google.com +cn recaptcha.net +cnredirector.gvt1.com +cn)safebrowsing-cache.google.com +cn'safebrowsing.googleapis.com +cn$settings.crashlytics.com +cn-!ssl-google-analytics.l.google.com +cnssl.gstatic.com +cn%toolbarqueries.google.com +cntools.google.com +cntools.l.google.com +cn$translate.googleapis.com +cn!update.googleapis.com +cn-!www-googletagmanager.l.google.com +cnwww.gstatic.com +cn +Ë + KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.com +, +SECOM secom.co.jpsecomtrust.net +«• + CATEGORY-ADS apilog-web.acfun.cn +ads adcolony.com +ads +adjust.com +ads a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +ads amazon-adsystem.com +adsiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads applovin.com +ads +applvn.com +ads atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +adsmcs.snssdk.com +adsx.clearbitjs.com +ads bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads emogi.com +adsdata.flurry.com +ads2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +ads!assets.growingio.com +adsmlog.hiido.com +adsylog.hiido.com +adsstatic.hotjar.com +adsclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com +adsinner-active.mobi +adsa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +adsads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads log-sdk.gifshow.com +adswlog.kuaishou.com +ads leanplum.com +ads#api.game.letvstore.com +ads ark.letv.com +ads dc.letv.com +adsdev.dc.letv.com +ads fz.letv.com +ads g3.letv.com +adsletv.allyes.com +adsminisite.letv.com +adsmsg.m.letv.com +adsn.mark.letv.com +adsplog.dc.letv.com +adspro.hoye.letv.com +ads pro.letv.com +ads stat.letv.com +ads"static.app.m.letv.com +ads decide.mixpanel.com +ads mopub.com +adsevt.mxplay.com +adsanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads"js-agent.newrelic.com +ads ogury.com +ads +presage.io +adsogury.co +ads onesignal.com +adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads cdn.pocoiq.cn +ads oct.pocoiq.cn +adsads.pubmatic.com +adscdn.segment.com +ads"static.sensorsdata.cn +ads 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +adsadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads'adeventtracker.spotify.com +ads$adstudio-assets.scdn.co +ads#bloodhound.spotify.com +adssupersonic.com +adssupersonicads.com +ads +ssacdn.com +ads)supersonicads-a.akamaihd.net +ads g1.tagtic.cn +adsxy-log.tagtic.cn +adsssp.api.tappx.com +ads ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads uberads.com +adsalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads!unityads.unity3d.com +ads#unityads.unitychina.cn +ads ads.wteam.xyz +ads#collector.xhamster.com +adsad.intl.xiaomi.com +ads ad.mi.com +ads ad.xiaomi.com +adsadmob.xiaomi.com +adsad1.xiaomi.com +adsmistat.xiaomi.com +adstracking.miui.com +adsadv.sec.miui.com +ads"adv.sec.intl.miui.com +ads"misc.in.duokanbox.com +ads ad.hpplay.cn +adsadeng.hpplay.cn +ads kuyun.com +ads umeng.com +ads ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +adsactives.youku.com +ads ad.api.3g.youku.com +ads$ad.api.mobile.youku.com +ads ad.mobile.youku.com +ads(a-dxk.play.api.3g.youku.com +ads atm.youku.com +ads#b.smartvideo.youku.com +adsc.yes.youku.com +adsdas.api.youku.com +ads!das.mobile.youku.com +ads!dev-push.m.youku.com +adsdl.g.youku.com +adsdmapp.youku.com +adse.stat.ykimg.com +ads#gamex.mobile.youku.com +ads!guanggaoad.youku.com +ads hudong.pl.youku.com +ads!huodong.pl.youku.com +ads"huodong.vip.youku.com +ads hz.youku.com +adsiyes.youku.com +ads l.ykimg.com +adslstat.youku.com +ads mobilemsg.youku.com +ads msg.youku.com +adsmyes.youku.com +ads p.l.youku.com +ads pl.youku.com +ads#passport-log.youku.com +adsp-log.ykimg.com +adspush.m.youku.com +ads r.l.youku.com +ads s.p.youku.com +adssdk.m.youku.com +adsstat.youku.com +ads$statis.api.3g.youku.com +ads&store.tv.api.3g.youku.com +ads&store.xl.api.3g.youku.com +adstdrec.youku.com +adstest.ott.youku.com +ads!test.sdk.m.youku.com +ads v.l.youku.com +adsval.api.youku.com +ads wan.youku.com +adsykatr.youku.com +adsykrec.youku.com +ads zynga.com +ads#zyngaplayersupport.com +ads 51y5.net a.adtng.com +aaxads.comaddthisedge.com +adtrue.com +ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com +exosrv.com +go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com +lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn +« +XIAOMI +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiflash.comxiaomiyoupin.com +$ +GFW  gfw.press +gfw.report +" + MASTERCLASSmasterclass.com +2 +MORISAWAmorisawa.co.jptypesquare.com +< +NGA +nga.cn 178.com +ngabbs.com ngacn.cc +c + UMENG-ADSalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads +À + +DUCKDUCKGOcispaletter.comcispaletter.orgcometotheduckside.com +ddg.co +ddg.gg +ddh.gg +dgg.gg dontbubble.us donttrack.us duck.co duck.comduckduckco.com duckduckco.de duckduckgo.ca duckduckgo.coduckduckgo.co.ukduckduckgo.comduckduckgo.com.mxduckduckgo.com.tw duckduckgo.de duckduckgo.dk duckduckgo.in duckduckgo.jp duckduckgo.ke duckduckgo.mx duckduckgo.nlduckduckgo.org duckduckgo.pl duckduckgo.sg duckduckgo.ukduckduckhack.com +duckgo.com ducksear.ch duckside.com  dukgo.comenteentegeh.defixtracking.com goduckgo.com hacksear.chjustduckit.comprivacysimplified.comprivatebrowsingmyths.comspreadprivacy.com +ö +ICBCicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn + + INOREADER inoreader.com +* +DANGDANG dangdang.com ddimg.cn +: +ESRI +arcgis.comarcgisonline.com esri.com +E +ETHEREUM +devcon.orgethereum.foundation ethereum.org +í + NBCUNIVERSALdreamworks.com cnbc.com +cnbcfm.com  msnbc.com +nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com +nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com +”$ +CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com +scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com +knovel.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com +apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com +aclweb.org acm.org acs.org altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org +nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu +zenodo.org +Ú% + BAIDU-ADS a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads +¦ + CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +* +HKOPENTV hkopentv.com fantv.hk +¸ + STARBUCKS sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn +cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com +' +928PLUS 928.plus +zind.cloud + + ZHIHUISHU zhihuishu.com +ž + ALJAZEERA +ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com +H +BLENDERbigbuckbunny.org blender.orgelephantsdream.org +Y +DAZN dazn-api.com dazn.com +dazndn.com +indazn.com indaznlab.com +4 +ZB +zb.app +zb.com zb.io zb.live +Œ +9TO59to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com + +TIPDM +tipdim.org +) +TUTANOTA tuta.io tutanota.com + +ERJI erji.net + +GLYPHS glyphsapp.com +F + IDENTRUST identrust.comidentrust.co.uk identrust.net +f +OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads +< +SHOWTIMEANYTIMEshowtimeanytime.com showtime.com +2 +YNET ynet.cn ynet.com ynet.com.cn +u + +ATTWATCHTV +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com +² +SAMSUNG samsung +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn +cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com +™ +SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com ) REBRANDLY rb.gy rebrandly.com +< +QUIP quip-cdn.com quip.comquipelements.com +Æ +SOFTBANK softbank sb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.net softbank.jp softbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com +ÿ +TELEGRAM contest.com  graph.orgquiz.directoryt.me tdesktop.com +telega.one +telegra.ph telegram.dog telegram.me telegram.orgtelegram.space +telesco.pe +tg.dev tx.meusercontent.dev +# +V8 +v8.dev v8project.org +P +AEROGARDaerogard.com.auaerogard.com.cn +cnaerogardcn.com + +EVERNOTE evernote.com +œ +FINISH$dishwashingexpert.com.cn +cn  finish.at  finish.bg finish.co.kr finish.co.nz finish.co.uk finish.co.za finish.com.cn +cn finish.com.hr finish.com.tr  finish.de  finish.es  finish.fr  finish.gr  finish.hu  finish.lv  finish.pl  finish.pt  finish.ro  finish.si  finish.skfinisharabia.comfinishbrasil.com.brfinishdishwashing.cafinishdishwashing.com finishinfo.be finishinfo.clfinishinfo.comfinishinfo.com.arfinishinfo.com.au finishinfo.cz finishinfo.fi finishinfo.it finishinfo.jp finishinfo.nl finishinfo.no finishinfo.ru finishinfo.sefinishkilpailu.fi finishwin.beyarininsuyu.com +@ + ZUOYEBANG zuoyebang.cc zuoyebang.com +zybang.com +š +CCBccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn + +TOR onion +% +ZHIHU  zhihu.com  zhimg.com +s + GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.org +% +FONTS  fonts.com  fonts.net +$ +GITEE  gitee.com gitee.io +/ +REALTYPErealtype.co.jp realtype.jp +0 +SOHU sohu.com +sohucs.com +itc.cn + +3DM 3dmgame.com +@ +HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com +) + LEANPLUM-ADS leanplum.com +ads +/ + STARTPAGE startpage.com ixquick.com +‹ +STEAMplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.net +^ +BITAUTO bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com +8 + HOMEDEPOThomedepot-static.com homedepot.com +² +MONOTYPEfontexplorerx.com  fonts.com  fonts.net fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com linotype.com myfonts.com myfonts.net monotype.commonotypeimaging.com bitstream.com itcfonts.com + +TIDELIFT tidelift.com +q +CATEGORY-HOSPITAL-CN  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn +ë +CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com +W +FLICKR +flickr flic.kr +flickr.com +flickr.netstaticflickr.com +ž +NUROFEN +nurofen.at +nurofen.bg +nurofen.cn +cn nurofen.co.il nurofen.co.nz nurofen.co.uk nurofen.co.za nurofen.comnurofen.com.aunurofen.com.cn +cnnurofen.com.sg +nurofen.cz +nurofen.de +nurofen.es +nurofen.fr +nurofen.hr +nurofen.hu +nurofen.ie +nurofen.it nurofen.net +nurofen.no +nurofen.pl +nurofen.pt +nurofen.ro +nurofen.sk +nurofen.runurofengel.com51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com +Š +SLACKslack-edge.comslack-imgs.com  slack.com +slackb.comslackcertified.com slackdemo.com slackhq.com +: +WEIPHONE feng.com fengimg.com wfdata.club +? +STRIPE +stripe.comstripe.network stripecdn.com +C +BOOKING +booking.cn +cn booking.com bstatic.com +œ + STREPSILS +cepacol.ca cepacol.com dobendan.degraneodin.com.mx +repsils.no strepsils.at strepsils.ch strepsils.cn +cnstrepsils.co.krstrepsils.co.nzstrepsils.co.zastrepsils.com.arstrepsils.com.brstrepsils.com.cn +cnstrepsils.com.costrepsils.com.austrepsils.com.hkstrepsils.com.phstrepsils.com.tw strepsils.es strepsils.fi strepsils.fr strepsils.hr strepsils.hu strepsils.ie strepsils.net strepsils.pl strepsils.pt strepsils.ro strepsils.ru strepsils.si strepsils.usstrepsilsarabia.com + +ARCHIVE archive.org +Þ + +JD3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads +ß +THELINUXFOUNDATION +kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.orglfai.foundationlinuxfoundation.org +ª +XBOX +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv +®' +FOXfoxfox-corporation.com fox-news.com fox.com +fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com +fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com +fox5dc.com +fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com +foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv +foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com +foxest.com +foxfaq.com +foxfdm.com foxfiles.com +foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com +foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com +foxnews.cc foxnews.com foxnews.net foxnews.org +foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com +foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com +fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com +anidom.comcasoneexchange.comcoronavirusnow.com +fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com +my13la.com +my20dc.commy20houston.com +my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com +q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.net +t + CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org +% +KUGOU  kgimg.com  kugou.com +0 +BITLY +bit.ly  bitly.com bitly.is +© +VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz +ý +ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com +. +ASPROEX asproex.comasproexapi.com +3 +PPTV  pplive.cn +pplive.com pptv.com +B +PUGPIGpugpig-dev.compugpig-stage.com +pugpig.com 1 -JINSHUJU jinshuju.netjinshujucdn.com + STACKPATH stackpath.com stackpath.dev +™ +MARVEL +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com +¥ +LYSOL lizol.co.in lysol.ca lysol.cllysol.cn +cn lysol.co.cr  lysol.com lysol.com.cn +cn lysol.com.mx  lysol.net +ª + 58TONGCHENG +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com +, +ACPLAY +acplay.netdandanplay.com +6 + RUBYCHINAruby-china.orgrubyconfchina.org +Ž +THESUNdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie +ï™ +CATEGORY-ADS-ALL7box.vip +adsad-delivery.net +ads adinplay.com +ads adnxs.com +ads!ads.trafficjunky.net +adsadvertserve.com +adscasalemedia.com +ads!contextual.media.net +ads cpmstar.com +ads +demdex.net +ads httpool.com +ads lijit.com +ads1rx.io +ads mfadsrvr.com +adsmgid.com +adsns1p.net +ads openx.net +ads pubmatic.com +adsspotxchange.com +ads +unimhk.com +ads upapi.net +ads taboola.com apilog-web.acfun.cn +ads adcolony.com +ads +adjust.com +ads a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +ads amazon-adsystem.com +adsiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads applovin.com +ads +applvn.com +ads atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +adsmcs.snssdk.com +adsx.clearbitjs.com +ads bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads emogi.com +adsdata.flurry.com +ads2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +ads!assets.growingio.com +adsmlog.hiido.com +adsylog.hiido.com +adsstatic.hotjar.com +adsclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com +adsinner-active.mobi +adsa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +adsads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads log-sdk.gifshow.com +adswlog.kuaishou.com +ads leanplum.com +ads#api.game.letvstore.com +ads ark.letv.com +ads dc.letv.com +adsdev.dc.letv.com +ads fz.letv.com +ads g3.letv.com +adsletv.allyes.com +adsminisite.letv.com +adsmsg.m.letv.com +adsn.mark.letv.com +adsplog.dc.letv.com +adspro.hoye.letv.com +ads pro.letv.com +ads stat.letv.com +ads"static.app.m.letv.com +ads decide.mixpanel.com +ads mopub.com +adsevt.mxplay.com +adsanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads"js-agent.newrelic.com +ads ogury.com +ads +presage.io +adsogury.co +ads onesignal.com +adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads cdn.pocoiq.cn +ads oct.pocoiq.cn +adsads.pubmatic.com +adscdn.segment.com +ads"static.sensorsdata.cn +ads 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +adsadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads'adeventtracker.spotify.com +ads$adstudio-assets.scdn.co +ads#bloodhound.spotify.com +adssupersonic.com +adssupersonicads.com +ads +ssacdn.com +ads)supersonicads-a.akamaihd.net +ads g1.tagtic.cn +adsxy-log.tagtic.cn +adsssp.api.tappx.com +ads ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads uberads.com +adsalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads!unityads.unity3d.com +ads#unityads.unitychina.cn +ads ads.wteam.xyz +ads#collector.xhamster.com +adsad.intl.xiaomi.com +ads ad.mi.com +ads ad.xiaomi.com +adsadmob.xiaomi.com +adsad1.xiaomi.com +adsmistat.xiaomi.com +adstracking.miui.com +adsadv.sec.miui.com +ads"adv.sec.intl.miui.com +ads"misc.in.duokanbox.com +ads ad.hpplay.cn +adsadeng.hpplay.cn +ads kuyun.com +ads umeng.com +ads ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +adsactives.youku.com +ads ad.api.3g.youku.com +ads$ad.api.mobile.youku.com +ads ad.mobile.youku.com +ads(a-dxk.play.api.3g.youku.com +ads atm.youku.com +ads#b.smartvideo.youku.com +adsc.yes.youku.com +adsdas.api.youku.com +ads!das.mobile.youku.com +ads!dev-push.m.youku.com +adsdl.g.youku.com +adsdmapp.youku.com +adse.stat.ykimg.com +ads#gamex.mobile.youku.com +ads!guanggaoad.youku.com +ads hudong.pl.youku.com +ads!huodong.pl.youku.com +ads"huodong.vip.youku.com +ads hz.youku.com +adsiyes.youku.com +ads l.ykimg.com +adslstat.youku.com +ads mobilemsg.youku.com +ads msg.youku.com +adsmyes.youku.com +ads p.l.youku.com +ads pl.youku.com +ads#passport-log.youku.com +adsp-log.ykimg.com +adspush.m.youku.com +ads r.l.youku.com +ads s.p.youku.com +adssdk.m.youku.com +adsstat.youku.com +ads$statis.api.3g.youku.com +ads&store.tv.api.3g.youku.com +ads&store.xl.api.3g.youku.com +adstdrec.youku.com +adstest.ott.youku.com +ads!test.sdk.m.youku.com +ads v.l.youku.com +adsval.api.youku.com +ads wan.youku.com +adsykatr.youku.com +adsykrec.youku.com +ads zynga.com +ads#zyngaplayersupport.com +ads 51y5.net a.adtng.com +aaxads.comaddthisedge.com +adtrue.com +ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com +exosrv.com +go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com +lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn +$ +CAS +csdl.ac.cn  las.ac.cn +4 +CSIS csis.orgcsis-prod.s3.amazonaws.com + +FREENODE freenode.net +o +IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com +' + WTEAM-ADS ads.wteam.xyz +ads + + BITWARDEN bitwarden.com +: +POLYMERpolymer-project.orgpolymerproject.org + +0X0 +0x0.st +$ +CSDN csdn.net +csdnimg.cn +Ë +GITHUB npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com + +RSSHUB +rsshub.app + +SPACEX +spacex.com +- +SURFLITE surflite.co surflite.net + + BRILLIANT brilliant.org +4 +PERL perl.org cpan.org metacpan.org +â +NINTENDO100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com + +FARFETCHfarfetch-apps.comfarfetch-contents.com farfetch.cn +cn farfetch.comfarfetch.com.cn +cn farfetch.netfarfetch.net.cn +cn  fflnk.net +2 +INNER-ACTIVE-ADSinner-active.mobi +ads +o +UNITY  unity.com unity3d.com!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +¦ + BRIDGESTONE bridgestone  bandag.cc +bandag.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpbridgestone-korea.co.krbridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clbridgestone.cn +cnbridgestone.co.crbridgestone.co.idbridgestone.co.inbridgestone.co.jpbridgestone.co.thbridgestone.combridgestone.com.arbridgestone.com.brbridgestone.com.cn +cnbridgestone.com.cobridgestone.com.mxbridgestone.com.sgbridgestone.com.twbridgestone.com.vnbridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.clbridgestonecomercial.co.crbridgestonecomercial.com.arbridgestonecomercial.com.brbridgestonecomercial.com.cobridgestonecomercial.com.mxbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.combridgestonetyre.com.mybridgestonevan.combridgestonewx.combs-adreview.com bs-awh.ne.jp  bsw.co.jp +bsw.jpcarcare-and-tireshop.jpdaytontrucktires.com ecoforme.jp gcrtires.comjsbridgestone.commenshin-channel.com monitrix.net mr-tireman.jpmybridgestoneeducation.com playz.jp +potenza.jpprodrive-japan.comstore-bridgestonesports.com thetread.com tiresplus.com cfna.combastropfirestone.comcrossfitfirestone.com firestone.clfirestone.co.crfirestone.com.arfirestone.com.brfirestone.com.cofirestone.com.mxfirestonebpco.comfirestonecomercial.clfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mx!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comhibdontire.comwheelworks.netnokiantyres.cn +cnnokiantyres.com +# +QT qt.ioqt-project.org +Q +SSRCLOUDairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com +ô +DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com +T + DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best +Ë +HULU +112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com +huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com +hulugo.com +huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com +huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com +hulutv.com huluusa.comjoinmaidez.com mushymush.tv +myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com +" +LIHKG +lih.kg  lihkg.com +2 +ZOOM zoom.com zoom.com.cn zoom.us +Ô +CATEGORY-MOOC-CNchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com +N +CNBC cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com +9 +EMBEDLY embed.ly embedly.com playerjs.io + +XDTY xdty.org +Ì + CHINATELECOM +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com +† +NICONICOnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp +Ÿ +QIHOO360 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn += + TRANSLATEWIKItranslatewiki.nettranslatewiki.org +­ +MEDIACHINESEGROUPmediachinese.com mysinchew.comsinchew.com.my +sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +š +KINGSOFT cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com +. +KUAIKAN kkmh.comkuaikanmanhua.com +M + +LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com + +BILIPLUS biliplus.com ++ +BOSLIFE boslife.biz boslife.net ++ +COWLEVEL cowlevel.net  cdncl.net +# +DCARD dcard.io dcard.tw +ñ + +SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com + + 4PARADIGM 4paradigm.com +* +DUOWAN +duowan.com dwstatic.com +H + NEXITALLY nexitally.comnexitallysafe.com nexitcore.com +Ë + ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com +- +C-SPAN +c-span.orgc-spanvideo.org +Ç + CATEGORY-ORGS archive.org ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net csis.orgcsis-prod.s3.amazonaws.comemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org +ieeer5.org +ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org +comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org nist.gov time.gov openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgrolfoundation.orgrolsociety.org aomedia.org  atypi.org +change.orgglobalsecurity.org ietf.org itu.int  smpte.org +un.org +w3.org who.int wto.org +«X +FACEBOOKaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com +nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org +atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com +facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com +faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com +fb.careers +fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com +fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com +fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net +freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com +groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com +redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net +õ +BBCbbc  bbc.co.uk bbc.com +bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk +bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net +ç +PEARSONactivelearnprimary.co.ukactivelearnprimary.com.auactiveteachonline.comaddison-wesley.ch adobepress.ch +btec.co.uk ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comdombosco.com.br ecpa.frescapestudios.co.uk ilongman.com integral7.com'#internationalconnectionsacademy.com +longman.ch +mut.chmyhelpinglab.commylogiclab.com mypearson.commypearsonenglish.chmypearsonshop.com.mxmypearsonshop.mxmysocialworklab.comnetname.com.brpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch +pearson.ch +pearson.cl pearson.co.in pearson.co.jp pearson.compearson.com.arpearson.com.aupearson.com.cn +cnpearson.com.hkpearson.com.uy +pearson.es +pearson.fr +pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonclinical.co.ukpearsonclinical.com.aupearsonclinical.com.brpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoned.co.nz pearsoned.compearsoneducacion.netpearsoneducationbooks.com pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.compearsoninstitute.ac.zapearsonlongman.chpearsononlineacademy.compearsonperu.pepearsonplaces.com.au%!pearsonschoolsandfecolleges.co.ukpearsonvue.compearsonvue.netpobl-content.com  pvue1.com  pvue2.comquatrum.com.brstark-verlag.chtalentlens.comthemathsfactor.comxn--pearsonenespaol-brb.com +à +ICLOUDapple-icloud.cn +cnappleicloud.cn +cnapplemx-icloud.comicloud-apple.cn +cnicloud-content.comicloud-isupport.com  icloud.ch +icloud.com icloud.com.cn +cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn +cn  icloud.om +icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn +cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com +icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com +me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net +Z +PICSEE pics.ee  picsee.co +picsee.pro pise.pw pros.ee +pse.is +¥ + MEADJOHNSONenfinitas.com.cn +cnmeadjohnson.commeadjohnson.com.cn +cnmeadjohnson.com.hkmeadjohnson.com.twmeadjohnson.net +ñ +VMWARE +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.net + +HKGOLDEN hkgolden.com +. + POCKETCASTS +pca.stpocketcasts.com +š +DIDI didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com + + YUNFANJIASU yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com ++ +AFDIAN +afdian.net afdiancdn.com +R +ARPHIC +arphic.com arphic.com.cn arphic.com.twifontcloud.com +f +COURSERAcoursera-for-business.orgcoursera.community coursera.help coursera.org +‘ +KUAISHOU gifshow.com ksapisrv.com kuaishou.com +yximgs.com log-sdk.gifshow.com +adswlog.kuaishou.com +ads +ê +THOMSONREUTERS reuters.com +reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs +tr.com +h +51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +Í +ORIGIN dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.com +© + CATEGORY-CASbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no +comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.comcybertrust.co.jpcybertrust.ne.jp digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com +thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com +cnocsp.globalsign.com +cn ocsp2.globalsign.com +cn identrust.comidentrust.co.uk identrust.net  lencr.orgletsencrypt.org secom.co.jpsecomtrust.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com +telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com ++ +VAPTCHA vaptcha.com vaptcha.net +9 +YOUZAN +youzan.com yzcdn.cn youzanyun.com +¤ +ZEE +bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com +ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com +zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com +š +TVB mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com +tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn +cntvbeventpower.com.hk +tvbusa.com tvbweekly.comtvmedia.net.au +- +WANFANGwanfangdata.com.cn +wf.pub +3 +ELEME +ele.me elemecdn.com eleme.cn +9 + SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net +ó +SQUAREUP cash.appcashbycashapp.com gosq.co gosq.comissquaredown.comissquareup.com mkt.comsellercommunity.comsquarecapital.com squarecdn.comsquarecloudservices.com squareup.com +² +BLIZZARD blizzard.cn +cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +cn +battle.netbattlenet.com.cn +cn bnet.163.com +cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com +cn!diablo3.nosdn.127.net +cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net +cnheroesofthestorm.com%hearthstone.nosdn.127.net +cn"heroes.nos.netease.com +cnplayoverwatch.com#overwatch.nosdn.127.net +cn starcraft.comstarcraft2.comsc2.nosdn.127.net +cnplaywarcraft3.comworldofwarcraft.com wowchina.com +cnwow.nosdn.127.net +cnblizzcon-a.akamaihd.netblz.nosdn.127.net +cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net +cn +Ž +GUCCI guccichimeforchange.orggucci.cn +cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com + +STAGE1ST saraba1st.com + +B3LOG  b3log.org +, +RENREN +renren.comrenren-inc.com +N +THETYPE thetype.cloud +cn thetype.comtypeisbeautiful.com F -COINONE coinone.co.krcoinonecore.comcoinonecorp.com + +DEVIANTARTdeviantart.comdeviantart.net da-files.com +© +GOOGLE-REGISTRYcharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4c + +KERNEL +kernel.org +í +CATEGORY-CRYPTOCURRENCY asproex.comasproexapi.combinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com bitflyer.com bitflyer.jp bisq.io bisq.network bitsquare.io coinone.co.krcoinonecore.comcoinonecorp.com +devcon.orgethereum.foundation ethereum.org +hbabit.com +hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.comlocalbitcoins.comlocalbitcoinschain.com +zb.app +zb.com zb.io zb.live +bitbank.cc bitcoin.org bitfinex.com +bitmex.com bitquick.co bitstamp.net bittrex.com btcbox.co.jp +cex.io coinbase.com dogecoin.com +kraken.com okex.com +paxful.com +— +LINE +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp + +PATREON patreon.com +1 +ZIROOM +ziroom.comziroomapartment.com +V + JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org +* +BOXUN  boxun.combowenpress.com +6 +CATEGORY-COLLABORATE-CN shimo.im  yuque.com +à +DUREXdewitwithdurex.com dotherex.com durex-shop.chdurex-shopline.comdurex-slovenia.si durex.at durex.be durex.cl durex.co.id durex.co.il durex.co.nz durex.co.th durex.co.uk durex.co.za  durex.com durex.com.au durex.com.bd durex.com.cn +cn durex.com.co durex.com.hr durex.com.my durex.com.ng durex.com.pe durex.com.ph durex.com.pk durex.com.sg durex.com.tr durex.cz durex.de durex.dk durex.ee durex.es durex.fi durex.fr durex.hu durex.ie durex.it durex.jp durex.lv durex.mx durex.nl durex.no durex.pl durex.pt durex.ro durex.ru durex.se durex.us durexcam.comdurexcanada.comdurexchina.comdurexchina.com.cn +cndurexindia.comdurexloveclub.comdurexukraine.com durexusa.comlovesexdurex.cn +cnlovesexdurex.complaybydurex.com shopdurex.com trydurex.net trydurex.tv +1 + LETSENCRYPT  lencr.orgletsencrypt.org + + TRUSTWAVE trustwave.com +Š+ +BAIDU a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads zuoyebang.cc zuoyebang.com +zybang.com baidu +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com +bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.com +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com +S + OGURY-ADS ogury.com +ads +presage.io +adsogury.co +ads +˜ +CATEGORY-SCHOLAR-CN +csdl.ac.cn  las.ac.cn cnki.netwanfangdata.com.cn +wf.pub  apabi.comcnthinkers.com  cqvip.com + +SSPAI  sspai.com +ô +VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com +{ + CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com + + +CODECADEMYcodecademy.com +æ +DWION acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com +" + TYPENETWORKtypenetwork.com +Ÿs +BMWmini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com +mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl +mini.co.cr +mini.co.id +mini.co.il +mini.co.kr +mini.co.me +mini.co.th +mini.co.uk +mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua +mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com +minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com +minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com +trmini.comtroisrivieresmini.comyours-customised.mini.combmwapprovedusedbmw.combaltimorebmw.combayareabmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.com bmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.ca bmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.chbmw-connecteddrive.co.nzbmw-connecteddrive.co.ukbmw-connecteddrive.co.zabmw-connecteddrive.combmw-connecteddrive.com.aubmw-connecteddrive.com.brbmw-connecteddrive.com.cybmw-connecteddrive.com.hrbmw-connecteddrive.com.kwbmw-connecteddrive.com.mtbmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.combmw-driving-center.co.krbmw-drivingexperience.com bmw-dubai.com +bmw-eg.com bmw-fleet.net bmw-ghana.combmw-golfsport.com bmw-group.com bmw-group.netbmw-grouparchiv.debmw-grouparchives.com +bmw-gta.cabmw-i-pure-impulse.com bmw-i.jp bmw-int1.com bmw-iraq.combmw-jordan.combmw-konzernarchiv.de bmw-ksa.combmw-kuwait.com +bmw-lao.labmw-lebanon.combmw-m-safetycar.com  bmw-m.combmw-mdrivetour.com +bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.cobmw-motorrad.co.idbmw-motorrad.co.krbmw-motorrad.co.nzbmw-motorrad.co.thbmw-motorrad.co.ukbmw-motorrad.co.zabmw-motorrad.combmw-motorrad.com.arbmw-motorrad.com.aubmw-motorrad.com.brbmw-motorrad.com.dobmw-motorrad.com.hrbmw-motorrad.com.mxbmw-motorrad.com.mybmw-motorrad.com.pebmw-motorrad.com.pybmw-motorrad.com.trbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.com bmw-oman.com bmw-ottawa.cabmw-pakistan.combmw-plant-munich.combmw-pma.com.sgbmw-powertrain.combmw-product-highlights.com bmw-qatar.combmw-routes.com +bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.ca bmw-voli.me bmw-welt.com bmw-welt.net bmw-welt.tvbmw-werk-berlin.de bmw-world.com bmw-world.net bmw-world.tvbmw-worldfinal.combmw-yachtsport.com +bmw-yeg.ca bmw-yemen.com +bmw.am +bmw.at +bmw.az +bmw.ba +bmw.bb +bmw.be +bmw.bg +bmw.bm +bmw.bs +bmw.by +bmw.ca +bmw.cc +bmw.ch +bmw.cl  bmw.co.ao  bmw.co.cr  bmw.co.id  bmw.co.il  bmw.co.jp  bmw.co.ke  bmw.co.kr  bmw.co.nz  bmw.co.th  bmw.co.uk  bmw.co.za bmw.com +bmw.com.ar +bmw.com.au +bmw.com.bd +bmw.com.bn +bmw.com.bo +bmw.com.br +bmw.com.cn +cn +bmw.com.co +bmw.com.cy +bmw.com.do +bmw.com.ec +bmw.com.ge +bmw.com.gt +bmw.com.kh +bmw.com.ky +bmw.com.mk +bmw.com.mo +bmw.com.mt +bmw.com.mx +bmw.com.my +bmw.com.ni +bmw.com.pa +bmw.com.pe +bmw.com.ph +bmw.com.py +bmw.com.sg +bmw.com.sv +bmw.com.tr +bmw.com.tw +bmw.com.uy +bmw.com.ve +bmw.cw +bmw.cz +bmw.de +bmw.dk +bmw.dz +bmw.ee +bmw.es +bmw.fi +bmw.fr +bmw.gp +bmw.gr +bmw.hn +bmw.hr +bmw.ht +bmw.hu +bmw.ie +bmw.in +bmw.is +bmw.it +bmw.kg +bmw.kz +bmw.lc +bmw.lk +bmw.lt +bmw.lu +bmw.lv +bmw.ly +bmw.ma +bmw.md +bmw.mn +bmw.mq +bmw.mu +bmw.nc +bmw.nl +bmw.no +bmw.pl +bmw.ps +bmw.pt +bmw.re +bmw.ro +bmw.rs +bmw.se +bmw.si +bmw.sk +bmw.sn +bmw.tm +bmw.tt +bmw.ua +bmw.uz +bmw.vn bmwarchiv.at bmwarchiv.debmwartjourney.com bmwasia.combmwauslieferungszentrum.com bmwbikes.com  bmwbkk.de +bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.com bmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.com bmwgroup.at bmwgroup.com bmwgroup.net bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com  bmwhk.com bmwi.ca bmwi.jpbmwiventures.combmwjamaica.com +bmwlat.combmwlifestyle.ca bmwm.combmwmagazine.combmwmagazine.de bmwmass.com bmwmass.net  bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.combmwmotorrad.co.krbmwmotorrad.com.aubmwmotorrad.com.phbmwmotorrad.com.sgbmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com bmwsafari.com +bmwsfl.com +bmwsfl.net +bmwshop.cabmwspecialoffers.ca bmwsports.combmwstartupgarage.com bmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com +bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.com bmwworld.com bmwworld.net bmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com daytonbmw.comdealerspeed.net desertbmw.com dreambmw.ca grupobmw.com guambmw.comhackthedrive.com hawaiibmw.com iaablog.comlasvegasbmw.com m-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.com mybmw.ca  mybmw.comnewhampshirebmw.com  nmbmw.comocbmwdealers.comoffresspecialesbmw.ca park-now.com parkinfo.com +pdxbmw.com +phxbmw.compre-bmwgroup.jobspugetsoundbmw.com rentaride.com rentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.com socalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.com alfera.com.hk alfera.com.my  alfera.in  alfera.myalphera-finance.co.inalphera-finance.com.hkalphera-finance.in +alphera.ca alphera.co.in alphera.co.nz alphera.comalphera.com.esalphera.com.hkalphera.com.my +alphera.de +alphera.es +alphera.ie +alphera.in +alphera.my alphera.netalpherafinance.com.hkalpherafinancialservices.esalpherafinancialservices.in alpherafs.caalpherafs.co.nzalpherafs.com.hkalpherafs.com.my alpherafs.ie alpherafs.in alpherafs.my premiumfs.de alphabet.asia alphabet.at alphabet.be alphabet.biz alphabet.chalphabet.co.hualphabet.co.ukalphabet.co.za alphabet.comalphabet.com.cn +cnalphabet.com.esalphabet.com.lvalphabet.com.mxalphabet.com.plalphabet.com.pt alphabet.cz alphabet.de alphabet.es alphabet.eu alphabet.fr alphabet.info alphabet.jp alphabet.lt alphabet.lu alphabet.lv alphabet.mxalphabet.net.cn +cn alphabet.noalphabet.org.uk alphabet.pl alphabet.pt alphabet.uk alphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com  rrtis.comspiritofecstasy.com +y +GANNETTgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.com +© +9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au +B +DISQUS +disqus.com disquscdn.comdisqusservice.com + + +INFRAPEDIAinfrapedia.com + +MPV +mpv.io +ª +NIKEnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com +eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com +gonike.comhandbags-nike.comhightopnikes.com +idnike.cominikesneakers.com just-do-it.cn +cn justdoit.uskicksnike1.comkidsnikeshoes.com +mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn +cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn +cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com +nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn +cnnikebetterworld.com"nikebetterworld.com.cn +cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com +nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn +cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org +nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn +cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn +cn nikeid.com.cn +cnnikeidshoes.com nikeinc.comnikeinc.com.cn +cnnikeincchemistry.comnikeinstock.com +nikeit.comnikeitalia.com nikeitaly.com +nikekd.com nikekid.com +nikelab.cn +cnnikelab.com.cn +cn nikelink.comnikeliuxiang.cn +cnnikeliuxiang.comnikeliuxiang.com.cn +cn nikelives.comnikelunarglide.com nikemall.cn +cnnikemall.com.cn +cnnikemarketing.com nikenews.com +niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn +cnnikerunclub.com.cn +cnnikerunner.comnikerunning.com.cn +cnnikerunningshoes.com +nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn +cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh +swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e + +NODEJS +nodejs.org +F + +TAGTIC-ADS g1.tagtic.cn +adsxy-log.tagtic.cn +ads +H +COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net +„ +DEDAO biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com +© +CBScbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com +cbsi.video +cbsiam.com  cbsig.net +cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com +viacbs.com +viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com +F +DEEPIN  deepin.cn +deepin.com  deepin.io +deepin.org +? +LIEPIN +liepin.com +lietou.comlietou-static.com +“ + LIMELIGHTdelvenetworks.com limelight.com  lldns.netllnw-trials.com llnw.com llnw.net  llnwd.net  llnwi.net +¸ +VISA visa.be visa.ca visa.clvisa.cn +cn +visa.co.ao +visa.co.cr +visa.co.id +visa.co.il +visa.co.in +visa.co.jp +visa.co.ke +visa.co.ni +visa.co.nz +visa.co.th +visa.co.uk +visa.co.ve +visa.co.za visa.com visa.com.ag visa.com.ai visa.com.ar visa.com.au visa.com.az visa.com.bo visa.com.br visa.com.bs visa.com.bz visa.com.cn +cn visa.com.co visa.com.cy visa.com.dm visa.com.do visa.com.ec visa.com.ge visa.com.gt visa.com.gy visa.com.hk visa.com.hn visa.com.hr visa.com.jm visa.com.kh visa.com.kn visa.com.kz visa.com.lc visa.com.lk visa.com.ms visa.com.mx visa.com.my visa.com.ng visa.com.pa visa.com.pe visa.com.ph visa.com.pr visa.com.py visa.com.ru visa.com.sg visa.com.sv visa.com.tr visa.com.tt visa.com.tw visa.com.ua visa.com.uy visa.com.vc visa.com.vi visa.com.vn visa.cz visa.de visa.dk visa.es visa.fi visa.fr visa.gd visa.gp visa.gr visa.hk visa.hu visa.ie visa.is visa.ky visa.lt visa.lv visa.mn visa.mq visa.nl visa.no visa.pl visa.pt visa.ro visa.se visa.sk visa.so visa.sx visa.tc +visabg.com visaeurope.at visaeurope.ch visaeurope.lu visaeurope.sivisaitalia.com visakorea.comvisamiddleeast.comvisasoutheasteurope.comfinlitsummit.orgmyvisaluxuryhotels.comvisainfinite.cavisainfiniteluxuryhotels.ca!visaluxuryhotelcollection.com$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisaluxuryhotels.comvisaluxuryhotels.com.arvisasignaturehotels.com($connaissancesfinancierespratiques.ca dnsvisa.comeubluecardvisa.comfinancialsoccer.ca"financialsoccer.com.cn +cnlightbridge.commiamifintechfestival.commhshosting.compracticalbusinessskills.compracticalmoneyskills.ca#practicalmoneyskills.cn +cn'practicalmoneyskills.com.cn +cnpracticalmoneyskills.jpsoccerfinancier.catorcidadeouro.com vaultify.com vaultify.info vaultify.net visa-atm.com visa-news.jp visabank.orgvisabusinessinsights.comvisacarddesignlab.com visacards.comvisacheckout.netvisacheckout.orgvisaconciergelac.comvisadigital.comvisadigitalconcierge.com visadns.comvisadpsonline.usvisaeverywhereshop.comvisafintechfasttrack.comvisafulfillment.comvisagiftcard.usvisaglobalfinance.comvisaicsdirect.comvisainfinite.cavisainfinite.cn +cn visanet.net +visapay.cn +cnvisapcsdirect.comvisaplatinum.cn +cnvisaplatinum.com.cn +cn visaplus.comvisasavingsedge.cavisasignature.co.kr visb.org +É +GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ++ +XIMALAYA ximalaya.com  xmcdn.com +N + CLOUDCONE clco.cc +cloudc.one cloudcone.com cloudcone.net +¬ +IQIYI 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads + +ADBLOCKgetadblock.com +a +DYNA dynacw.co.jp +dynacw.com dynacw.com.cn dynacw.com.hk dynacw.com.tw +– + HKETGROUPapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn +cn etnet.com.hketnetchina.com.cn +cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk +) +LINGUEE linguee.com  deepl.com +7 +PGYER  pgyer.com +tracup.com frontjs.com +: +ZAOBAO +zaobao.com zaobao.com.sg  zaobao.sg +) +EASYLIST easylist.to lanik.us +n +TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +9 + +ARTSTATIONartstation.comartstationmedia.com +Ÿ +PIXNET pimg.twpixanalytics.com  pixfs.netpixinsight.com.tw  pixnet.cc +pixnet.net +pixnet.pro  pixnet.tw +pixplug.in +‡± +CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au9to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com afp.com afpforum.com +ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com +ap.org +apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com +bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk +bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net  bloomberg bbgevent.com bbhub.io +bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com +c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com +cbsi.video +cbsiam.com  cbsig.net +cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com +viacbs.com +viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com cnn.com +cnn.io +cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk +mol.imthisismoney.co.uk +thismon.ee economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net +etviet.comlagranepoca.com ntd.com  ntdca.com +ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz +forbes.com forbesimg.comfoxfox-corporation.com fox-news.com fox.com +fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com +fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com +fox5dc.com +fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com +foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv +foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com +foxest.com +foxfaq.com +foxfdm.com foxfiles.com +foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com +foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com +foxnews.cc foxnews.com foxnews.net foxnews.org +foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com +foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com +fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com +anidom.comcasoneexchange.comcoronavirusnow.com +fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com +my13la.com +my20dc.commy20houston.com +my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com +q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.netgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org +gclubs.com g-tvapp.comapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn +cn etnet.com.hketnetchina.com.cn +cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk hkopentv.com fantv.hkhuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com banned.video infowars.cominfowarsmedia.combusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.comes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.comfreedomplatform.tv londonreal.tv +ltn.com.tw yes123.com.twmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in +theweek.invanitaonline.com +vanitha.invanithaveedu.com matters.news matters.onemediachinese.com mysinchew.comsinchew.com.my +sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +medium.commedium.systems +myradio.hkmyradio.com.hkdreamworks.com cnbc.com +cnbcfm.com  msnbc.com +nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com +nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com neow.in +neowin.netbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com +nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au +news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au +nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.ukandysparis.com newsmax.com +newsmax.in newsmaxtv.com +nikkei.com  nikkei.jp nikkei.co.jp now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com etvonline.hk rthk.hk scmp.com +i-scmp.comsingtaonewscorp.com +sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com +eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hksky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com theguardiandev-guardianapis.comdev-theguardian.com +gu-web.netguardianapis.comguardianapps.co.uk +guim.co.uktheguardian.comtheguardiandns.comtheinitium.com  init.shop thetype.cloud +cn thetype.comtypeisbeautiful.com reuters.com +reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs +tr.com mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com +tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn +cntvbeventpower.com.hk +tvbusa.com tvbweekly.comtvmedia.net.au +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp udn.com +udn.com.twudnfunlife.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net watchout.tw +waa.twstartupschool.orgycombinator.com +zaobao.com zaobao.com.sg  zaobao.sg +bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com +ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com +zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com +881903.com am730.com.hkamericasvoice.newsappleinsider.com  axios.com bbgwatch.com breitbart.combusinessfocus.iocaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.com +cup.com.hk d100.net +dw.com factwire.orgfortuneinsight.comfreebeacon.com hk01.comhkcitizenmedia.com hkcnews.com hkej.com +hkgpao.comhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com macrumors.com newyorker.com on.ccpassiontimes.hk post852.com qmap.pubrealvision.com rfa.org +rfi.fr rsf.org +rt.com +rtings.comshuziyimin.orgsingpao.com.hksinoinsider.com slashdot.org +socrec.orgthegatewaypundit.comthenationalpulse.comthestandnews.com tvmost.com.hk  unwire.hkvjmedia.com.hk warroom.orgwashingtonpost.com weiyuksj.com +wenzhao.ca youlucky.com zerohedge.com zoomingin.tv +è +ENFAbebepremium3.com.bo +enfa.co.id enfa.com.vn enfaaplus.com enfababy.com enfabebe.comenfabebe.com.brenfabebe.com.coenfabebe.com.doenfabebe.com.ecenfabebe.com.mxenfabebe.com.peenfabebe.com.veenfabebe3.com.arenfagrow.co.inenfagrow.com.bnenfagrow.com.myenfagrow.com.phenfagrow.com.sg enfagrow4.comenfamama.com.arenfamama.com.ph +enfamil.ca enfamil.com +enfamil.es +enfamil.pl +enfamil.pt enfasmart.comenspireformula.comnutramigen.net nutramigen.pl +" + HUBBLEPHONEhubblephone.com +) +MEITU  meitu.com meitudata.com + +REMIREPO remirepo.net +^ +CTEXCEL +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +× +OPPO coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com +% + FONTEXPLORERfontexplorerx.com +y + QINGCLOUD frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com +yunify.com +$ + CLOUDCONVERTcloudconvert.com +‰½ +CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads bootcss.com +bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com +maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com +yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com dangdang.com ddimg.cn +ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads lianjia.com  ljcdn.com manmanbuy.com dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com +pddpic.com pinduoduo.com yangkeduo.com  smzdm.com +zdmimg.com cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com  vancl.com vanclimg.com  vcimg.com +youzan.com yzcdn.cn youzanyun.com +ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn +ads +acplay.netdandanplay.com +ali213.net +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com +gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads  jjwxc.net ku6.com +ku6cdn.com +ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com +yximgs.com log-sdk.gifshow.com +adswlog.kuaishou.com +ads  kgimg.com  kugou.com +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com miaopai.com +mihoyo.com bh3.com  pplive.cn +pplive.com pptv.com qingting.fm  sfacg.com +61.com +taomee.com +tapimg.com +taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com +vgtime.com ximalaya.com  xmcdn.com +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +duowan.com dwstatic.com +yy.com yystatic.com  zhanqi.tv +heytea.com chiphell.com +douban.com  douban.fm doubanio.com erji.net +hacpai.com  ld246.com +nga.cn 178.com +ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +afdian.net afdiancdn.com agora.io +agoraio.cn agoralab.co +antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com +pg0.cn +chinaz.com +chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com +jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com +lanzou.com lanzous.com woozooo.com +liepin.com +lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net +renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com +wiwide.com +sojump.com +wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn +wf.pub speiyou.com +xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me +coding.net csdn.net +csdnimg.cn  deepin.cn +deepin.com  deepin.io +deepin.org  gitee.com gitee.iojinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com +tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn +sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com +tipdim.orgxueyuanjun.com alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads zuoyebang.cc zuoyebang.com +zybang.com baidu +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com +bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.com +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.comanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.com +rtx.com.cnservicewechat.com smtcdns.com smtcdns.net +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com wegame.com.cn +weiyun.com alloyteam.com imweb.io ivweb.io +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiflash.comxiaomiyoupin.com +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com +055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com +114chn.com 114piaowu.com 114shouji.com +119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com +310win.com +315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc +35.com 3533.com 360aiyi.com +360doc.com  360jq.com 360zhyx.com +365azw.com +365dmp.com +37.com 3733.com 3839.com +39.net 3conline.com 3d66.com +3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me +50bang.org +51.com 51.la +510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com +51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com +52miji.com 52pk.com 52z.com 53kf.com +55.com +56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com +6rooms.com 714.com 7230.com +72byte.com  7down.com 7k7k.com  7moor.com 7po.com +7x24cc.com +7xdown.com  818ps.com  84399.com 885.com +900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com +9xgame.com 9xu.com a9vg.com +aardio.com +adxvip.com +afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com +aizhan.comalittle-tea.com +allyes.com anfensi.com +anquan.org +anruan.com +aotrip.net  aoyou.com apk3.com apk8.com appchina.com +appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com +bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com +bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com +caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com +carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org +ch.com chachaba.com changba.com chashebao.comchazhengla.com +che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com +chouti.com chuangxin.com chuansong.mechuansongme.com +chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com +cnbeta.com cnbetacdn.com cnblogs.com +cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com +cofeed.com +cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com +csmjzs.com csslcloud.net +ctfile.com ctiforum.com ctoutiao.com  ctsbw.com +cubead.com  cwxzx.com +cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com +danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com +dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com +diopic.net diyiyou.com dj99.com  docin.com dockerone.com +dockone.io dogedoge.com +donews.com +dongao.comdongguantoday.com dopa.com +douxie.com +downcc.com downxia.com +downyi.com +dpfile.comdreams-travel.comdrivergenius.com +dui.ai duiopen.com duoduocdn.com duokanbox.com +duomai.com duoshuo.com  duote.com dxpmedia.com +dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com +eayyou.com  ebico.com  ebrun.com +ecitic.com ecjobhome.com +edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com +emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net +feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com +fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com +gaodun.comgaoshouyou.comgaoxiaojob.com +gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com +gezida.com gfan.com +giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com +gwdang.comgxairlines.com +gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc +heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com +hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com +houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com +ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com +iheima.com ijiandao.com +ikafan.com im2maker.com  im-cc.com +imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com +ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com +itjuzi.com  itmop.com  iyiou.com iyunxiao.com +izuche.com +jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com +job910.com  jobjm.com jsbc.com +jsrdgg.com jstv.com  jsyks.com juefeng.com +julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com +kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com +kimiss.com kingdee.com kkzj.com +kongfz.com koolearn.com +kouclo.com +koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com +kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com +liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com +likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net +longre.comlongtugame.com longzhu.com  lotpc.com +loupan.com +lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com +lvmama.comlvsexitong.com  lxway.com +magedu.com maisanqi.com +mamecn.com manhuatai.com manmankan.com +mapbar.com mayi.com +mayihr.com +mcbang.com  mdpda.com mechina.org +mediav.com meifang.com meika360.com meilishuo.commeimingteng.com +meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com +miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc +mmbang.com mmbang.info +mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com +mokahr.com moleecel.commoocollege.com mop.com msanjia.com +mscbsc.com mukewang.com +mumayi.com +muomou.com muzhiwan.com +mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com +newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com +oicq88.com  okooo.com +ol-cdn.com +ol-img.com oldboyedu.com +oneapm.com onegreen.net +oneyac.comonlinedown.netonlinesjtu.com onlylady.com +opdown.com oray.com  ottcn.com +oupeng.com +p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com +pcbeta.com +pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com +pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com +pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com +qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com +qschou.com +qtmojo.com +qudong.com +qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com +runoob.com rzrc114.com  saibo.com sanguosha.com +sanwen.net  scdng.com scoregg.com +sczsxx.com sdo.com sec-wiki.com +sencdn.com seniverse.comsenlinjimore.com +sgamer.com shanbay.com shang360.com +shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shutcm.com +simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com +snimay.com  sobot.com sofreight.com softwhy.com +sojson.com +somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com +sunrtb.com supermap.comsupermapcloud.com +sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com +tao123.com +taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com +tianqi.com tietuku.com +tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net +tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com +tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.toolsubuntukylin.com  ucbug.com +uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com +vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com +wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  wolai.com  womai.com wondercv.com wonnder.com +wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com +wscdns.com  wtown.com  wumii.com +wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com +xfdown.com +xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com +xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com +xzking.com yahui.cc +yaolan.com  yaoyl.com  yaozh.com +ycgame.com +yeepay.com +yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com +yiqifa.com +yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com +yocajr.com +youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com +yslyhr.com  ysten.com +yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com +yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com +yxdown.com +yytcdn.com +zampda.net zampdsp.com zastatic.com +zbjimg.com zczj.com +zdfans.com zgjm.org +zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com +zhenai.com  zhibo8.cc  zhidx.com zhifang.com +zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com +zpb365.com +zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com +fm3838.comlarsonlimited.com runsheng.com vzuu.com +zoom3g.com +zoomyou.cn chaoxing.com chaoxing.cc +å + + MICROSOFT-DEVadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net + +4399 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com +¡ +VOXMEDIA cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net +S +PORNHUB +phncdn.com phprcdn.com pornhub.compornhubpremium.com +i +RAZER  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com +× +SOHU-ADSadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads +( +LTN +ltn.com.tw yes123.com.tw +U +DOWJONESdjreprints.com dowjones.com dowjones.iodowjoneson.com +¢ +CITIC citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com +ß +OCULUS binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com +È + REALCLEAR realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com + +SINGTAONEWSCORPsingtaonewscorp.com +sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com +eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hk +ä +CATEGORY-ANTICENSORSHIP citizenlab.cacitizenlab.org  gfw.press +gfw.reportapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.orghaveibeenpwned.compwnedpasswords.comgetlantern.org +lantern.io softether.orgsoftether-download.com  v2ray.com +v2ray.cool  v2fly.org ahmia.fi akasha.worldbrowserleaks.combypasscensorship.orgdat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org +geti2p.netguardianproject.info ipfs.io  jitsi.org  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co +uproxy.org vuvuzela.io +whonix.org wikileaks.org wireguard.com +zeronet.io +œ +HUOBI +hbabit.com +hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.com +O +COSTCOcostco-static.com +costco.comcostcobusinessdelivery.com +‹ +DMM-ADS bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads + +ELECTRONelectronjs.org +# + MOPUB-ADS mopub.com +ads +/ +MAPBOX mapbox.cn +cn +mapbox.com ++ + TAPPX-ADSssp.api.tappx.com +ads +¦ +JUEJIN  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com +¼ +GOG gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn +& +XNXX xnxx.com xnxx-cdn.com +b + ECONOMIST economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com +. +CABLETVcabletv.com.hk i-cable.com +­ +HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com +hbonow.com  maxgo.com +µ +LOGITECH logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net +µ + PINTEREST +pin.it +pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com +D + +POCOIQ-ADS cdn.pocoiq.cn +ads oct.pocoiq.cn +ads +~ +GITLAB +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com +* +JIANSHU jianshu.com +jianshu.io +6 +PROQUESTserialssolutions.com proquest.com +* +WIWIDE wamawama.com +wiwide.com +¬ +DELL +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.com +D +RUST rust-lang.org  rustup.rs  crates.io docs.rs + + +STATICFILEstaticfile.org +' +WATCHOUT watchout.tw +waa.tw + +WEBTYPE webtype.com + + +FONTSINUSEfontsinuse.com +8 +NPMJS npm.community  npmjs.com  npmjs.org +K +PINGAN +pingan.com pingan.com.cn pingan.com.hk yqb.com +/ + SNAPCRAFT snapcraft.io snapstore.io +D +YY +duowan.com dwstatic.com +yy.com yystatic.com +Q + BANDWAGONHOSTbandwagonhost.com bwh1.net bwh8.net  bwh88.net + +MIRAHEZE miraheze.org +Õ +ONEDRIVE 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +4 +SCInewisiknowledge.comisiknowledge.com  SETAPP setapp.com +Ý +SKYsky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com +g +SPRINGER +apress.com springer.comspringerlink.comspringernature.com wkap.nl +% +MIHOYO +mihoyo.com bh3.com +L +IMDBboxofficemojo.com imdb.com imdb.tomedia-imdb.com +0 + MIXPANEL-ADS decide.mixpanel.com +ads +ï +WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com +¥ +YUEWEN +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +@ + DIGITALOCEANdigitalocean.comdigitaloceanspaces.com + +GFASHION gfashion.com +( +IMGUR  imgur.com imgurinc.com +D + +LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com +ÿ +MANORAMAmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in +theweek.invanitaonline.com +vanitha.invanithaveedu.com +³ + +BRIGHTCOVE bcove.video bcovlive.io bcvp0rtal.com boltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com videojs.com +zencdn.net zencoder.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.net + +STEEMIT steemit.com +” + HELLOFONT hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com +9 +ABCabc-studios.com abc.com edgedatg.com +™ + +EVERBRIGHT cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +š +QINIUstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com +¬ +VIMEO +vhx.tv +vhxqa1.com +vhxqa2.com +vhxqa3.com +vhxqa4.com +vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com +H +BTTZYW +btt804.com +btt904.com +bttzyw.com +bttzyw.net +@ + GLOBALVOICESglobalvoices.orgglobalvoicesonline.org +6 + NORDSTROM nordstrom.comnordstrommedia.com ++ +WIKIDOT wdfiles.com wikidot.com +3 + +CITIZENLAB citizenlab.cacitizenlab.org ++ + SEGMENT-ADScdn.segment.com +ads +c +YOUKU +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net + + +CUGBONLINE cugbonline.cn +Ü + DAILYMAIL  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk +mol.imthisismoney.co.uk +thismon.ee + +GAB gab.com +, +MEDIUM +medium.commedium.systems +Ð + OPENSTREETMAP openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.org + + +SKILLSHAREskillshare.com + +TABOOLA taboola.com +m +WPS +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn +’ +CANON canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn +cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn +cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com +< +DOCKERcompose-spec.io +docker.com  docker.io +" +NIST nist.gov time.gov +0 + COWTRANSFER c-t.workcowtransfer.com +â +HKT 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com +0 +MEGA +mega.co.nz mega.io mega.nz +£ +MINISOloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn +cn  miniso.co miniso.co.id miniso.co.tz +miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn +cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn +cn myminiso.com + +REURL reurl.cc + +DOOM9  doom9.org +/ +XVIDEOS xvideos.comxvideos-cdn.com + +GITV gitv.cn gitv.tv +å +MORTEIN +mortein.cn +cn mortein.co.in mortein.co.nz mortein.co.za mortein.commortein.com.aumortein.com.brmortein.com.ngmortein.com.pkmorteincam.compifpafarabia.com +Ê +VEET veet.at veet.be veet.ca veet.ch veet.clveet.cn +cn +veet.co.id +veet.co.in +veet.co.kr +veet.co.nz +veet.co.uk +veet.co.za veet.com veet.com.ar veet.com.au veet.com.bd veet.com.br veet.com.cn +cn veet.com.co veet.com.hk veet.com.mx veet.com.my veet.com.ph veet.com.pk veet.com.sg veet.com.tr veet.de veet.dk veet.es veet.fi veet.fr veet.hu veet.jp veet.nl veet.no veet.pt veet.ro veet.ru veet.se veet.tv veet.usveetarabia.comveetbangladesh.comveetcentroamerica.com veetclub.it +F +COINONE coinone.co.krcoinonecore.comcoinonecorp.com +k +DOUYU  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com +Y +JSDELIVR jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net +cn +I +MADSHI +madshi.net  madvr.com  madvr.net madvrlabs.llc +ì +NETEASE 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.comanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads +4 +THEBORINGCOMPANYboringcompany.com x.com + +VIM vim.org +© +WESTERNDIGITALg-technology.com +sandisk.ae +sandisk.it +sandisk.cn +cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw +sandisk.de +sandisk.es +sandisk.fr +sandisk.hk +sandisk.id +sandisk.in +sandisk.nl +sandisk.sg +wd.com wdc.comwesterndigital.com +d +BARRONSbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.com +e + ATOM-DATA-ADS atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads +» +PCCW 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hk +9 + YCOMBINATORstartupschool.orgycombinator.com +™ +IEEE ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org +ieeer5.org +ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org +comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org +´ + CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +8 + +CYBERTRUSTcybertrust.co.jpcybertrust.ne.jp + +DGTLE  dgtle.com +@ +JQUERY +jquery.comjquerymobile.com jqueryui.com +. +XDAxda-developers.com xda-cdn.com +Œ + +ITUNES!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn +cn itun.es itunbes.com ituneas.comitunes-apple.cn +cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th +itunes.com  itunes.hk  itunes.mx +itunes.org +itunes.rio  itunes.usitunes12days.comitunesapple.cn +cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn +cnitunesradio.comitunesradio.com.cn +cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.net ½B RBaerogard.com.auaerogard.com.cn cnaerogardcn.com @@ -186,232 +6665,112 @@ woolite.uswoolitecarpet.comdigital-rb.com rb-crisis.com rb.netrbbusinessshop.comrbdigitalab.comrbdigitallab.comrbeuroinfo.com rbgrads.comrbgraduates.comrbmavericks.comrbnainternational.com  rbplc.comrbrandlibrary.com rbspeakup.com reckitt.netreckittbenckiser.cn cnreckittbenckiser.com#reckittbenckiser.com.cn cnreckittbenckiser.netreckittbenckiser.tvreckittprofessional.com +& + STEAMUNLOCKEDsteamunlocked.net ' -APA apa.orgpsyccareers.com +CODING  coding.me +coding.net + +DIDA365 dida365.com +' +HEYZO heydoga.com  heyzo.com +E +INFOWARS banned.video infowars.cominfowarsmedia.com +) +LIANJIA lianjia.com  ljcdn.com +„ +MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud +0 +N3RO n3ro.lol n3ro.net n3ro.wtf . -CABLETVcabletv.com.hk i-cable.com - -XHAMSTER xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com -ads -… -AMP amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.net - -HEYTEA -heytea.com -= - JAVFINDER javfinder.sh findercdn.me o0-2.com +NETLIFY netlify.combitballoon.com + +DISCORD +discord.co discord.com +discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com W MOJANGcallersbane.com minecraft.netminecraftshop.com mojang.com -? -LIEPIN -liepin.com -lietou.comlietou-static.com -| -MEITUAN dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com -- -WANFANGwanfangdata.com.cn -wf.pub -Þ - ALIBABA-ADS a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -ads -" - FOUNDERTYPEfoundertype.com -ñ -SHOPEE shopee.cn -cn shopee.co.id shopee.co.th -shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com -cn -shp.ee -ì -NETEASE 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.comanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads -È - REALCLEAR realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com - - YUNFANJIASU yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -0 - -SOUNDCLOUDsoundcloud.com -sndcdn.com -\ -TAIKANG taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com -ñ -VMWARE -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.net -Ò - CALGONCARBON  calgon.at  calgon.be  calgon.ch calgon.cn -cn calgon.co.uk -calgon.com calgon.com.tr  calgon.de  calgon.es  calgon.fr  calgon.ie  calgon.it  calgon.nl  calgon.pt  calgon.ru  calgon.tvcalgoncarbon-china.comcalgoncarbon.com calgonit.com - -PKOPLINK pkoplink.com -B -PUGPIGpugpig-dev.compugpig-stage.com -pugpig.com - -TINYURL tinyurl.com - -DGTLE  dgtle.com -* - -FLURRY-ADSdata.flurry.com -ads -Q - SOURCEFORGEsourceforge.comsourceforge.net -sf.net fsdn.com ++ +MONGODB mongodb.com mongodb.org ( -TAPTAP -tapimg.com -taptap.com -ô -VERIZON -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com -oath.cloud oath.com ouroath.comstatic-verizon.com -uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com -xo.com -r -ZENDESK outbound.io zdassets.comzdusercontent.com zendesk.com  zndsk.com  zopim.com -e -PYTHON  pycon.org pypa.io pypi.io pypi.org -python.orgpythonhosted.org - -REURL reurl.cc -¬ -VIMEO -vhx.tv -vhxqa1.com -vhxqa2.com -vhxqa3.com -vhxqa4.com -vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com -" - ACCUWEATHERaccuweather.com -A - PINDUODUO -pddpic.com pinduoduo.com yangkeduo.com -ª -XBOX +REDIS redis.io redislabs.com + +AVSFORUM avsforum.com +æ˜ +CATEGORY-ENTERTAINMENT abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net bandcamp.com +bcbits.com blizzard.cn +cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +cn +battle.netbattlenet.com.cn +cn bnet.163.com +cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com +cn!diablo3.nosdn.127.net +cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net +cnheroesofthestorm.com%hearthstone.nosdn.127.net +cn"heroes.nos.netease.com +cnplayoverwatch.com#overwatch.nosdn.127.net +cn starcraft.comstarcraft2.comsc2.nosdn.127.net +cnplaywarcraft3.comworldofwarcraft.com wowchina.com +cnwow.nosdn.127.net +cnblizzcon-a.akamaihd.netblz.nosdn.127.net +cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net +cn dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net +lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com +lpl.com.cn +cn pvp.net +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +cn beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org xbox360.co xbox360.com @@ -420,287 +6779,143 @@ xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn cn xboxlive.com xboxone.co xboxone.com xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv -7 - FONTAWESOMEfontawesome.comfortawesome.com -û - HARPERCOLLINSbookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com - -ISGD is.gdv.gd -w -JWPLAYER -jwpcdn.comjwplatform.com jwplayer.com -jwpltx.com -jwpsrv.comlongtailvideo.com -’ -RUANMEI 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com - -EVERNOTE evernote.com -+ - MYTVSUPER mytvsuper.com tvb.com -$ -TAOMEE -61.com -taomee.com -. -U17 u17.com u17i.com u17t.com - -VIM vim.org -Œ -DETTOLdettol-prize.com  dettol.at  dettol.be  dettol.ch  dettol.cl dettol.co.id dettol.co.in dettol.co.ke dettol.co.nz dettol.co.uk -dettol.com dettol.com.au dettol.com.bd dettol.com.br dettol.com.cn -cn dettol.com.eg dettol.com.hk dettol.com.my dettol.com.ng dettol.com.sg  dettol.cz  dettol.fr  dettol.hu  dettol.ie -dettol.net  dettol.nl  dettol.pk  dettol.pl  dettol.pt  dettol.rudettolarabia.comdettolcleannaija.comdettolsitishield.co.indettolthailand.comespadoldettol.com.ar - -OSDN osdn.net - -QUALCOMMairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org -iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com -qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com -uplinq.com wipower.comwirelessreach.com -brewmp.comqualcomm.sc.omtrdc.net -( -REDIS redis.io redislabs.com -¢ -WIX editorx.comparastorage.com wix-code.com wix.comwixanswers.com wixapps.net  wixmp.com wixsite.com wixstatic.com -W -HAINANAIRLINEShainanairlines.com hnacargo.com  hnair.com 10044.cn -f -ROKU fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com -™ +xbx.lv fanatical.comhumblebundle.com dazn-api.com dazn.com +dazndn.com +indazn.com indaznlab.comdeviantart.comdeviantart.net da-files.comabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com +babble.com babyzone.com +dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za +disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com +dssott.comgo-disneyworldgo.com +go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com +hbonow.com  maxgo.com +112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com +huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com +hulugo.com +huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com +huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com +hulutv.com huluusa.comjoinmaidez.com mushymush.tv +myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com +kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.netnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net +pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com +movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsoundcloud.com +sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  tidal.com tidalhifi.com wimpmusic.com  amemv.com +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +vhx.tv +vhxqa1.com +vhxqa2.com +vhxqa3.com +vhxqa4.com +vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com abow.jp angelbeats.jp +anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com +z5.app +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com  linetv.tw litv.tv megaphone.fm moov.hk +odysee.com overcast.fm syosetu.com +weverse.io yande.re +u +CREATIVECOMMONS ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net +è +ZDNS zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cn +­ -EVERBRIGHT cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com -É -GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk - -PASTEBIN pastebin.com - -ANTUTU -antutu.com -3 -ELEME -ele.me elemecdn.com eleme.cn - - SPOTIFY-ADS'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com +BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn +å +MOZILLA firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net +Ÿ +MUCINEX +mucinex.ca +mucinex.cn mucinex.co.nz mucinex.commucinex.com.cn mucinex.net +mucinex.tvmucinexprofessional.com + +115 115.com + + TEST-IPV6 test-ipv6.com +G +ASAHI  asahi.com asahicom.jpasahishimbun.sc.omtrdc.net +. +ANDROID android.comandroidify.com +ì + +GOOGLE-ADS2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ ads -/ -XVIDEOS xvideos.comxvideos-cdn.com -U -SB -dns.sb ip.sb loli.net sb.sb sm.msu.nu -www.sb +, + +HOTJAR-ADSstatic.hotjar.com +ads +4 +MAILRU imgsmail.ru mail.ru mycdn.me +C +ADDTHIS addthis.comaddthiscdn.comaddthisedge.com +( +UCLOUD  ucloud.cn ufileos.com +­ + IQIYI-ADSa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads +e +PYTHON  pycon.org pypa.io pypi.io pypi.org +python.orgpythonhosted.org m SUNING cnsuning.com suning.comsuningcloud.comsuningestate.comsuningholdings.com -" - TYPENETWORKtypenetwork.com - - BRILLIANT brilliant.org -9 -DOUBAN -douban.com  douban.fm doubanio.com -E -HCAPTCHA botstop.com hcaptcha.comhcaptchastatus.com -Þ -HEROKU  heroku.co -heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh -codeish.co -codeish.io -0 -N3RO n3ro.lol n3ro.net n3ro.wtf -c -YOUKU -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -L - -TEAMBITIONteambition.comteambition.netteambitionapis.com -ß -THELINUXFOUNDATION -kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.orglfai.foundationlinuxfoundation.org -R -UPAI  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com -6 -AGORA agora.io -agoraio.cn agoralab.co -< -ANACONDA anaconda.com anaconda.org conda.io -Î -DNSPOD dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub -' -HEYZO heydoga.com  heyzo.com -ñ - -SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com -4 - KHANACADEMYkhanacademy.org kastatic.org -5 -SENSORSDATA-ADS"static.sensorsdata.cn +3 + XHAMSTER-ADS#collector.xhamster.com ads -ï -WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com -) - ADCOLONY-ADS adcolony.com -ads -Ž -ELSEVIER els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.com -É -LG -lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com -lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net -„ -MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud -å - - MICROSOFT-DEVadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net - - 4PARADIGM 4paradigm.com -# - EMOGI-ADS emogi.com -ads -$ - FREECODECAMPfreecodecamp.org -þ -JIGUANG -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn -P - KUAISHOU-ADS log-sdk.gifshow.com -adswlog.kuaishou.com -ads - -LINOTYPE linotype.com -l -XUEQIU aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com -^ -BITAUTO bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com -˜ -CATEGORY-SCHOLAR-CN -csdl.ac.cn  las.ac.cn cnki.netwanfangdata.com.cn -wf.pub  apabi.comcnthinkers.com  cqvip.com -ê -HP -123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com -compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info -hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com -hp.com -hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net -hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com -hpfaqs.comhpfeedback.com -hpgift.com -hpgpas.comhpgraphicspartners.com  hpiie.org -hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com -hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com -hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com -hpstore.cn -cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com -hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.com -9 -NIKKEI -nikkei.com  nikkei.jp nikkei.co.jp - -SVP svp-team.com -% - -ADJUST-ADS -adjust.com -ads -L -APKPURE apkpure.com cdnpure.com pureapk.com -winudf.com -þ¯ -CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au9to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com afp.com afpforum.com -ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com -ap.org -apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net  bloomberg bbgevent.com bbhub.io -bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com -c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com -cbsi.video -cbsiam.com  cbsig.net -cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com -viacbs.com -viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com cnn.com -cnn.io -cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk -mol.imthisismoney.co.uk -thismon.ee economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net -etviet.comlagranepoca.com ntd.com  ntdca.com -ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz -forbes.com forbesimg.comfoxfox-corporation.com fox-news.com fox.com -fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com -fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com -fox5dc.com -fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com -foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv -foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com -foxest.com -foxfaq.com -foxfdm.com foxfiles.com -foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com -foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com -foxnews.cc foxnews.com foxnews.net foxnews.org -foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com -foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com -fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com -anidom.comcasoneexchange.comcoronavirusnow.com -fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com -my13la.com -my20dc.commy20houston.com -my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com -q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.netgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org -gclubs.com g-tvapp.comapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn -cn etnet.com.hketnetchina.com.cn -cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk hkopentv.com fantv.hkhuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com banned.video infowars.cominfowarsmedia.combusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.comes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.comfreedomplatform.tv londonreal.tv -ltn.com.tw yes123.com.twmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in -theweek.invanitaonline.com -vanitha.invanithaveedu.com matters.news matters.onemediachinese.com mysinchew.comsinchew.com.my -sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com -medium.commedium.systems -myradio.hkmyradio.com.hkdreamworks.com cnbc.com -cnbcfm.com  msnbc.com -nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com -nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com neow.in -neowin.netbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk +8 + KINGKONGLIVEkingkong.com.twkingkongapp.com +Ð +NEWSCORPbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg @@ -709,54 +6924,23 @@ rea.design rea.global rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au -nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.ukandysparis.com newsmax.com -newsmax.in newsmaxtv.com -nikkei.com  nikkei.jp nikkei.co.jp now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com etvonline.hk rthk.hk scmp.com -i-scmp.comsingtaonewscorp.com -sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com -eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hksky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com theguardiandev-guardianapis.comdev-theguardian.com -gu-web.netguardianapis.comguardianapps.co.uk -guim.co.uktheguardian.comtheguardiandns.comtheinitium.com  init.shop thetype.cloud -cn thetype.comtypeisbeautiful.com reuters.com -reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs -tr.com mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com -tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn -cntvbeventpower.com.hk -tvbusa.com tvbweekly.comtvmedia.net.au -dogatch.jp gorin.jpscreens-lab.jp -tver.co.jp tver.jp udn.com -udn.com.twudnfunlife.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net -curbed.com  eater.comfunnyordie.com meridian.net polygon.com -racked.com -recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com -voxops.net watchout.tw -waa.twstartupschool.orgycombinator.com -zaobao.com zaobao.com.sg  zaobao.sg -bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com -ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com -zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com -881903.com am730.com.hkamericasvoice.newsappleinsider.com  axios.com bbgwatch.com breitbart.combusinessfocus.iocaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.com -cup.com.hk d100.net -dw.com factwire.orgfortuneinsight.comfreebeacon.com hk01.comhkcitizenmedia.com hkcnews.com hkej.com -hkgpao.comhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com macrumors.com newyorker.com on.ccpassiontimes.hk post852.com qmap.pubrealvision.com rfa.org -rfi.fr rsf.org -rt.com -rtings.comshuziyimin.orgsingpao.com.hksinoinsider.com slashdot.org -socrec.orgthegatewaypundit.comthenationalpulse.comthestandnews.com tvmost.com.hk  unwire.hkvjmedia.com.hk warroom.orgwashingtonpost.com weiyuksj.com -wenzhao.ca youlucky.com zerohedge.com zoomingin.tv -b +nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.uk ++ + ONESIGNAL-ADS onesignal.com +ads +* +PAGECDN pagecdn.com +pagecdn.io +Š +ZEETV +z5.app +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com +Í -EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la - -CNKI cnki.net -6 -PROQUESTserialssolutions.com proquest.com -P -AEROGARDaerogard.com.auaerogard.com.cn -cnaerogardcn.com +CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflare.netcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.one  pages.devtrycloudflare.comvideodelivery.net  warp.plus workers.dev +² +MOVEFREEkeepmovingwithmovefree.com move-free.net movefree.cn +cn movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.com ­] CATEGORY-GAMES blizzard.cn cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn @@ -838,56 +7022,143 @@ xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn xboxone.co xboxone.com xboxone.euxboxplayanywhere.comxboxstudios.com xbx.lv fanatical.comhumblebundle.com -i -SNAP -sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com -snapkit.co - -UDACITY udacity.com -³ +s +SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +R +UPAI  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com +Á: +EBAY21centuryaccess.com4ebaytraders.com adcommerce.cn +cn adcommerce.tv appforebay.cn +cnappsonebay.net +asebay.com +baazee.com +bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn +cn"connectcommerce.com.cn +cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn +cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn +cncyber-bay.com.cn +cncyber-bay.info cyber-bay.org +dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn +cn +ebay.co.nz +ebay.co.uk +ebay.co.ve +ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn +cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn +cn ebay.nl ebay.org ebay.org.cn +cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn +ebay.yn.cn +cn +ebay.zj.cn +cn +ebay25.com +ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn +cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com +ebayca.com +ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn +cnebayclassifieds.com"ebayclassifieds.com.cn +cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com +ebayde.com ebaydesc.cn +cnebaydesc.com.cn +cnebaydlassifieds.com +ebaydns.cn +cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn +cnebayenterprise.com!ebayenterprise.com.cn +cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com +ebayit.comebayjewelry.com ebayjob.com +ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn +cnebaymotors.comebaymotors.com.cn +cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com +ebayon.com +ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn +cnebaypedia.com.cn +cnebayprivacycenter.com +ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn +cnebayshopping.com.cn +cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn +cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn +cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com +ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn +cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net +myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn +cn prostores.comprostores.com.cn +cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com +svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn +cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com +gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn +cnkijijidns.com.cn +cnkijijiforbusiness.ca +kijijii.ca kijijiraps.ca kijji.ca +kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn +cn +q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn +cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com +nexcat.com nexpart.com +nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.com +û + HARPERCOLLINSbookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com + -BRIGHTCOVE bcove.video bcovlive.io bcvp0rtal.com boltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com videojs.com -zencdn.net zencoder.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.net -8 - HOMEDEPOThomedepot-static.com homedepot.com -ä -PRIVATElan localdomain example invalid  localhosttest local  home.arpa ^[^.]+$router.asus.comlocalhost.sec.qq.comlocalhost.ptlogin2.qq.commsftconnecttest.com -9 - -ARTSTATIONartstation.comartstationmedia.com -{ - CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com -ë -CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com -) - LEANPLUM-ADS leanplum.com -ads -% -RTHK etvonline.hk rthk.hk +QINGTINGFM qingting.fm +Æ +BOC +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cn  -GFASHION gfashion.com - - -INFRAPEDIAinfrapedia.com -V - JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org +LINOTYPE linotype.com +z +MATRIXarewereadyyet.com +element.io +matrix.org  matrix.to +modular.im riot.im  vector.im +< + BITSQUARE bisq.io bisq.network bitsquare.io +- +ASUS asus.com asus.com.cn +cn + +BINANCEbinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com +* +JAVBUS +javbus.com javbus22.com +Ý +VOLVO volvodynafleetonline.comescandinavia-arg.comindependentoperatorcn.com road-crew.com udfs.com vfsco.at vfsco.be vfsco.bg vfsco.ca vfsco.ch vfsco.cl vfsco.co.uk vfsco.co.za  vfsco.com vfsco.com.au vfsco.com.br vfsco.com.cn +cn vfsco.com.tr vfsco.cz vfsco.de vfsco.dk vfsco.ee vfsco.es vfsco.fi vfsco.fr vfsco.hu vfsco.ie vfsco.in vfsco.it vfsco.jp vfsco.kr vfsco.lt vfsco.lv vfsco.mx vfsco.nl vfsco.no vfsco.pe vfsco.pl vfsco.ro vfsco.ru vfsco.se vfsco.sk vfsco.us vgcareers.netvolvo-truck.nl volvo.cavolvo.cn +cn  volvo.com volvo.com.cn +cn volvo.sevolvobrandshop.com volvobuses.at volvobuses.be volvobuses.ca volvobuses.ch volvobuses.covolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zavolvobuses.comvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.tw volvobuses.de volvobuses.dk volvobuses.es volvobuses.fi volvobuses.fr volvobuses.hk volvobuses.hu volvobuses.in volvobuses.it volvobuses.jo volvobuses.kr volvobuses.ma volvobuses.mx volvobuses.my volvobuses.no volvobuses.om volvobuses.ph volvobuses.pk volvobuses.pl volvobuses.ru volvobuses.se volvobuses.sg volvobuses.tn volvobuses.us volvoce.comvolvodefense.com volvogroup.be volvogroup.cn +cnvolvogroup.comvolvogroup.com.brvolvogroup.com.cn +cn volvogroup.de volvogroup.fr volvogroup.jp volvogroup.kr volvogroup.mx volvogroup.nl volvogroup.pe volvogroup.pl volvogroup.ru volvogroup.sevolvogrouptruckcenter.nlvolvomerchandise.comvolvopenta.comvolvopenta.com.br volvopenta.de volvopenta.es volvopenta.fr volvopenta.it volvopenta.nl volvopenta.se volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.ukvolvotrucks.co.nzvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwvolvotrucks.comvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.cn +cnvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eevolvotrucks.esvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvolvotrucks.mavolvotrucks.mdvolvotrucks.mkvolvotrucks.mnvolvotrucks.myvolvotrucks.netvolvotrucks.nlvolvotrucks.novolvotrucks.pevolvotrucks.phvolvotrucks.pkvolvotrucks.plvolvotrucks.psvolvotrucks.qavolvotrucks.rovolvotrucks.rsvolvotrucks.ruvolvotrucks.sevolvotrucks.sgvolvotrucks.sivolvotrucks.skvolvotrucks.tmvolvotrucks.tnvolvotrucks.uyvolvotruckcenter.bevolvotruckcenter.dkvolvotruckcenter.esvolvotruckcenter.fivolvotruckcenter.itvolvotruckcenter.krvolvotruckcenter.kzvolvotruckcenter.nlvolvotruckcenter.novolvotruckcenter.sevolvotruckrental.beudtrucksmeena.com +í + WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org +w.wiki toolforge.orgwikimediacloud.org wmcloud.org wmflabs.org +• +WOOLITE +woolite.ca +woolite.cn +cn woolite.comwoolite.com.cn +cn +woolite.pl +woolite.uswoolitecarpet.com ++ +TYPEKIT typekit.com typekit.net +: + SOFTETHER softether.orgsoftether-download.com +‘ +SUPERSONIC-ADSsupersonic.com +adssupersonicads.com +ads +ssacdn.com +ads)supersonicads-a.akamaihd.net +ads A -MEIZU flyme.cn meizu.cn  meizu.com  mzres.com - -TIKTOK  amemv.com -muscdn.com -musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net -è -ZDNS zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cn - -TUMBLR -tumblr.com +NYPOST +nypost.com nypost.helpnypostreprints.com +3 + SEGMENTFAULTsegmentfault.com  sifou.com +¡ +SHOPIFY myshopify.com shop.app shopify.com shopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com ¯ XIAOMITV-ADSad.intl.xiaomi.com ads ad.mi.com @@ -904,639 +7175,75 @@ tumblr.com ads kuyun.com ads umeng.com ads -& -XNXX xnxx.com xnxx-cdn.com -Q - CHINANEWS chinanews.comchinanews.com.cn -cns.com.cn ecns.cn -Y -DAZN dazn-api.com dazn.com -dazndn.com -indazn.com indaznlab.com -+ -FLATPAK flathub.org flatpak.org - -GOFUNDME gofundme.com -k -IKEAikea.cn -cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.com -9 -SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl - - -XUEYUANJUNxueyuanjun.com -' -ZEPLIN -zeplin.dev  zeplin.io -s - GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.org -– - HKETGROUPapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn -cn etnet.com.hketnetchina.com.cn -cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk -+ - -KUBERNETES kubernetes.io -k8s.io -2 - NEWRELIC-ADS"js-agent.newrelic.com -ads -6 - RULEOFLAWrolfoundation.orgrolsociety.org -- -SURFLITE surflite.co surflite.net -= - TRANSLATEWIKItranslatewiki.nettranslatewiki.org -T - DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best -E -ETHEREUM -devcon.orgethereum.foundation ethereum.org -à -ICLOUDapple-icloud.cn -cnappleicloud.cn -cnapplemx-icloud.comicloud-apple.cn -cnicloud-content.comicloud-isupport.com  icloud.ch -icloud.com icloud.com.cn -cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn -cn  icloud.om -icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn -cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com -icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com -me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net -M - -LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com -é -MINImini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com -mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl -mini.co.cr -mini.co.id -mini.co.il -mini.co.kr -mini.co.me -mini.co.th -mini.co.uk -mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua -mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com -minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com -minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com -trmini.comtroisrivieresmini.comyours-customised.mini.com -Œ -9TO59to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com -_ -CATEGORY-WIKI-CNhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn -" -KODI kodi.tv  kodi.wiki -y - QINGCLOUD frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.com - - TEST-IPV6 test-ipv6.com -š -CCBccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn -² -HUAWEI  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com -œ -HUOBI -hbabit.com -hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.com -/ - JIBENCAOZUO jbcz.tvjibencaozuo.com - -ALI213 -ali213.net -‰ -BRAVEUXbraventures.com braveux.com -compass.isfightforux.comforthebadge.comstockagainstphotography.com -` -GEMFURY  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com -­ -MEDIACHINESEGROUPmediachinese.com mysinchew.comsinchew.com.my -sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com -" -NIST nist.gov time.gov -Ç - CATEGORY-ORGS archive.org ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net csis.orgcsis-prod.s3.amazonaws.comemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org -ieeer5.org -ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org -comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org nist.gov time.gov openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgrolfoundation.orgrolsociety.org aomedia.org  atypi.org -change.orgglobalsecurity.org ietf.org itu.int  smpte.org -un.org -w3.org who.int wto.org -š -QINIUstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com -• -WOOLITE -woolite.ca -woolite.cn -cn woolite.comwoolite.com.cn -cn -woolite.pl -woolite.uswoolitecarpet.com -Ê -VEET veet.at veet.be veet.ca veet.ch veet.clveet.cn -cn -veet.co.id -veet.co.in -veet.co.kr -veet.co.nz -veet.co.uk -veet.co.za veet.com veet.com.ar veet.com.au veet.com.bd veet.com.br veet.com.cn -cn veet.com.co veet.com.hk veet.com.mx veet.com.my veet.com.ph veet.com.pk veet.com.sg veet.com.tr veet.de veet.dk veet.es veet.fi veet.fr veet.hu veet.jp veet.nl veet.no veet.pt veet.ro veet.ru veet.se veet.tv veet.usveetarabia.comveetbangladesh.comveetcentroamerica.com veetclub.it -+ -AFDIAN -afdian.net afdiancdn.com -– -WEBEX webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr -% -MIHOYO -mihoyo.com bh3.com -Ò - -SF-EXPRESS  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org - -TOR onion -A -ACERacer-group.com acer.com acer.com.cn -cn - -ARCHIVE archive.org -] -BUYPASSbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -I -DMM dmm.com  dmm.co.jpdmm-extension.com dmmapis.com -í - NBCUNIVERSALdreamworks.com cnbc.com -cnbcfm.com  msnbc.com -nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com -nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com - - APPLE-DEVappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net -€ - INTEL-DEV -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org -' -MOJI moji.com mojichina.com -C - SCIENCEDIRECTsciencedirect.comsciencedirectassets.com -1 - STACKPATH stackpath.com stackpath.dev - -TIDELIFT tidelift.com -' -WATCHOUT watchout.tw -waa.tw -B -HASKELL haskell.orghaskellstack.org stackage.org -8 - KINGKONGLIVEkingkong.com.twkingkongapp.com - - SHARETHIS sharethis.com - -PATREON patreon.com -4 -PERL perl.org cpan.org metacpan.org - -B3LOG  b3log.org -, -MEDIUM -medium.commedium.systems -M - MESSENGERfbmessenger.comm.me messenger.com -nbabot.net - -SINGTAONEWSCORPsingtaonewscorp.com -sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com -eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hk -Ð -VK mvk.com userapi.com  vk-cdn.me -vk-cdn.net vk-portal.net vk.cc -vk.com  vk.design vk.link vk.me vkcache.com vkgo.app -vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net -H -BLENDERbigbuckbunny.org blender.orgelephantsdream.org -& -HUYA huya.com msstatic.com -7 - -LONDONREALfreedomplatform.tv londonreal.tv -+ - SEGMENT-ADScdn.segment.com +l +XUEQIU aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com +L +LANZOU baidupan.com +lanzou.com lanzous.com woozooo.com +* +JAVWIDE +javwide.tv javwide.com +¯ +JD-ADSads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com ads ) DRIBBBLE drbl.in dribbble.com - -JINJIANG  jjwxc.net -² -MOVEFREEkeepmovingwithmovefree.com move-free.net movefree.cn -cn movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.com -á - -AKAMAI ak1.net -aka-ai.com -aka-ai.net akacrypto.net akadeem.net -akadns.com akadns6.net -akaeai.com -akafms.net akahost.net -akaint.net akam.net -akamaa.com -akamah.com -akamak.com -akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com akamai.co.kr -akamai.com -akamai.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.net akamaihd.com akamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaized-staging.net akamaized.netakamaizercentral.com -akamci.com  akami.com  akami.net -akamii.com -akamqi.com akastream.com akastream.net -akatns.net iamakamai.com iamakamai.netsoasta-dswb.com -srtcdn.net -Y -JSDELIVR jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net -cn - -WEBTYPE webtype.com -« -YOUTUBE youtubeggpht.cn -cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com -youtube.ae -youtube.al -youtube.am -youtube.at -youtube.az -youtube.ba -youtube.be -youtube.bg -youtube.bh -youtube.bo -youtube.by -youtube.ca youtube.cat -youtube.ch -youtube.cl -youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve -youtube.cr -youtube.cz -youtube.de -youtube.dk -youtube.ee -youtube.es -youtube.fi -youtube.fr -youtube.ge -youtube.gr -youtube.gt -youtube.hk -youtube.hr -youtube.hu -youtube.ie -youtube.in -youtube.iq -youtube.is -youtube.it -youtube.jo -youtube.jp -youtube.kr -youtube.kz -youtube.la -youtube.lk -youtube.lt -youtube.lu -youtube.lv -youtube.ly -youtube.ma -youtube.md -youtube.me -youtube.mk -youtube.mn -youtube.mx -youtube.my -youtube.ng -youtube.ni -youtube.nl -youtube.no -youtube.pa -youtube.pe -youtube.ph -youtube.pk -youtube.pl -youtube.pr -youtube.pt -youtube.qa -youtube.ro -youtube.rs -youtube.ru -youtube.sa -youtube.se -youtube.sg -youtube.si -youtube.sk -youtube.sn youtube.soy -youtube.sv -youtube.tn -youtube.tv -youtube.ua -youtube.ug -youtube.uy -youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com -. -JIEMIAN jiemian.comjiemian.com.cn - -SSPAI  sspai.com -Ž -THESUNdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie -/ - -THEINITIUMtheinitium.com  init.shop -d -BARRONSbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.com -Œ - -ITUNES!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn -cn itun.es itunbes.com ituneas.comitunes-apple.cn -cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th -itunes.com  itunes.hk  itunes.mx -itunes.org -itunes.rio  itunes.usitunes12days.comitunesapple.cn -cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn -cnitunesradio.comitunesradio.com.cn -cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.net -* -JAVBUS -javbus.com javbus22.com -8 -NPMJS npm.community  npmjs.com  npmjs.org -¸ - STARBUCKS sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn -cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com +™ +INSIDERbusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.com +r + LAUNCHPAD launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org a -DYNA dynacw.co.jp -dynacw.com dynacw.com.cn dynacw.com.hk dynacw.com.tw -Q - BANDWAGONHOSTbandwagonhost.com bwh1.net bwh8.net  bwh88.net - - -GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com -cnocsp.globalsign.com -cn ocsp2.globalsign.com -cn -™ -IEEE ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org -ieeer5.org -ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org -comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org -* -PAGECDN pagecdn.com -pagecdn.io +LE +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com +" +TED ted.com +tedcdn.com ¯ VISUALARTS abow.jp angelbeats.jp anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp -Æ -BOC -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cn + +XINGRZ  xingrz.me +, + BYTEDANCE-ADSmcs.snssdk.com +ads +2 + NEWRELIC-ADS"js-agent.newrelic.com +ads +™ +TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com +twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.co + +CATEGORY-VPNSERVICES 928.plus +zind.cloud boslife.biz boslife.net +cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net n3ro.lol n3ro.net n3ro.wtf nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.meshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.netairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz aaex.uk amytele.com +ark.tobaicaonetwork.com bighead.groupblinkload.zone  cloudn.me  conair.me cordcloud.org ctyun.online geph.io  maying.comocloudplus.com  mray.club muncloud.dog renzhe.cloud +ssplive.pw +ssrpass.pwstc-server.com + +CHIPHELL chiphell.com +% +RUMBLE rmbl.ws +rumble.com +Ü +VANISHo2action.co.krpowerofresolve.capowerofresolve.comspraynwash.com  vanish.at  vanish.be  vanish.ch  vanish.cl vanish.cn +cn vanish.co.id vanish.co.il vanish.co.in vanish.co.nz vanish.co.uk vanish.co.za vanish.com.ar vanish.com.br vanish.com.co vanish.com.hr vanish.com.mx vanish.com.my vanish.com.pe vanish.com.sg vanish.com.tr  vanish.de  vanish.dk  vanish.es  vanish.fi  vanish.fr  vanish.hu  vanish.ie  vanish.it  vanish.nl  vanish.no  vanish.pl  vanish.pt  vanish.ro  vanish.ru  vanish.se  vanish.si  vanish.skvanisharabia.comvanishbancaseulook.com.brvanishcentroamerica.com vanishinfo.czvanishstains.comvanishstains.com.au -FONTSINUSEfontsinuse.com -2 - GROWINGIO-ADS!assets.growingio.com -ads -Z -INTERCOM intercom.com intercom.iointercomassets.comintercomcdn.com -Ü -WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.com -™ -BILIBILI -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net -š -DIDI didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com -z -MATRIXarewereadyyet.com -element.io -matrix.org  matrix.to -modular.im riot.im  vector.im -2 -ZOOM zoom.com zoom.com.cn zoom.us - -ADDTOANY addtoany.com -Õ -ONEDRIVE 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com -% -FONTS  fonts.com  fonts.net -Ë -GITHUB npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com -ä -SMARTONEbarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com -œ - STREPSILS -cepacol.ca cepacol.com dobendan.degraneodin.com.mx -repsils.no strepsils.at strepsils.ch strepsils.cn -cnstrepsils.co.krstrepsils.co.nzstrepsils.co.zastrepsils.com.arstrepsils.com.brstrepsils.com.cn -cnstrepsils.com.costrepsils.com.austrepsils.com.hkstrepsils.com.phstrepsils.com.tw strepsils.es strepsils.fi strepsils.fr strepsils.hr strepsils.hu strepsils.ie strepsils.net strepsils.pl strepsils.pt strepsils.ro strepsils.ru strepsils.si strepsils.usstrepsilsarabia.com -‡ -WHOLEFOODSMARKETwholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.org -Ò - YOUKU-ADSactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads -Ë - ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com -è -ENFAbebepremium3.com.bo -enfa.co.id enfa.com.vn enfaaplus.com enfababy.com enfabebe.comenfabebe.com.brenfabebe.com.coenfabebe.com.doenfabebe.com.ecenfabebe.com.mxenfabebe.com.peenfabebe.com.veenfabebe3.com.arenfagrow.co.inenfagrow.com.bnenfagrow.com.myenfagrow.com.phenfagrow.com.sg enfagrow4.comenfamama.com.arenfamama.com.ph -enfamil.ca enfamil.com -enfamil.es -enfamil.pl -enfamil.pt enfasmart.comenspireformula.comnutramigen.net nutramigen.pl - -GAMERSKY gamersky.com -p -KKBOX -kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me -O -PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com -ads -¤ -ZEE -bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com -ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com -zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com - - ZHIHUISHU zhihuishu.com -ƒ - NETEASE-ADSanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads -Y -UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com -© -VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz - -GLYPHS glyphsapp.com -Ö - INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com -“ - LIMELIGHTdelvenetworks.com limelight.com  lldns.netllnw-trials.com llnw.com llnw.net  llnwd.net  llnwi.net -T - -PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me -& -CHINASO chinaso.com -pg0.cn -À - -DUCKDUCKGOcispaletter.comcispaletter.orgcometotheduckside.com -ddg.co -ddg.gg -ddh.gg -dgg.gg dontbubble.us donttrack.us duck.co duck.comduckduckco.com duckduckco.de duckduckgo.ca duckduckgo.coduckduckgo.co.ukduckduckgo.comduckduckgo.com.mxduckduckgo.com.tw duckduckgo.de duckduckgo.dk duckduckgo.in duckduckgo.jp duckduckgo.ke duckduckgo.mx duckduckgo.nlduckduckgo.org duckduckgo.pl duckduckgo.sg duckduckgo.ukduckduckhack.com -duckgo.com ducksear.ch duckside.com  dukgo.comenteentegeh.defixtracking.com goduckgo.com hacksear.chjustduckit.comprivacysimplified.comprivatebrowsingmyths.comspreadprivacy.com - -JIYUKOBOjiyu-kobo.co.jp - -VGTIME -vgtime.com -ä -CATEGORY-ANTICENSORSHIP citizenlab.cacitizenlab.org  gfw.press -gfw.reportapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.orghaveibeenpwned.compwnedpasswords.comgetlantern.org -lantern.io softether.orgsoftether-download.com  v2ray.com -v2ray.cool  v2fly.org ahmia.fi akasha.worldbrowserleaks.combypasscensorship.orgdat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org -geti2p.netguardianproject.info ipfs.io  jitsi.org  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co -uproxy.org vuvuzela.io -whonix.org wikileaks.org wireguard.com -zeronet.io +XUEYUANJUNxueyuanjun.com 3 CONTENTFULcontentful.com ctfassets.net -¿ -GIGABYTE  aorus.com aoruszone.cn -cn gigabyte.cn -cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net -' -POLYV  polyv.net videocc.net - -DISCORD -discord.co discord.com -discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com -B -DISQUS -disqus.com disquscdn.comdisqusservice.com - -3TYPE 3type.cn -+ - MXPLAYER-ADSevt.mxplay.com -ads - -WWE wwe.com wwe9.com -ô* -PAYPALaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.org anfutong.cn -cn anfutong.comanfutong.com.cn -cn beibao.cn -cn -beibao.com beibao.com.cn -cn bill-safe.combillmelater.combillmelater.infobillmelater.net bml.infobuyfast-paysmart.net cashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com -gmoney.org -i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net -pa9pal.com paaypal.com  paily.net  paily.org -paipal.com -pavpal.com paydiant.com paylike.com -paypa1.com -paypa1.org paypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net  paypal.ca -paypal.com paypal.com.cn -cn paypal.com.hk paypal.com.sg  paypal.hk paypal.info  paypal.jp  paypal.me paypal.net.cn -cn paypal.org.cn -cn  paypal.so  paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.cn -cnpaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.org paypalhere.cn -cnpaypalhere.compaypalhere.com.cn -cnpaypalhere.infopaypalhere.netpaypalhere.org paypalhere.tv paypali.net paypalinc.compaypalindia.compaypalinsuranceservices.org paypall.compaypallabs.com paypalme.com paypalnet.net paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.com paypalx.com paypaly.com payppal.com payypal.compdncommunity.com -pp-soc.com ppaypal.com  pppds.com pypl.com  pypl.info pypl.net pypl.tvsecure-paypal.infosecurepaypal.info sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info www-paypal.usxn--bnq297cix3a.cn -cnbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tv card.iogetbraintree.com krakenjs.comloanbuilder.comswiftcapital.com simility.com cashify.netswiftbank.info swiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com  venmo.com -venmo.info  venmo.net  venmo.org  cash2.comfilipino-music.net -s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.com wwwxoom.comxoom-experience.com xoom.com xoom.io xoom.net.cn -cn xoom.us xoomcom.comvenmo.s3.amazonaws.com - - TRUSTWAVE trustwave.com -ñ -WANGSU  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org -5 -COLORFULCLOUDS caiyunai.com caiyunapp.com - - -JINRISHICIjinrishici.com - -SHORTURL shorturl.at -úŠ +¸Œ GEOLOCATION-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup olayan praxisapseek vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci @@ -2177,7 +7884,7 @@ nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo. pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com wwtbam.comyourfantasybeginsnow.comsoundcloud.com -sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  amemv.com +sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  tidal.com tidalhifi.com wimpmusic.com  amemv.com muscdn.com musical.ly tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net @@ -2210,7 +7917,8 @@ ajplus.net aljazeera.com aljazeera.netpalestineremix.comsa ap.org apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net  bloomberg bbgevent.com bbhub.io +bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk +bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net  bloomberg bbgevent.com bbhub.io bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com cbsi.video @@ -3336,751 +9044,240 @@ rea.global rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com tsquare.tv  windy.com xdty.org  xingrz.me - -IINA iina.io -? - BONGACAMS bongacams.com -bcicdn.com bcrncdn.com -6 -CATEGORY-COLLABORATE-CN shimo.im  yuque.com -Û -SPOTIFY byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net -+ -XIMALAYA ximalaya.com  xmcdn.com -Ÿs -BMWmini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com -mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl -mini.co.cr -mini.co.id -mini.co.il -mini.co.kr -mini.co.me -mini.co.th -mini.co.uk -mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua -mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com -minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com -minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com -trmini.comtroisrivieresmini.comyours-customised.mini.combmwapprovedusedbmw.combaltimorebmw.combayareabmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.com bmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.ca bmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.chbmw-connecteddrive.co.nzbmw-connecteddrive.co.ukbmw-connecteddrive.co.zabmw-connecteddrive.combmw-connecteddrive.com.aubmw-connecteddrive.com.brbmw-connecteddrive.com.cybmw-connecteddrive.com.hrbmw-connecteddrive.com.kwbmw-connecteddrive.com.mtbmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.combmw-driving-center.co.krbmw-drivingexperience.com bmw-dubai.com -bmw-eg.com bmw-fleet.net bmw-ghana.combmw-golfsport.com bmw-group.com bmw-group.netbmw-grouparchiv.debmw-grouparchives.com -bmw-gta.cabmw-i-pure-impulse.com bmw-i.jp bmw-int1.com bmw-iraq.combmw-jordan.combmw-konzernarchiv.de bmw-ksa.combmw-kuwait.com -bmw-lao.labmw-lebanon.combmw-m-safetycar.com  bmw-m.combmw-mdrivetour.com -bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.cobmw-motorrad.co.idbmw-motorrad.co.krbmw-motorrad.co.nzbmw-motorrad.co.thbmw-motorrad.co.ukbmw-motorrad.co.zabmw-motorrad.combmw-motorrad.com.arbmw-motorrad.com.aubmw-motorrad.com.brbmw-motorrad.com.dobmw-motorrad.com.hrbmw-motorrad.com.mxbmw-motorrad.com.mybmw-motorrad.com.pebmw-motorrad.com.pybmw-motorrad.com.trbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.com bmw-oman.com bmw-ottawa.cabmw-pakistan.combmw-plant-munich.combmw-pma.com.sgbmw-powertrain.combmw-product-highlights.com bmw-qatar.combmw-routes.com -bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.ca bmw-voli.me bmw-welt.com bmw-welt.net bmw-welt.tvbmw-werk-berlin.de bmw-world.com bmw-world.net bmw-world.tvbmw-worldfinal.combmw-yachtsport.com -bmw-yeg.ca bmw-yemen.com -bmw.am -bmw.at -bmw.az -bmw.ba -bmw.bb -bmw.be -bmw.bg -bmw.bm -bmw.bs -bmw.by -bmw.ca -bmw.cc -bmw.ch -bmw.cl  bmw.co.ao  bmw.co.cr  bmw.co.id  bmw.co.il  bmw.co.jp  bmw.co.ke  bmw.co.kr  bmw.co.nz  bmw.co.th  bmw.co.uk  bmw.co.za bmw.com -bmw.com.ar -bmw.com.au -bmw.com.bd -bmw.com.bn -bmw.com.bo -bmw.com.br -bmw.com.cn -cn -bmw.com.co -bmw.com.cy -bmw.com.do -bmw.com.ec -bmw.com.ge -bmw.com.gt -bmw.com.kh -bmw.com.ky -bmw.com.mk -bmw.com.mo -bmw.com.mt -bmw.com.mx -bmw.com.my -bmw.com.ni -bmw.com.pa -bmw.com.pe -bmw.com.ph -bmw.com.py -bmw.com.sg -bmw.com.sv -bmw.com.tr -bmw.com.tw -bmw.com.uy -bmw.com.ve -bmw.cw -bmw.cz -bmw.de -bmw.dk -bmw.dz -bmw.ee -bmw.es -bmw.fi -bmw.fr -bmw.gp -bmw.gr -bmw.hn -bmw.hr -bmw.ht -bmw.hu -bmw.ie -bmw.in -bmw.is -bmw.it -bmw.kg -bmw.kz -bmw.lc -bmw.lk -bmw.lt -bmw.lu -bmw.lv -bmw.ly -bmw.ma -bmw.md -bmw.mn -bmw.mq -bmw.mu -bmw.nc -bmw.nl -bmw.no -bmw.pl -bmw.ps -bmw.pt -bmw.re -bmw.ro -bmw.rs -bmw.se -bmw.si -bmw.sk -bmw.sn -bmw.tm -bmw.tt -bmw.ua -bmw.uz -bmw.vn bmwarchiv.at bmwarchiv.debmwartjourney.com bmwasia.combmwauslieferungszentrum.com bmwbikes.com  bmwbkk.de -bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.com bmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.com bmwgroup.at bmwgroup.com bmwgroup.net bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com  bmwhk.com bmwi.ca bmwi.jpbmwiventures.combmwjamaica.com -bmwlat.combmwlifestyle.ca bmwm.combmwmagazine.combmwmagazine.de bmwmass.com bmwmass.net  bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.combmwmotorrad.co.krbmwmotorrad.com.aubmwmotorrad.com.phbmwmotorrad.com.sgbmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com bmwsafari.com -bmwsfl.com -bmwsfl.net -bmwshop.cabmwspecialoffers.ca bmwsports.combmwstartupgarage.com bmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com -bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.com bmwworld.com bmwworld.net bmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com daytonbmw.comdealerspeed.net desertbmw.com dreambmw.ca grupobmw.com guambmw.comhackthedrive.com hawaiibmw.com iaablog.comlasvegasbmw.com m-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.com mybmw.ca  mybmw.comnewhampshirebmw.com  nmbmw.comocbmwdealers.comoffresspecialesbmw.ca park-now.com parkinfo.com -pdxbmw.com -phxbmw.compre-bmwgroup.jobspugetsoundbmw.com rentaride.com rentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.com socalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.com alfera.com.hk alfera.com.my  alfera.in  alfera.myalphera-finance.co.inalphera-finance.com.hkalphera-finance.in -alphera.ca alphera.co.in alphera.co.nz alphera.comalphera.com.esalphera.com.hkalphera.com.my -alphera.de -alphera.es -alphera.ie -alphera.in -alphera.my alphera.netalpherafinance.com.hkalpherafinancialservices.esalpherafinancialservices.in alpherafs.caalpherafs.co.nzalpherafs.com.hkalpherafs.com.my alpherafs.ie alpherafs.in alpherafs.my premiumfs.de alphabet.asia alphabet.at alphabet.be alphabet.biz alphabet.chalphabet.co.hualphabet.co.ukalphabet.co.za alphabet.comalphabet.com.cn -cnalphabet.com.esalphabet.com.lvalphabet.com.mxalphabet.com.plalphabet.com.pt alphabet.cz alphabet.de alphabet.es alphabet.eu alphabet.fr alphabet.info alphabet.jp alphabet.lt alphabet.lu alphabet.lv alphabet.mxalphabet.net.cn -cn alphabet.noalphabet.org.uk alphabet.pl alphabet.pt alphabet.uk alphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com  rrtis.comspiritofecstasy.com -â - HUNANTV-ADSclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -ads -ƒ -MSNmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com -d -REDDIT -reddit.comredditstatic.comredditmail.comredditmedia.com redd.it -+ - ONESIGNAL-ADS onesignal.com -ads -¦ - BRIDGESTONE bridgestone  bandag.cc -bandag.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpbridgestone-korea.co.krbridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clbridgestone.cn -cnbridgestone.co.crbridgestone.co.idbridgestone.co.inbridgestone.co.jpbridgestone.co.thbridgestone.combridgestone.com.arbridgestone.com.brbridgestone.com.cn -cnbridgestone.com.cobridgestone.com.mxbridgestone.com.sgbridgestone.com.twbridgestone.com.vnbridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.clbridgestonecomercial.co.crbridgestonecomercial.com.arbridgestonecomercial.com.brbridgestonecomercial.com.cobridgestonecomercial.com.mxbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.combridgestonetyre.com.mybridgestonevan.combridgestonewx.combs-adreview.com bs-awh.ne.jp  bsw.co.jp -bsw.jpcarcare-and-tireshop.jpdaytontrucktires.com ecoforme.jp gcrtires.comjsbridgestone.commenshin-channel.com monitrix.net mr-tireman.jpmybridgestoneeducation.com playz.jp -potenza.jpprodrive-japan.comstore-bridgestonesports.com thetread.com tiresplus.com cfna.combastropfirestone.comcrossfitfirestone.com firestone.clfirestone.co.crfirestone.com.arfirestone.com.brfirestone.com.cofirestone.com.mxfirestonebpco.comfirestonecomercial.clfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mx!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comhibdontire.comwheelworks.netnokiantyres.cn -cnnokiantyres.com -Þ + -JD3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads -š -TVB mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com -tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn -cntvbeventpower.com.hk -tvbusa.com tvbweekly.comtvmedia.net.au -. -ASPROEX asproex.comasproexapi.com -: -ZAOBAO -zaobao.com zaobao.com.sg  zaobao.sg -v -NATIONALGEOGRAPHICnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.com -Ú% - BAIDU-ADS a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads -®' -FOXfoxfox-corporation.com fox-news.com fox.com -fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com -fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com -fox5dc.com -fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com -foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv -foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com -foxest.com -foxfaq.com -foxfdm.com foxfiles.com -foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com -foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com -foxnews.cc foxnews.com foxnews.net foxnews.org -foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com -foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com -fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com -anidom.comcasoneexchange.comcoronavirusnow.com -fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com -my13la.com -my20dc.commy20houston.com -my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com -q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.net -ì - -GOOGLE-ADS2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -ads -) -KEEP gotokeep.com keepcdn.com -" - MASTERCLASSmasterclass.com -Ì - THEGUARDIAN theguardiandev-guardianapis.comdev-theguardian.com -gu-web.netguardianapis.comguardianapps.co.uk -guim.co.uktheguardian.comtheguardiandns.com -¸ -VISA visa.be visa.ca visa.clvisa.cn -cn -visa.co.ao -visa.co.cr -visa.co.id -visa.co.il -visa.co.in -visa.co.jp -visa.co.ke -visa.co.ni -visa.co.nz -visa.co.th -visa.co.uk -visa.co.ve -visa.co.za visa.com visa.com.ag visa.com.ai visa.com.ar visa.com.au visa.com.az visa.com.bo visa.com.br visa.com.bs visa.com.bz visa.com.cn -cn visa.com.co visa.com.cy visa.com.dm visa.com.do visa.com.ec visa.com.ge visa.com.gt visa.com.gy visa.com.hk visa.com.hn visa.com.hr visa.com.jm visa.com.kh visa.com.kn visa.com.kz visa.com.lc visa.com.lk visa.com.ms visa.com.mx visa.com.my visa.com.ng visa.com.pa visa.com.pe visa.com.ph visa.com.pr visa.com.py visa.com.ru visa.com.sg visa.com.sv visa.com.tr visa.com.tt visa.com.tw visa.com.ua visa.com.uy visa.com.vc visa.com.vi visa.com.vn visa.cz visa.de visa.dk visa.es visa.fi visa.fr visa.gd visa.gp visa.gr visa.hk visa.hu visa.ie visa.is visa.ky visa.lt visa.lv visa.mn visa.mq visa.nl visa.no visa.pl visa.pt visa.ro visa.se visa.sk visa.so visa.sx visa.tc -visabg.com visaeurope.at visaeurope.ch visaeurope.lu visaeurope.sivisaitalia.com visakorea.comvisamiddleeast.comvisasoutheasteurope.comfinlitsummit.orgmyvisaluxuryhotels.comvisainfinite.cavisainfiniteluxuryhotels.ca!visaluxuryhotelcollection.com$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisaluxuryhotels.comvisaluxuryhotels.com.arvisasignaturehotels.com($connaissancesfinancierespratiques.ca dnsvisa.comeubluecardvisa.comfinancialsoccer.ca"financialsoccer.com.cn -cnlightbridge.commiamifintechfestival.commhshosting.compracticalbusinessskills.compracticalmoneyskills.ca#practicalmoneyskills.cn -cn'practicalmoneyskills.com.cn -cnpracticalmoneyskills.jpsoccerfinancier.catorcidadeouro.com vaultify.com vaultify.info vaultify.net visa-atm.com visa-news.jp visabank.orgvisabusinessinsights.comvisacarddesignlab.com visacards.comvisacheckout.netvisacheckout.orgvisaconciergelac.comvisadigital.comvisadigitalconcierge.com visadns.comvisadpsonline.usvisaeverywhereshop.comvisafintechfasttrack.comvisafulfillment.comvisagiftcard.usvisaglobalfinance.comvisaicsdirect.comvisainfinite.cavisainfinite.cn -cn visanet.net -visapay.cn -cnvisapcsdirect.comvisaplatinum.cn -cnvisaplatinum.com.cn -cn visaplus.comvisasavingsedge.cavisasignature.co.kr visb.org -, -GANJI  ganji.comganjistatic1.com -ó -SQUAREUP cash.appcashbycashapp.com gosq.co gosq.comissquaredown.comissquareup.com mkt.comsellercommunity.comsquarecapital.com squarecdn.comsquarecloudservices.com squareup.com -æ -ADOBE typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com -adobedc.cn -cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com -demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com -omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com -fotolia.cc fotolia.com -fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net -marketo.tvmarketodesigner.commarketolive.com -mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.new -$ -CAS -csdl.ac.cn  las.ac.cn -Ì -CATEGORY-SECURITIES-CN -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn - -HINET  hinet.net -i -RAZER  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com -» -PCCW 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hk -±˜ -CATEGORY-ENTERTAINMENT abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net bandcamp.com -bcbits.com blizzard.cn -cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn -cn -battle.netbattlenet.com.cn -cn bnet.163.com -cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com -cn!diablo3.nosdn.127.net -cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net -cnheroesofthestorm.com%hearthstone.nosdn.127.net -cn"heroes.nos.netease.com -cnplayoverwatch.com#overwatch.nosdn.127.net -cn starcraft.comstarcraft2.comsc2.nosdn.127.net -cnplaywarcraft3.comworldofwarcraft.com wowchina.com -cnwow.nosdn.127.net -cnblizzcon-a.akamaihd.netblz.nosdn.127.net -cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn -cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net -lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com -lpl.com.cn -cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com -cn -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv fanatical.comhumblebundle.com dazn-api.com dazn.com -dazndn.com -indazn.com indaznlab.comdeviantart.comdeviantart.net da-files.comabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com -babble.com babyzone.com -dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za -disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com -dssott.comgo-disneyworldgo.com -go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com -huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com -hulugo.com -huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com -huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com -hulutv.com huluusa.comjoinmaidez.com mushymush.tv -myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com -kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com -netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.netnico -nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net -pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com -movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsoundcloud.com -sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  amemv.com -muscdn.com -musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net -dogatch.jp gorin.jpscreens-lab.jp -tver.co.jp tver.jp ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net -vhx.tv -vhxqa1.com -vhxqa2.com -vhxqa3.com -vhxqa4.com -vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com abow.jp angelbeats.jp -anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com -z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com  linetv.tw litv.tv megaphone.fm moov.hk -odysee.com overcast.fm syosetu.com -weverse.io yande.re -/ - STARTPAGE startpage.com ixquick.com - -TABOOLA taboola.com -1 -ZIROOM -ziroom.comziroomapartment.com +GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com +cnocsp.globalsign.com +cn ocsp2.globalsign.com +cn +ô +VERIZON +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com +oath.cloud oath.com ouroath.comstatic-verizon.com +uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com +xo.com +» +VIU +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net H ACFUN acfun.cn aixifan.com apilog-web.acfun.cn ads -B -HKEDCITY  edcity.hk hkedcity.nethkreadingcity.net -™ -INSIDERbusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.com -™ -MARVEL -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com - -MIAOPAI miaopai.com -µ -LOGITECH logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net -( -UDEMY  udemy.com udemycdn.com -u - -ATTWATCHTV -att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com -‹ -DMM-ADS bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp -ads -microad.jp -ads socdm.com -ads  -SPACEX -spacex.com -ç -PEARSONactivelearnprimary.co.ukactivelearnprimary.com.auactiveteachonline.comaddison-wesley.ch adobepress.ch -btec.co.uk ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comdombosco.com.br ecpa.frescapestudios.co.uk ilongman.com integral7.com'#internationalconnectionsacademy.com -longman.ch -mut.chmyhelpinglab.commylogiclab.com mypearson.commypearsonenglish.chmypearsonshop.com.mxmypearsonshop.mxmysocialworklab.comnetname.com.brpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch -pearson.ch -pearson.cl pearson.co.in pearson.co.jp pearson.compearson.com.arpearson.com.aupearson.com.cn -cnpearson.com.hkpearson.com.uy -pearson.es -pearson.fr -pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonclinical.co.ukpearsonclinical.com.aupearsonclinical.com.brpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoned.co.nz pearsoned.compearsoneducacion.netpearsoneducationbooks.com pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.compearsoninstitute.ac.zapearsonlongman.chpearsononlineacademy.compearsonperu.pepearsonplaces.com.au%!pearsonschoolsandfecolleges.co.ukpearsonvue.compearsonvue.netpobl-content.com  pvue1.com  pvue2.comquatrum.com.brstark-verlag.chtalentlens.comthemathsfactor.comxn--pearsonenespaol-brb.com -s -EHENTAI e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org +PARLER +parler.com +/ + +THEINITIUMtheinitium.com  init.shop +6 +4CHAN 4cdn.org  4chan.org 4channel.org +> +UBUNTU +ubuntu.com +ubuntu.netubuntuforums.org + +FIREFOX firefox.com +- +LANTERNgetlantern.org +lantern.io += +SIGNAL +signal.art +signal.orgsignalusers.org +€ + YUANFUDAO banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com +B + APPLOVIN-ADS applovin.com +ads +applvn.com +ads +I +DMM dmm.com  dmm.co.jpdmm-extension.com dmmapis.com +2 +REABBLE +reabble.cn +cn reabble.com + +TSQUARE +tsquare.tv +$ + FREECODECAMPfreecodecamp.org +ó +REAGROUPflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com +ˆ +SINA  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +U + CLEARASIL clearasil.cn +cnclearasil.com.cn +cn clearasil.us $ HUANGHUAGANGhuanghuagang.org -; -XUEERSI speiyou.com -xesimg.com xueersi.com -( -LTN -ltn.com.tw yes123.com.tw -ž - ALJAZEERA -ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com -% - FONTEXPLORERfontexplorerx.com -j -IMPERIALCOLLEGE ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com -s -SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -/ -CLEARBITJS-ADSx.clearbitjs.com + +GRAVATAR gravatar.com + +ALI213 +ali213.net +' +HM +hm.com hm.com.cn +cn +8 +TARGET +target +target.comtargetimg1.com + +VGTIME +vgtime.com + + W3SCHOOLS w3schools.com +Ç +YAHOO +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com +á + +AKAMAI ak1.net +aka-ai.com +aka-ai.net akacrypto.net akadeem.net +akadns.com akadns6.net +akaeai.com +akafms.net akahost.net +akaint.net akam.net +akamaa.com +akamah.com +akamak.com +akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com akamai.co.kr +akamai.com +akamai.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.net akamaihd.com akamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaized-staging.net akamaized.netakamaizercentral.com +akamci.com  akami.com  akami.net +akamii.com +akamqi.com akastream.com akastream.net +akatns.net iamakamai.com iamakamai.netsoasta-dswb.com +srtcdn.net +5 +SENSORSDATA-ADS"static.sensorsdata.cn ads -ª -OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads -; - SCORELAND scoreland.comcdn77.scoreuniverse.com -+ -TYPEKIT typekit.com typekit.net -* -BETTEREXPLAINEDbetterexplained.com -1 -GODADDY godaddy.comx.co godaddy -, -JAVAjava java.com java.net -Ý -SKYsky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com -m -WPS -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn -ž -CNN cnn.com -cnn.io -cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com -‹ - HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io -; -WJX -sojump.com -wjx.cn wjx.com wjx.top -Ë -HULU -112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com -huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com -hulugo.com -huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com -huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com -hulutv.com huluusa.comjoinmaidez.com mushymush.tv -myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com -* -JIANSHU jianshu.com -jianshu.io - -5CH 2ch.net 5ch.net +^ +SWIFTappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cn +’ +AZURE azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.com +3 + +STREAMABLE embed-cdn.comstreamable.com +7 +VANCL  vancl.com vanclimg.com  vcimg.com ÿÆ APPLEiadsdk.apple.com ads iad.apple.com @@ -4385,91 +9582,30 @@ touchid.tv touchid.wangtracking-location.comtruedepth3d.com cn%www.apple.com.edgekey.net cn www.apple.com cn -F +ä +PRIVATElan localdomain example invalid  localhosttest local  home.arpa ^[^.]+$router.asus.comlocalhost.sec.qq.comlocalhost.ptlogin2.qq.commsftconnecttest.com +9 +SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl +' +APA apa.orgpsyccareers.com + +WINDY  windy.com + +FIGMA  figma.com + -DEVIANTARTdeviantart.comdeviantart.net da-files.com -¹ -IBMibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com -5 -YOUJIZZ youjizz.comyjcontentdelivery.com -% - -CHINAPOWERchinapower.csis.org -* -DANGDANG dangdang.com ddimg.cn -† -GOLANG go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org -† -NICONICOnico -nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp -N - CLOUDCONE clco.cc -cloudc.one cloudcone.com cloudcone.net -0 - MIXPANEL-ADS decide.mixpanel.com -ads -p -ONEPLUS oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com -Ž -GUCCI guccichimeforchange.orggucci.cn -cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com -â -NINTENDO100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com -Þ -VERCEL -now.shvercel-dns.comvercel-status.com -vercel.app -vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com -ï™ -CATEGORY-ADS-ALL7box.vip -adsad-delivery.net -ads adinplay.com -ads adnxs.com -ads!ads.trafficjunky.net -adsadvertserve.com -adscasalemedia.com -ads!contextual.media.net -ads cpmstar.com -ads -demdex.net -ads httpool.com -ads lijit.com -ads1rx.io -ads mfadsrvr.com -adsmgid.com -adsns1p.net -ads openx.net -ads pubmatic.com -adsspotxchange.com -ads -unimhk.com -ads upapi.net -ads taboola.com apilog-web.acfun.cn -ads adcolony.com -ads -adjust.com -ads a.alimama.cn +KINDLE4RSSkindle4rss.com +d +REDDIT +reddit.comredditstatic.comredditmail.comredditmedia.com redd.it +7 + BUYMEACOFFEE buymeacoff.eebuymeacoffee.com +f +ROKU fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com + +JIYUKOBOjiyu-kobo.co.jp +Þ + ALIBABA-ADS a.alimama.cn adsacjs.aliyun.com adsadash.m.taobao.com ads!adashbc.m.taobao.com @@ -4558,285 +9694,16 @@ g.tbcdn.cn adsuserimg.qunar.com adsw.m.taobao.com adsyiliao.hupan.com -ads amazon-adsystem.com -adsiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads applovin.com -ads -applvn.com -ads atom-data.io -adsanalytics-data.io -ads ironbeast.io -ads a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -adsmcs.snssdk.com -adsx.clearbitjs.com -ads bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp -ads -microad.jp -ads socdm.com -ads emogi.com -adsdata.flurry.com -ads2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -ads!assets.growingio.com -adsmlog.hiido.com -adsylog.hiido.com -adsstatic.hotjar.com -adsclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -adsinner-active.mobi -adsa.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -adsads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads log-sdk.gifshow.com -adswlog.kuaishou.com -ads leanplum.com -ads#api.game.letvstore.com -ads ark.letv.com -ads dc.letv.com -adsdev.dc.letv.com -ads fz.letv.com -ads g3.letv.com -adsletv.allyes.com -adsminisite.letv.com -adsmsg.m.letv.com -adsn.mark.letv.com -adsplog.dc.letv.com -adspro.hoye.letv.com -ads pro.letv.com -ads stat.letv.com -ads"static.app.m.letv.com -ads decide.mixpanel.com -ads mopub.com -adsevt.mxplay.com -adsanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads"js-agent.newrelic.com -ads ogury.com -ads -presage.io -adsogury.co -ads onesignal.com -adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads cdn.pocoiq.cn -ads oct.pocoiq.cn -adsads.pubmatic.com -adscdn.segment.com -ads"static.sensorsdata.cn -ads 2016.sina.cn +ads + +HEYTEA +heytea.com +& +HUYA huya.com msstatic.com += + JAVFINDER javfinder.sh findercdn.me o0-2.com +¸ +SINA-ADS 2016.sina.cn adsad.sina.com.cn adsadbox.sina.com.cn ads!adimages.sina.com.hk @@ -4919,982 +9786,255 @@ presage.io ads woocall.sina.com.cn adszc.biz.weibo.com adszymo.mps.weibo.com -adsadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com -adssupersonic.com -adssupersonicads.com -ads -ssacdn.com -ads)supersonicads-a.akamaihd.net -ads g1.tagtic.cn -adsxy-log.tagtic.cn -adsssp.api.tappx.com -ads ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads uberads.com -adsalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads!unityads.unity3d.com -ads#unityads.unitychina.cn -ads ads.wteam.xyz -ads#collector.xhamster.com -adsad.intl.xiaomi.com -ads ad.mi.com -ads ad.xiaomi.com -adsadmob.xiaomi.com -adsad1.xiaomi.com -adsmistat.xiaomi.com -adstracking.miui.com -adsadv.sec.miui.com -ads"adv.sec.intl.miui.com -ads"misc.in.duokanbox.com -ads ad.hpplay.cn -adsadeng.hpplay.cn -ads kuyun.com -ads umeng.com -ads ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -adsactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads zynga.com -ads#zyngaplayersupport.com -ads 51y5.net a.adtng.com -aaxads.comaddthisedge.com -adtrue.com -ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com -exosrv.com -go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com -lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn -( -DEBIAN -debian.org -dotdeb.org -œ -TMTPOST tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com -í - WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org -w.wiki toolforge.orgwikimediacloud.org wmcloud.org wmflabs.org - -XDTY xdty.org - - NEURALINK neuralink.com -* -BOXUN  boxun.combowenpress.com -žŸ -CATEGORY-COMPANIESacer-group.com acer.com acer.com.cn -cn typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com -adobedc.cn -cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com -demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com -omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com -fotolia.cc fotolia.com -fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net -marketo.tvmarketodesigner.commarketolive.com -mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.newalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon-adsystem.com -adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws -amazonimdb -kindle xn--cckwcxetdxn--jlq480n2rg yamaxun -zappos a2z.comaboutamazon.cn -cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn -cnalexafund.com.cn -cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn -cn amazon.co.jp amazon.co.uk -amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl -amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn -cn!amazonbusiness.com.cn -cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn -cnamazonchoice.com.cn -cnamazonchoices.cn -cn amazonchoices.com.cn -cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn -cn amazoninspire.com.cn -cnamazonlaunchpad.cn -cnamazonlaunchpad.com"amazonlaunchpad.com.cn -cn amazonlending.com.cn -cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn -cnamazonnow.com.cn -cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn -cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn -cnprimeday.com.cn -cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de -yamaxun.cn -cn yamaxun.comz.cn -cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn -cnamazonworkdocs.com!amazonworkdocs.com.cn -cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn -cn kindle.co.jp kindle.co.uk -kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn -cnkindleoasis.comkindleoasis.com.cn -cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn -cn#amazonprimevideo.com.cn -cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com -cn-!images-cn-8.ssl-images-amazon.com -cn amd.comamdfanstore.com -radeon.comiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com -aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com -airmay.com -ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com -beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn -cn  beats1.tv beats1.com.cn -cn beats123.com beats2.com.cn -cn beats4.cn -cn -beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com -beatsep.cn -cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com -biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net -bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com -cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com -dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com -lyzsxx.com mairbeats.com -makeeu.commallheadphone.commbeats-tech.commbheadphone.com -micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com -ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com -scnshop.cc -shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com -theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net -unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.netapple-icloud.cn -cnappleicloud.cn -cnapplemx-icloud.comicloud-apple.cn -cnicloud-content.comicloud-isupport.com  icloud.ch -icloud.com icloud.com.cn -cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn -cn  icloud.om -icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn -cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com -icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com -me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn -cn itun.es itunbes.com ituneas.comitunes-apple.cn -cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th -itunes.com  itunes.hk  itunes.mx -itunes.org -itunes.rio  itunes.usitunes12days.comitunesapple.cn -cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn -cnitunesradio.comitunesradio.com.cn -cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.netappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cn apple apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cmapple.cn -cn apple.co apple.co.cr apple.co.hu apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk  apple.com apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn -cn apple.com.co apple.com.de apple.com.do apple.com.gr apple.com.gy apple.com.jm apple.com.lk apple.com.mg apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pl apple.com.pr apple.com.pt apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.eu apple.fi apple.fr apple.hamburg apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.jp apple.kr apple.lk apple.lt apple.lv apple.me apple.my  apple.net apple.net.gr apple.nl apple.no apple.pk apple.pl apple.pt apple.ro apple.rs apple.ru apple.sa apple.se apple.sg apple.si apple.sk apple.so apple.tt apple.tw apple.uk apple.usapple.xn--czr694bapple.xn--fiqs8s  apple.xyz aplestore.comapple-store.cn -cnapple-store.netapple-store.wang applestor.com applestore.bg applestore.cc applestore.ch applestore.cm applestore.cn -cnapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.comapplestore.com.auapplestore.com.bnapplestore.com.cn -cnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.tw applestore.de applestore.hk applestore.kr applestore.meapplestore.netapplestore.net.gr applestore.ph applestore.qa applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comapple-appstore.cn -cnappleappstore.cn -cnappleappstore.netappleappstore.tv  appsto.reappstore.co.id appstore.hk appstore.my appstore.phappstoreapple.cn -cn asto.retvappstore.netapple-imac.com appleimac.comimac-apple.comimac-applecomputer.com imac.co -imac.co.nz imac.com imac.eu imac.gr imac.one imac.rs imacapple.comimacapplecomputer.comebookforipad.com euroipad.comfindmyipad.com indiaipad.com -ipad.co.kr ipad.de  ipad.host  ipad.wang  ipad3.com -ipadair.cl -ipadair.cmipadair.com.bripadair.com.es -ipadair.fr -ipadair.hk -ipadair.ie -ipadair.jp -ipadair.twipadaustralia.com ipadmini.cmipadmini.com.lk ipadmini.lk ipadpro.buzz -ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com dl-iphone.comfundaiphone5s.com hebiphone.com hf-iphone.com -iphine.comiphone-8.com.cn -cn iphone-cd.com iphone-cn.com iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.com iphone-x.tv iphone-yh.com iphone-zh.com  iphone.cm -iphone.com iphone.com.au iphone.com.gr  iphone.es iphone.host iphone.net.gr  iphone.pt  iphone.rs  iphone.ru iphone.wang iphone4.comiphone4.com.br iphone4s.com iphone5.comiphone5casescovers.comiphone5s5case.comiphoneacessorios.com.briphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comiphoneclaro.com.briphonecollcase.com iphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang iphonerip.net iphonese.tviphoneunlockimei.com iphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.com ipod.ca ipod.ch ipod.cm ipod.co -ipod.co.nz -ipod.co.uk -ipod.co.za ipod.com ipod.com.au ipod.com.cn -cn ipod.com.fr ipod.com.hk ipod.com.sg ipod.com.tw ipod.de ipod.es ipod.eu ipod.fr ipod.gr ipod.hk ipod.is ipod.net ipod.no ipod.pk ipod.rs ipod.ru ipod.tw ipodcentre.nlipodcleaner.comipoditouch.com ipodnano.com ipodnano.netipodprices.com -ipodrip.caipodrocks.com.au  ipods.comipodshop.com.au ipodtouch.co ipodtouch.com -myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wang mac.wang -macbook.co -macbook.hk -macbook.tw macbook.wang macbookair.cn -cnmacbookair.co.krmacbookair.co.ukmacbookair.commacbookair.com.aumacbookair.com.cn -cnmacbookair.com.es macbookair.es macbookair.hk macbookair.kr macbookair.jpmacbookair.net macbookpro.comacbookpro.commacbookpro.com.aumacbookpro.net macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapple-watch.com.ru applewatch.hk applewatch.tv applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin applemusic.coapplemusic.comapplemusic.com.auapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.com musickit.netwwwapplemusic.comapple.comscoreresearch.com -apple.newsappleenews.comapplenews.berlinapplenews.hamburg applenews.tvapplenewsformat.com apple-pay.com apple-pay.rsapple-pay.wangapplepay.berlinapplepay.co.rsapplepay.com.twapplepay.hamburg applepay.hk applepay.info applepay.jp applepay.rs applepay.tvapplepaycash.cn -cnapplepaycash.com.cn -cnapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.cn -cnapplepaysupplies.com#applepaysupplies.com.cn -cnapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv -i-book.com -i-book.net ibook.co.nz  ibook.com ibook.eu  ibook.netibookpartner.comibooksauthor.com  iphoto.eu  iphoto.no  iphoto.se iphoto.wang  imovie.euimoviegallery.comimoviestage.comapplecare.berlin applecare.cc applecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com appleid-uk.usappleid.berlin appleid.comappleid.hamburg -appleid.hk ids-apple.com myappleid.com appletv.com -appletv.fr appletv.wang appletv4.cn -cnappletv4.com.cn -cnappletvapp.appleappleone.audio appleone.blog appleone.chatappleone.cloud appleone.clubappleone.community appleone.filmappleone.guide appleone.hostappleone.space appleone.techappleone.website -shazam.com1to1computing.com.au1to1conference.com.au 5lml.com -a0pple.net aapl.twairport.brussels airport.com -airport.euairsupportapp.com airtunes.com airtunes.info airtunes.netalchemysynth.com  ap0le.com aple.com  apole.com -app0le.com -appl-e.com appl.com -appl4e.com  appla.comapple-darwin.comapple-darwin.netapple-darwin.org apple-dns.cn -cn apple-dns.comapple-dns.com.cn -cn apple-dns.netapple-enews.comapple-expo.com apple-expo.eu apple-hk.comapple-ibooks.cn -cn apple-inc.netapple-livephotoskit.com apple-maps.cn -cnapple-online.com apple-usa.netappleafrica.comappleantilles.comappleaustralia.comappleaustralia.com.auappleaustralia.net.au applebk.netapplecarbon.com applecard.tvapplecentar.co.rsapplecentar.rsapplecenter.cn -cnapplecenter.com.cn -cnapplecentre.com.auapplecentre.infoappleclub.com.hk applecom.comapplecomputer-imac.comapplecomputer.cn -cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com applecomputer.com.cn -cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoapplecomputers.co.nzapplecoronavirus.com appledns.cn -cnappledns.com.cn -cn appleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comapplehongkong.com.hkappleinclegal.comappleipodsettlement.comappleiservices.com applelink.comapplemagickeyboard.comapplemalaysia.com.myapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com -appleos.tvapplepencil.netapplepodcasts.comapplepremiumreseller.com.au applepremiumresellers.com.auapplereach.comapplereach.net apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoappleshop.co.uk applesiri.cn -cnapplesurveys.comappletaiwan.com appletips.net appleweb.net applexpo.net applezh.com  applf.com -applfe.com -applle.com  applw.comappmediagroup.com -appule.com  appye.com  apyle.com  beddit.tvbraeburncapital.com burstly.netburstlyrewards.com buyaapl.com buyaapl.net buyaple.com camelphat.comcamelspaceeffect.com -carbon.com catalina.hk cdn-apple.com  chomp.com -coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com -dot-mac.de  dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us -earpod.net ecgapp.com.cn -cn -ecgapp.netedu-research.org -emac.co.in emac.in  emagic.de -eworld.com faceid99.com faceid99.netfaceidglobal.com faceshift.cn -cn facetime.netfinalcutpro.comfind-apple.com firewire.cl firewire.eu geoport.com -homepod.cn -cn -hopstop.tv ichat.co.in idvd.eu  ikids.comilecture.co.nz ilife.eu ilife.gr -ilife.wang imessage.tv insidear.cn -cninsidemacintosh.comiosinthecar.comipa-iphone.net  ipple.com ischool.com itools.info  iwork.com iwork.se -iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com livephotos.cn -cnlivephotos.com.cn -cn livephotos.tvlojaiphone.com.br mac-mini.com mac.com -mac.com.au -mac.eu -mac.rs macappsto.re macboxset.com mach-os.com mach-os.net -machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com -newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us -touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn -cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com -cn"amp-api.apps.apple.com -cn aod.itunes.apple.com -cn#api-edge.apps.apple.com -cn(apptrailers.itunes.apple.com -cn bag.itunes.apple.com -cn'bookkeeper.itunes.apple.com -cnbooks.apple.com -cn'client-api.itunes.apple.com -cn cma.itunes.apple.com -cn!communities.apple.com -cn(discussionschinese.apple.com -cnfides-pol.apple.com -cn(gspe11-2-cn-ssl.ls.apple.com -cn&gspe12-cn-ssl.ls.apple.com -cn&gspe85-cn-ssl.ls.apple.com -cn!init.itunes.apple.com -cn$iosapps.itunes.apple.com -cn"js-cdn.music.apple.com -cn km.support.apple.com -cnmaps.apple.com -cn$osxapps.itunes.apple.com -cnpd.itunes.apple.com -cn!play.itunes.apple.com -cn$se-edge.itunes.apple.com -cn se2.itunes.apple.com -cn#search.itunes.apple.com -cn1%sf-api-token-service.itunes.apple.com -cnsp.itunes.apple.com -cn&stocks-sparkline.apple.com -cn+streamingaudio.itunes.apple.com -cnsu.itunes.apple.com -cn!sync.itunes.apple.com -cn upp.itunes.apple.com -cn"weather-data.apple.com -cn#^a[1-5]\.mzstatic\.com$ -cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$ -cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$ -cn!^cl[1-5]\.apple\.com$ -cn+^is[1-5](-ssl)?\.mzstatic\.com$ -cn$^s[1-5]?\.mzstatic\.com$ -cna1.mzstatic.com -cna2.mzstatic.com -cna3.mzstatic.com -cna4.mzstatic.com -cna5.mzstatic.com -cn, adcdownload.apple.com.akadns.net -cn!adcdownload.apple.com -cnappldnld.apple.com -cn"appldnld.g.aaplimg.com -cnapps.apple.com -cnapps.mzstatic.com -cn$cdn-cn1.apple-mapkit.com -cn$cdn-cn2.apple-mapkit.com -cn$cdn-cn3.apple-mapkit.com -cn$cdn-cn4.apple-mapkit.com -cn cdn.apple-mapkit.com -cn!cdn1.apple-mapkit.com -cn!cdn2.apple-mapkit.com -cn!cdn3.apple-mapkit.com -cn!cdn4.apple-mapkit.com -cn!cds-cdn.v.aaplimg.com -cn$cds.apple.com.akadns.net -cn cds.apple.com -cn/#cl1-cdn.origin-apple.com.akadns.net -cn cl1.apple.com -cncl2-cn.apple.com -cn<0cl2.apple.com.edgekey.net.globalredir.akadns.net -cn cl2.apple.com -cn/#cl3-cdn.origin-apple.com.akadns.net -cn cl3.apple.com -cn/#cl4-cdn.origin-apple.com.akadns.net -cncl4-cn.apple.com -cn cl4.apple.com -cn/#cl5-cdn.origin-apple.com.akadns.net -cn cl5.apple.com -cn+clientflow.apple.com.akadns.net -cn clientflow.apple.com -cn."configuration.apple.com.akadns.net -cn#configuration.apple.com -cncstat.apple.com -cn."dd-cdn.origin-apple.com.akadns.net -cn(download.developer.apple.com -cngs-loc-cn.apple.com -cngs-loc.apple.com -cn%gsp10-ssl-cn.ls.apple.com -cn!gsp11-cn.ls.apple.com -cn!gsp12-cn.ls.apple.com -cn!gsp13-cn.ls.apple.com -cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net -cn, gsp4-cn.ls.apple.com.edgekey.net -cn gsp4-cn.ls.apple.com -cn gsp5-cn.ls.apple.com -cn%gsp85-cn-ssl.ls.apple.com -cn&gspe19-cn-ssl.ls.apple.com -cn-!gspe19-cn.ls-apple.com.akadns.net -cn"gspe19-cn.ls.apple.com -cn#gspe21-ssl.ls.apple.com -cngspe21.ls.apple.com -cn#gspe35-ssl.ls.apple.com -cniadsdk.apple.com -cn, icloud-cdn.icloud.com.akadns.net -cn icloud.cdn-apple.com -cn'images.apple.com.akadns.net -cn?3images.apple.com.edgekey.net.globalredir.akadns.net -cnimages.apple.com -cn3'init-p01md-lb.push-apple.com.akadns.net -cn init-p01md.apple.com -cn3'init-p01st-lb.push-apple.com.akadns.net -cn%init-p01st.push.apple.com -cn3'init-s01st-lb.push-apple.com.akadns.net -cn%init-s01st.push.apple.com -cn(iosapps.itunes.g.aaplimg.com -cniphone-ld.apple.com -cn is1-ssl.mzstatic.com -cnis1.mzstatic.com -cn is2-ssl.mzstatic.com -cnis2.mzstatic.com -cn is3-ssl.mzstatic.com -cnis3.mzstatic.com -cn is4-ssl.mzstatic.com -cnis4.mzstatic.com -cn is5-ssl.mzstatic.com -cnis5.mzstatic.com -cn'itunes-apple.com.akadns.net -cnitunes.apple.com -cn#itunesconnect.apple.com -cn)mesu-cdn.apple.com.akadns.net -cn+mesu-china.apple.com.akadns.net -cnmesu.apple.com -cnmusic.apple.com -cn(ocsp-lb.apple.com.akadns.net -cnocsp.apple.com -cnoscdn.apple.com -cn-!oscdn.origin-apple.com.akadns.net -cnpancake.apple.com -cn, pancake.cdn-apple.com.akadns.net -cnphobos.apple.com -cn1%prod-support.apple-support.akadns.net -cn#reserve-prime.apple.com -cns.mzstatic.com -cn4(stocks-sparkline-lb.apple.com.akadns.net -cn>2store.apple.com.edgekey.net.globalredir.akadns.net -cn'store.apple.com.edgekey.net -cnstore.apple.com -cn2&store.storeimages.apple.com.akadns.net -cn+store.storeimages.cdn-apple.com -cn2&support-china.apple-support.akadns.net -cnsupport.apple.com -cn."swcatalog-cdn.apple.com.akadns.net -cnswcatalog.apple.com -cnswcdn.apple.com -cnswcdn.g.aaplimg.com -cn'swdist.apple.com.akadns.net -cnswdist.apple.com -cn+swscan-cdn.apple.com.akadns.net -cnswscan.apple.com -cn1%updates-http.cdn-apple.com.akadns.net -cn&updates-http.cdn-apple.com -cnvalid.apple.com -cn-!valid.origin-apple.com.akadns.net -cn<0www.apple.com.edgekey.net.globalredir.akadns.net -cn%www.apple.com.edgekey.net -cn www.apple.com -cn asus.com asus.com.cn -cn atlassian.com bitbucket.org statuspage.io -trello.com trellocdn.comaccbusiness.com -atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn -cn att.com att.jobs att.net -att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com -attcorp.cn -cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com -attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com -attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net -budatt.com -cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com -uverse.comwebhosting.com att-idns.net -attdns.com -attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com -dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com -diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.combandwagonhost.com bwh1.net bwh8.net  bwh88.net canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn -cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn -cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn -cn  cisco.com cisco.com.cn -cn -cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co -devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com -mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com -mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn -cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com -versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org -mearki.com meraki-go.com  meraki.hk merakigo.com -tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net clco.cc -cloudc.one cloudcone.com cloudcone.net -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.comaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com -nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org -atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com -facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com -faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com -fb.careers -fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com -fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com -fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net -freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com -groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com -redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net  aorus.com aoruszone.cn -cn gigabyte.cn -cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net godaddy.comx.co godaddy android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org -v8.dev v8project.org youtubeggpht.cn -cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com -youtube.ae -youtube.al -youtube.am -youtube.at -youtube.az -youtube.ba -youtube.be -youtube.bg -youtube.bh -youtube.bo -youtube.by -youtube.ca youtube.cat -youtube.ch -youtube.cl -youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve -youtube.cr -youtube.cz -youtube.de -youtube.dk -youtube.ee -youtube.es -youtube.fi -youtube.fr -youtube.ge -youtube.gr -youtube.gt -youtube.hk -youtube.hr -youtube.hu -youtube.ie -youtube.in -youtube.iq -youtube.is -youtube.it -youtube.jo -youtube.jp -youtube.kr -youtube.kz -youtube.la -youtube.lk -youtube.lt -youtube.lu -youtube.lv -youtube.ly -youtube.ma -youtube.md -youtube.me -youtube.mk -youtube.mn -youtube.mx -youtube.my -youtube.ng -youtube.ni -youtube.nl -youtube.no -youtube.pa -youtube.pe -youtube.ph -youtube.pk -youtube.pl -youtube.pr -youtube.pt -youtube.qa -youtube.ro -youtube.rs -youtube.ru -youtube.sa -youtube.se -youtube.sg -youtube.si -youtube.sk -youtube.sn youtube.soy -youtube.sv -youtube.tn -youtube.tv -youtube.ua -youtube.ug -youtube.uy -youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand -chromedclkgbizgle gmailgoogoog -googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca -google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn -cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw -google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com -466453.com abc.xyz adgoogle.net -admeld.comangulardart.org -api.ai -apigee.com appbridge.ca appbridge.io appbridge.it appspot.com -apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com -brotli.org bumpshare.com -bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org -chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com -foofle.com froogle.com fuchsia.dev  g-tun.comg.cn -cng.co g.dev -g.page gateway.dev -gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn -cn globaledu.org  gmail.com gmodules.com  gogle.com -gogole.comgonglchuangl.net -goo.gl -googel.com -googil.com  googl.comgoogle-syndication.com google.berlin -google.dev -google.net -google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn -cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn -cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com -googlr.com -goolge.com gooogle.com gridaware.app gsrc.io -gstatic.cn -cn gstatic.comgstaticcnapps.cn -cn -gsuite.com -gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo -oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org -picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.com -pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com -revolv.comridepenguin.com run.appsavethedate.foo -saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com -verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org -wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com -webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company -x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com -cnwww.recaptcha.net -cn265.com -cn2mdn.net -cn adservice.google.com -cnapp-measurement.com -cn beacons.gcp.gvt2.com -cnbeacons.gvt2.com -cnbeacons3.gvt2.com -cn c.admob.com -cn(c.android.clients.google.com -cn!cache.pack.google.com -cncheckin.gstatic.com -cn%clickserve.dartsearch.net -cn)clientservices.googleapis.com -cn)connectivitycheck.gstatic.com -cncorp.google.com -cn crl.pki.goog -cncsi.gstatic.com -cn dl.google.com -cndl.l.google.com -cndoubleclick.net -cn-!firebase-settings.crashlytics.com -cn fonts.googleapis.com -cnfonts.gstatic.com -cn google-analytics.com -cn googleadservices.com -cngoogleanalytics.com -cn!googlesyndication.com -cn googletagmanager.com -cn!googletagservices.com -cngtm.oasisfeng.com -cn!imasdk.googleapis.com -cn ocsp.pki.goog -cn, pagead-googlehosted.l.google.com -cn!pki-goog.l.google.com -cn recaptcha.net -cnredirector.gvt1.com -cn)safebrowsing-cache.google.com -cn'safebrowsing.googleapis.com -cn$settings.crashlytics.com -cn-!ssl-google-analytics.l.google.com -cnssl.gstatic.com -cn%toolbarqueries.google.com -cntools.google.com -cntools.l.google.com -cn$translate.googleapis.com -cn!update.googleapis.com -cn-!www-googletagmanager.l.google.com -cnwww.gstatic.com -cn  hinet.net csifund.org hkbn.com.hk hkbn.net -hkbnes.net jos.comspeedtest.com.hk -123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com -compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info -hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com -hp.com -hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net -hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com -hpfaqs.comhpfeedback.com -hpgift.com -hpgpas.comhpgraphicspartners.com  hpiie.org -hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com -hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com -hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com -hpstore.cn -cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com -hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.comibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn -cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn -cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt -altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com -intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn -cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com -niosii.com -niosii.netomekinteractive.com -omnitek.tv openamt.comopendroneid.orgoptanedifference.com -pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com -siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net -vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn -xscale.combarefootnetworks.com -lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com -lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net linkedin.com  licdn.com logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net imgsmail.ru mail.ru mycdn.me azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv  microsoft azure hotmail -office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com -m12.vc -aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com -binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com -ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com -gears5.com gearspop.comgearstactics.com -gfx.ms -gigjam.com hololens.com -hotmail.co hotmail.com -hotmail.eu hotmail.net hotmail.orghummingbird.ms -ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl -ingads.comintunewiki.comiotinactionevents.com -kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn -cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn -cn -msauth.netmschallenge2018.com -msecnd.net -msedge.net  msft.info msft.net msftauth.cn -cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com -msocdn.com -msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com -office.com -office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net -pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com -pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net -sfx.ms sharepoint.cn -cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com -techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com -userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net -wbd.ms what-fan.netwindows-int.net windows.com windows.net -windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com -winhec.com -winhec.net -yammer.com(dl.delivery.mp.microsoft.com -cn&download.windowsupdate.com -cn'bg.v4.a.dl.ws.microsoft.com -cn(bg4.v4.a.dl.ws.microsoft.com -cn2&cdn.marketplaceimages.windowsphone.com -cn cn.windowssearch.com -cn#ctldl.windowsupdate.com -cn#developer.microsoft.com -cndocs.microsoft.com -cn"download.microsoft.com -cn/#download.visualstudio.microsoft.com -cnfs.microsoft.com -cn(msgr.dlservice.microsoft.com -cn, msgruser.dlservice.microsoft.com -cn#officecdn.microsoft.com -cn&qh.dlservice.microsoft.com -cnsdx.microsoft.com -cn/#silverlight.dlservice.microsoft.com -cn, slupdate.dlservice.microsoft.com -cn, storeedgefd.dsx.mp.microsoft.com -cn&wl.dlservice.microsoft.com -cn&wscont1.apps.microsoft.com -cn&wscont2.apps.microsoft.com -cnwww.microsoft.com -cn&xb.dlservice.microsoft.com -cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net -lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw -nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com neuralink.com -geforce.cn -cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn -cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn -cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk -nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net  panasonic panasonic.cn -cn panasonic.com panasonic.jp technics.com 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hkairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org +ads +% + +CHINAPOWERchinapower.csis.org +_ +CATEGORY-WIKI-CNhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn +Œ +ESPN espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +' +ZEPLIN +zeplin.dev  zeplin.io +/ +ADGUARDadguard-vpn.com adguard.com + +FEEDLY +feedly.com + +QUALCOMMairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com uplinq.com wipower.comwirelessreach.com -brewmp.comqualcomm.sc.omtrdc.net  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn -cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.combarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +brewmp.comqualcomm.sc.omtrdc.net +L + +TEAMBITIONteambition.comteambition.netteambitionapis.com +œL +TLD-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup +olayan praxisapseek +vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci +hermesiwcjlc  lancaster lipsyloft mango  montblanc mrporter +netaporter +nextdirectnextnike oldnavy omega panerai  patagonia +piaget  piperlimepolo redstone +swatchaarp +abbott +abbvie aetna alcon +anthembms +boehringer caremore +cialis dabur  freseniusjnj merck mutuelle +sanofiaeg +airbus +alstom +aramco +blanco bosch +bostik +chesapeakechk crown +doosan +dupontflirfls flsmidth  gecompany grainger hitachi  honeywellifm ipirangajio komatsukoneksb  kuokgroup leclerclidl linde lottemanmtr reliance rexrothril rockwoolrwesandvikcoromant sandvik sapphiresca +schaeffler schmidt schwarzgroup schwarz senersewsncf statoil total +vanish +walter +warman weberweir woodsidezara zippo agakhanakdn +ansons +bharti +extraspace genting glean ikano +imamat  ladbrokes +livestrongmaif +mattel shell transformersvanawme astriumcern +emerck  hisamitsu lilly lundbeck lupin merckmsdmsdmtpc +otsuka +pfizer stadateva toray weather auspost deutschepostdhl epost fedex +pitneyaaa +abarthadac  alfaromeoaudi bentleybmw bridgestone bugatti buick cadillaccase +caseih  chevrolet chevy chrysler +datsun dodge +dunlop ferrarifiat  firestonefordgmc goodyear honda hyundai infiniti iveco +jaguarjeepkia lamborghini +lancia  landrover lexus lincoln maseratimini +mitsubishi mopar +newholland +nissanramseatsrt +suzuki +tatamotors +toyotatvs uconnect +volkswagen volvoaigo android apple bestbuy brother canondell digikey fujitsu  fujixerox  goldpointibm nikon nokia olympus  panasonic philips pioneer samsung sharpsony toshiba  yodobashi  allfinanzallfinanzberaterallfinanzberatungallyamericanexpressamexampanz banamex barclaycard barclaysbbtbbvabnl +bnpparibasbofa bradesco +capitalone cashbackbonuscbacfa chasecimb citadelciti commbank deloitte discover everbank fidelity hdfcbankhdfchsbcitaujcbjll jpmorganchase jpmorgankfhkpmg lacaixa lasalle lixil lplfinanciallplnab nadex netbanknorthwesternmutualopen +pictetpncpohl  pramerica +prudentialprupwcsaxosbiscbscor shriram softbank  statebank temasek +transunion ubankubs vanguardvisa wolterskluwerafamilycompany  aquarellediyduck +finish glade  homedepot  homegoods mrmuscleoffraid rightathome  scjohnsonaig allstateamericanfamily amfam amicaaxa chartis esurance farmers  goodhands guardian guardianlife iselect metlifemma +mutual +nationwide +nissaynorthlandinsurance +onyourside progressive redumbrella  statefarm +swiftcover thehartfordtiaatravelersinsurance  travelers travelguardtrvvig beats blockbusterbway netflix playstation showtimetab williamhillxboxasda bloomingdales +george  homesense justforulego macys  marshallsobiqvc safeway samsclub shopyourway staples +targetthd tiffany +tjmaxxtjx +tkmaxxvons walmartabb  accentureaceraco +active +airtel +amazonandaolawsaxis azure chatr +chrome cisco comcast +connectorscscdclkdish +docomodtvdwg emerson epson ericsson etisalat  fairwindsfido +flickr frogans frontierftrgbizgeaggeegle gmailgmogmx godaddygoog +googlegoogreeguge hangouthkt hotmailhtc +hughesieee iinet infosysinfy intel +intuitjavajcpjmpjprs juniperkddi +kindle +konamikpn lanxess liaison +lockermeo  microsoftmihmiimint mitekmit +mobily +mozaicmtn multichoice naspersnec neustar nexusnico +nortonntt +officeollo +oracle +orangeovh patchpayupccwqtel quest  richardli ricoh +rogers +sakurasaposassessfrshaw skolkovo skydrive skype sling smart stcgroupstc symantectatatcitdk telecity +telefonica terra translations  ultrabook unicornuol verisignvivavivo windows xfinity +xperia yahoo yamaxun +yandex yellowpages youtube +zappos +chanel clinique garnier  kerastase +kiehls lamer lancome +loreal +matrix +maybelline +natura origins +redkensvr barefoot beknown cityeatscookingchannel +cuisinella delmonte edekafage ferrero foodnetworkfood gallo heinz +kindermcd  mcdonalds pamperedchef +rocher +wilmarxn--3oq18vl8pn36axn--55qx5d8y0buji4b870uxn--5su34j936bgsgxn--b4w605ferd xn--cckwcxetd +xn--cg4bkixn--dkwm73cwpn xn--flw351exn--fzys8d69uvgmxn--hxt035cmppuelxn--hxt035czzpfflxn--j6w470d71isscxn--jlq480n2rgxn--jlq61u9w7bxn--kcrx77d1x4axn--kcrx7bb75ajk3bxn--mgba3a3ejtxn--mgba7c0bbn0axn--mgbaakc7dvfxn--mgbb9fbpob xn--ngbe9e0a xn--pgb3ceoj xn--qcka1pmcxn--w4r85el8fhu5dnra xn--w4rs40l avianca caravan changiairport cipriani clubmed delta firmdale +hilton hyatt kerryhotelskerrylogisiticskerryproperties marriott orientexpress  shangrila tradershotelstui +viking +virgin +webjetablecbre chintai  frontdoor +lefrakabc africamagicartebbc  canalpluscbncbsdstv +eurovisionfox +gallup globogotv guardianmediahbohgtvimdbitv +kyknetmnet movistar mzansimagicnhk nowtvsbs sevensky spiegel starhub +supersport theguardian travelchannelweatherchannel bauhaus latrobe +monashrmit +Á + CATEGORY-PORN bongacams.com +bcicdn.com bcrncdn.com +btt804.com +btt904.com +bttzyw.com +bttzyw.net e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org heydoga.com  heyzo.com cdnlab.live jable.tv +javbus.com javbus22.com javfinder.sh findercdn.me o0-2.com +javwide.tv javwide.comlivejasmin.com dditsadn.com dditscdn.com +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net +phncdn.com phprcdn.com pornhub.compornhubpremium.com scoreland.comcdn77.scoreuniverse.com  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com +ads xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youjizz.comyjcontentdelivery.com 0plkijj.vip  114av.xyz 16fhgdty.xyz 18novel.xyz +1jjdg2.vip +1jsa22.vip  1pondo.tv  51dh.site 520aa.tv 5278.cc +52hyse.com 54647.online 69story.com 69vj.com  721av.com +7mm.tv +85tube.com 91.51rmc.com +91porn.com 920share.com +a.91gay.me a.kslive.tv aavs.xyz  agzy1.com aibaobei.me aimei133.com airav.ccanimezilla.comasianpornmovies.com av01.tv  av1688.cc av6k.com avfox.cc  avgle.com +avinin.com +avmoo.cyou avn.com +avpanda.cc +avsee01.tv avseesee.com bangbros.com beeg.combesthentaitube.com brazzers.com +buzzav.com  caime.xyz calvappd.me cam4.comchaturbate.com cslpldyb.me  dkk37.comdownload.91porn005.medownload.i91av.org +dvh30n.vip eporner.comfanhaodian.comflirt4free.com follasian.com +gaypad.net  gouri.xyz  hanime.tv +hanime1.me  hegre.com hpjav.tv hqporner.com hsxhr.ccichineseporn.com  iijav.com  immxd.com isexlove.tw isexomega.tw jable.tvjapan-whores.comjapanesebeauties.net jav.guru jav01.cc +jav101.com  jav168.cc +jav321.com javcc.cc  javcc.com +javdoe.com javdove8.xyz  javfor.me javfull.net  javhd.com  javhd.pro javhd3x.com javhdfree.netjavlibrary.com javmost.com  javqd.com javynow.com  jgg18.xyz jiayoulu.com jinnaju.com jjdong7.com +johren.net kindgirls.com kissjav.com kphimsex.net  love7.xyz lp99.pw lsnzxzy1.com lubetube.com +lululu.one manyvids.com mdlf.xyz myavfun.commydirtyhobby.commyfreecams.com nekoxxx.com netflav.com nhentai.netohyeah1080.com +onejav.comosakamotion.netp3.csgfnmdb.com papalah.com  pigav.com  popjav.tv pornbest.org +pornhd.com porntea.com  press.vin +pyhapp.com +qingse.one  r18lu.comrealitykings.com redtube.com +rule34.xxx seqingx.com seselah.com sextop1.net +sexzy4.com +soirt4.funsouth-plus.net spankbang.com stripchat.com +sub147.com  swag.live t66y.comtbr.tangbr.net theav.cctheporndude.com +thisav.com thtmod1.com +tkb008.xyztokyomotion.net  tssp.best  tube8.comtubetubetube.com upjav.ccvaginacontest.com vgg8.com vjav.comwatchjavonline.com wuso.me  wzmyg.com  x-art.com x18r.com  x99av.com  xo104.com  xtube.com  youav.com youporn.com +. +SXL mysxl.cn +sxl.cn  sxlcdn.cn +i +SNAP sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com -snapkit.co playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl -sony.co.cr -sony.co.id -sony.co.in -sony.co.jp -sony.co.kr -sony.co.nz -sony.co.th -sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com -sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net -spacex.comboringcompany.com x.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com -twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.couber-assets.com uber.com ubereats.com -oath.cloud oath.com ouroath.comstatic-verizon.com -uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com -xo.com mvk.com userapi.com  vk-cdn.me -vk-cdn.net vk-portal.net vk.cc -vk.com  vk.design vk.link vk.me vkcache.com vkgo.app -vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netg-technology.com -sandisk.ae -sandisk.it -sandisk.cn -cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw -sandisk.de -sandisk.es -sandisk.fr -sandisk.hk -sandisk.id -sandisk.in -sandisk.nl -sandisk.sg -wd.com wdc.comwesterndigital.com -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.comxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il -yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md -yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net -yandex - -FIGMA  figma.com -" - HUBBLEPHONEhubblephone.com +snapkit.co + +CODE code.org +j +BAHAMUT gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net +ƒ + NETEASE-ADSanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads +9 +NIKKEI +nikkei.com  nikkei.jp nikkei.co.jp +Q + SOURCEFORGEsourceforge.comsourceforge.net +sf.net fsdn.com +$ +TAOMEE +61.com +taomee.com +' +HACPAI +hacpai.com  ld246.com +, +HITUN hitun.ioxn--90wwvt03e.com +æ + SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch +Ì + THEGUARDIAN theguardiandev-guardianapis.comdev-theguardian.com +gu-web.netguardianapis.comguardianapps.co.uk +guim.co.uktheguardian.comtheguardiandns.com +” +DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to +B +HASKELL haskell.orghaskellstack.org stackage.org +×! + +MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.cl mastercard.cn +cnmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cn +cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.iemastercard.inc mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com idservice.incinclusivegrowthscore.com findacard.com mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.com paypass.netpieceofplastic.compredictivetechnologies.com priceless.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.cacashpassport.co.zacashpassport.comcashpassport.com.brcashpassport.netcorporatecashpassport.comicashpassport.com.mxintercamcashpassport.com.mx!multicurrencycashpassport.comshinhangmc.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.com +nab.com.aunabtravellercard.com.au 53world.com53worldsweeps.comlovethiscity.commastercardmoments.compahabicilemezsurprizler.com priceless.compriceless.com.cn +cn priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.cn +cnpricelessbeijing.com#pricelessbeijing.com.cn +cnpricelesshongkong.compricelesshonolulu.compricelesspick.compricelesssantiago.compricelesssydney.compricelesssurprises.compricelesstoronto.capricelesstv.com simplify.comsimplifycommerce.comcashpassportglobe.comgwktravelex.nl travelex.be travelex.bh travelex.catravelex.co.intravelex.co.jptravelex.co.nztravelex.co.uk travelex.comtravelex.com.autravelex.com.cn +cntravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.tr travelex.de travelex.fr travelex.it travelex.qatravelexae.comtravelexch.comtravelexmoneycard.combidvestbank.co.zaworldcurrencycard.co.zanab.demdex.net&"nationalaustraliaban.tt.omtrdc.net + +OSDN osdn.net +× +UMENG mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads +z +CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org +É +LG +lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com +lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net ÞU MICROSOFT azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn @@ -5988,784 +10128,8 @@ yammer.com(dl.delivery.mp.microsoft.com cnwww.microsoft.com cn&xb.dlservice.microsoft.com cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net -× -SOHU-ADSadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads -" - ADBLOCKPLUSadblockplus.org -U -DOWJONESdjreprints.com dowjones.com dowjones.iodowjoneson.com -y -GANNETTgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.com -- -LANTERNgetlantern.org -lantern.io -% -NEOWIN neow.in -neowin.net -, -PAOFUYUN paofu.cloud paofuyun.me -< -SHOWTIMEANYTIMEshowtimeanytime.com showtime.com - -BINANCEbinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com -I -MADSHI -madshi.net  madvr.com  madvr.net madvrlabs.llc -C -MAOCLOUD -maoyun.commaoyuncloud.cnmaoyuncloud.com -Í - TENCENT-ADS ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -Ô -VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com -­ - IQIYI-ADSa.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads -‹ -STEAMplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.net -2 -INNER-ACTIVE-ADSinner-active.mobi -ads -< -QUIP quip-cdn.com quip.comquipelements.com -@ -REUTERS reuters.com -reuters.tvreutersmedia.net -° - EPICGAMESbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn -' -HACPAI -hacpai.com  ld246.com -· -HANYI hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cn -Ÿ -MUCINEX -mucinex.ca -mucinex.cn mucinex.co.nz mucinex.commucinex.com.cn mucinex.net -mucinex.tvmucinexprofessional.com -ª -NIKEnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com -eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com -gonike.comhandbags-nike.comhightopnikes.com -idnike.cominikesneakers.com just-do-it.cn -cn justdoit.uskicksnike1.comkidsnikeshoes.com -mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn -cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn -cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com -nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn -cnnikebetterworld.com"nikebetterworld.com.cn -cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com -nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn -cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org -nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn -cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn -cn nikeid.com.cn -cnnikeidshoes.com nikeinc.comnikeinc.com.cn -cnnikeincchemistry.comnikeinstock.com -nikeit.comnikeitalia.com nikeitaly.com -nikekd.com nikekid.com -nikelab.cn -cnnikelab.com.cn -cn nikelink.comnikeliuxiang.cn -cnnikeliuxiang.comnikeliuxiang.com.cn -cn nikelives.comnikelunarglide.com nikemall.cn -cnnikemall.com.cn -cnnikemarketing.com nikenews.com -niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn -cnnikerunclub.com.cn -cnnikerunner.comnikerunning.com.cn -cnnikerunningshoes.com -nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn -cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh -swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e -= -SIGNAL -signal.art -signal.orgsignalusers.org -ÿ -TELEGRAM contest.com  graph.orgquiz.directoryt.me tdesktop.com -telega.one -telegra.ph telegram.dog telegram.me telegram.orgtelegram.space -telesco.pe -tg.dev tx.meusercontent.dev -k -DOUYU  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com -@ - GLOBALVOICESglobalvoices.orgglobalvoicesonline.org -Í -ORIGIN dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.com -3 -PPTV  pplive.cn -pplive.com pptv.com -, -SECOM secom.co.jpsecomtrust.net -& - STEAMUNLOCKEDsteamunlocked.net -4 - ARCHLINUX archlinux.orgarchlinuxarm.org -œ -FINISH$dishwashingexpert.com.cn -cn  finish.at  finish.bg finish.co.kr finish.co.nz finish.co.uk finish.co.za finish.com.cn -cn finish.com.hr finish.com.tr  finish.de  finish.es  finish.fr  finish.gr  finish.hu  finish.lv  finish.pl  finish.pt  finish.ro  finish.si  finish.skfinisharabia.comfinishbrasil.com.brfinishdishwashing.cafinishdishwashing.com finishinfo.be finishinfo.clfinishinfo.comfinishinfo.com.arfinishinfo.com.au finishinfo.cz finishinfo.fi finishinfo.it finishinfo.jp finishinfo.nl finishinfo.no finishinfo.ru finishinfo.sefinishkilpailu.fi finishwin.beyarininsuyu.com -) -LINGUEE linguee.com  deepl.com - -EGGHEAD -egghead.io -x -FASTLY -fastly.com -fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com -zencdn.net -> -UBUNTU -ubuntu.com -ubuntu.netubuntuforums.org -E - HIIDO-ADSmlog.hiido.com -adsylog.hiido.com -ads -J -HUPUhoopchina.com.cn hupu.com hupucdn.com  shihuo.cn -) -LIANJIA lianjia.com  ljcdn.com -9 -YOUZAN -youzan.com yzcdn.cn youzanyun.com -/ - SNAPCRAFT snapcraft.io snapstore.io - -XINGRZ  xingrz.me -t - CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org - - INOREADER inoreader.com -  -ORACLE -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net -ˆ -SINA  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -M - -STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com -6 -4CHAN 4cdn.org  4chan.org 4channel.org -G -ASAHI  asahi.com asahicom.jpasahishimbun.sc.omtrdc.net -3 -ENTRUST entrust.netentrustdatacard.com - -GITV gitv.cn gitv.tv - -WINDY  windy.com -8 - -CYBERTRUSTcybertrust.co.jpcybertrust.ne.jp -* -DUOWAN -duowan.com dwstatic.com - -MIRAHEZE miraheze.org -N -THETYPE thetype.cloud -cn thetype.comtypeisbeautiful.com -( -UCLOUD  ucloud.cn ufileos.com -5 -V2RAY  v2ray.com -v2ray.cool  v2fly.org - -FARFETCHfarfetch-apps.comfarfetch-contents.com farfetch.cn -cn farfetch.comfarfetch.com.cn -cn farfetch.netfarfetch.net.cn -cn  fflnk.net -B -MITmit mit.edu mit.netmitpressjournals.org - -MEWE mewe.com -^ - APPLE-ADSiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads -f -COURSERAcoursera-for-business.orgcoursera.community coursera.help coursera.org -f - TAYLORFRANCIS tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -E -INFOWARS banned.video infowars.cominfowarsmedia.com -ã -TESLA solarcity.comtesla.cn -cn  tesla.com tesla.com.cn -cnteslamotors.cn -cnteslamotors.comteslamotors.com.cn -cntesla-cdn.thron.cn -cntesla-cdn.thron.com -­ - -BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn -„ -DEDAO biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com -F -DEEPIN  deepin.cn -deepin.com  deepin.io -deepin.org -? -GEETEST geetest.com#geetest.datasink.sensorsdata.cn -¥ -LYSOL lizol.co.in lysol.ca lysol.cllysol.cn -cn lysol.co.cr  lysol.com lysol.com.cn -cn lysol.com.mx  lysol.net -? -BOOTCSS bootcss.com -bootcdn.cnphpcomposer.com -7 - BOOTSTRAPbootstrapcdn.comgetbootstrap.com -W -FLICKR -flickr flic.kr -flickr.com -flickr.netstaticflickr.com - -STAGE1ST saraba1st.com -, -BANDCAMP bandcamp.com -bcbits.com -¢ -CITIC citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com -¥ - MEADJOHNSONenfinitas.com.cn -cnmeadjohnson.commeadjohnson.com.cn -cnmeadjohnson.com.hkmeadjohnson.com.twmeadjohnson.net - -ABEMA abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net - -DOOM9  doom9.org - -TSQUARE -tsquare.tv -< - BITSQUARE bisq.io bisq.network bitsquare.io -î? - CATEGORY-DEV anaconda.com anaconda.org conda.io android.comandroidify.comappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net archlinux.orgarchlinuxarm.orgbootstrapcdn.comgetbootstrap.combraventures.com braveux.com -compass.isfightforux.comforthebadge.comstockagainstphotography.com launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io -ubuntu.com -ubuntu.netubuntuforums.org canonical.com dart.dev dartlang.org dartpad.dev -debian.org -dotdeb.orgcompose-spec.io -docker.com  docker.io embed.ly embedly.com playerjs.ioaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com fastlane.cifastlane.tools getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org flathub.org flatpak.org flutter.devflutterapp.comfontawesome.comfortawesome.com  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com gitbook.com -gitbook.io npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io haskell.orghaskellstack.org stackage.org brew.shhomebrew.bintray.com -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.orgjava java.com java.net jetbrains.com jetbrains.net datalore.iokotlinlang.org  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net -cn kubernetes.io -k8s.ioadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net mongodb.com mongodb.org  nginx.com  nginx.org openwrt.orglede-project.org perl.org cpan.org metacpan.orgpolymer-project.orgpolymerproject.org  pycon.org pypa.io pypi.io pypi.org -python.orgpythonhosted.org qt.ioqt-project.orgreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org redis.io redislabs.com remirepo.net ruby-lang.org rubygems.orgscala-lang.org scala-sbt.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.commystrikingly.comstrikingly.comstrikinglycdn.com -kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.orglfai.foundationlinuxfoundation.org  unity.com unity3d.com!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -v8.dev v8project.org vim.orgxda-developers.com xda-cdn.comalpinelinux.org -apache.org atom.io -badgen.net bitvise.com  cdnjs.com -centos.orgchocolatey.org clojure.org -cnpmjs.org -cygwin.com -cython.org  deno.landelixir-lang.org -elrepo.org -erlang.org -ffmpeg.org freebsd.org -gentoo.orggetcomposer.org git-scm.com gnu.orggreenend.org.uk -ius.io -jenkins.io -js.org jupyter.org kali.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mobatek.net  mysql.com  nixos.orgnodesource.comnotepad-plus-plus.org -openai.com openresty.org openssl.org opensuse.org packagist.org pcre.org phantomjs.org php.net  putty.orgpostgresql.org r-project.orgraspberrypi.org raspbian.org rpmfusion.orgscientificlinux.org scoop.sh -shields.io -sqlite.orgsublimetext.com termius.com  unpkg.com videojs.com videolan.org wireshark.org x.org xposed.info yarnpkg.com zsh.org -1 - LETSENCRYPT  lencr.orgletsencrypt.org -€ -GOOGLE android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org -v8.dev v8project.org youtubeggpht.cn -cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com -youtube.ae -youtube.al -youtube.am -youtube.at -youtube.az -youtube.ba -youtube.be -youtube.bg -youtube.bh -youtube.bo -youtube.by -youtube.ca youtube.cat -youtube.ch -youtube.cl -youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve -youtube.cr -youtube.cz -youtube.de -youtube.dk -youtube.ee -youtube.es -youtube.fi -youtube.fr -youtube.ge -youtube.gr -youtube.gt -youtube.hk -youtube.hr -youtube.hu -youtube.ie -youtube.in -youtube.iq -youtube.is -youtube.it -youtube.jo -youtube.jp -youtube.kr -youtube.kz -youtube.la -youtube.lk -youtube.lt -youtube.lu -youtube.lv -youtube.ly -youtube.ma -youtube.md -youtube.me -youtube.mk -youtube.mn -youtube.mx -youtube.my -youtube.ng -youtube.ni -youtube.nl -youtube.no -youtube.pa -youtube.pe -youtube.ph -youtube.pk -youtube.pl -youtube.pr -youtube.pt -youtube.qa -youtube.ro -youtube.rs -youtube.ru -youtube.sa -youtube.se -youtube.sg -youtube.si -youtube.sk -youtube.sn youtube.soy -youtube.sv -youtube.tn -youtube.tv -youtube.ua -youtube.ug -youtube.uy -youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand -chromedclkgbizgle gmailgoogoog -googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca -google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn -cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw -google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com -466453.com abc.xyz adgoogle.net -admeld.comangulardart.org -api.ai -apigee.com appbridge.ca appbridge.io appbridge.it appspot.com -apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com -brotli.org bumpshare.com -bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org -chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com -foofle.com froogle.com fuchsia.dev  g-tun.comg.cn -cng.co g.dev -g.page gateway.dev -gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn -cn globaledu.org  gmail.com gmodules.com  gogle.com -gogole.comgonglchuangl.net -goo.gl -googel.com -googil.com  googl.comgoogle-syndication.com google.berlin -google.dev -google.net -google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn -cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn -cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com -googlr.com -goolge.com gooogle.com gridaware.app gsrc.io -gstatic.cn -cn gstatic.comgstaticcnapps.cn -cn -gsuite.com -gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo -oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org -picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.com -pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com -revolv.comridepenguin.com run.appsavethedate.foo -saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com -verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org -wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com -webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company -x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com -cnwww.recaptcha.net -cn265.com -cn2mdn.net -cn adservice.google.com -cnapp-measurement.com -cn beacons.gcp.gvt2.com -cnbeacons.gvt2.com -cnbeacons3.gvt2.com -cn c.admob.com -cn(c.android.clients.google.com -cn!cache.pack.google.com -cncheckin.gstatic.com -cn%clickserve.dartsearch.net -cn)clientservices.googleapis.com -cn)connectivitycheck.gstatic.com -cncorp.google.com -cn crl.pki.goog -cncsi.gstatic.com -cn dl.google.com -cndl.l.google.com -cndoubleclick.net -cn-!firebase-settings.crashlytics.com -cn fonts.googleapis.com -cnfonts.gstatic.com -cn google-analytics.com -cn googleadservices.com -cngoogleanalytics.com -cn!googlesyndication.com -cn googletagmanager.com -cn!googletagservices.com -cngtm.oasisfeng.com -cn!imasdk.googleapis.com -cn ocsp.pki.goog -cn, pagead-googlehosted.l.google.com -cn!pki-goog.l.google.com -cn recaptcha.net -cnredirector.gvt1.com -cn)safebrowsing-cache.google.com -cn'safebrowsing.googleapis.com -cn$settings.crashlytics.com -cn-!ssl-google-analytics.l.google.com -cnssl.gstatic.com -cn%toolbarqueries.google.com -cntools.google.com -cntools.l.google.com -cn$translate.googleapis.com -cn!update.googleapis.com -cn-!www-googletagmanager.l.google.com -cnwww.gstatic.com -cn -, - -HOTJAR-ADSstatic.hotjar.com -ads - -WEBFLOW webflow.com -# -V8 -v8.dev v8project.org -Ý -VOLVO volvodynafleetonline.comescandinavia-arg.comindependentoperatorcn.com road-crew.com udfs.com vfsco.at vfsco.be vfsco.bg vfsco.ca vfsco.ch vfsco.cl vfsco.co.uk vfsco.co.za  vfsco.com vfsco.com.au vfsco.com.br vfsco.com.cn -cn vfsco.com.tr vfsco.cz vfsco.de vfsco.dk vfsco.ee vfsco.es vfsco.fi vfsco.fr vfsco.hu vfsco.ie vfsco.in vfsco.it vfsco.jp vfsco.kr vfsco.lt vfsco.lv vfsco.mx vfsco.nl vfsco.no vfsco.pe vfsco.pl vfsco.ro vfsco.ru vfsco.se vfsco.sk vfsco.us vgcareers.netvolvo-truck.nl volvo.cavolvo.cn -cn  volvo.com volvo.com.cn -cn volvo.sevolvobrandshop.com volvobuses.at volvobuses.be volvobuses.ca volvobuses.ch volvobuses.covolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zavolvobuses.comvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.tw volvobuses.de volvobuses.dk volvobuses.es volvobuses.fi volvobuses.fr volvobuses.hk volvobuses.hu volvobuses.in volvobuses.it volvobuses.jo volvobuses.kr volvobuses.ma volvobuses.mx volvobuses.my volvobuses.no volvobuses.om volvobuses.ph volvobuses.pk volvobuses.pl volvobuses.ru volvobuses.se volvobuses.sg volvobuses.tn volvobuses.us volvoce.comvolvodefense.com volvogroup.be volvogroup.cn -cnvolvogroup.comvolvogroup.com.brvolvogroup.com.cn -cn volvogroup.de volvogroup.fr volvogroup.jp volvogroup.kr volvogroup.mx volvogroup.nl volvogroup.pe volvogroup.pl volvogroup.ru volvogroup.sevolvogrouptruckcenter.nlvolvomerchandise.comvolvopenta.comvolvopenta.com.br volvopenta.de volvopenta.es volvopenta.fr volvopenta.it volvopenta.nl volvopenta.se volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.ukvolvotrucks.co.nzvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwvolvotrucks.comvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.cn -cnvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eevolvotrucks.esvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvolvotrucks.mavolvotrucks.mdvolvotrucks.mkvolvotrucks.mnvolvotrucks.myvolvotrucks.netvolvotrucks.nlvolvotrucks.novolvotrucks.pevolvotrucks.phvolvotrucks.pkvolvotrucks.plvolvotrucks.psvolvotrucks.qavolvotrucks.rovolvotrucks.rsvolvotrucks.ruvolvotrucks.sevolvotrucks.sgvolvotrucks.sivolvotrucks.skvolvotrucks.tmvolvotrucks.tnvolvotrucks.uyvolvotruckcenter.bevolvotruckcenter.dkvolvotruckcenter.esvolvotruckcenter.fivolvotruckcenter.itvolvotruckcenter.krvolvotruckcenter.kzvolvotruckcenter.nlvolvotruckcenter.novolvotruckcenter.sevolvotruckrental.beudtrucksmeena.com -É -LETV-ADS#api.game.letvstore.com -ads ark.letv.com -ads dc.letv.com -adsdev.dc.letv.com -ads fz.letv.com -ads g3.letv.com -adsletv.allyes.com -adsminisite.letv.com -adsmsg.m.letv.com -adsn.mark.letv.com -adsplog.dc.letv.com -adspro.hoye.letv.com -ads pro.letv.com -ads stat.letv.com -ads"static.app.m.letv.com -ads - -LINUX  linux.org -· -ROCKSTARrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.net -B - LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com - -NODEJS -nodejs.org -Ÿ -QIHOO360 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn f PHOENIX  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com -G -TEX ctan.orglatex-project.org -miktex.org tug.org -7 -AMD amd.comamdfanstore.com -radeon.com -/ -REALTYPErealtype.co.jp realtype.jp -Ü -VANISHo2action.co.krpowerofresolve.capowerofresolve.comspraynwash.com  vanish.at  vanish.be  vanish.ch  vanish.cl vanish.cn -cn vanish.co.id vanish.co.il vanish.co.in vanish.co.nz vanish.co.uk vanish.co.za vanish.com.ar vanish.com.br vanish.com.co vanish.com.hr vanish.com.mx vanish.com.my vanish.com.pe vanish.com.sg vanish.com.tr  vanish.de  vanish.dk  vanish.es  vanish.fi  vanish.fr  vanish.hu  vanish.ie  vanish.it  vanish.nl  vanish.no  vanish.pl  vanish.pt  vanish.ro  vanish.ru  vanish.se  vanish.si  vanish.skvanisharabia.comvanishbancaseulook.com.brvanishcentroamerica.com vanishinfo.czvanishstains.comvanishstains.com.au -¤ - SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads  TENCENT dns.pub  dnsapi.cn  dnspod.cn dnspod.com dnspod.com.cn @@ -6808,2557 +10172,9 @@ tenpay.com wechat.com wegame.com wegame.com.cn weiyun.com alloyteam.com imweb.io ivweb.io -«X -FACEBOOKaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com -nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org -atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com -facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com -faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com -fb.careers -fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com -fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com -fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net -freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com -groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com -redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net - - -SKILLSHAREskillshare.com -¥ -YUEWEN -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -² -SAMSUNG samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn -cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com -- -ASUS asus.com asus.com.cn -cn - -PARLER -parler.com -$ -GITEE  gitee.com gitee.io -µ -HUFFPOSThuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com -N -SEASUNseasungames.com xishanju.com xoyo.com testplus.cn -‰ - -APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com - - -CODECADEMYcodecademy.com -@ -HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com -+ -MONGODB mongodb.com mongodb.org -9 -ABCabc-studios.com abc.com edgedatg.com -# - MOPUB-ADS mopub.com -ads -Ð -NEWSCORPbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com -nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au -news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au -nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.uk -— -WALMART walmart wal-mart.com -wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com -wmt.co -í -CATEGORY-CRYPTOCURRENCY asproex.comasproexapi.combinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com bitflyer.com bitflyer.jp bisq.io bisq.network bitsquare.io coinone.co.krcoinonecore.comcoinonecorp.com -devcon.orgethereum.foundation ethereum.org -hbabit.com -hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.comlocalbitcoins.comlocalbitcoinschain.com -zb.app -zb.com zb.io zb.live -bitbank.cc bitcoin.org bitfinex.com -bitmex.com bitquick.co bitstamp.net bittrex.com btcbox.co.jp -cex.io coinbase.com dogecoin.com -kraken.com okex.com -paxful.com -Á - CATEGORY-PORN bongacams.com -bcicdn.com bcrncdn.com -btt804.com -btt904.com -bttzyw.com -bttzyw.net e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org heydoga.com  heyzo.com cdnlab.live jable.tv -javbus.com javbus22.com javfinder.sh findercdn.me o0-2.com -javwide.tv javwide.comlivejasmin.com dditsadn.com dditscdn.com -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net -phncdn.com phprcdn.com pornhub.compornhubpremium.com scoreland.comcdn77.scoreuniverse.com  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com -ads xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youjizz.comyjcontentdelivery.com 0plkijj.vip  114av.xyz 16fhgdty.xyz 18novel.xyz -1jjdg2.vip -1jsa22.vip  1pondo.tv  51dh.site 520aa.tv 5278.cc -52hyse.com 54647.online 69story.com 69vj.com  721av.com -7mm.tv -85tube.com 91.51rmc.com -91porn.com 920share.com -a.91gay.me a.kslive.tv aavs.xyz  agzy1.com aibaobei.me aimei133.com airav.ccanimezilla.comasianpornmovies.com av01.tv  av1688.cc av6k.com avfox.cc  avgle.com -avinin.com -avmoo.cyou avn.com -avpanda.cc -avsee01.tv avseesee.com bangbros.com beeg.combesthentaitube.com brazzers.com -buzzav.com  caime.xyz calvappd.me cam4.comchaturbate.com cslpldyb.me  dkk37.comdownload.91porn005.medownload.i91av.org -dvh30n.vip eporner.comfanhaodian.comflirt4free.com follasian.com -gaypad.net  gouri.xyz  hanime.tv -hanime1.me  hegre.com hpjav.tv hqporner.com hsxhr.ccichineseporn.com  iijav.com  immxd.com isexlove.tw isexomega.tw jable.tvjapan-whores.comjapanesebeauties.net jav.guru jav01.cc -jav101.com  jav168.cc -jav321.com javcc.cc  javcc.com -javdoe.com javdove8.xyz  javfor.me javfull.net  javhd.com  javhd.pro javhd3x.com javhdfree.netjavlibrary.com javmost.com  javqd.com javynow.com  jgg18.xyz jiayoulu.com jinnaju.com jjdong7.com -johren.net kindgirls.com kissjav.com kphimsex.net  love7.xyz lp99.pw lsnzxzy1.com lubetube.com -lululu.one manyvids.com mdlf.xyz myavfun.commydirtyhobby.commyfreecams.com nekoxxx.com netflav.com nhentai.netohyeah1080.com -onejav.comosakamotion.netp3.csgfnmdb.com papalah.com  pigav.com  popjav.tv pornbest.org -pornhd.com porntea.com  press.vin -pyhapp.com -qingse.one  r18lu.comrealitykings.com redtube.com -rule34.xxx seqingx.com seselah.com sextop1.net -sexzy4.com -soirt4.funsouth-plus.net spankbang.com stripchat.com -sub147.com  swag.live t66y.comtbr.tangbr.net theav.cctheporndude.com -thisav.com thtmod1.com -tkb008.xyztokyomotion.net  tssp.best  tube8.comtubetubetube.com upjav.ccvaginacontest.com vgg8.com vjav.comwatchjavonline.com wuso.me  wzmyg.com  x-art.com x18r.com  x99av.com  xo104.com  xtube.com  youav.com youporn.com - -GEEKPARK geekpark.net -Ì -NVIDIA -geforce.cn -cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn -cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn -cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk -nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net -J -36KR36dianping.com 36kr.com 36krcdn.com 36krcnd.com -% -CDN77  cdn77.com  cdn77.org -% -NGINX  nginx.com  nginx.org -i -ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -— - GETTYIMAGESgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chgettyimages.co.jpgettyimages.co.nzgettyimages.co.ukgettyimages.comgettyimages.com.augettyimages.com.brgettyimages.com.mxgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.se -© -GOOGLE-REGISTRYcharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4c -ß -OCULUS binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com - -0X0 -0x0.st -Z -PICSEE pics.ee  picsee.co -picsee.pro pise.pw pros.ee -pse.is -R -ARPHIC -arphic.com arphic.com.cn arphic.com.twifontcloud.com -‘ -KUAISHOU gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads -× -OPPO coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com -Í - -CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflare.netcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.one  pages.devtrycloudflare.comvideodelivery.net  warp.plus workers.dev - - -QINGTINGFM qingting.fm -@ -JQUERY -jquery.comjquerymobile.com jqueryui.com - -PINGPE ping.pe -¡ -SHOPIFY myshopify.com shop.app shopify.com shopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com -$ -CSDN csdn.net -csdnimg.cn -* -HKOPENTV hkopentv.com fantv.hk -¶ - APPLE-UPDATEappldnld.apple.com gg.apple.comgnf-mdn.apple.comgnf-mr.apple.com gs.apple.com ig.apple.commesu.apple.comns.itunes.apple.comoscdn.apple.comosrecovery.apple.com skl.apple.comswcdn.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.com xp.apple.com -# -EDX edx.org edx-cdn.org -, -MATTERS matters.news matters.one -' - WTEAM-ADS ads.wteam.xyz -ads -ß - CANONICAL launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io -ubuntu.com -ubuntu.netubuntuforums.org canonical.com -Ì -EA dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.net -< -NGA -nga.cn 178.com -ngabbs.com ngacn.cc - -TIPDM -tipdim.org -¹ -UBI ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com -cn -”$ -CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com -knovel.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com -apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -aclweb.org acm.org acs.org altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org -nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu -zenodo.org -: -ESRI -arcgis.comarcgisonline.com esri.com -a -NOW now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -{ -OREILLY oreil.ly oreilly.comoreilly.com.cn -cnoreilly.revieworeillystatic.com -orl.ly -2 -REABBLE -reabble.cn -cn reabble.com -+ -FORBES -forbes.com forbesimg.com -~ -GITLAB -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com -7 -PGYER  pgyer.com -tracup.com frontjs.com - -WIKIHOW wikihow.com - -QUANTIL quantil.com -‘ -SUPERSONIC-ADSsupersonic.com -adssupersonicads.com -ads -ssacdn.com -ads)supersonicads-a.akamaihd.net -ads -2 -YNET ynet.cn ynet.com ynet.com.cn -k - CHEETAHMOBILE cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.com -U - CLEARASIL clearasil.cn -cnclearasil.com.cn -cn clearasil.us -b - ECONOMIST economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com -, -HITUN hitun.ioxn--90wwvt03e.com -– -NYTIMES nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com - -4399 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com -ç - FACEBOOK-DEVaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com -g - READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org -% -RUMBLE rmbl.ws -rumble.com -7 -VANCL  vancl.com vanclimg.com  vcimg.com -Ç -YAHOO -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com - -DMZJ dmzj.com -a -LE -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com - -MZED mzed.com -6 - RUBYCHINAruby-china.orgrubyconfchina.org -k -SLING dishworld.comslinginternational.com  sling.commovenetworks.com -movetv.com -¡ - BYTEDANCE  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com - - -CUGBONLINE cugbonline.cn -Á: -EBAY21centuryaccess.com4ebaytraders.com adcommerce.cn -cn adcommerce.tv appforebay.cn -cnappsonebay.net -asebay.com -baazee.com -bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn -cn"connectcommerce.com.cn -cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn -cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn -cncyber-bay.com.cn -cncyber-bay.info cyber-bay.org -dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn -cn -ebay.co.nz -ebay.co.uk -ebay.co.ve -ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn -cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn -cn ebay.nl ebay.org ebay.org.cn -cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn -ebay.yn.cn -cn -ebay.zj.cn -cn -ebay25.com -ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn -cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com -ebayca.com -ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn -cnebayclassifieds.com"ebayclassifieds.com.cn -cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com -ebayde.com ebaydesc.cn -cnebaydesc.com.cn -cnebaydlassifieds.com -ebaydns.cn -cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn -cnebayenterprise.com!ebayenterprise.com.cn -cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com -ebayit.comebayjewelry.com ebayjob.com -ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn -cnebaymotors.comebaymotors.com.cn -cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com -ebayon.com -ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn -cnebaypedia.com.cn -cnebayprivacycenter.com -ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn -cnebayshopping.com.cn -cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn -cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn -cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com -ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn -cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net -myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn -cn prostores.comprostores.com.cn -cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com -svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn -cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com -gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn -cnkijijidns.com.cn -cnkijijiforbusiness.ca -kijijii.ca kijijiraps.ca kijji.ca -kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn -cn -q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn -cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com -nexcat.com nexpart.com -nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.com -$ -SCMP scmp.com -i-scmp.com -æ - SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch -3 - -CITIZENLAB citizenlab.cacitizenlab.org -– - SOUNDOFHOPE bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com -9 - SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net -H -BTTZYW -btt804.com -btt904.com -bttzyw.com -bttzyw.net -4 -MAILRU imgsmail.ru mail.ru mycdn.me -S - OGURY-ADS ogury.com -ads -presage.io -adsogury.co -ads -S - UNITY-ADS!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -Ÿ -PIXNET pimg.twpixanalytics.com  pixfs.netpixinsight.com.tw  pixnet.cc -pixnet.net -pixnet.pro  pixnet.tw -pixplug.in -8 -TARGET -target -target.comtargetimg1.com - -115 115.com -$ -AFP afp.com afpforum.com -£ -CATEGORY-MEDIA-CN36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.com -9 -EMBEDLY embed.ly embedly.com playerjs.io -² -MONOTYPEfontexplorerx.com  fonts.com  fonts.net fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com linotype.com myfonts.com myfonts.net monotype.commonotypeimaging.com bitstream.com itcfonts.com - -TGBUS  tgbus.com -. -KUAIKAN kkmh.comkuaikanmanhua.com -ç -BINGbing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn -+ -BOSLIFE boslife.biz boslife.net -- -C-SPAN -c-span.orgc-spanvideo.org - -FREENODE freenode.net -. -OP op.ggopgg-static.akamaized.net -é -ATTaccbusiness.com -atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn -cn att.com att.jobs att.net -att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com -attcorp.cn -cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com -attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com -attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net -budatt.com -cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com -uverse.comwebhosting.com att-idns.net -attdns.com -attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com -dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com -diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.com -r - LAUNCHPAD launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org -7 -SCP scp-wiki.net  scpdb.org scpwiki.com -Q -SSRCLOUDairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com -D -YY -duowan.com dwstatic.com -yy.com yystatic.com -H -COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net - - FASTSTONE faststone.org -: - SOFTETHER softether.orgsoftether-download.com - - BITWARDEN bitwarden.com -» - MCDONALDSmcd  mcdonalds4008-517-517.cn -cnaboutmcdonalds.comhappymeal.co.nzhappymeal.com.au mcd.commcdelivery.co.idmcdelivery.co.krmcdelivery.com.aumcdelivery.com.mymcdelivery.com.sgmcdelivery.com.twmcdindonesia.com mcdonalds.camcdonalds.co.uk mcdonalds.commcdonalds.com.hk mcdonalds.hk mcdonalds.it mcdonalds.no mcdonalds.semcdonaldsarabia.commcdonaldsparties.co.nzmcdonaldsparties.com.au!xn--qhrx81fxh2a.xn--55qx5d.hk -? -STRIPE -stripe.comstripe.network stripecdn.com -C -BOOKING -booking.cn -cn booking.com bstatic.com -0 - COWTRANSFER c-t.workcowtransfer.com -. -FLUTTER flutter.devflutterapp.com - - SITEPOINT sitepoint.com -Q -NEWSMAXandysparis.com newsmax.com -newsmax.in newsmaxtv.com -, -RENREN -renren.comrenren-inc.com -© -9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au -” -DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to - -DOI doi.org doi.info -¸ -AIRWICK -airwick.at -airwick.be -airwick.ca -airwick.ch -airwick.cl airwick.co.in airwick.co.nz airwick.co.uk airwick.co.za airwick.comairwick.com.auairwick.com.brairwick.com.cn -cnairwick.com.mxairwick.com.tr -airwick.cz -airwick.de -airwick.dk -airwick.es -airwick.fi -airwick.fr -airwick.hr -airwick.hu -airwick.ie -airwick.it -airwick.jp airwick.net -airwick.nl -airwick.no -airwick.pl -airwick.pt -airwick.ro -airwick.ru -airwick.se -airwick.si -airwick.sk -airwick.tv -airwick.usairwickarabia.com vipoo.es -. - -AMAZON-ADS amazon-adsystem.com -ads -$ - CLOUDCONVERTcloudconvert.com -1 - LIBERAPAY liberapay.com liberapay.org -© - CATEGORY-CASbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.comcybertrust.co.jpcybertrust.ne.jp digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com -cnocsp.globalsign.com -cn ocsp2.globalsign.com -cn identrust.comidentrust.co.uk identrust.net  lencr.orgletsencrypt.org secom.co.jpsecomtrust.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com -telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com -Ô -GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com -* -WIWIDE wamawama.com -wiwide.com -4 -ZB -zb.app -zb.com zb.io zb.live -, -DUYAOSS duyaoss.com duyaossr.com -j - PLAYSTATION playstationplaystation.complaystation.net sonyentertainmentnetwork.com - -SFACG  sfacg.com -4 -THEBORINGCOMPANYboringcompany.com x.com -Ó -UU-CHAT  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com -/ -ADGUARDadguard-vpn.com adguard.com -0 -MEGA -mega.co.nz mega.io mega.nz -4 -SCInewisiknowledge.comisiknowledge.com - -RSSHUB -rsshub.app -× -UMENG mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads - - LARACASTS laracasts.com -, -ACPLAY -acplay.netdandanplay.com -8 - CLUBHOUSEclubhouseapi.comjoinclubhouse.com -c - UMENG-ADSalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads - -BETHESDA -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.com -×! - -MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.cl mastercard.cn -cnmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cn -cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.iemastercard.inc mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com idservice.incinclusivegrowthscore.com findacard.com mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.com paypass.netpieceofplastic.compredictivetechnologies.com priceless.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.cacashpassport.co.zacashpassport.comcashpassport.com.brcashpassport.netcorporatecashpassport.comicashpassport.com.mxintercamcashpassport.com.mx!multicurrencycashpassport.comshinhangmc.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.com -nab.com.aunabtravellercard.com.au 53world.com53worldsweeps.comlovethiscity.commastercardmoments.compahabicilemezsurprizler.com priceless.compriceless.com.cn -cn priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.cn -cnpricelessbeijing.com#pricelessbeijing.com.cn -cnpricelesshongkong.compricelesshonolulu.compricelesspick.compricelesssantiago.compricelesssydney.compricelesssurprises.compricelesstoronto.capricelesstv.com simplify.comsimplifycommerce.comcashpassportglobe.comgwktravelex.nl travelex.be travelex.bh travelex.catravelex.co.intravelex.co.jptravelex.co.nztravelex.co.uk travelex.comtravelex.com.autravelex.com.cn -cntravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.tr travelex.de travelex.fr travelex.it travelex.qatravelexae.comtravelexch.comtravelexmoneycard.combidvestbank.co.zaworldcurrencycard.co.zanab.demdex.net&"nationalaustraliaban.tt.omtrdc.net -† -MUJI muji.com muji.com.cn -cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.net -ž -NUROFEN -nurofen.at -nurofen.bg -nurofen.cn -cn nurofen.co.il nurofen.co.nz nurofen.co.uk nurofen.co.za nurofen.comnurofen.com.aunurofen.com.cn -cnnurofen.com.sg -nurofen.cz -nurofen.de -nurofen.es -nurofen.fr -nurofen.hr -nurofen.hu -nurofen.ie -nurofen.it nurofen.net -nurofen.no -nurofen.pl -nurofen.pt -nurofen.ro -nurofen.sk -nurofen.runurofengel.com51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com -å -MORTEIN -mortein.cn -cn mortein.co.in mortein.co.nz mortein.co.za mortein.commortein.com.aumortein.com.brmortein.com.ngmortein.com.pkmorteincam.compifpafarabia.com -ê -THOMSONREUTERS reuters.com -reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs -tr.com -N -CNBC cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com - -GAB gab.com -’ -CANON canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn -cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn -cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com -o -IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com -å -MOZILLA firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net -+ -TRELLO -trello.com trellocdn.com -: -WEIPHONE feng.com fengimg.com wfdata.club -â -HKT 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com -® -OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com -. -SXL mysxl.cn -sxl.cn  sxlcdn.cn -@ - ZUOYEBANG zuoyebang.cc zuoyebang.com -zybang.com -^ -CTEXCEL -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us " -LIHKG -lih.kg  lihkg.com -> -NOTION  notion.sonotion-static.com -notion.new -" -TED ted.com -tedcdn.com -) -MEITU  meitu.com meitudata.com -¡ -VOXMEDIA cstatic.net -curbed.com  eater.comfunnyordie.com meridian.net polygon.com -racked.com -recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com -voxops.net -Š -ZEETV -z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com -ó -REAGROUPflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com -™ -SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com -0 -SOHU sohu.com -sohucs.com -itc.cn -Ð - OPENSTREETMAP openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.org -+ -VAPTCHA vaptcha.com vaptcha.net -ý -RIOThistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn -cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net -lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com -lpl.com.cn -cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.com - - -TYPOGRAPHYtypography.com - -GFYCAT -gfycat.com - -MPV -mpv.io - -BILIPLUS biliplus.com -L -IMDBboxofficemojo.com imdb.com imdb.tomedia-imdb.com - - W3SCHOOLS w3schools.com -( -LAGOU  lagou.com lgstatic.com -2 -MORISAWAmorisawa.co.jptypesquare.com - -PINCONG pincong.rocks -Æ -SOFTBANK softbank sb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.net softbank.jp softbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com -ê - SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.com -L -LANZOU baidupan.com -lanzou.com lanzous.com woozooo.com - -3DM 3dmgame.com -O -COSTCOcostco-static.com -costco.comcostcobusinessdelivery.com -: - ENTERMEDIADBentermediadb.netentermediadb.org - -ERJI erji.net -² -BLIZZARD blizzard.cn -cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn -cn -battle.netbattlenet.com.cn -cn bnet.163.com -cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com -cn!diablo3.nosdn.127.net -cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net -cnheroesofthestorm.com%hearthstone.nosdn.127.net -cn"heroes.nos.netease.com -cnplayoverwatch.com#overwatch.nosdn.127.net -cn starcraft.comstarcraft2.comsc2.nosdn.127.net -cnplaywarcraft3.comworldofwarcraft.com wowchina.com -cnwow.nosdn.127.net -cnblizzcon-a.akamaihd.netblz.nosdn.127.net -cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn -£ -MINISOloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn -cn  miniso.co miniso.co.id miniso.co.tz -miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn -cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn -cn myminiso.com -´ - CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn - -MOCHA mochajs.org -› -NAVER -lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw -nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com - -ZHANQI  zhanqi.tv -. -ANDROID android.comandroidify.com -Ë{ -CATEGORY-ECOMMERCE  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk -adidas.com adidas.com.cn -cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com -bestbuy.ca -bestbuy.cn -cn bestbuy.combestbuy.com.cn -cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn -cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info -gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com -booking.cn -cn booking.com bstatic.comcostco-static.com -costco.comcostcobusinessdelivery.comcraigslist.org dmm.com  dmm.co.jpdmm-extension.com dmmapis.com21centuryaccess.com4ebaytraders.com adcommerce.cn -cn adcommerce.tv appforebay.cn -cnappsonebay.net -asebay.com -baazee.com -bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn -cn"connectcommerce.com.cn -cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn -cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn -cncyber-bay.com.cn -cncyber-bay.info cyber-bay.org -dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn -cn -ebay.co.nz -ebay.co.uk -ebay.co.ve -ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn -cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn -cn ebay.nl ebay.org ebay.org.cn -cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn -ebay.yn.cn -cn -ebay.zj.cn -cn -ebay25.com -ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn -cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com -ebayca.com -ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn -cnebayclassifieds.com"ebayclassifieds.com.cn -cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com -ebayde.com ebaydesc.cn -cnebaydesc.com.cn -cnebaydlassifieds.com -ebaydns.cn -cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn -cnebayenterprise.com!ebayenterprise.com.cn -cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com -ebayit.comebayjewelry.com ebayjob.com -ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn -cnebaymotors.comebaymotors.com.cn -cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com -ebayon.com -ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn -cnebaypedia.com.cn -cnebayprivacycenter.com -ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn -cnebayshopping.com.cn -cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn -cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn -cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com -ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn -cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net -myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn -cn prostores.comprostores.com.cn -cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com -svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn -cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com -gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn -cnkijijidns.com.cn -cnkijijiforbusiness.ca -kijijii.ca kijijiraps.ca kijji.ca -kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn -cn -q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn -cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com -nexcat.com nexpart.com -nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.comfarfetch-apps.comfarfetch-contents.com farfetch.cn -cn farfetch.comfarfetch.com.cn -cn farfetch.netfarfetch.net.cn -cn  fflnk.net gfashion.com guccichimeforchange.orggucci.cn -cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com -hm.com hm.com.cn -cnhomedepot-static.com homedepot.comikea.cn -cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.comloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn -cn  miniso.co miniso.co.id miniso.co.tz -miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn -cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn -cn myminiso.com muji.com muji.com.cn -cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.netnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com -eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com -gonike.comhandbags-nike.comhightopnikes.com -idnike.cominikesneakers.com just-do-it.cn -cn justdoit.uskicksnike1.comkidsnikeshoes.com -mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn -cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn -cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com -nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn -cnnikebetterworld.com"nikebetterworld.com.cn -cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com -nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn -cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org -nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn -cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn -cn nikeid.com.cn -cnnikeidshoes.com nikeinc.comnikeinc.com.cn -cnnikeincchemistry.comnikeinstock.com -nikeit.comnikeitalia.com nikeitaly.com -nikekd.com nikekid.com -nikelab.cn -cnnikelab.com.cn -cn nikelink.comnikeliuxiang.cn -cnnikeliuxiang.comnikeliuxiang.com.cn -cn nikelives.comnikelunarglide.com nikemall.cn -cnnikemall.com.cn -cnnikemarketing.com nikenews.com -niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn -cnnikerunclub.com.cn -cnnikerunner.comnikerunning.com.cn -cnnikerunningshoes.com -nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn -cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh -swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e nordstrom.comnordstrommedia.com shopee.cn -cn shopee.co.id shopee.co.th -shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com -cn -shp.ee -target -target.comtargetimg1.com walmart wal-mart.com -wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com -wmt.co -- -MYRADIO -myradio.hkmyradio.com.hk -. - POCKETCASTS -pca.stpocketcasts.com -' - UBERADS-ADS uberads.com -ads - -ADBLOCKgetadblock.com - -AP -ap.org -apnews.com - -AVSFORUM avsforum.com -»¼ -CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads bootcss.com -bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com -maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com -pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com dangdang.com ddimg.cn -ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads lianjia.com  ljcdn.com manmanbuy.com dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com -pddpic.com pinduoduo.com yangkeduo.com  smzdm.com -zdmimg.com cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com  vancl.com vanclimg.com  vcimg.com -youzan.com yzcdn.cn youzanyun.com -ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn -ads -acplay.netdandanplay.com -ali213.net -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com -gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads  jjwxc.net ku6.com -ku6cdn.com -ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads  kgimg.com  kugou.com -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com miaopai.com -mihoyo.com bh3.com  pplive.cn -pplive.com pptv.com qingting.fm  sfacg.com -61.com -taomee.com -tapimg.com -taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com -vgtime.com ximalaya.com  xmcdn.com -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -duowan.com dwstatic.com -yy.com yystatic.com  zhanqi.tv -heytea.com chiphell.com -douban.com  douban.fm doubanio.com erji.net -hacpai.com  ld246.com -nga.cn 178.com -ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -afdian.net afdiancdn.com agora.io -agoraio.cn agoralab.co -antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com -pg0.cn -chinaz.com -chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com -jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com -lanzou.com lanzous.com woozooo.com -liepin.com -lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net -renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com -wiwide.com -sojump.com -wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn -wf.pub speiyou.com -xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me -coding.net csdn.net -csdnimg.cn  deepin.cn -deepin.com  deepin.io -deepin.org  gitee.com gitee.iojinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com -tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn -sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com -tipdim.orgxueyuanjun.com alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads zuoyebang.cc zuoyebang.com -zybang.com baidu -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com -bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.com -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.comanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.com -rtx.com.cnservicewechat.com smtcdns.com smtcdns.net -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com wegame.com.cn -weiyun.com alloyteam.com imweb.io ivweb.io -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn -j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com -055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com -114chn.com 114piaowu.com 114shouji.com -119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com -310win.com -315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc -35.com 3533.com 360aiyi.com -360doc.com  360jq.com 360zhyx.com -365azw.com -365dmp.com -37.com 3733.com 3839.com -39.net 3conline.com 3d66.com -3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me -50bang.org -51.com 51.la -510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com -51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com -52miji.com 52pk.com 52z.com 53kf.com -55.com -56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com -6rooms.com 714.com 7230.com -72byte.com  7down.com 7k7k.com  7moor.com 7po.com -7x24cc.com -7xdown.com  818ps.com  84399.com 885.com -900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com -9xgame.com 9xu.com a9vg.com -aardio.com -adxvip.com -afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com -aizhan.comalittle-tea.com -allyes.com anfensi.com -anquan.org -anruan.com -aotrip.net  aoyou.com apk3.com apk8.com appchina.com -appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com -bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com -bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com -caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com -carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org -ch.com chachaba.com changba.com chashebao.comchazhengla.com -che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com -chouti.com chuangxin.com chuansong.mechuansongme.com -chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com -cnbeta.com cnbetacdn.com cnblogs.com -cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com -cofeed.com -cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com -csmjzs.com csslcloud.net -ctfile.com ctiforum.com ctoutiao.com  ctsbw.com -cubead.com  cwxzx.com -cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com -danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com -dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com -dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com -diopic.net diyiyou.com dj99.com  docin.com dockerone.com -dockone.io dogedoge.com -donews.com -dongao.comdongguantoday.com dopa.com -douxie.com -downcc.com downxia.com -downyi.com -dpfile.comdreams-travel.comdrivergenius.com -dui.ai duiopen.com duoduocdn.com duokanbox.com -duomai.com duoshuo.com  duote.com dxpmedia.com -dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com -eayyou.com  ebico.com  ebrun.com -ecitic.com ecjobhome.com -edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com -emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net -feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com -fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com -gaodun.comgaoshouyou.comgaoxiaojob.com -gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com -gezida.com gfan.com -giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com -gwdang.comgxairlines.com -gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc -heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com -hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com -houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com -ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com -iheima.com ijiandao.com -ikafan.com im2maker.com  im-cc.com -imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com -ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com -itjuzi.com  itmop.com  iyiou.com iyunxiao.com -izuche.com -jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com -job910.com  jobjm.com jsbc.com -jsrdgg.com jstv.com  jsyks.com juefeng.com -julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com -kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com -kimiss.com kingdee.com kkzj.com -kongfz.com koolearn.com -kouclo.com -koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com -kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com -liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com -likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net -longre.comlongtugame.com longzhu.com  lotpc.com -loupan.com -lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com -lvmama.comlvsexitong.com  lxway.com -magedu.com maisanqi.com -mamecn.com manhuatai.com manmankan.com -mapbar.com mayi.com -mayihr.com -mcbang.com  mdpda.com mechina.org -mediav.com meifang.com meika360.com meilishuo.commeimingteng.com -meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com -miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc -mmbang.com mmbang.info -mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com -mokahr.com moleecel.commoocollege.com mop.com msanjia.com -mscbsc.com mukewang.com -mumayi.com -muomou.com muzhiwan.com -mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com -newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com -oicq88.com  okooo.com -ol-cdn.com -ol-img.com oldboyedu.com -oneapm.com onegreen.net -oneyac.comonlinedown.netonlinesjtu.com onlylady.com -opdown.com oray.com  ottcn.com -oupeng.com -p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com -pcbeta.com -pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com -pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com -pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com -qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com -qschou.com -qtmojo.com -qudong.com -qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com -runoob.com rzrc114.com  saibo.com sanguosha.com -sanwen.net  scdng.com scoregg.com -sczsxx.com sdo.com sec-wiki.com -sencdn.com seniverse.comsenlinjimore.com -sgamer.com shanbay.com shang360.com -shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com -shutcm.com -simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com -snimay.com  sobot.com sofreight.com softwhy.com -sojson.com -somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com -sunrtb.com supermap.comsupermapcloud.com -sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com -tao123.com -taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com -tianqi.com tietuku.com -tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net -tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com -tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools  ucbug.com -uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com -vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com -wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com -win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  womai.com wondercv.com wonnder.com -wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com -wscdns.com  wtown.com  wumii.com -wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com -xfdown.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com -xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com -xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com -xzking.com yahui.cc -yaolan.com  yaoyl.com  yaozh.com -ycgame.com -yeepay.com -yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com -yiqifa.com -yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com -yocajr.com -youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com -yslyhr.com  ysten.com -yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com -yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com -yxdown.com -yytcdn.com -zampda.net zampdsp.com zastatic.com -zbjimg.com zczj.com -zdfans.com zgjm.org -zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com -zhenai.com  zhibo8.cc  zhidx.com zhifang.com -zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com -zpb365.com -zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com -fm3838.comlarsonlimited.com runsheng.com vzuu.com -zoom3g.com -zoomyou.cn chaoxing.com chaoxing.cc -9 -MOGUJIE mogu.com mogucdn.com mogujie.com -Œ -ESPN espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -Y -JFROG  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net -? -MAFENGWO mafengwo.cn mafengwo.com mafengwo.net -+ -RUBY ruby-lang.org rubygems.org -Œ -AMAZON amazon-adsystem.com -adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws -amazonimdb -kindle xn--cckwcxetdxn--jlq480n2rg yamaxun -zappos a2z.comaboutamazon.cn -cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn -cnalexafund.com.cn -cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn -cn amazon.co.jp amazon.co.uk -amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl -amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn -cn!amazonbusiness.com.cn -cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn -cnamazonchoice.com.cn -cnamazonchoices.cn -cn amazonchoices.com.cn -cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn -cn amazoninspire.com.cn -cnamazonlaunchpad.cn -cnamazonlaunchpad.com"amazonlaunchpad.com.cn -cn amazonlending.com.cn -cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn -cnamazonnow.com.cn -cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn -cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn -cnprimeday.com.cn -cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de -yamaxun.cn -cn yamaxun.comz.cn -cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn -cnamazonworkdocs.com!amazonworkdocs.com.cn -cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn -cn kindle.co.jp kindle.co.uk -kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn -cnkindleoasis.comkindleoasis.com.cn -cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn -cn#amazonprimevideo.com.cn -cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com -cn-!images-cn-8.ssl-images-amazon.com -cn -ª -DISNEYabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com -babble.com babyzone.com -dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za -disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com -dssott.comgo-disneyworldgo.com -go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com -o -UNITY  unity.com unity3d.com!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -ô -EPOCHMEDIAGROUP dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net -etviet.comlagranepoca.com ntd.com  ntdca.com -ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz - -XUNLEI -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com -% -ZHIHU  zhihu.com  zhimg.com -k - PANASONIC  panasonic panasonic.cn -cn panasonic.com panasonic.jp technics.com -- - ACFUN-ADS apilog-web.acfun.cn -ads -Ý -BESTBUY bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com -bestbuy.ca -bestbuy.cn -cn bestbuy.combestbuy.com.cn -cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn -cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info -gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com -c -COMODO -comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com -¸ -SINA-ADS 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -û - STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com -F - -TAGTIC-ADS g1.tagtic.cn -adsxy-log.tagtic.cn -ads -·2 -ALIBABA alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to -ele.me elemecdn.com eleme.cnteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net -© -CBScbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com -cbsi.video -cbsiam.com  cbsig.net -cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com -viacbs.com -viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com -` -OAN aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com -+ -WIKIDOT wdfiles.com wikidot.com -9 - YCOMBINATORstartupschool.orgycombinator.com - -CATEGORY-VPNSERVICES 928.plus -zind.cloud boslife.biz boslife.net -cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net n3ro.lol n3ro.net n3ro.wtf nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.meshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.netairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz aaex.uk amytele.com -ark.tobaicaonetwork.com bighead.groupblinkload.zone  cloudn.me  conair.me cordcloud.org ctyun.online geph.io  maying.comocloudplus.com  mray.club muncloud.dog renzhe.cloud -ssplive.pw -ssrpass.pwstc-server.com - - -CRAIGSLISTcraigslist.org -H - NEXITALLY nexitally.comnexitallysafe.com nexitcore.com -— -LINE -lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw -nhncorp.jp -6 -75TEAM 75.team -75team.com baomitu.com -g - ATLASSIAN atlassian.com bitbucket.org statuspage.io -trello.com trellocdn.com - -CODE code.org -3 -QUORA  quora.com quoracdn.net qr.ae -3 - SEGMENTFAULTsegmentfault.com  sifou.com - - -STATICFILEstaticfile.org -y -FONTSHOP fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com -r - -PURIKONEJP"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.net -C -ADDTHIS addthis.comaddthiscdn.comaddthisedge.com -Š+ -BAIDU a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads zuoyebang.cc zuoyebang.com -zybang.com baidu -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com -bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.com -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -' -CODING  coding.me -coding.net -˜ -CCTV cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn -U -TVER -dogatch.jp gorin.jpscreens-lab.jp -tver.co.jp tver.jp -™ -TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com -twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.co -© -WESTERNDIGITALg-technology.com -sandisk.ae -sandisk.it -sandisk.cn -cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw -sandisk.de -sandisk.es -sandisk.fr -sandisk.hk -sandisk.id -sandisk.in -sandisk.nl -sandisk.sg -wd.com wdc.comwesterndigital.com -€ - YUANFUDAO banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com - -OPENJSFOUNDATION amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.org -0 -OPENWRT openwrt.orglede-project.org -# -QT qt.ioqt-project.org -) -TUTANOTA tuta.io tutanota.com -( -CHINAZ -chinaz.com -chinaz.net - -CUTTLY cutt.ly -+ -COWLEVEL cowlevel.net  cdncl.net -‰ -SONY playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl -sony.co.cr -sony.co.id -sony.co.in -sony.co.jp -sony.co.kr -sony.co.nz -sony.co.th -sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com -sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net -À -ADIDAS  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk -adidas.com adidas.com.cn -cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se -, -CYLINK -cylink.procylink0122.icu - -FEEDLY -feedly.com -Ë - KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.com -D - -LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com -Ñ -RARBG rarbg.me rarbg.toproxyrarbg.org rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com -H - ZYNGA-ADS zynga.com -ads#zyngaplayersupport.com -ads -è -ALIYUNalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com -Ú - - BLOOMBERG  bloomberg bbgevent.com bbhub.io -bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video - -GUOKR  guokr.com - -SAFECHAT safechat.com -« -XIAOMI -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -F - IDENTRUST identrust.comidentrust.co.uk identrust.net -3 - -STREAMABLE embed-cdn.comstreamable.com -* -GITBOOK gitbook.com -gitbook.io -2 -KU6 ku6.com -ku6cdn.com -ku6img.com -Š -SLACKslack-edge.comslack-imgs.com  slack.com -slackb.comslackcertified.com slackdemo.com slackhq.com - - WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com -wp.com  wpvip.com -j -BAHAMUT gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net -ö -ICBCicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn -¦ -JUEJIN  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com -b - YAHOO-ADS ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads - -KERNEL -kernel.org -š -KINGSOFT cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com -) -EASYLIST easylist.to lanik.us -ëº + FOUNDERTYPEfoundertype.com +¹» GEOLOCATION-CN 42r.cn 5566ua.com aurorapush.cn @@ -9674,7 +10490,7 @@ jhgtgb.com kanbox.com lazada.comliangxinyao.com m-now.cn maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.ru sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com mashort.cn pailitao.com taobao.com @@ -10177,11 +10993,11 @@ taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air tianqi.com tietuku.com tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com -tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.tools  ucbug.com +tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.toolsubuntukylin.com  ucbug.com uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com -win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  womai.com wondercv.com wonnder.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  wolai.com  womai.com wondercv.com wonnder.com wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com wscdns.com  wtown.com  wumii.com wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com @@ -10214,920 +11030,229 @@ zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com fm3838.comlarsonlimited.com runsheng.com vzuu.com zoom3g.com zoomyou.cn chaoxing.com chaoxing.cc -ä -TLD-CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b -0 -BITLY -bit.ly  bitly.com bitly.is -- - PUBMATIC-ADSads.pubmatic.com -ads -ÿ -MANORAMAmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in -theweek.invanitaonline.com -vanitha.invanithaveedu.com - - MANMANBUY manmanbuy.com -» -VIU -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net +N +SEASUNseasungames.com xishanju.com xoyo.com testplus.cn +A +ACERacer-group.com acer.com acer.com.cn +cn +Ú + + BLOOMBERG  bloomberg bbgevent.com bbhub.io +bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  -HKGOLDEN hkgolden.com -± -ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com -# -DCARD dcard.io dcard.tw - -REMIREPO remirepo.net -œL -TLD-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup -olayan praxisapseek -vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci -hermesiwcjlc  lancaster lipsyloft mango  montblanc mrporter -netaporter -nextdirectnextnike oldnavy omega panerai  patagonia -piaget  piperlimepolo redstone -swatchaarp -abbott -abbvie aetna alcon -anthembms -boehringer caremore -cialis dabur  freseniusjnj merck mutuelle -sanofiaeg -airbus -alstom -aramco -blanco bosch -bostik -chesapeakechk crown -doosan -dupontflirfls flsmidth  gecompany grainger hitachi  honeywellifm ipirangajio komatsukoneksb  kuokgroup leclerclidl linde lottemanmtr reliance rexrothril rockwoolrwesandvikcoromant sandvik sapphiresca -schaeffler schmidt schwarzgroup schwarz senersewsncf statoil total -vanish -walter -warman weberweir woodsidezara zippo agakhanakdn -ansons -bharti -extraspace genting glean ikano -imamat  ladbrokes -livestrongmaif -mattel shell transformersvanawme astriumcern -emerck  hisamitsu lilly lundbeck lupin merckmsdmsdmtpc -otsuka -pfizer stadateva toray weather auspost deutschepostdhl epost fedex -pitneyaaa -abarthadac  alfaromeoaudi bentleybmw bridgestone bugatti buick cadillaccase -caseih  chevrolet chevy chrysler -datsun dodge -dunlop ferrarifiat  firestonefordgmc goodyear honda hyundai infiniti iveco -jaguarjeepkia lamborghini -lancia  landrover lexus lincoln maseratimini -mitsubishi mopar -newholland -nissanramseatsrt -suzuki -tatamotors -toyotatvs uconnect -volkswagen volvoaigo android apple bestbuy brother canondell digikey fujitsu  fujixerox  goldpointibm nikon nokia olympus  panasonic philips pioneer samsung sharpsony toshiba  yodobashi  allfinanzallfinanzberaterallfinanzberatungallyamericanexpressamexampanz banamex barclaycard barclaysbbtbbvabnl -bnpparibasbofa bradesco -capitalone cashbackbonuscbacfa chasecimb citadelciti commbank deloitte discover everbank fidelity hdfcbankhdfchsbcitaujcbjll jpmorganchase jpmorgankfhkpmg lacaixa lasalle lixil lplfinanciallplnab nadex netbanknorthwesternmutualopen -pictetpncpohl  pramerica -prudentialprupwcsaxosbiscbscor shriram softbank  statebank temasek -transunion ubankubs vanguardvisa wolterskluwerafamilycompany  aquarellediyduck -finish glade  homedepot  homegoods mrmuscleoffraid rightathome  scjohnsonaig allstateamericanfamily amfam amicaaxa chartis esurance farmers  goodhands guardian guardianlife iselect metlifemma -mutual -nationwide -nissaynorthlandinsurance -onyourside progressive redumbrella  statefarm -swiftcover thehartfordtiaatravelersinsurance  travelers travelguardtrvvig beats blockbusterbway netflix playstation showtimetab williamhillxboxasda bloomingdales -george  homesense justforulego macys  marshallsobiqvc safeway samsclub shopyourway staples -targetthd tiffany -tjmaxxtjx -tkmaxxvons walmartabb  accentureaceraco -active -airtel -amazonandaolawsaxis azure chatr -chrome cisco comcast -connectorscscdclkdish -docomodtvdwg emerson epson ericsson etisalat  fairwindsfido -flickr frogans frontierftrgbizgeaggeegle gmailgmogmx godaddygoog -googlegoogreeguge hangouthkt hotmailhtc -hughesieee iinet infosysinfy intel -intuitjavajcpjmpjprs juniperkddi -kindle -konamikpn lanxess liaison -lockermeo  microsoftmihmiimint mitekmit -mobily -mozaicmtn multichoice naspersnec neustar nexusnico -nortonntt -officeollo -oracle -orangeovh patchpayupccwqtel quest  richardli ricoh -rogers -sakurasaposassessfrshaw skolkovo skydrive skype sling smart stcgroupstc symantectatatcitdk telecity -telefonica terra translations  ultrabook unicornuol verisignvivavivo windows xfinity -xperia yahoo yamaxun -yandex yellowpages youtube -zappos -chanel clinique garnier  kerastase -kiehls lamer lancome -loreal -matrix -maybelline -natura origins -redkensvr barefoot beknown cityeatscookingchannel -cuisinella delmonte edekafage ferrero foodnetworkfood gallo heinz -kindermcd  mcdonalds pamperedchef -rocher -wilmarxn--3oq18vl8pn36axn--55qx5d8y0buji4b870uxn--5su34j936bgsgxn--b4w605ferd xn--cckwcxetd -xn--cg4bkixn--dkwm73cwpn xn--flw351exn--fzys8d69uvgmxn--hxt035cmppuelxn--hxt035czzpfflxn--j6w470d71isscxn--jlq480n2rgxn--jlq61u9w7bxn--kcrx77d1x4axn--kcrx7bb75ajk3bxn--mgba3a3ejtxn--mgba7c0bbn0axn--mgbaakc7dvfxn--mgbb9fbpob xn--ngbe9e0a xn--pgb3ceoj xn--qcka1pmcxn--w4r85el8fhu5dnra xn--w4rs40l avianca caravan changiairport cipriani clubmed delta firmdale -hilton hyatt kerryhotelskerrylogisiticskerryproperties marriott orientexpress  shangrila tradershotelstui -viking -virgin -webjetablecbre chintai  frontdoor -lefrakabc africamagicartebbc  canalpluscbncbsdstv -eurovisionfox -gallup globogotv guardianmediahbohgtvimdbitv -kyknetmnet movistar mzansimagicnhk nowtvsbs sevensky spiegel starhub -supersport theguardian travelchannelweatherchannel bauhaus latrobe -monashrmit +PINCONG pincong.rocks +7 +SCP scp-wiki.net  scpdb.org scpwiki.com 4 -CSIS csis.orgcsis-prod.s3.amazonaws.com -ž -DIGICERT digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr -©$ -INTEL -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn -cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn -cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt -altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com -intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn -cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com -niosii.com -niosii.netomekinteractive.com -omnitek.tv openamt.comopendroneid.orgoptanedifference.com -pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com -siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net -vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn -xscale.combarefootnetworks.com -* -JAVWIDE -javwide.tv javwide.com -; -UBERuber-assets.com uber.com ubereats.com -e -METART -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net - -STEEMIT steemit.com -B - APPLOVIN-ADS applovin.com -ads -applvn.com + ARCHLINUX archlinux.orgarchlinuxarm.org +¸ +AIRWICK +airwick.at +airwick.be +airwick.ca +airwick.ch +airwick.cl airwick.co.in airwick.co.nz airwick.co.uk airwick.co.za airwick.comairwick.com.auairwick.com.brairwick.com.cn +cnairwick.com.mxairwick.com.tr +airwick.cz +airwick.de +airwick.dk +airwick.es +airwick.fi +airwick.fr +airwick.hr +airwick.hu +airwick.ie +airwick.it +airwick.jp airwick.net +airwick.nl +airwick.no +airwick.pl +airwick.pt +airwick.ro +airwick.ru +airwick.se +airwick.si +airwick.sk +airwick.tv +airwick.usairwickarabia.com vipoo.es +A +MEIZU flyme.cn meizu.cn  meizu.com  mzres.com +( +TAPTAP +tapimg.com +taptap.com +S + UNITY-ADS!unityads.unity3d.com +ads#unityads.unitychina.cn ads -¦ - CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -& -JABLE cdnlab.live jable.tv -u -CREATIVECOMMONS ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net -h -51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -/ -FASTLANE fastlane.cifastlane.tools +% + +ADJUST-ADS +adjust.com +ads + +XHAMSTER xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com +ads +z +CMB cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.com +^ + APPLE-ADSiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads +ç + FACEBOOK-DEVaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com +† +GOLANG go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org +k +IKEAikea.cn +cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.com +Q +NEWSMAXandysparis.com newsmax.com +newsmax.in newsmaxtv.com +ä +SMARTONEbarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +? +BOOTCSS bootcss.com +bootcdn.cnphpcomposer.com +" +KODI kodi.tv  kodi.wiki & SMZDM  smzdm.com zdmimg.com -£ -YANDEXxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il -yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md -yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net -yandex +c +COMODO +comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com + +WWE wwe.com wwe9.com +ª +DISNEYabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com +babble.com babyzone.com +dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za +disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com +dssott.comgo-disneyworldgo.com +go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com + +XUNLEI +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com + + SHARETHIS sharethis.com +, +DUYAOSS duyaoss.com duyaossr.com ++ +MYFONTS myfonts.com myfonts.net +& +CHINASO chinaso.com +pg0.cn +7 +AMD amd.comamdfanstore.com +radeon.com +< +ANACONDA anaconda.com anaconda.org conda.io +( +OPENCOLLECTIVEopencollective.com +Ü +WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.com +6 +75TEAM 75.team +75team.com baomitu.com +Ì +CATEGORY-SECURITIES-CN +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn +2 +KU6 ku6.com +ku6cdn.com +ku6img.com + +WIKIHOW wikihow.com +ç +BINGbing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn  GCORES gcores.com - -OK ok.ru -F -SOGOU -go2map.com sogo.com  sogou.com sogoucdn.com -Ì - CHINATELECOM -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com -/ -MAPBOX mapbox.cn -cn -mapbox.com -% -KUGOU  kgimg.com  kugou.com -” - EASTMONEY1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn +O +PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com +ads +# +EDX edx.org edx-cdn.org +- + PUBMATIC-ADSads.pubmatic.com +ads +™ +BILIBILI +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net 1 -HOMEBREW brew.shhomebrew.bintray.com + LIBERAPAY liberapay.com liberapay.org +, +PAOFUYUN paofu.cloud paofuyun.me +’ +RUANMEI 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com + +IINA iina.io  -IPIP ipip.net - -CAIXIN -caixin.com -® -CATEGORY-BANK-CN -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -à -DUREXdewitwithdurex.com dotherex.com durex-shop.chdurex-shopline.comdurex-slovenia.si durex.at durex.be durex.cl durex.co.id durex.co.il durex.co.nz durex.co.th durex.co.uk durex.co.za  durex.com durex.com.au durex.com.bd durex.com.cn -cn durex.com.co durex.com.hr durex.com.my durex.com.ng durex.com.pe durex.com.ph durex.com.pk durex.com.sg durex.com.tr durex.cz durex.de durex.dk durex.ee durex.es durex.fi durex.fr durex.hu durex.ie durex.it durex.jp durex.lv durex.mx durex.nl durex.no durex.pl durex.pt durex.ro durex.ru durex.se durex.us durexcam.comdurexcanada.comdurexchina.comdurexchina.com.cn -cndurexindia.comdurexloveclub.comdurexukraine.com durexusa.comlovesexdurex.cn -cnlovesexdurex.complaybydurex.com shopdurex.com trydurex.net trydurex.tv -: -POLYMERpolymer-project.orgpolymerproject.org -+ -MYFONTS myfonts.com myfonts.net -S -PORNHUB -phncdn.com phprcdn.com pornhub.compornhubpremium.com -= -LANDIAN -lancdn.comlandiannews.com  wsoso.com -D - -POCOIQ-ADS cdn.pocoiq.cn -ads oct.pocoiq.cn -ads -«• - CATEGORY-ADS apilog-web.acfun.cn -ads adcolony.com -ads -adjust.com -ads a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -ads amazon-adsystem.com -adsiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads applovin.com -ads -applvn.com -ads atom-data.io -adsanalytics-data.io -ads ironbeast.io -ads a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -adsmcs.snssdk.com -adsx.clearbitjs.com -ads bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp -ads -microad.jp -ads socdm.com -ads emogi.com -adsdata.flurry.com -ads2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -ads!assets.growingio.com -adsmlog.hiido.com -adsylog.hiido.com -adsstatic.hotjar.com -adsclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -adsinner-active.mobi -adsa.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -adsads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads log-sdk.gifshow.com -adswlog.kuaishou.com -ads leanplum.com -ads#api.game.letvstore.com -ads ark.letv.com -ads dc.letv.com -adsdev.dc.letv.com -ads fz.letv.com -ads g3.letv.com -adsletv.allyes.com -adsminisite.letv.com -adsmsg.m.letv.com -adsn.mark.letv.com -adsplog.dc.letv.com -adspro.hoye.letv.com -ads pro.letv.com -ads stat.letv.com -ads"static.app.m.letv.com -ads decide.mixpanel.com -ads mopub.com -adsevt.mxplay.com -adsanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads"js-agent.newrelic.com -ads ogury.com -ads -presage.io -adsogury.co -ads onesignal.com -adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads cdn.pocoiq.cn -ads oct.pocoiq.cn -adsads.pubmatic.com -adscdn.segment.com -ads"static.sensorsdata.cn -ads 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -adsadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com -adssupersonic.com -adssupersonicads.com -ads -ssacdn.com -ads)supersonicads-a.akamaihd.net -ads g1.tagtic.cn -adsxy-log.tagtic.cn -adsssp.api.tappx.com -ads ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads uberads.com -adsalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads!unityads.unity3d.com -ads#unityads.unitychina.cn -ads ads.wteam.xyz -ads#collector.xhamster.com -adsad.intl.xiaomi.com -ads ad.mi.com -ads ad.xiaomi.com -adsadmob.xiaomi.com -adsad1.xiaomi.com -adsmistat.xiaomi.com -adstracking.miui.com -adsadv.sec.miui.com -ads"adv.sec.intl.miui.com -ads"misc.in.duokanbox.com -ads ad.hpplay.cn -adsadeng.hpplay.cn -ads kuyun.com -ads umeng.com -ads ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -adsactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads zynga.com -ads#zyngaplayersupport.com -ads 51y5.net a.adtng.com -aaxads.comaddthisedge.com -adtrue.com -ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com -exosrv.com -go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com -lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn -ª - 58TONGCHENG -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com -’ -AZURE azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.com -„ - TONGCHENG 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com +CNKI cnki.net +3 +ENTRUST entrust.netentrustdatacard.com +? +GEETEST geetest.com#geetest.datasink.sensorsdata.cn +, +JAVAjava java.com java.net +w +JWPLAYER +jwpcdn.comjwplatform.com jwplayer.com +jwpltx.com +jwpsrv.comlongtailvideo.com +@ +REUTERS reuters.com +reuters.tvreutersmedia.net . -XDAxda-developers.com xda-cdn.com -6 -UDN udn.com -udn.com.twudnfunlife.com -¬ -DELL -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.com -¬ -IQIYI 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads -1 -TIANCITY tiancity.comtiancitycdn.com -ì -BBCbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.com"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net'#vod-dash-ww-live.bbcfmt.s.llnwi.net($vod-thumb-ww-live.bbcfmt.s.llnwi.net +U17 u17.com u17i.com u17t.com ý CISCO webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn @@ -11140,124 +11265,4 @@ mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org mearki.com meraki-go.com  meraki.hk merakigo.com -tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net -< -DOCKERcompose-spec.io -docker.com  docker.io -ô -DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com -n -TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net -z -CMB cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.com -Ü - DAILYMAIL  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk -mol.imthisismoney.co.uk -thismon.ee -æ -DWION acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com - -ELECTRONelectronjs.org -$ -GFW  gfw.press -gfw.report -f -OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads -D -RUST rust-lang.org  rustup.rs  crates.io docs.rs -- -BITFLYER bitflyer.com bitflyer.jp -. -NETLIFY netlify.combitballoon.com -¡ - -FAMILYMARTfamifun.com.tw family.co.jp family.com.twfamilymart.com.cn -cnfamilymart.com.myfamilymart.com.ph  famima.vn -K -PINGAN -pingan.com pingan.com.cn pingan.com.hk yqb.com -* -TELEKOM telekom.com -telekom.de -ô -VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com -” - HELLOFONT hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com -^ -SWIFTappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cn -+ - TAPPX-ADSssp.api.tappx.com -ads -7 - BUYMEACOFFEE buymeacoff.eebuymeacoffee.com - -DIDA365 dida365.com - -FIREFOX firefox.com -ß -THETIMES driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.com -3 - XHAMSTER-ADS#collector.xhamster.com -ads -Ô -CATEGORY-MOOC-CNchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com -­ -HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -e - ATOM-DATA-ADS atom-data.io -adsanalytics-data.io -ads ironbeast.io -ads - -CHIPHELL chiphell.com -¼ -GOG gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn -_ -FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org - -SOLIDOT solidot.org -' -928PLUS 928.plus -zind.cloud -A -NYPOST -nypost.com nypost.helpnypostreprints.com -E -PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net -¯ -JD-ADSads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads -µ - PINTEREST -pin.it -pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com -, - BYTEDANCE-ADSmcs.snssdk.com -ads -q -CATEGORY-HOSPITAL-CN  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn -@ - DIGITALOCEANdigitalocean.comdigitaloceanspaces.com \ No newline at end of file +tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net \ No newline at end of file From 139dfadb62af5decc37fd9e3305fac9d7087a80f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Mar 2021 14:13:21 +0800 Subject: [PATCH 35/60] Chore: bump google.golang.org/grpc from 1.36.0 to 1.36.1 (#824) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 59af756e5..30b3f630d 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 - google.golang.org/grpc v1.36.0 + google.golang.org/grpc v1.36.1 google.golang.org/protobuf v1.26.0 h12.io/socks v1.0.2 ) diff --git a/go.sum b/go.sum index d5a3cf56c..caff96f54 100644 --- a/go.sum +++ b/go.sum @@ -285,8 +285,8 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1 h1:cmUfbeGKnz9+2DD/UYsMQXeqbHZqZDs4eQwW0sFOpBY= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From f0c453ca28e95b90740cb8f3ed66589984b6c837 Mon Sep 17 00:00:00 2001 From: loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Sun, 28 Mar 2021 08:40:33 +0800 Subject: [PATCH 36/60] Chore: update dependencies --- go.mod | 21 ++- go.sum | 515 ++++----------------------------------------------------- 2 files changed, 43 insertions(+), 493 deletions(-) diff --git a/go.mod b/go.mod index 13bc4dfce..8a1456d9e 100644 --- a/go.mod +++ b/go.mod @@ -4,23 +4,22 @@ go 1.16 require ( github.com/golang/mock v1.5.0 - github.com/golang/protobuf v1.4.3 + github.com/golang/protobuf v1.5.1 github.com/google/go-cmp v0.5.5 github.com/gorilla/websocket v1.4.2 - github.com/lucas-clemente/quic-go v0.19.3 - github.com/miekg/dns v1.1.40 + github.com/lucas-clemente/quic-go v0.20.0 + github.com/miekg/dns v1.1.41 github.com/pires/go-proxyproto v0.5.0 github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c github.com/stretchr/testify v1.7.0 - github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc // indirect + github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 - github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f // indirect - go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb - golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b - golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 + go.starlark.net v0.0.0-20210312235212-74c10e2c17dc + golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 + golang.org/x/net v0.0.0-20210326220855-61e056675ecf golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210314195730-07df6a141424 - google.golang.org/grpc v1.36.0 - google.golang.org/protobuf v1.25.0 + golang.org/x/sys v0.0.0-20210326220804-49726bf1d181 + google.golang.org/grpc v1.36.1 + google.golang.org/protobuf v1.26.0 h12.io/socks v1.0.2 ) diff --git a/go.sum b/go.sum index 7d28ac7bf..14fbd0297 100644 --- a/go.sum +++ b/go.sum @@ -2,152 +2,50 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.31.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.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= -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/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -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/app/changes v0.0.0-20180602232624-0a106ad413e3 h1:hJiie5Bf3QucGRa4ymsAUOxyhYwGEz1xrsVk0P8erlw= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0 h1:SPOUaucgtVls75mg+X7CXigS71EnsfVUK/2CgVrwqgw= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= -dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412 h1:GvWw74lx5noHocd+f6HBMXK6DuggBB1dhVkuGZbv7qM= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= -dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c h1:ivON6cwHK1OH26MZyWDCnbTRZZf0IhNsENoNAKFS1g4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999 h1:OR8VhtwhcAI3U48/rzBsVOuHi0zDPzYI1xASVcdSgR8= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -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 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= -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/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625 h1:ckJgFhFWywOx+YLEMIJsTb+NV6NexWICk5+AMSuz3ss= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= 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/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/dgryski/go-metro v0.0.0-20200812162917-85c65e2d0165 h1:BS21ZUJ/B5X2UVUbczfmdWH7GapPWAhxcMsDnjJTU1E= github.com/dgryski/go-metro v0.0.0-20200812162917-85c65e2d0165/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a h1:YtdtTUN1iH97s+6PUjLnaiKSQj4oG1/EZ3N9bx6g4kU= github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a/go.mod h1:/CZpbhAusDOobpcb9yubw46kdYjq0zRC0Wpg9a9zFQM= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad h1:EmNYJhPYy0pOFjCx2PrgtaBXmee0iUX9hLlxE1xHOJE= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -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/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -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/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= -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 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -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/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 h1:uHTyIjqVhYRhLbJ8nIiOJHkEZZ+5YoOsAbD3sk82NiE= -github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7 h1:2hRPrmiwPrp3fQX967rNJIhQPtiGXdlQWAxKbKw3VHA= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= @@ -161,11 +59,10 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1 h1:jAbXjIeW2ZSW2AwFxlGTDoc2CjI2XujLkV3ArsZFCvc= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= 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/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -174,168 +71,54 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/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= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -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 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 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= -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/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe h1:rcf1P0fm+1l0EjG16p06mYLj9gW9X36KgdHJ/88hS4g= github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/websocket v0.0.0-20191103002815-9a42957e2b3a h1:AG0ZwOFfTjzk5n1PXhWttuw3i7i0TeqypKSqCXhMlyM= github.com/gopherjs/websocket v0.0.0-20191103002815-9a42957e2b3a/go.mod h1:jd+zY81Fx2lC4bfw58+Rflg1srqmedQjbBUejKOjYNY= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.9.0 h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= -github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -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/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1 h1:ujPKutqRlJtcfWk6toYVYagwra7HQHbXOaS171b4Tg8= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -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/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0 h1:ZqfnKyx9KGpRcW04j5nnPDgRgoXUeLh2YFBeFzphcA0= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= 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= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3 h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lucas-clemente/quic-go v0.19.3 h1:eCDQqvGBB+kCTkA0XrAFtNe81FMa0/fn4QSoeAbmiF4= -github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= -github.com/lunixbochs/struc v0.0.0-20200521075829-a4cb8d33dbbe h1:ewr1srjRCmcQogPQ/NCx6XCk6LGVmsVCc9Y3vvPZj+Y= -github.com/lunixbochs/struc v0.0.0-20200521075829-a4cb8d33dbbe/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg= -github.com/lunixbochs/vtclean v1.0.0 h1:xu2sLAri4lGiovBDQKxl5mrXyESr3gUr5m5SM5+LVb8= +github.com/lucas-clemente/quic-go v0.20.0 h1:FSU3YN5VnLafHR27Ejs1r1CYMS7XMyIVDzRewkDLNBw= +github.com/lucas-clemente/quic-go v0.20.0/go.mod h1:fZq/HUDIM+mW6X6wtzORjC0E/WDBMKe5Hf9bgjISwLk= +github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc= +github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe h1:W/GaMY0y69G4cFlmsC6B9sbuo2fP8OFP1ABjt4kPz+w= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/marten-seemann/qpack v0.2.1 h1:jvTsT/HpCn2UZJdP+UUB53FfUUgeOyG5K1ns0OJOGVs= github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= -github.com/marten-seemann/qtls v0.10.0 h1:ECsuYUKalRL240rRD4Ri33ISb7kAQ3qGDlrrl55b2pc= -github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= -github.com/marten-seemann/qtls-go1-15 v0.1.1 h1:LIH6K34bPVttyXnUWixk0bzH6/N07VxbSabxn5A5gZQ= -github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/marten-seemann/qtls-go1-15 v0.1.4 h1:RehYMOyRW8hPVEja1KBVsFVNSm35Jj9Mvs5yNoZZ28A= +github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/marten-seemann/qtls-go1-16 v0.1.3 h1:XEZ1xGorVy9u+lJq+WXNE+hiqRYLNvJGYmwfwKQN2gU= +github.com/marten-seemann/qtls-go1-16 v0.1.3/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/microcosm-cc/bluemonday v1.0.1 h1:SIYunPjnlXcW+gVfvm0IlSeR5U3WZUOLfVmqg85Go44= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.40 h1:pyyPFfGMnciYUk/mXpKkVmeMQjfXqt3FAJ2hy7tPiLA= -github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -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-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -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/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223 h1:F9x/1yl3T2AeKLr2AMdilSD8+f9bvMnNN8VS5iDtovc= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86 h1:D6paGObi5Wud7xg83MaEFyjxQB1W5bz5d0IFppr+ymk= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= -github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c h1:bY6ktFuJkt+ZXkX0RChQch2FtHpWQLVS8Qo1YasiIVk= -github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= @@ -343,258 +126,101 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/openzipkin/zipkin-go v0.1.1 h1:A/ADD6HaPnAKj3yS7HjGHRK77qi41Hi0DirOOIQAeIw= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pires/go-proxyproto v0.5.0 h1:A4Jv4ZCaV3AFJeGh5mGwkz4iuWUYMlQ7IoO/GTuSuLo= github.com/pires/go-proxyproto v0.5.0/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY= -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/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= -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= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c h1:pqy40B3MQWYrza7YZXOXgl0Nf0QGFqrOC0BKae1UNAA= github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= -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/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4 h1:Fth6mevc5rX7glNLpbAMJnqKlfIkcTjZCSHEeqvKbcI= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= -github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48 h1:vabduItPAIz9px5iryD5peyx7O3Ya8TBThapgXim98o= github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= -github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470 h1:qb9IthCFBmROJ6YBS31BEMeSYjOscSiG+EO+JVNTz64= github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d h1:Yoy/IzG4lULT6qZg62sVC+qyBL8DQkmD2zv6i7OImrc= github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c h1:UOk+nlt1BJtTcH15CT7iNO7YVWTfTv/DNwEAQHLIaDQ= github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b h1:vYEG87HxbU6dXj5npkeulCS96Dtz5xg3jcfCgpcvbIw= github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20 h1:7pDq9pAMCQgRohFmd25X8hIH8VxmT3TaDm+r9LHxgBk= github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9 h1:MPblCbqA5+z6XARjScMfz1TqtJC7TuTRj0U9VqIBs6k= github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= -github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50 h1:crYRwvwjdVh1biHzzciFHe8DrZcYrVcZFlJtykhRctg= github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= -github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc h1:eHRtZoIi6n9Wo1uR+RU44C247msLWwyA89hVKwRLkMk= github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9 h1:fxoFD0in0/CBzXoyNhMTjvBZYW6ilSnTw7N7y/8vkmM= github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= -github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191 h1:T4wuULTrzCKMFlg3HmKHgXAF8oStFb/+lOIupLV2v+o= github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= -github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241 h1:Y+TeIabU8sJD10Qwd/zMty2/LEaT9GNDaA6nyZf+jgo= github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= -github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122 h1:TQVQrsyNaimGwF7bIhzoVC9QkKm4KsWd8cECGzFx8gI= github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= -github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2 h1:bu666BQci+y4S0tVRVjsHUeRon6vUXmsGBwdowgMrg4= github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82 h1:LneqU9PHDsg/AkPDU3AkqMxnMYL+imaqkpflHu73us8= github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -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/shurcooL/users v0.0.0-20180125191416-49c67e49c537 h1:YGaxtkYjb8mnTvtufv2LKLwCQu2/C7qFB7UtrOlTWOY= github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= -github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133 h1:JtcyT0rk/9PKOdnKQzuDR+FSjh7SGtJwpgVpfZBRKlQ= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= -github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d h1:yKm7XZV6j9Ev6lojP2XaIshpT4ymkqhMeSghO5Ps00E= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e h1:qpG93cPwA5f7s/ZPBJnGOYQNK/vKsaDaseuKT5Asee8= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc h1:aCcaF5bwDw30/dqc53Mzk9FfUBs77D53Qa+cdroB4R4= -github.com/v2fly/BrowserBridge v0.0.0-20210316223221-b4ab84595cdc/go.mod h1:7eAekmJJmG7mE2yS+RdwqJbd/Kh+TRWz+ukHrqYU2TE= +github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd h1:fQ4O/lTTwSPHbIDhnT/npwHTgJ/5RQWQaQG01VbIYcc= +github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd/go.mod h1:skmBSeT/GvVqal/eylE9E16x9RC29xFXCbxDLVmatOk= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 h1:p1UzXK6VAutXFFQMnre66h7g1BjRKUnLv0HfmmRoz7w= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848/go.mod h1:p80Bv154ZtrGpXMN15slDCqc9UGmfBuUzheDFBYaW/M= -github.com/viant/assertly v0.4.8 h1:5x1GzBaRteIwTr5RAGFVG14uNeRFxVNbXPWrK2qAgpc= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= -github.com/viant/toolbox v0.24.0 h1:6TteTDQ68CjgcCe8wH3D3ZhUQQOJXMTbj/D9rkk2a1k= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f h1:auUsxrxkHqXNHAqd1BpJOIcN/ktolAZRKBMWgteSkX0= -github.com/xiaokangwang/BrowserBridge v0.0.0-20210315163716-996383742f4f/go.mod h1:V6E7dCHel6g4H++fZI6CA+xPRvA/ZPbjdDe0sjDM11w= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xtaci/smux v1.5.14 h1:1j+zJYDZRv9FHaWqCJfH5RPizIm0fSzJIFbfVn8zsfg= -github.com/xtaci/smux v1.5.14/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY= -github.com/yuin/goldmark v1.2.1 h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +github.com/xtaci/smux v1.5.15 h1:6hMiXswcleXj5oNfcJc+DXS8Vj36XX2LaX98udog6Kc= +github.com/xtaci/smux v1.5.15/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb h1:4cM8hRkSWxRrHV7AQowcBrM91A8KJcUp2z0sfQOGMY0= -go.starlark.net v0.0.0-20210305151048-6a590ae7f4eb/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= -go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go4.org v0.0.0-20180809161055-417644f6feb5 h1:+hE86LblG4AyDgwMCLTE6FOlM9+qjHSYS+rKqxUVdsM= +go.starlark.net v0.0.0-20210312235212-74c10e2c17dc h1:pVkptfeOTFfx+zXZo7HEHN3d5LmhatBFvHdm/f2QnpY= +go.starlark.net v0.0.0-20210312235212-74c10e2c17dc/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -golang.org/dl v0.0.0-20210311202548-10a9b498f331 h1:U35nhDc23cFi00WSCnBTJqw06dH4Raz4H/1aYFNF+UM= -golang.org/dl v0.0.0-20210311202548-10a9b498f331/go.mod h1:IUMfjQLJQd4UTqG1Z90tenwKoCX93Gn3MAQJMOSBsDQ= -golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d h1:E2M5QgjZ/Jg+ObCQAudsXxuTsLj7Nl5RV/lZcQZmKSo= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/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-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b h1:wSOdpTq0/eI46Ez/LkDwIsAKA71YP2SRKBODiRWM0as= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136 h1:A1gGSx58LAGVHUUsOf7IiR0u8Xb6W51gRwfDBhkdcaw= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/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 h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de 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 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190313220215-9f648a60d977/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/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210326220855-61e056675ecf h1:WUcCxqQqDT0aXO4VnQbfMvp4zh7m1Gb2clVuHUAGGRE= +golang.org/x/net v0.0.0-20210326220855-61e056675ecf/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/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/perf v0.0.0-20180704124530-6e6d33e29852 h1:xYq6+9AtI+xP3M4r0N1hCkHrInHDBohhquRgx9Kk6gI= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= 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= @@ -602,45 +228,28 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/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-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-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/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/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b h1:ggRgirZABFolTmi3sn6Ivd9SipZwLedQ5wR0aAKnFxU= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210314195730-07df6a141424 h1:+39ahH47SWi1PhMRAHfIrm8f69HRZ5K2koXH6dmO8TQ= -golang.org/x/sys v0.0.0-20210314195730-07df6a141424/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20201231184435-2d18734c6014/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210326220804-49726bf1d181 h1:64ChN/hjER/taL4YJuA+gpLfIMT+/NFherRZixbxOhg= +golang.org/x/sys v0.0.0-20210326220804-49726bf1d181/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -648,32 +257,15 @@ golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -682,45 +274,27 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= 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-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1 h1:cmUfbeGKnz9+2DD/UYsMQXeqbHZqZDs4eQwW0sFOpBY= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -729,54 +303,31 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 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 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= -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/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= 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/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c h1:grhR+C34yXImVGp7EzNk+DTIk+323eIUWOmEevy6bDo= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919 h1:tmXTu+dfa+d9Evp8NpJdgOy6+rt8/x4yG7qPBrtNfLY= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= h12.io/socks v1.0.2 h1:cZhhbV8+DE0Y1kotwhr1a3RC3kFO7AtuZ4GLr3qKSc8= h12.io/socks v1.0.2/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 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= -rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sourcegraph.com/sourcegraph/go-diff v0.5.0 h1:eTiIR0CoWjGzJcnQ3OkhIl/b9GJovq4lSAVRt0ZFEG8= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= From a0c817888ba7d01b2b08a7d9500ea411afebd1c9 Mon Sep 17 00:00:00 2001 From: loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Sun, 28 Mar 2021 08:44:04 +0800 Subject: [PATCH 37/60] Chore: format code --- app/browserforwarder/forwarder.go | 8 +++++--- common/platform/securedload/embeddedhash.go | 4 +++- infra/conf/browser_forwarder.go | 1 + transport/internet/websocket/dialer.go | 5 +++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/browserforwarder/forwarder.go b/app/browserforwarder/forwarder.go index b24cf356f..a2f17f2f8 100644 --- a/app/browserforwarder/forwarder.go +++ b/app/browserforwarder/forwarder.go @@ -5,15 +5,17 @@ package browserforwarder import ( "bytes" "context" + "io" + "net/http" + "time" + "github.com/v2fly/BrowserBridge/handler" + "github.com/v2fly/v2ray-core/v4/common" "github.com/v2fly/v2ray-core/v4/common/net" "github.com/v2fly/v2ray-core/v4/common/platform/securedload" "github.com/v2fly/v2ray-core/v4/features/ext" "github.com/v2fly/v2ray-core/v4/transport/internet" - "io" - "net/http" - "time" ) //go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen diff --git a/common/platform/securedload/embeddedhash.go b/common/platform/securedload/embeddedhash.go index 620bb4aa6..3f1f0a2e7 100644 --- a/common/platform/securedload/embeddedhash.go +++ b/common/platform/securedload/embeddedhash.go @@ -4,11 +4,13 @@ import ( "bytes" "crypto/sha256" "encoding/hex" + "strings" + "github.com/v2fly/VSign/insmgr" "github.com/v2fly/VSign/signerVerify" + "github.com/v2fly/v2ray-core/v4/common/platform" "github.com/v2fly/v2ray-core/v4/common/platform/filesystem" - "strings" ) type EmbeddedHashProtectedLoader struct { diff --git a/infra/conf/browser_forwarder.go b/infra/conf/browser_forwarder.go index ca3c138de..0205c4a64 100644 --- a/infra/conf/browser_forwarder.go +++ b/infra/conf/browser_forwarder.go @@ -2,6 +2,7 @@ package conf import ( "github.com/golang/protobuf/proto" + "github.com/v2fly/v2ray-core/v4/app/browserforwarder" ) diff --git a/transport/internet/websocket/dialer.go b/transport/internet/websocket/dialer.go index 23c6c70c0..f46e5bbd5 100644 --- a/transport/internet/websocket/dialer.go +++ b/transport/internet/websocket/dialer.go @@ -6,11 +6,12 @@ import ( "bytes" "context" "encoding/base64" - core "github.com/v2fly/v2ray-core/v4" - "github.com/v2fly/v2ray-core/v4/features/ext" "io" "time" + core "github.com/v2fly/v2ray-core/v4" + "github.com/v2fly/v2ray-core/v4/features/ext" + "github.com/gorilla/websocket" "github.com/v2fly/v2ray-core/v4/common" From 090a659cabc7f9975a6b554abe47e4bcbd8b5185 Mon Sep 17 00:00:00 2001 From: loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Sun, 28 Mar 2021 09:33:00 +0800 Subject: [PATCH 38/60] Chore: fix lint --- app/browserforwarder/forwarder.go | 3 +-- common/platform/securedload/embeddedhash.go | 1 - common/platform/securedload/file.go | 7 +++---- transport/internet/websocket/dialer.go | 4 ++-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/browserforwarder/forwarder.go b/app/browserforwarder/forwarder.go index a2f17f2f8..54dbe136f 100644 --- a/app/browserforwarder/forwarder.go +++ b/app/browserforwarder/forwarder.go @@ -37,7 +37,6 @@ func (f *Forwarder) ServeHTTP(writer http.ResponseWriter, request *http.Request) fallthrough case "index.js": BridgeResource(writer, request, requestPath) - break case "link": f.forwarder.ServeBridge(writer, request) } @@ -83,7 +82,7 @@ func BridgeResource(rw http.ResponseWriter, r *http.Request, path string) { data, err := securedload.GetAssetSecured("browserforwarder/" + content) if err != nil { err = newError("cannot load necessary resources").Base(err) - http.Error(rw, err.Error(), 403) + http.Error(rw, err.Error(), http.StatusForbidden) return } diff --git a/common/platform/securedload/embeddedhash.go b/common/platform/securedload/embeddedhash.go index 3f1f0a2e7..da5419dc3 100644 --- a/common/platform/securedload/embeddedhash.go +++ b/common/platform/securedload/embeddedhash.go @@ -30,7 +30,6 @@ func (e EmbeddedHashProtectedLoader) VerifyAndLoad(filename string) ([]byte, err return filecontent, nil } } - } return nil, newError("Unrecognized file at ", filename, " can not be loaded for execution") } diff --git a/common/platform/securedload/file.go b/common/platform/securedload/file.go index 2a5b64e6f..1d8705064 100644 --- a/common/platform/securedload/file.go +++ b/common/platform/securedload/file.go @@ -3,16 +3,15 @@ package securedload import "path/filepath" func GetAssetSecured(name string) ([]byte, error) { - name = filepath.FromSlash(name) var err error for k, v := range knownProtectedLoader { - if loadedData, errLoad := v.VerifyAndLoad(name); errLoad == nil { + loadedData, errLoad := v.VerifyAndLoad(name) + if errLoad == nil { return loadedData, nil - } else { - err = newError(k, " is not loading executable file").Base(errLoad) } + err = newError(k, " is not loading executable file").Base(errLoad) } return nil, err } diff --git a/transport/internet/websocket/dialer.go b/transport/internet/websocket/dialer.go index f46e5bbd5..93da25fce 100644 --- a/transport/internet/websocket/dialer.go +++ b/transport/internet/websocket/dialer.go @@ -124,7 +124,7 @@ func (d dialerWithEarlyData) Dial(earlyData []byte) (*websocket.Conn, error) { return nil, newError("websocket delayed dialer cannot encode early data tail").Base(errc) } - conn, resp, err := d.dialer.Dial(d.uriBase+string(earlyDataBuf.Bytes()), d.config.GetRequestHeader()) + conn, resp, err := d.dialer.Dial(d.uriBase+earlyDataBuf.String(), d.config.GetRequestHeader()) if err != nil { var reason string if resp != nil { @@ -161,7 +161,7 @@ func (d dialerWithEarlyDataRelayed) Dial(earlyData []byte) (io.ReadWriteCloser, return nil, newError("websocket delayed dialer cannot encode early data tail").Base(errc) } - conn, err := d.forwarder.DialWebsocket(d.uriBase+string(earlyDataBuf.Bytes()), d.config.GetRequestHeader()) + conn, err := d.forwarder.DialWebsocket(d.uriBase+earlyDataBuf.String(), d.config.GetRequestHeader()) if err != nil { var reason string return nil, newError("failed to dial to (", d.uriBase, ") with early data: ", reason).Base(err) From 24cc50398512f09880d3b311545b06c474f75733 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Mar 2021 14:42:33 +0800 Subject: [PATCH 39/60] Chore: bump github.com/golang/protobuf from 1.5.1 to 1.5.2 (#830) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 30b3f630d..4a120d248 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.16 require ( github.com/golang/mock v1.5.0 - github.com/golang/protobuf v1.5.1 + github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.5 github.com/gorilla/websocket v1.4.2 github.com/lucas-clemente/quic-go v0.20.0 diff --git a/go.sum b/go.sum index caff96f54..e35c561ef 100644 --- a/go.sum +++ b/go.sum @@ -60,8 +60,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1 h1:jAbXjIeW2ZSW2AwFxlGTDoc2CjI2XujLkV3ArsZFCvc= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= From 531cd29e20d163d76affb49418fbad787b4d8e57 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 13 Mar 2021 10:32:21 +0000 Subject: [PATCH 40/60] use shadowsocket's bloomring for shadowsocket's replay protection --- proxy/shadowsocks/config.pb.go | 96 ++++++++++++++++++++-------------- proxy/shadowsocks/config.proto | 2 + 2 files changed, 58 insertions(+), 40 deletions(-) diff --git a/proxy/shadowsocks/config.pb.go b/proxy/shadowsocks/config.pb.go index 7b6386530..e4109adaa 100644 --- a/proxy/shadowsocks/config.pb.go +++ b/proxy/shadowsocks/config.pb.go @@ -1,12 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.15.6 +// protoc-gen-go v1.25.0 +// protoc v3.13.0 // source: proxy/shadowsocks/config.proto package shadowsocks import ( + proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -22,6 +23,10 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + type CipherType int32 const ( @@ -82,8 +87,9 @@ type Account struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` - CipherType CipherType `protobuf:"varint,2,opt,name=cipher_type,json=cipherType,proto3,enum=v2ray.core.proxy.shadowsocks.CipherType" json:"cipher_type,omitempty"` + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + CipherType CipherType `protobuf:"varint,2,opt,name=cipher_type,json=cipherType,proto3,enum=v2ray.core.proxy.shadowsocks.CipherType" json:"cipher_type,omitempty"` + ReplayProtection bool `protobuf:"varint,3,opt,name=replay_protection,json=replayProtection,proto3" json:"replay_protection,omitempty"` } func (x *Account) Reset() { @@ -132,6 +138,13 @@ func (x *Account) GetCipherType() CipherType { return CipherType_UNKNOWN } +func (x *Account) GetReplayProtection() bool { + if x != nil { + return x.ReplayProtection + } + return false +} + type ServerConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -259,43 +272,46 @@ var file_proxy_shadowsocks_config_proto_rawDesc = []byte{ 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x70, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x49, - 0x0a, 0x0b, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, - 0x6b, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, - 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x0c, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0b, 0x75, 0x64, - 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x34, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x49, 0x0a, 0x0b, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, + 0x63, 0x6b, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, + 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, + 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0b, 0x75, 0x64, 0x70, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x32, + 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x52, 0x0a, + 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, + 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, - 0x52, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x42, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2a, 0x5c, 0x0a, 0x0a, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x01, 0x12, - 0x0f, 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x02, - 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, - 0x59, 0x31, 0x33, 0x30, 0x35, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, - 0x04, 0x42, 0x75, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0xaa, 0x02, 0x1c, 0x56, 0x32, 0x52, 0x61, - 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x68, 0x61, - 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2a, 0x5c, 0x0a, 0x0a, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x01, 0x12, 0x0f, 0x0a, + 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x02, 0x12, 0x15, + 0x0a, 0x11, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, + 0x33, 0x30, 0x35, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x42, + 0x75, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, + 0x63, 0x6b, 0x73, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0xaa, 0x02, 0x1c, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, + 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proxy/shadowsocks/config.proto b/proxy/shadowsocks/config.proto index fcee27018..f96ada255 100644 --- a/proxy/shadowsocks/config.proto +++ b/proxy/shadowsocks/config.proto @@ -13,6 +13,8 @@ import "common/protocol/server_spec.proto"; message Account { string password = 1; CipherType cipher_type = 2; + + bool replay_protection = 3; } enum CipherType { From e4681e8cd3c1ec2722b7b2de3ce7c172b50fdef4 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 5 Mar 2021 07:53:28 +0000 Subject: [PATCH 41/60] added shadowsockets iv check for tcp socket --- common/antireplay/antireplay.go | 6 ++++++ proxy/shadowsocks/config.go | 19 +++++++++++++++++++ proxy/shadowsocks/protocol.go | 16 ++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 common/antireplay/antireplay.go diff --git a/common/antireplay/antireplay.go b/common/antireplay/antireplay.go new file mode 100644 index 000000000..4d1a93196 --- /dev/null +++ b/common/antireplay/antireplay.go @@ -0,0 +1,6 @@ +package antireplay + +type GeneralizedReplayFilter interface { + Interval() int64 + Check(sum []byte) bool +} diff --git a/proxy/shadowsocks/config.go b/proxy/shadowsocks/config.go index dad16d952..8b59986ed 100644 --- a/proxy/shadowsocks/config.go +++ b/proxy/shadowsocks/config.go @@ -6,6 +6,7 @@ import ( "crypto/cipher" "crypto/md5" "crypto/sha1" + "github.com/v2fly/v2ray-core/v4/common/antireplay" "io" "golang.org/x/crypto/chacha20poly1305" @@ -21,6 +22,8 @@ import ( type MemoryAccount struct { Cipher Cipher Key []byte + + replayFilter antireplay.GeneralizedReplayFilter } // Equals implements protocol.Account.Equals(). @@ -31,6 +34,16 @@ func (a *MemoryAccount) Equals(another protocol.Account) bool { return false } +func (a *MemoryAccount) CheckIV(iv []byte) error { + if a.replayFilter == nil { + return nil + } + if a.replayFilter.Check(iv) { + return nil + } + return newError("IV is not unique") +} + func createAesGcm(key []byte) cipher.AEAD { block, err := aes.NewCipher(key) common.Must(err) @@ -81,6 +94,12 @@ func (a *Account) AsAccount() (protocol.Account, error) { return &MemoryAccount{ Cipher: Cipher, Key: passwordToCipherKey([]byte(a.Password), Cipher.KeySize()), + replayFilter: func() antireplay.GeneralizedReplayFilter { + if a.ReplayProtection { + return antireplay.NewReplayFilter(300) + } + return nil + }(), }, nil } diff --git a/proxy/shadowsocks/protocol.go b/proxy/shadowsocks/protocol.go index 325c0b0ef..f11982594 100644 --- a/proxy/shadowsocks/protocol.go +++ b/proxy/shadowsocks/protocol.go @@ -61,6 +61,12 @@ func ReadTCPSession(user *protocol.MemoryUser, reader io.Reader) (*protocol.Requ iv = append([]byte(nil), buffer.BytesTo(ivLen)...) } + if ivError := account.CheckIV(iv); ivError != nil { + readSizeRemain -= int(buffer.Len()) + DrainConnN(reader, readSizeRemain) + return nil, nil, newError("failed iv check").Base(ivError) + } + r, err := account.Cipher.NewDecryptionReader(account.Key, iv, reader) if err != nil { readSizeRemain -= int(buffer.Len()) @@ -111,6 +117,9 @@ func WriteTCPRequest(request *protocol.RequestHeader, writer io.Writer) (buf.Wri if account.Cipher.IVSize() > 0 { iv = make([]byte, account.Cipher.IVSize()) common.Must2(rand.Read(iv)) + if ivError := account.CheckIV(iv); ivError != nil { + return nil, newError("failed to mark outgoing iv").Base(ivError) + } if err := buf.WriteAllBytes(writer, iv); err != nil { return nil, newError("failed to write IV") } @@ -145,6 +154,10 @@ func ReadTCPResponse(user *protocol.MemoryUser, reader io.Reader) (buf.Reader, e } } + if ivError := account.CheckIV(iv); ivError != nil { + return nil, newError("failed iv check").Base(ivError) + } + return account.Cipher.NewDecryptionReader(account.Key, iv, reader) } @@ -156,6 +169,9 @@ func WriteTCPResponse(request *protocol.RequestHeader, writer io.Writer) (buf.Wr if account.Cipher.IVSize() > 0 { iv = make([]byte, account.Cipher.IVSize()) common.Must2(rand.Read(iv)) + if ivError := account.CheckIV(iv); ivError != nil { + return nil, newError("failed to mark outgoing iv").Base(ivError) + } if err := buf.WriteAllBytes(writer, iv); err != nil { return nil, newError("failed to write IV.").Base(err) } From b5e29ea14e99b3e0d3f42d2092fa9d6dc5bdf124 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 5 Mar 2021 07:58:27 +0000 Subject: [PATCH 42/60] Rename to shadowsockets iv check --- proxy/shadowsocks/config.go | 2 +- proxy/shadowsocks/config.pb.go | 75 +++++++++++++++++----------------- proxy/shadowsocks/config.proto | 2 +- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/proxy/shadowsocks/config.go b/proxy/shadowsocks/config.go index 8b59986ed..48bb12689 100644 --- a/proxy/shadowsocks/config.go +++ b/proxy/shadowsocks/config.go @@ -95,7 +95,7 @@ func (a *Account) AsAccount() (protocol.Account, error) { Cipher: Cipher, Key: passwordToCipherKey([]byte(a.Password), Cipher.KeySize()), replayFilter: func() antireplay.GeneralizedReplayFilter { - if a.ReplayProtection { + if a.IvCheck { return antireplay.NewReplayFilter(300) } return nil diff --git a/proxy/shadowsocks/config.pb.go b/proxy/shadowsocks/config.pb.go index e4109adaa..3f703068f 100644 --- a/proxy/shadowsocks/config.pb.go +++ b/proxy/shadowsocks/config.pb.go @@ -87,9 +87,9 @@ type Account struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` - CipherType CipherType `protobuf:"varint,2,opt,name=cipher_type,json=cipherType,proto3,enum=v2ray.core.proxy.shadowsocks.CipherType" json:"cipher_type,omitempty"` - ReplayProtection bool `protobuf:"varint,3,opt,name=replay_protection,json=replayProtection,proto3" json:"replay_protection,omitempty"` + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + CipherType CipherType `protobuf:"varint,2,opt,name=cipher_type,json=cipherType,proto3,enum=v2ray.core.proxy.shadowsocks.CipherType" json:"cipher_type,omitempty"` + IvCheck bool `protobuf:"varint,3,opt,name=iv_check,json=ivCheck,proto3" json:"iv_check,omitempty"` } func (x *Account) Reset() { @@ -138,9 +138,9 @@ func (x *Account) GetCipherType() CipherType { return CipherType_UNKNOWN } -func (x *Account) GetReplayProtection() bool { +func (x *Account) GetIvCheck() bool { if x != nil { - return x.ReplayProtection + return x.IvCheck } return false } @@ -272,46 +272,45 @@ var file_proxy_shadowsocks_config_proto_rawDesc = []byte{ 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x01, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x49, 0x0a, 0x0b, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, - 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, - 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0b, 0x75, 0x64, 0x70, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x32, + 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x76, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x76, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xa3, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0b, 0x75, 0x64, 0x70, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x0a, 0x75, 0x64, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x32, 0x72, 0x61, + 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x12, 0x38, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x52, 0x0a, 0x0c, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, 0x06, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x52, 0x0a, - 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, - 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2a, 0x5c, 0x0a, 0x0a, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, - 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x01, 0x12, 0x0f, 0x0a, - 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x02, 0x12, 0x15, - 0x0a, 0x11, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, - 0x33, 0x30, 0x35, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x42, - 0x75, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, - 0x63, 0x6b, 0x73, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x76, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0xaa, 0x02, 0x1c, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, - 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2a, + 0x5c, 0x0a, 0x0a, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x45, + 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, + 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, + 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, + 0x35, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x42, 0x75, 0x0a, + 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, + 0x73, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x76, 0x32, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, + 0x2f, 0x76, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x73, 0x6f, 0x63, 0x6b, 0x73, 0xaa, 0x02, 0x1c, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, + 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, + 0x6f, 0x63, 0x6b, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proxy/shadowsocks/config.proto b/proxy/shadowsocks/config.proto index f96ada255..e4e7a22b3 100644 --- a/proxy/shadowsocks/config.proto +++ b/proxy/shadowsocks/config.proto @@ -14,7 +14,7 @@ message Account { string password = 1; CipherType cipher_type = 2; - bool replay_protection = 3; + bool iv_check = 3; } enum CipherType { From 6b542f59a9b898dc07e15cfe1ebfd3d79153bd59 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 5 Mar 2021 08:02:41 +0000 Subject: [PATCH 43/60] shadowsocks iv check config file --- infra/conf/shadowsocks.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/infra/conf/shadowsocks.go b/infra/conf/shadowsocks.go index a95200b68..c603262fc 100644 --- a/infra/conf/shadowsocks.go +++ b/infra/conf/shadowsocks.go @@ -32,6 +32,7 @@ type ShadowsocksServerConfig struct { Level byte `json:"level"` Email string `json:"email"` NetworkList *NetworkList `json:"network"` + IVCheck bool `json:"ivCheck"` } func (v *ShadowsocksServerConfig) Build() (proto.Message, error) { @@ -44,6 +45,7 @@ func (v *ShadowsocksServerConfig) Build() (proto.Message, error) { } account := &shadowsocks.Account{ Password: v.Password, + IvCheck: v.IVCheck, } account.CipherType = cipherFromString(v.Cipher) if account.CipherType == shadowsocks.CipherType_UNKNOWN { @@ -67,6 +69,7 @@ type ShadowsocksServerTarget struct { Email string `json:"email"` Ota bool `json:"ota"` Level byte `json:"level"` + IVCheck bool `json:"ivCheck"` } type ShadowsocksClientConfig struct { @@ -99,6 +102,8 @@ func (v *ShadowsocksClientConfig) Build() (proto.Message, error) { return nil, newError("unknown cipher method: ", server.Cipher) } + account.IvCheck = server.IVCheck + ss := &protocol.ServerEndpoint{ Address: server.Address.Build(), Port: uint32(server.Port), From 7f5bc447d9644cadc9a6c7280e8bd499956e1fd1 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 5 Mar 2021 08:48:17 +0000 Subject: [PATCH 44/60] iv check should proceed after decryption --- proxy/shadowsocks/protocol.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/proxy/shadowsocks/protocol.go b/proxy/shadowsocks/protocol.go index f11982594..6f059f569 100644 --- a/proxy/shadowsocks/protocol.go +++ b/proxy/shadowsocks/protocol.go @@ -61,12 +61,6 @@ func ReadTCPSession(user *protocol.MemoryUser, reader io.Reader) (*protocol.Requ iv = append([]byte(nil), buffer.BytesTo(ivLen)...) } - if ivError := account.CheckIV(iv); ivError != nil { - readSizeRemain -= int(buffer.Len()) - DrainConnN(reader, readSizeRemain) - return nil, nil, newError("failed iv check").Base(ivError) - } - r, err := account.Cipher.NewDecryptionReader(account.Key, iv, reader) if err != nil { readSizeRemain -= int(buffer.Len()) @@ -100,6 +94,12 @@ func ReadTCPSession(user *protocol.MemoryUser, reader io.Reader) (*protocol.Requ return nil, nil, newError("invalid remote address.") } + if ivError := account.CheckIV(iv); ivError != nil { + readSizeRemain -= int(buffer.Len()) + DrainConnN(reader, readSizeRemain) + return nil, nil, newError("failed iv check").Base(ivError) + } + return request, br, nil } From d55d5423fbb5af8203cf97e8ad7539e67df65bae Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 13 Mar 2021 10:34:13 +0000 Subject: [PATCH 45/60] use shadowsocket's bloomring for shadowsocket's replay protection --- common/antireplay/bloomring.go | 35 ++++++++++++++++++++++++++++++++++ go.mod | 1 + go.sum | 4 ++++ proxy/shadowsocks/config.go | 2 +- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 common/antireplay/bloomring.go diff --git a/common/antireplay/bloomring.go b/common/antireplay/bloomring.go new file mode 100644 index 000000000..0e0406189 --- /dev/null +++ b/common/antireplay/bloomring.go @@ -0,0 +1,35 @@ +package antireplay + +import ( + ss_bloomring "github.com/v2fly/ss-bloomring" + "sync" +) + +type BloomRing struct { + *ss_bloomring.BloomRing + lock *sync.Mutex +} + +func (b BloomRing) Interval() int64 { + return 9999999 +} + +func (b BloomRing) Check(sum []byte) bool { + b.lock.Lock() + defer b.lock.Unlock() + if b.Test(sum) { + return false + } + b.Add(sum) + return true +} + +func NewBloomRing() BloomRing { + const ( + DefaultSFCapacity = 1e6 + // FalsePositiveRate + DefaultSFFPR = 1e-6 + DefaultSFSlot = 10 + ) + return BloomRing{ss_bloomring.NewBloomRing(DefaultSFSlot, DefaultSFCapacity, DefaultSFFPR), &sync.Mutex{}} +} diff --git a/go.mod b/go.mod index 088f7f505..f8f4cb9fd 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/stretchr/testify v1.7.0 github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 + github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e go.starlark.net v0.0.0-20210312235212-74c10e2c17dc golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 golang.org/x/net v0.0.0-20210326220855-61e056675ecf diff --git a/go.sum b/go.sum index 6d382f8ea..2f88e8c07 100644 --- a/go.sum +++ b/go.sum @@ -139,6 +139,8 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg= +github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3/go.mod h1:HgjTstvQsPGkxUsCd2KWxErBblirPizecHcpD3ffK+s= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c h1:pqy40B3MQWYrza7YZXOXgl0Nf0QGFqrOC0BKae1UNAA= github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= @@ -178,6 +180,8 @@ github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd h1:fQ4O/lTTwSP github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd/go.mod h1:skmBSeT/GvVqal/eylE9E16x9RC29xFXCbxDLVmatOk= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 h1:p1UzXK6VAutXFFQMnre66h7g1BjRKUnLv0HfmmRoz7w= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848/go.mod h1:p80Bv154ZtrGpXMN15slDCqc9UGmfBuUzheDFBYaW/M= +github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e h1:5QefA066A1tF8gHIiADmOVOV5LS43gt3ONnlEl3xkwI= +github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e/go.mod h1:5t19P9LBIrNamL6AcMQOncg/r10y3Pc01AbHeMhwlpU= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/xtaci/smux v1.5.15 h1:6hMiXswcleXj5oNfcJc+DXS8Vj36XX2LaX98udog6Kc= diff --git a/proxy/shadowsocks/config.go b/proxy/shadowsocks/config.go index 48bb12689..45105fd21 100644 --- a/proxy/shadowsocks/config.go +++ b/proxy/shadowsocks/config.go @@ -96,7 +96,7 @@ func (a *Account) AsAccount() (protocol.Account, error) { Key: passwordToCipherKey([]byte(a.Password), Cipher.KeySize()), replayFilter: func() antireplay.GeneralizedReplayFilter { if a.IvCheck { - return antireplay.NewReplayFilter(300) + return antireplay.NewBloomRing() } return nil }(), From d2a51b9b391b5e402bf6c0db87b21ac0c14a1099 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 2 Apr 2021 00:10:53 +0000 Subject: [PATCH 46/60] update geoip, geosite --- release/config/geoip.dat | Bin 5228255 -> 5241913 bytes release/config/geosite.dat | 15487 ++++++++++++++++++----------------- 2 files changed, 7746 insertions(+), 7741 deletions(-) diff --git a/release/config/geoip.dat b/release/config/geoip.dat index eab1808606f50abbb482eceb0898d0a6c1f56619..bd5d19b95ae94f6898ecfa29f91a1c102d7468cd 100644 GIT binary patch delta 58246 zcmZr3XFya(lh>|rl!GhuA_sy61!6%_b9ZtFV#NlQD7IK)jK&gU5`n~mC6-v$5E3DF zqegXUp5SUj1}0|9$OV9-n_` zt`)dIT=m2}UBXM3CYg9_Ow9O`<4)st--o6(G43em(mm9F#sr-EYp9PGN{kM%@W$P! zG~Z;wpFRq8ab@S;)^oUNbenjd%fq9(b#fBM8+&wGD~Q@!k9QGw#9+psWOd3F_G{&!u0mew&?6BRR6aCllgRuRG{Ud|L;;-`*8|5W?7z1P|-^0Ub!att2|E0q} zUA9+ChCqUkpVi327>KuAvoGSg0Nnki{hAh@_CM@DYZ*nwK%hXuPwa^eWLEJNqZrfp ziqTLcv#EGng~mWB9`(dNpHmpzBMhGXW$&XP{ssi@S!)**k{@Il*-!0U05B22f5jxxsd=s3c3l;lw59xWjx&oqv8Tmagnb<9yH zj}gk&I>#f;ZsO@^$}{TYF@$=6m!pv;g3?rS3Uwu~c%oADFj~=U zf5#G#)zIWfWVI_3ffn^QId(Hqm6>Yg?nG3u*|CW4N3E;eua+H9p$ZlHL4^*gVh^j( zQMHtqCmU0F9F)SFtd7Or;)_~iIG!8rSfka+p)ssp98PKM_=V%FIIfA~u*Rp5u^L{# zh*W#r%#rPldpjNH_2SpS5yy3MT;;7Rw<%;Rs}*RK5x?x>@YeVgE0`bU8k$~?Yg&VB z+wg}OgvW3F9Wh$Yh;xQI>U)briJaNv97#rTD%8Z~`HuM-8f1mteq>e@cKb<%POH!v z!mV$CBTe9}Xxkh|74>&vkKv@CV6NkY$S}Q#D{=3Ijvg%73VZ!UFzY{ayrE$OZ5p+O{rr`pekM}u!U{(|liW}4e*ITEI1=h3);MfF@LakT1i|wU4AIP(yzxX~ z@`kMc)bAZxiZTP|5VmJ`I^JV!2a?doU3NM4alj^ck7K%G>i%n_q__eEFvbjw(=k{bk1x#`*XkYHc}D`CL&lMd3-(({bSyNJOlaPpUef zly%-*<1h%!E0qR9z3aN;uF@`*?-7yfeKq^4nUO4VCf}cn<;MFf3zbXd)L_Ck?2~I_&pGYD{qeSQ1 zO#Rb+03mB|x-V(c^CFC4%+IGkR?9vi)hPCw*jG1+o^c6h7@=CF@I~2vv?j(v0 zwmO$H#m@ey7X3tu_yA`LD3l)Htdf|hbE_1RbE}E&O~RZ?GCFqzinfJ=T1@u2e+ZKn z5zam=%bovBseFEs3N41TDEsjIG7qB#FNknHQW#u_2P!mk*RoDrMWEAOpbRBS2$iqP#;w{aqeb1UfxO&Uo~~Q6vSSFxZc#+71*{* za4u0Sze3EDMPE5eEI-{`t#gIsXB6DRxr8yfavKnMa|`EArEgp%Lp~ne$~m3mEZCUh zRFm!1tE9xIt@9e`9M4~Ovb0lF9Y(lzvO7~~^AuIr2L#ces5+Ju71*6`a{)^o&LN=c z7>Dz7h#utM-q{EKoYda=GfN6ZHM~-TI(aBjMW)Xz0voo3-f^40^QPa@K&d%LF%Gh1>%SoWXkzJfh9xl2` zY{9F0I$vikQFOC2;c~N=lgxp(_m)E+oyu~~VXE9*3FWdXHy&veR!kH!3FnzK(GEc%W0skVSW!63p1a&X;Vw zF1q)Yj2Z5XhrEQ=zU92g?7t69K^fowQ-z>W0`Roauc|*NBh{ykgSKZu@<7S&MGxfs z9zNcg7(tDG@JwO!fMhaR>j%$?x4MmYR&c|RVS=+tB#y+@6P$Zl9xVFvb0VX7GHs&m z?<;+$=ubIvCryE9lK$TOrZEzo{=j*NHO-44MZ}9>;3x}w5lW^&MISo9SImE@C%k*- zJN?K6;N4H0R~6^I`~pf)_vvbPcqx1H>*wq{-jjgdr=mCd{v)yifz6?zRIJbIqf!3&E=htZ73ta4`7gUoW}pmUjs^Nu;E_@PEOJ6iFxOHOwW zt~GMxXIRj_es&9|MShJk%#hpKf5LMg;|)pezcGriY-@&H?c0ASpz?f^hTDZ7_U$xC zizBh=9WOlaL`DZeTtEbUeJZ0VPuE)wHl?#()L>ILfROl8Mv6ghhX$LrLE9kvPZ>L~ zcsiqrh})dcc*vpC*F-aJav|fqz-bq8T}@cLl2Pl$pWlIFG!{E2L^blj1GJX70C5Xx zjl6J+Wk&8wGS4F38@_TgYw_VLN#3To?J91U3XvQ@OO++V@Rg9YSq-vKprw!o7<8YR zGJF+eOF62BuM*`_XoKOabZW6#sj?~%aCpH=%M~9yxyw;vH47CQ%zUb6V%S-(8ua^0Oc!=mU`gcnS>(6VKYytzZ&ppdc zPRu2Rwf8L_Yka`9vdk@6;Q9bmKdIe#{Qh5-s{taJzu^A9){c^|a{|++(m9E6`Pyu~ zDq<95t>jSR^^P#*y3x^!J|sU*h(1(fHJQ-zUpofkH$$xZym8wGR%AlW+F1k8jdoTG zTIsM_*YtE+4V(kj>ja3Novl_bU54?f&erul+NS##spHip&qa!{*6UdL;WoH+h4373utZkxEh>vBkq8} z|G}f4)1wmcvFTCmIPL{1K5KeGlk0FFnC8j-c(_kL;*{m*Om9p0_cHrEE&il!Yj2*L zjk7j%9l%MK=7Kx%=8av~ad^$7m_&{{h}$hm-eO`igkHT!{YPt)D|9I47W7kGntWJ5 zsdlRs=Wb2zZs4l0AM$^X7cn86`?-H%L-7u2m`=OJ#<)p^|9VNYsxp!ko<8FLnt{{f z7pMK>wZ5lE=xGl5{`81M2)p{1{L4IH5gPfc|C?4+^pF1~boOje0IJz+wxF?hgRFS+ z3;%Bd(V*XhEL;>Sy%%CZ&Ja^$G%dtbhJ#JY~hb4Qt4d!dqH%`NzcNv6vN zwD2vv+0xKhmG_DaA~?+Rq$m2OUCblsM^&%K^b_&;mr(%%`mMKr4fhM)RTkSulKQ_V z`*3^gN*}!OQ0#0y*?j8$iVti)C04}_)ACkX^KYTjzw{iD1S+ksc94! zU58wbw1%WOwhoqt5W&Ww2OlMwz()(a_?dzT#$Jc6u^eiEMTy>ROsKkb2N5lNE!`vn zUA9~k#0{!b;T7Y-b+E6L7%JM@eSiC~j;Wvc~A`)*XI8qg!{-b2?ONjx_}z zi_#U>rBL+IZI-1AQM&Ci$G|Avo;q}@Kpk?dN;C0bz@SF4CY+qop^+xnMz}QgeHvKD zQ69$n3O4Q)BM)PYf=#H4jaIPsy4WZMn^zZG&vRZAPrjRjWHPB;@;W10bw0Kjwgufk z$DWr&Cu#4%tFd!Ays0|&sSj6xJg>*4pdr`eD!B^$L0QxXg6Po&g8u%tC|z&>gu|P! z*el6kH>$b}pT{^JsH}CRXIy z6nloBxff5|()wUCJmhxkM}p5XmaJ!g2#GTgkGb1AfR_$*BSU1~z1Fh?YPgwx6(}@Z|s)Q}s3b!pebY20aYg9N_&wjz+sJ3LbTZVTFRwZoY61kioj`5qQL}1$9YI%e_eod zq(uwkP2`c^LVi?@OtIny15@&Q?}*i~Ka)1wZ*eLINAV8xj~{ z#x+KqA=rWr?FU5g53NXwd*BWDcr>mV$iin^!Fc{o%JoogApS5+ zL>OTF)JALujrisG@Nqm2oD@Eh7s~gP;~A5~pZjwDcxyrU`vUrOZ;%yLr5a%Pm@J}w zT9cWFXJQ4kn~171{V6`NF~$2ek0bcZQ|%~zTv}I{R({zs0FBcziZJ?I_=C)$hE=Th zu)P_T>>1l_# zW{5l5$^_h#QOVn&N%S|Z0yzhhRFeUctV`ppz@YTcAem`qg2{|l&x<8Y7yd~Fl^Td3 zV%EZrGXK)P@?&3G8qsIa6Izu^gsR;@02<^KEHis>hBELQF4GU{CqHWH0o^sit`usJ zhNwCSe$#gVCzYI)eKA<}8#fv4%j;m4+w4InD)KL|O#5b6kdefk;tk3*{jy~s_ck+Y zUw<$wZLJxat2T&u_FdWv5k!E)W+JFbGK$D{n5eGf-jD^9_<(ZFfs*@(u;az4G9^^W zXY5PQQ={q)kSk>RQa!k?Aa!sDXf_8=F(uK!$_1LCK|j+fRZs;P%OPcy0yS~nn<-|n za$Mg;3(@5Pt68r()O?Sqn?F#d^SeV`TyKAng%`h6G%*6%3PM%|6$pcU7pNc(8Wrth zmHaZhLZx-AQl%`sb`nc=TS%PHWGB&N zhf0Z(a+(9_kmiVtasT*RS*DX{rbCB_^JuaI?IGELG2BM8Yz$3y;0TiJn)OSuf?S&J zfF-0m!jdLC2ndoN!QOJ&3OV6HAtXHXh$upH9cVA7E@DgyA(s;#)PmfFBKCtOG}(bB zB-u3w3`=%U1Ckw@{*OOt4Vvqq9!X))C|oLu7@G5-u_5OX)g1oevZv&8gd*OydU~4O>f|4lHMlmSJNA`7fElYziCC-$>|M@ zk~0-Zq@9JOH;JYOJ8DwfxC8xH>x~PQd>CW8!$9ad3u%EEP&z z<6>X}*=#_}>uf)LeRuMzkd&?O{tHY>(S(69Ev3{eWG=dTV9YKda7GEOyJzr>uT^Lz zaOpoJ=DCFKM+b|jSCzpZRnKiG;WtLcM0tn6{*Oodx+;>zr@SjP5mo;hXGR}SiiyEP z)^~lx3HQ$UVd;(3G=Xn*AEoA`_Q9n&sev5+X;A8)9GQQkV?$DHQVJ}O0`cu3sjr#5 zf(A34b-`P(`MuPsT3j?WRpf%wZ-NQLn1Bwj5|USE0UcnI(u%&wO+Ddz95(Ib?Yn>z zc>tjyd8s!3W;C zl-DBhzWbpv9<($S_L1H$OdY`Ct6!x42G)F;dRvfJ6MIWi2WZ6weZhkP>r&qlI1^g6 zA+3Tgi1{GXSg^4ryskol% zM&=u-amalmHC#9k6d&A34XIZ^m%N=j?*@B_2RnD(6Gs=&03`$GM>l{`)J@=FznR+C zdxTP9FKqCm(wnKj;4gno?d8u!phr(ZnUlr{)aqI4TijUu#k15;ye&nPTeo$0H>gkr zj?lT_J@b7$Q1ANDJ5X7xb0*(m6YVffQH*LQ*l&2Ghi z$GZ{)yfM)gL=H?GYUVmA;pMGeI$j(^To%;URe--~>zZVx395FQYH*`Jw9}4^k~R**HR?RaD6Ox zBg^+$Gh90b-z!fIt+XcJc5RTyyUwom*r z6}MKc0sV|f2fD**DfCK)t5%^qN-2aeD{VsC1z$Sk>TE!-{p1>hzWK@3M{1fuV&dgb zt~ibw+USgHx)$xY60ceH-<(9)X-mkyAMxwrVTybdb9oHvfSMU+i-*q{0 zue+`l2L5RQx?k&x?FqSC-roA|+2B079R^S_^%_8%scislr}hH0o5}%b4~-yz*oN45 z&xVk;@O$c-6e^NN!}%8XI~oDP4?hZVH_~%KxIv8jg2ZjX&ls?lmF`O?2Pj z7Ngokw+p8wxu1wQt)=^x4z>P5>xrA%-7R42EQpGQZT*Jus&$~l{R9nkx|d^Jdv_lm zzvXg|6}Zj#$8>i~Q4A+q2%X(?Igz}mK(o5Ir;3Y-K8CLDXBOl;%-zlB2$Ya!E#E_4 zjp07SfSilMm)>-b<8ampcLz`UvSME{unWK?@49sYDx2t@i#tqmLkcQ~H&?jVWcNepOUeEn;ka+<9;ku*K5z$%*%0G6<^#7?6ju;2&2!zGczieC-B^RaC~&{4!9C`? zduqfqQdqLY9W3D=3f*y@K4j=3%=V8X?|IR$E8Xm@&i)VY655(o?$H8%u-@&%1%|RL zvHz>E6Vy%nzlsoHyn17U`#lbi+T=bX;11upmkDCbdFZ8n*xg-^-q`0(Lg;|ogwIyE zM`}bb!nV~hXbRNxq&otAbkZFs>L3ZC4wdeO==mx4dc3*HT_TAi;T;P;aL(<+i-(|# zVZRIRX(C>J#ch_v8ARKS*W8KpP5!}=Lzy85N4^OHh)D-Wjv!pGUUNI?>)Vj)pe8E1 z;U0qYH{JataURsc18=%-^Qil6x7{Mo6DqrpV+<<0PbLf&-FB119(QlMmvTN3ZgMl6 z>H^6)6rcFr9nSS^!77}}ZOH;1AeI6FDyJb2P&EyCfbP?f2dI{YJV4KBpab**48M2B ztrfQ2cmK}$09VLl# z^upbm-&&m(DGABYB2T5Xwj8!=)6QrDb&ILs)0ab@(AGSCIqNYD=I4CUY`C#+T0@B& zfjXPh>Wf-PP55ndTC6WUd3k32G0+Gvv89B zQ)2F2cM!;41vY)&#+>=MBJFeuY1uc7e6H7S-zwFD!hzrom>DXV0{UuxGt6 z8TO{Hk+*OKr&?L?^PXu9tpaQtqpB}nH{tqkrQuWP-h^N+Ufd>q5{Dz(rE4^NmIul| z-pq{ar>5`Jp<|uW_1rad>V?tbxc+L2%wF*{s*9Ch@eu6&x>)%YPecA4RK@vO zICyk1S+KctdW#gCQ;@#d3a1M^>Y>VRez3^;Cl03O-TXw359!$)LRGim z#g6%4dSl%CV0w#St_*QMz=rY`G|n1oL7A2)ID@`t(St-YE~!pW;Bdd5F`tOI<+P{} zj$iCvq7D0enB0XTE{$e=HsaD476cKO-tnNl1)xY8pa4bFo&ivO8ma)r(Vzl|4Zi@v z2ta}gAPBFmC1K5YjXmWQiIyrp?2aUUL&A2SE^L*=7ypO{_=H_Cpm)FR9Dv&fhh^%x zS{%1JWk>&f$o^O;ZJpy#|I^GyeRA=^w2$$xMQJp~h_1*p&rDue%2r|6X@1n9N>x539K2 zDg>s;GJD-6s}y|5%lwSP$9&AkI`R1*;(7hd|7d(hu-P9BVT~Y-Odo7+B8h7V`NrYq z*R|;9*c1c4JI3r3p;y%(Z@!Tfn4zU!{drrLnF`c(A5`{TZBFK~_d0W=h&EM0SE;9m z&QNg)phZ`p)8t#=&%|yG%&6HlSjCf4PP?Rr{L*(lr*8vkX4f<;8Wak#)_$WogM%Yj znL=-AFEnf>3j1B zXW-9C@63IoVMH%E(9k3_l$N4#YvL@p;;h-MvqEne|L>Sb`K_RT-@RhKW8xow zkA^I05GVPs1m~a`3mTl@10Uj!3mXK(;hkj8jD{_1V3sP|kOrHutiel%ln#Tj36HtZ z;JyWqxZhxt#b=zA`U@7>(cmwmrs3z2xU7Cdp^?vw6|@M}(5s+mb7sT4R*QUk>7aS# z7qko@SkvIIMl?JXDjuu>vJul8o*9gL+-f*F2cJoAG%o?a|9+z}jc5L|suBKYRpY<+ z3UOjCs`{;=h08_xN96~1Q+|wlyAeSSGBq+SO6Vrxe}=`cl}3_fIr_IF;3e6@|BGGx zf3ZvdAC|Y)#iHW3;tz2b@QC1y;eyXNv+9^AFzZNI#&oT8VGHqPhnS50TJA$sGdjkC z4e=S0h~L`M{4zPbv8gh~rR7(9;NQ>24EDrXH8Ddq@G5d&d5{S`iERR}%6^TRFX5y` z$p#+xA8Y@I<4;aP`~>?L3pA75Mg1}ts?gVX+ywi1KWQbjZ~#u7VILce{4TYza8FQa zSu%Ol^K5IuWySX0-a@n%&TqZ+hL;DM?4!8v@PnyIm0Hb;gAYk`?3$63p;?raH4kQJ}2Z~IEXof_J%aJX4x zTPayC-)w4oE{X$*QJ0$84r!!&kff|=SBmW%{<4iNP=gawZN6L->{iIE>^0SFqGJEW z1I!{K?Y~3<4h?qMY!5AOVP-0R+ehWO4m% zKMOff@mYV{BJ?O+Fr!c3uzk&i;)DSDDP8lJ2bo2pefdV<%GNx08 zvl_H(IL0+kahb8R1+>?g0uwlRjl9Oi}*YhWfRk253IJRxo@`ow0@;~(bQ zLU{b!Jez~V%@^3>^l(ULz~{D~bOzaF3)ae;PQ_o_>Tz7?(%;1xe0hcKJdgISw(Y?) z*VtNWdd9Kga7k?(8?~0yHejkOscpzwc}Z6fEHua$Mvn91n*+do~n8>2-8*MA` zo11KUjx*t}zqMuR@ju&bWjx-o({^2p)*i5#(Lwlu&h_+w?S{`I586FeagSa?_c&i+ zo8XChSK5{aE;vOei0fLGFtO`e?#+Qo_5Dg4?ANBQC(hu1v}wIydGC3}mc)rM1ZBT! zI~s`1wYF*wzj$hU!C}pFn~y;&Io`(W~{+x@gj2?)Q%Vo_(Zp;?7XU^~4=mp~zkG z#2uJoSn&FsXjnp~6R^wRXjrpf9vQuryMaqbMHh40R3Mwz%@mF zK?XDWWMy=KcT;YIlG2TK{QH{doqDw3m_bBwCkR|MG%=l(qwd!nkK_U5v?^{|Lx&2q0e;9{n7sM_ICWE9yotO>_%@c7B~Gk7I82h`>5k_EF^(_pTu?+ z@b;Op_cUntyx3{zllid?(V-t&S@FjCvBkddP3@JE)^jCkoYoBe#O+-3%9ArIL4vB&!p&)@nA*@F3pJhOACkP zehSE#gGU5ryyUpUION;d7MyKUARGJ|Y>H%AzrnW<(DGs82HzHw!r?r3S-VM{MDZkKn?>`c%;EgYntU+IS5Bg3pUu9jO_L8t>jLxG z;b>i8InzlOSj~oJUEqC|taO2p%H_1E3w+E*EL~tNShgtdvtV%u6fRo(S!`SRoV6}U zWfi2d3IbO096%QY)hMf=XA1kE=fHH)sn1e!Ww+>pixm}ul@zWECMlfE7<9qP89H4s zIYUQr+ZF!7Af4(F;-NwgMP`Ugh1^Qr5R!gnE+K)?YveIj7m}m+BP0)wl9yQ*r3z(3 zm)6(j!k_X=Q}<_{osRzirPIj;Kpkla0@R7FVFBt!M>~LW=n5Ag7_nrTf95M1{rRz? z(Vs9l$-|WH&jLlaKNnEd%4U9=gP8qjjln@4k^+A?+hGTSkA{W9&$ z(SDiWoWMm_j=rZ0WQZ z378sEvrn9bswk;7=VI%KlVmRgO>WIyG{|uqP?<~&?3uz9dPPD1q}p7986{T>aLiWiI5PqaG%vGU08s$)0 zuHp`;P=yM?yF|*m<0%#Qql!CCdns@^FU!?}4jrpuisdzxo2Ivr3`%Opm|&A!c5IC4 z5?(lyOP630d|@v4f)}BWTJfd%+)5tL{)}tQi~j&A-m{o1<_0Wg_3IB=%Ieo2f;_0% z07X)>0ZO1&1C&fP0;mnu5+L@X4ItL@0fL^7vX^qPuy)K_%87i7Wh?{KAHIxb9Ds6| ztl`U8rl>#sb48Qkg`gdpx{T{Y-Zhxf`DI)pY<`4)&iz7+3c$}k=irr+lYpULaB!ki z2Ym`PEaD2d?Py&QH-|fj8hy#V=QBcKIdL>`#^x`%n;Klak~8p}AKtc_`#xOSpFq4a z>IZI;j^psT6I?j?B<)EhH&P3WyC9r>j+?E+cdl}GIS9@RHQX+Nn~OiaLFqR9%6)9W zQy+1Eu}{zA4}D4aO?t*D9~8$QA)DoBzzZ&xepncPL`hchM@X_lGhT3ql%ltp#_>nS z5c9gcgy!SEL$^78IoW*TU}BQS=RkVF;a1+}K$DKAj)4Pc{4;4J_}w41$mVyDg}w>>mdzi> z<$d_&7MS=Rb zXlZ-fKvcPke}Hn@+vZ#3q;IeCW+Q{W%7>U(v6|ljpRS;ZrTlJj194~L@Ax?!azs1Y ziZ99E-<9$3*{mP_aU1`{S0v$rk00c328-LlYP_w6uNMIdw&4WP%V!odwf)68q-tw# z0jAFo81NO7kKiSeG-t(Y{e_EgXxS<(#qj~c9-f{yaEU!O!|Lx&knn&*zlOjPTnZKL zqnDvVUo<342uE|mglEDCSfm$(3vVH91XN!WA@oZiacjZ7y9oosa^+muDMQCvp;Lwz z^GK%*uvQ*z0m`HO0U$O20;I0qePGxl?FKmJsZJTb%&blsM%L1uG6Gf3!D?x4h$eAbyTaL7E^}@VT03EHgzE3S zPcuuWjP|OAsj9ei)e?wadBW2vBZmakwzq{xB5az-Gl|aaN3$6YKrEvGlmlAQoB~nINQF*vXHLIaGGcS>U>2wC-X)UTa8Z#GiB07_QKHiH!O z%`d6J===o19avVb6qHpf#9R6Ur@)CqdlDza!p@zy9ahLN8;m-4#t{2W5nyliARfq*n=gzyByWs>3OXL7$ zgU;0xgw8ftLDhe97Q zRL(Bl^P^bXcF&JyVbeXoG5R7;XpI^M!khUsdBRP8=|x!G z8vN780<5PRCb~YxrfI?yA^t9OCV7bKb$7oC9Z{j9Ds&DYTrg9J<@iyX(V7Bbx4eac z2Fw!RLy$HupSCiatoH`7NCL=CjRdG0H4Pw$B+^;{<?TW>@3xsNo^ji_hLw%7@%!!$V!{cSb5RDXH1~BTrTsYu63%ZA#$Op^5d&8mf)9FG1)n8ndo(jx|%m0ANK z>sayeYr;|vkG>(C<#4B8g*+`j`-jk+!qO}qWD?MD9ETX^VyLmrt$1Z#opPGV6O#RH;OBGX~+V?eapAvXm2!S zw|F~3p2yEA1?}WD#GKM%mdNImf^>g8bdPvei&GDZQ*`L?NwGO>p}sgN3OqJciO>CD zlH-3(tiZor6Jt0SS$p3Q_w#tbEpa)IV}2LsbEr#jyPYpipb-d`Q2P_qd7Z*LvV+)K$PeC2ItrtC2y3(Sj(3NDn z7d<`BT6fXYQ_O%xPi0B-yrcwSfS$Q!u^k38IVl5Vr`-mi96F%|XfT~B0yLB+K7d#< z1c+r5fLKRcZ1*M(-R>)$mr$Wa8j5vR>4_c<+v<8FR~~hiXmoj04nW1U%L25Sc0PdE zD7HkS=(t4V$;^TySWH`h(v=!stm6ZYb$o!BK1(!2AL6Q$@ZtjLF1!1qu=`WB>=_aI@f>Lg zQ@)2EA-*|Bs>iXriFzn|C51g88Bx(aATd)v^q5ZQ{Xdn?aLn2s2i3Aer0mu_$&aU} zh6;N^C#D>FhAUJ(BM8;A1yYD|txV4o1Y=z!{h-_c)oYYO-RmuY(4{33xwxh0QaD}? zR}C$d4$<2{3bT?F!mQU+s2Mao+J&U2%*L#KP=vQFlazZo3bV-S3@t5`?g6_6Ur6kx zx5BJ5Dihcb2tZwm)R4#`=^lA~DZy1#_|})wYsw8v*+hF3S|a5`!P*jtRwlNu77FmT zuccpg(6rxuBfSSB7iv~YOu-vUCG}pifx`&lvofib;*kUK1k-Gr^txsk^spf@We69`IoUWI;Ep$jT>5g@#Im-MqD{UGr6)^F7yUsJg_ME2@FEP{^8Bgr zB6KoF7p6kc-2%}5OOkSR*u_RrgnqjuDc8+ilrvMhCSBhKc|*_o>7#m@K+MS|8nfs&u%b8zc|mmCr~HmJKbsv4Odv=*A|1@Y=s6 z<*L1+8_?2B=sm(H`5(piMYl-sZhJv`m+Zu%TLYl>*4COqJZD9#d5x1RL05Ur5_u;d zPZl&+S=bf*-bCU0dsD(SThhD-4!9s`l>4oI?+kd{P@{=qu~T%%snoecR)x5mPP36r zQgxmhIA|AuyLoE@$Qhk?eKhN6;1u26qg1)O7a$bst8vkAE4oV}Np|MlLryedM%u>U_Ty|H}!%HeNGDcFi zSBMgtNX-e6Q9XiwM9Ur>P@xJkc%P02W0^sZUMgjeITf-3gxb{C1o4kw!=3AEdMlEj zbXRDeD6@{DCuG)vR>o@BErLZ)-c^al1B7*P8cbT|Xah|jy0|KOLVAg;_mi878=t`N zP6P6Zl5&ck+*Roy5aC9-hML}il7jn-j07^5zjVazsuMMEB^_#=q`Al1^(k2%${IWct7xD;CAQ#(uW4qAO!ucGz$w*pmFk6x zBe8*Zwba1GgK~HdU7XTCCvK2yKF=Y(|D}~?C(mR*SBAr)=NA;N&mm^5_^URW*M!&P zO^`2}y=$bieSn&&P%@oy1I|v@3;@AA8~^ya=2!#RE&ghx22PIn;wz&x2SivH8OLfk z;Wc^IzkEt@9<2jVIi3G6pF+AK(R2BfubD2(r>rEp_>b4X-8a7I;76K)++!R%RdYul zRlpWJC8-P8lBOiJn9ZC^Qp?GPr&oa{Hdkf|r{~y~2tdpjfWql=2B1h4YD^6TTmoH= z0K^Ogh%F>aT+nl5N0+!JfQm%z64zvAK#A*pRT}P6pvej*Y4&SPG-}c#s;lo;omh>p zzZwA$xvR73`Gft~2>UzY^#kPTax1pQNv6o6Qy0K~T906Imr0ti+?#QE!zlzzM}iS%QN z8>@1LreU}bRn8y6ei_i^Lgf#qQPTlp=TiYHpaBlh0!7@1#frEO%V_|wOZtel%ethg zDwL}V$yL?QRh7uiR|wT0%Ti+gmPBDz{uv&Qxf*K&jkvp(3v3 zXNuoiE>`SpxlFOWWwA=9^s99(NxzbP)N(DQ>nyHoxmm5UT`k_FvfiVz+3Ue$3o~Sc3#(9t!rKM$DW{ALu2U-RM-_Kog>I>(zfqi4+~B$cLhz^vEv&eq z72&XqO}nBQKfW4Uvb8!r?Ic^zc7dume2^CA?{8?H9$WEIFAkq{w^0Yf7F$3zN)EU~|B1nhD z@eD2O?=>sX&gSvq+1f{(G+SP&Z=0)i!*REH+DSYdSk{{1h!?ne@d9my2$2A{|1N|k z6T#vDd|`*uF}kx_`bBABHcw4R)Jo!C~mQ43R4 z3qH6>d)FIR?b3#3Lc03HTi4HfH+F+!{6}kDcRg2vTc+w3@hE&}{qVqJ%#!jwCz;medmzx@pt)N&l=Jy!86BL; z_d!Rp;;3{Te3VHR3)tCF_lqQwc?Ay7)Rorr5}Gqs`-B$w(7QSfnRlNYuj|X9q=~vM z;&H;DdZMnE#4p{2;y=*!!3#dno#I8XArSSQs{4rlqZU_A)x`-?1G!Bf=Ia`YIAMma z1&2GYbI$^=piwh*ow!|S<4j#Bdhv~WK(726WB*s7Mw$Zvillh~AQp@OK`@fGfseab zf&+*pIDpD&wgrfNun5p`nw0@!Z`T20Srj0a2={-L8_ukTuf^C+T>wc+

S+AK-L~ zkO)=P2vyYxRn-VZ)m3)Z%KKMAi^}c2e_f&?Z5@oFB=FG1nYwo9^hP&A!3Daopaalp z zD_SgvZ`XANP3T(oV1wtZ;9!FnMDHhub#I!)KM2_SlCC`u8{*rq=qkkFK!zt>)j1`+ z|GI9zuR+%J;CBh6Gj)HgGaG%(Oznfe29jPgO4P#*-2Ql}r2kfID^Cv&{@t^Lh66xf z({KQ2C7tE~w3Y@2K$~d{15^%Qd%8XK3(3LgCnkNZAYLK5+zQY)3nSnAnQ+7A`cf^F z-fW{kBEa*!UH`<>2a4o$bm%XbsKFYiqyAF?)G6w!hpRekiH0*W^*aTr%g3a+O)q@_ zmnrY(9~Z%aaw<74pY|Y4ahz;L$n1{GH@8w;F>A8pcqN8=D8E=;+W(U>xg5CloRXhjQ5Fk zd1U^$d5QjzFTB%Ox=MeC8;0LstzRhOzTfDV>*3XX)K1;lhYs{a-K2N0BTQXdPs zXXQzKXD#Q0JDt`4J0-pAV{-A(+KGe7NL!I7KEudit5WFTP-T(*`Vi1HOh4jo#1#+D`%_oca+)N`8zOslLr}qm~4QUY=Ek%ApreCjROcy4-o$Xbc-4X(0%HT z^LNOWAT2%2{Cob+DdzL@cd&WAr%6KhzV-YGy_cM3#``yW&f>Xhl>fJ<2@fpuEcQjC zt0VNhUjj1rO|#G^!rv%Pa)JJ50zexF!7-tD05GHQ<}%CWA`4$ zTz?BYb^i)0)MfYzEgGk)NAv-UGPik}n!YMF8b7RC%#Kt?8b7FuMOEh`O#NO}$}_%S zx0qIfov6wG#_}G<_x_C)J&cp;ViAYyY6Ss2p>8o15b0qYUl)t=f3B+)#KO3`#d0Oi z!^1fCUsxWn@B9lZ0(MMYEGn(5l@W?Z*DaO>L<07$x>%HWp^jF0P&~43F{uPfc^F6h zFBX*YFb@A;EGXq+e6ubV4ch+7SD=)KacJFQKzKwF?2x)xR8vQ*JW@QUZZRN;QXa;f z|G^TaJd6YX2TPRlFb=4TMSkC_S`no@jQ#5t10qt!_N$9U3ooj^%9D%x)GcO8c^I?* z8!Id2Va)n(tgMuWv3Ff8+NWwIE9GJAS+|%ear;z;6GA zrAm1iyZ#rJD&=A9QWuNH?O?v5N_iMN)h(u;0s$TCV$lOdE2@--u|wTrx%t3_#`L;a zrj&;4D)gJlJyw6)&_%IJtv(?iqgefT#5F}*^@JSNWAWYF9Owl0B zgK9u(8&^bIsQ54@K1^gRMV5sDQF;_alY-U6rZ90kwJA*8rF{0Z2i1UagobeB;AXI; z(NG2M|0-+=>Pb1&<}hiT@_p31at$b&ATuMhg9>RKzojjqu10nTEC6c2em+but3{p< z77~{Fa(R#d0KR`B{tVOKXKLvmGv4|q%12nWvh&gD714#rk(~yY7##4d7r^U0P}S!_ z@E-xp3u@|*j-en=!PBcAdT;~yd3wR+*wFn8A$a<>Vq$z-GcmqxWHB-^sWc53TL@8^|?y6jOx^h+EgnoEu^ASjU2~PBap%8l!4p6YK&d za$QQ~66`VstM(CsEmE**FC*A56)fqIa9kX|hLh2G6mQI^%lON3hE)@VOuL_9)ubY0 z4=`-^|Kf1KE~8&%ElQgsV{?tY{+oCNC06qyB_2(&Y7V8?F%+w2VTR2kXk*|1<~ycb z#;R$a(dM3#(Qo_@@p&1m4mynZd>){Uga4PdoM6@QOQEeM*kS)mdy8PzaXG?}3+-`W z%=uf8#f)$Ni#QOl>U=<9d@BgB>fGTKHqXQO?!Pz$mDibuyrQjErYyNi>k}o&S4b28 z%>q__>ICW)i`u+bbFn(u1;&s54~J#1=74o*3ypcX-2b62dNm2GLtXr8mRAQ`Zk+OO z4o~Y$?q1P8t24P%u(`L$$5ra=PC?%a1|O?)E)^RJSar^&Vj}^oPO4O_9k8SRrCJ_f z)fpDh=E}`~n?!{=#Zp-OMzHD>OTpeDSaph}VDA&GIYPNzR>(*)<+S$Cc5C8M^a- zxlQh&AWofi$h6grR-JVa>{k?7X97X6#c&m5kSWjuR%NV`vyOoEaw_Kx$PQza2=tp# zA`BRisLN5+2Dtrm(5h$)Z{W%B2%~|4x6_fuz^Bqdz`&=`VZp$s%c)%^{*jC^P%FQZ z0c5Zd3<8Y)GIv48*a%*Xjo>4*;SB;xyafr$Jqk1YTYCb&aMkcLNpFOAlN z1T7h^iC)?qrnh!16QP~VIBP#(3Ti);h2lOdf|7VTb{dqi)1Zu<1}`>t8ob!pX<%a~ zeCW(HVPmJkTk(pw;uUWfljZGZ(!CY005SE7x8fCVIs_Zo&}(2rFFfhcYfy$>gKsip zs|>vcW#}cu)ID_Q;P5L~B%M;~{G`-5%^KYAyecX4h#VaLXxuUq9R5aD z$=}2(`NO61WEx}ehkIYhG{%5(mcn(^aK9)qnvXD`#0Q=hyl+)dkXCL`-Vm%fFPP0+ z48d>(yv!xI4dWZ!PL_nPZwS(Id<2AGIQ(a~i!XQ<1o0srsB{U0*@L|u;PS`_a^bTH zqm|KZ1r!=&fS7AaXJC9&4%LI1n9!7CbDO3do!bCrEtS}m+ejrgxzd9VzzGtx( zUTDwMNR=yf6VesZ{}SJ=4)&FxoI2P>s#1A%unlnjj|O8Ow9l)98P9Lz^}Zh2M|eR_ z;^BU8Z5anl;?9K^ZbYMe1Xbac$sHvI(lJENAJ@j z53e@rr5H^D0UQ|wc>XQQ$FR)VOdqB6@typ@54w7LH9&LsM(ctuaG%t%KY@6qKL6qZ z1cKk8Xp?XOK4Y&bmw^SyIK>;{s2JtE?+wD=_r{v{ef~D%fO$Tl+2~<-lnEu=^afB@I7q?^;5M<61-=2?SQ*88X@!iH`#9Xhf^W|z1G3X_)t*=q9B5W&wf_~Gu$WO&vxUtdq8 zSpnz?6AxFVzF2H%?^*Kp}hUkld|ZC)imx_#nn;Tu6NB4#$? z*po*kAA^$`p&IWPSfMx4A-@@*%4?;*@mxJd6D8B|jiMpKNZmL}Gmy|Y7>!fmvw0d3 zlP;6+ji|TyMwyJPJ7d+8vC5{bN=m_-gBZ)M0ZVB=eTATzB z-;LUW&TaLDm-E|vPjb+Z#Chnzc4(@k??GOs2j$nDx*7en16sqe(>FS%W)TG71in=#OQ^0a!X+W>&&A+3b}-id`u? zFGgxAP>tP7WcQtreqkqP^l?{DXZ*HY7VC-vR)S5Ps9$92EYaA~t2maD8-gIgf9#O1&2|(*W!h0&;_Ai5rRitt7&@m$D>?2mFvD_kV zYFtYcEd!kT!j9Tfj4$n|Eg7D~Qjt1W?p{b0*?DQn{VY3bOLVjCs4daWwWGH9ZFRPw z{{Pt`f@_4utwyn;RVq7Auv{0JDB4lgcD~x%CSuxt2IzLF{lzq3wqw%fhn; zB&>E}T4GAEqqf9^b`)nSL|}^)$siM2+P?3%#F)>fhjPcu6=Z#+TkV|mXtp4I3tCNR zydAYAQxoi{EtzVykJ6LaOwe=@S6?$*4ccmdr023hwX}VwYAGGNzJP6?cbz;4Hvr-o z(v4C@es(DczD4$RE{qOQq@7=(cp`3EGl{Hru0k0naC>Y?Lihv?l#&;XM-g?|GV1`OG0Z`BAfbVG$yrGRB z#s>T#;-0n0dAk;KG~1gELoq-KRa+{ zeXgd+8R9A!<|)g(raj?M1{H#DisK1r7cl^#>72o!j{~ zsCc6p%&o`*hoLNapabo8mraYhj|!swiI)d$*g!}j4{V2ymzo`^m#h;?ln45gFpjXD zhwLe7cL&x%R0q35LcoXQfqf{Uc<%7_EF$vt>d%G=VwJLhAK=TE1FH3!2P9 z=YG=KT3UZ_9%=Umlq?T~H^{Y6HJ7+3|0RK;SsjtwElMGVdTF-#ZnkCds;!v+*ot|L zPr8>bFpg^mw&j!}_xqd++&L+hM=9_!U7#|6Jbyk9uSg2~z!#f}Vi!5%bc@kIKS8Ot#aYY4#F`M@J%L|kg9s0xt19O0!rj2SU|}Ft+PN& z6;L<9wL7QR1tDOv;bVbUQ{d_e8)1LJ;{YLWzL2dVZvKM6i-o}72_aSsA=U`Abpk5o zRLdZ2nc%NNaNR896sN&?yAUaC9@K2C|>tP|0-vocZ3;vD^t_=e1 zPn*BOO=oRz(>cNUf{>XeA@DW9^@b4QmVj;xu6G6WKyc-i={Bq_=Pw-r;w~K(LVK2j zP8-)I<@~K9pz+$-fc$I?QEnCd39Vh8YRh1GcL8Mz{(9IlQ=VgM#PWOrjg$En@(GU@ zg1{on(`wI zpgcNjD!NQ(^<-@w;b2kLS`qq7l69)E%S?V*+SX-u8!k8?zM%kVxnux&a!CW?8w!vg zS7t!%1b+d7zaTDS;2I{lh6}FjZC9uzaE=u`@(l&F?n01sAqd}4;F=>O+*|PXq2RBN z5FfwRKnTA60WB6nER_|qofL@6g$P#(s6_C%R*1S(h?<`_AS^#`0NN&m-7eH+wGiT{ z5DUMCZ0k}u`?wHY93Vo9DYg#wAhyGIeg~>TD3qsB?RUl-vrk)LbfglS%B^VxVC7?r!tap+I$;Xz4RN(c1Bs#fDKx@DCPAY%1Lb9*SUsyyoz#fs3Q(7|vY z6;f=@`cby1riJANVPz27yE$tXU7m!EBQsN_c-*+mIU?@j%(m1^w$YG!g>Y6cKF^ek z!~^>f%uLLTcLGzMl)Y#q4968`4wcgHy5q*k_+cU~+>KyMV>&?sk#d<%j3B`+vGG$J znNWxy;pF&GmF==!$@6}^$CBr>(Dmf_z=#6^pAkS>`gBciPFz|ss?jFBbvgiF=2!wBR zkB@i2mfZMtQn2Y!IyZA5BifdlfnO}ltfLVz9!iTO@cMQpJVWk;ic{rqTCyw?ECq!< zGy00qhi{bM!C^b~D6kSXO@V*Vhj!w3x6?x?7u_H}yAEEd*myVnqPzISd6MGu*Xgdb z_!8(oY4Q8F=@XsBe?v357J8$})bIp`r~5V{o(~;}bt!SvlWO!^>cT zW3NdJFS`o}FH6ptL0-ZzbjcV%<9XdOMo{>5_lz^Hxbee`yIS1%Sw??xFneWW-X$#` zcHSjVK6CRf!EFw<-R51=6FxoWi;NvE{2MG+p!rz0)mO-i9r#vp#vVuR=FNt+?A4lM z3o^zj(8P5a*|=d{#$pNmc@geYo>5L?hb29F5PB z2cVN*$R#?E6t!vJ($8BCAdvM!CnegIBX?(yg;3|Vau0G`(I&bz-)-VrrN-M)1u0XT zT$KGG?56(AbeE$)!hOW}gOp5~!NuvBNuqW|A}6{}1{nbUo?Tu;JV4O0UdJj{splQX!_JN+^;e1b4s(5 zoBrUf>tDFJ2N3XP_~^y7VBSuPsrYNsJdZD@nbcGqRzFE=OLm2RTrQx~$HA^J@>!a} z(e*t?YbcB)o#&JHX%xf0%6{rwy&4Y_rB89D!f>-&`XdJz4UH3t#OY(4FvY)uMjIQP z)%e;}|1}hK2TLN-hdbbjozm}lxo)h#&G(ay^)FEWy!1Faw=Z6lm;TO$eg>LYZ53dA zV@Uc^KhBs!5ocjHW>)$#>NIw|rOuit{4gI7w2NL325V zH;xqo;+F)VP2p+>&{ViG}1Js z!#+KXyBW6vZ!R`?#GwOBCntLv2jXeHj32oe_&r>8%?~{54TxV_09C{0`o%z_HzmFS zH&oPEHpu8I7aw59op!wOqKp<@M9pHNYc$>Xn1NnPp;HIaRp|N*V=jLDPOqS-a&&oO z!mr#Q{QaxNgxlFVDdAtL47Z)(HClq+Obd6UDF@c@!Lnvw5bPZDL*~sOlp(;-Gl~O) zEKv%yVxE`GCJ;L2N1^rey;Kw=IktyFME*ZD1cYL>^St~Wc@Yc5kbF+BK)=oR+J?T` zlYNDL^$p(tF32aSeOW2r2Zonz;AffPWj6(MUqJ8h>44yiPVT8&_yF6w^dQY$VGf?^ zi;}x$fn+T=SVN^CL#A2Zib8d>9-OLUlsP#px=%etK{g zP1kqAYv%hu5aX4L{Rc7RjbJr;wA??`NaPJan;(?JF2kC|4$oni$(2EDTH)Wv z87=n<)qw5sEEVX73~C=r%!83Gj7|rEO{ZC<{uY`nxzq%<8{?V{{?202(-ku8d{6zc zUgx=;PshQ_Dxl6J_Cb!CwqhL|B5`SIXjk4{LsydvsPo)3GZ-=Z8ZeS7G%?~Dm_1-2 zRcJmJi>vPuT%py>bYsA`7W)Tk{*l7Gujr_mN;4NAQoP2jS=X5!n1drHXkI$um_p4f zG43==(@4R6Qq>&Ik5X|lxvvhUB{Uyk{UXg{C(&FGjY?N*hKjhiaC^)4G;p&FAmDKD zm^GRu@$}at@UuqEVHa_qR457BbzL*f)E|}*b|D%u0E*0B^BghYp$!deBOubfQOpfZ zXYv4m5`TU})5X=9zgq`Zf2&dBsxEq5^F;Ghf~#L^(i!)u%lSH*KXnJ>cb8b(pBC?c zR8+V>tpz(GGF<1N?L|4WQmduoqR5i3bJBuMYMA9^GL+}4{h9$j17uCE+Lx5Loj<9v z6Yko(O4O&^q(pn#X}979{@QaA^l6ATo?LeZ3xFZo46rtfDYJGmxg9zyQhQD0HWq@C zezQ4u3W;QJtagYBpUTqayJoQ62E^|K0r5;RAgCi!j6G*Y@&(#+2Dm1+1^1je%vboHGykmO_}V>ZvG+19 zyoRpA!7H?rDAZ|PMgrcjQoF#3nupu1*CzQ=d+|rrT1;WDT5YNqJdyt4Woz&ruL&e@Nu7&#t`~~NuYs%ZzZp6> zM)24S<3T)Fcf^TOqB~=BmA-6>jn-0#om6e371Cx?Y_tMzrpA?Hb+e`P`3uGpFj};IWLabu!A4ZRN(#_UmzTq3%aY1p6^Or&w1k65WM2n4M?o?tzgo zAN**Ru9~5&c=LSSH4$8^0r5TDuL*N<7jzM2R@b{ku zz-pZe@2%D4y3&&%@vSi`?9!myNTDSrFrFwu#ivu?hnQnT%g^b+Qm`wSiMf6Okm02c zuI=25hnv?I!ER&PWw7O#OAI>pC6-ZHb29l&;BUzz__y*Ze4diecf?R?^L8bfzva(C zC0NSZX+$~1%HzLxz%ls}L|pp-{uMuj%$S79lAUs)-5${_r>Oy83tUYBoS={yPExc5Q%vexWy zMYcL`Bj}{;L#Hk)Rk-6B&(RKe$0g5ZZ?tZ!UP>>jL62PJ3Xuzd=DVGggs{WUoBb`` z1?rf@A^BGx!Q4TLV zCZOB+;ixnp2XO}Mr_|W-^Rypny5}AI(-&#`oKW+%3=KMY1NQABi_(TjDJ#dhoS2iA zz$s8YgbfNbGu@eGAgC;s#gmPh+)`z-FsJP}vp#(VO{}PC@LxyMf2A2X@qLfXhe3;P z<+1dm6!j}!yx;#9cvTp6sqyFE{oG62xT?MMRuc3;jsIjPFkAJ__N)>Y4dGk5*r&s) zXE>ojr(v)q9mv{-``n4z0;a57@fVB2KNh2!VcrVnn4gv7C)HNB{|QXE%I52la4-tq z(5VoA1x+aLEpT)Ol)329v~VSouL#d3$6`{=F+cuJ2^*6vfXxA|KudI~%9U!P1a)5- z-UIjgBy$NxzjHv3e@ zy!L=_-}9lXX{HN-_ZmYr67KD}(2dcvPi0pbsq0G$(DFWAC9VdKLZ&#;RL^e;L1R$kZ|u{agx1{Esq zA9fgL4+#59i6cJ`n@Zum6T-d?7ww1La7IPg7#*&y4%^@g$_7JEhCKv3c?=glFiRoe zCA%TaNkSe^0j~30*nSb*Qsydn&wJYrV$b^pKttXa!%CQgq`OsK45Jm)Ewt@k*hFG_ zMvJ}ghkfB829cahvFjW2&5n{IW&D^C^k=?;OJM{L#t0!yVX8FkhTuj+Pd})XA|YySww#W8?00 z{)7V%f5HJs!c_zy2d=dM$+#8-?T{(Y;_&zX?`X})=N6z+&(gops65sLC2r>H)9HIK5l_$GzXe{ zC8JSpfv#xme=;drQfi(}wPlq6kZQeoC)JPWNvPn5%!Hykw|;1l3iKx6ms5;z>(6U9 zxD6oc1}b!9y}2`7d|`1-cQEH6*(yB%(2rYB&9Iaw(vm=aV?kCV{@#U>-+3 zu%-Wib(Fe2C?Y{u{0$TAoBo~-=${Q{E%m~dsaLG(1E?q@zw89^0Z;`Q)PdD?0ZA9h zH_qK?j;26Yj#C2h<6{RM5-6Pt%_%e2Yrbj88-I1CJw)^k>s1C|T#LIb1g+U*_R%a} zY)@lX0tm906+kd`?#ozp7$s7ao5#YfC87a?YRb)_NL*nK(bhGz7Pzj7=*NJ%a)r4w zeUghnd$KkC8~2m>tXJwJUkmPka1~fkVNOMRwSj81tHP|Nn%FW@&8TRjSw&yv^*ov? z%o@)?0$%^@i5fH{SNtbvKjP;0BftnPM^ zar_=xOpCZk)*mo;#>1=39YtvV*WoT`;R+D>%+188#tc__R)21FLHp);IU;n}JQmHX zGxtT0a(gHOjv1*B?V`2i(MaXnQNvJUojKjjVZR-%BlfB{JB#3+4Jj^t%!q1gpel^> zk@c_{ZZ!O6-q?xSyD}55#x>>088pKs)dP%B%8vpkeVGZL>rQpR!<6CSYGn8_3d}^I zK^=Wmv}`{bG#yy~I#i&B%QJ`DhyQ?66=^Aw%IAT-pu(`hGp&?~VC6I0Ex;YJ%iMO0 zgdh9cEmD4}*=}**C${Yt!ZG4npR~Ve&)Q9dc_I@=?WVQ7*V;|%AUG~Dr1?td9}xaw zRd|A!*+eGlyKBO~78BWu8jsx=zL3J{o5DAE;P_v|50Xu=Y+tyqo7m+lM2Xw~7H*}{ zVp+5jk2)6q1H62V)hEOA#klCt@N9RH``X3$=+*FlJurS6-igLDng zi9b#op=QuW`iOPnd#6d-PxKL1np`bsvzzzYR@%JRq+~eMHzL!C+J*{(BSzy#!4X~5 zc(FBNup=kdAGmWAA8;Vq5VM=oftA~N)_LGAND^#YrAIt*$FUzpq`NX?Vn(xvM|_HP zBO<~@_=8U)hDqTKP4(vy$qe@Z{PMR-KF;NDHGJJIe+%rc3iX*7amRg;AD_^QMOLya zPn;A1TWAd)Ha(&`kb&tLp7Guq;ZCExZ4qn5L!Uro_~EvQy-K$cVquXr!6I8$6ERkT z^+zMlh?w;x*zIExQdji)Lc~g1WWe(pBUUT0>0ZPV33&igjeq?w;(-kBU?QU&@I#l# zU=+K!XZMdl&kRLbQ1A^rWU1{tZgEs0TmAFP98S02%`bRoS zaX(Y!Y6+){$V5i=lHx&~BF|H-&SxpN}$=B6k5}L|Y@f zIUAh#73Z`4F8uoT*?t+nbbhv93+z&UM&v$c{CQqvCWFFH>omymtWJ%3or8~*>}V-5 zyA4i01$)wKO+eUi2Rs$4fGS1B9blhz@Z-pKepDbj#lX1QF)b3zo`oH-Xkgp9qz-Ot zPBo$AXDKRF^M^%)7_!woLpGT4g^}$?qkeBA9jOn|!;6tBDi0+iQ1}aYn1`qpdJgP3 zZRWswZ{BIpaj?Wp{1lyM!^pS!aQ~P76{$kwMM)lL+~+;Sc=nyh%phtDqL?@(s-2Oo z!KW2beRF8IDe@>)u0W-|7(o`0; z5--@5Ev4{toZg9|uN}retMy04_=sNr+6f;I)H_J=-=X^ZF8Ew0y<7sL@=daSF^yNI z>U%oi$C>(7BD_3D|A~~DO*-7GJpE5JdGk(j`!{HnV z$ANa981){bufqDV`a}^LQlLMIqQ~pI;@RW%S_*IeT(5yg4r4H$pg&9Dm0#*NIN;8O z`g$69Oa~_zO4IehPI%-(y*IV;4D^bWGtfWiZJ?~V=(CcX;Jj*h4M&tbZ;%v9a&30AJyfbzL63upva zL_nhjG>$7Q(26*2ukJQ`&fPoP{|y@97YdeFjG=1it_2~i)SSrB(XgOUHO|TL&!F*x zULLP$$#gg7r2EemMN6FUD%a>2 zG%k}xW2aoU!A(orSh;2f)SYWwK$+YO1}K}$37{OV!2#uST?7!{^rj_5hJ*WgMaOl( zTf0UFyKt`=e$WpNG`09l&*;+;R5o5SJKEw$PAA}v-}2~V5>8MvU>+<%?7}`^UJk!> z517}74Ak-;qw8F_0u9_n)@3r^4%}5vVi>(QdX}3ArgQw{X!L3@JJb*j2F>Q5iQd-@ zYN)F|rkxm1FvMgq_&5KU9Sok?J|>gF7eixaOYo?unC*_tpCoTSNioh^@zgs6x66y^ z$x!)t%*QeCC{ufq%KWi0IyY_=JUeJm%-`TeE@cV1?^$6a5qP5JJeW*Xw_yB_5?ufqq-TFl<$7>ra|ri8 zkw^xh+=fJsTs*Lo3Uy{uHK@RW^&t0#eDxuOW-f%`F=QxwY$pvmbt*+g2S9cPMk>*F zM*@{xdJq6&eDoOl`#)brYT!|+0&G!{*9Zuml!p#5@H9t=ylrm0nmD}oAnwVbu!g<- zDsm7-#KMHK-VvlueWyjjGUvobZSaLqvwL;ZtT40xH|Im1b=#HhDCtRx6hh=Wc|sb| zT*i_Y1wvLK2sltrp-uycq!#{JGKejD^Ajk~$W2BK+#qH%+U(3a7xe0;MmyL5C^rmJ z>^`;=$>)-%Y_4`Vdy+^__3p;Tm5~jN363t{u`jl0(4c1|DMWEuBug&*H^_wz^yn=6 zA1if+61#GxAX4C!GEcaI%Y`{rpQ6IXEiq6N>(7x&`-CkJMAJ;V3?yb`e`-K#jizsn zfi%N80+ET&f=p0j_-eiYKJrLC6uf{pC<4aYB9ce20g~G)fchm@U#mz=#f@z4*SkTU zx^7o$sA+6W)YrCB(Ev;T|Dj{GhJIzkGzhEG_=#SUW!>f;pn zho72@keivL$JT&0nai*=B4Gy~1%I)bdIXYw^4~r7=g}ROnCl6- z*a^K24U)5-%`reY$`S%uf&qpeI=nT8^bX34)Jqjtm9wTr5}LVPsDgo^coeN410&@> zY$4P^5;iau4DVr(ahjXW_N4XixI8Ezk#7BAV+r{QW_>1GfHWQ&13fyK$VT`#m(1Ml zO5)9+WW6>2&1QSO!Url6f)JPX?9Zcmc=Kawz%8~0R#4DMoIYldAH3YU4np}lGI1OWlQ~`Q<4p2?kY$blbEvC~)XwZLp6}CuY z=jcLUxtwFS;S^3ds6PKoMTA+zXZ>RDY6RIv&NEExP zTSB*KBlC8;cnvdR!ygJ}Dw+FFXbnI5iS@9<0=+tm;em)8(4zhchH2uJ7m0_n35M&G z)`Oq;dmCUcLB4P+yP4<;FY^&(d9H2ABJ4gI8|i7tM);S+)QK7l>&=R^AF^;*MH1`dd| zc+NV5*qz>GKr??b^u;%RG8EBBH@E9_JbZ^?q8Q)YZ3q{OE3c7~sP-E`Qa-23u)`T9 zXv^=0F5Jof*$<^~p3kmeA4;1*zFqjc;SLkbzW5LOnH=7&p`Mq518syr1I`bB`iEh< z1V2A(sG}%7K5*WUDMtC^7|rprp##}{z~}-w>tzF+73-v_E{?2#%8znrK&OgfyLI+& z!z_`Qyu1>FYCc!1@PMm^$2a-5MKShNd`fFP>P7v+ z?mN(q+Xj$8?Bo9VF4DMy{^dDxS|(qB*DaGDp~b1}zI)J0`8%~+0k1p=tQoM5xbKhh zGYpeJn#H_RepZ#svISM20E55^zyb052tcJAF9nDfwF3f%mNWw(e)j-~muyyjGKa(~ zJt|)(5&@@$w;Yo{6Ei9ha-stRg_Nl%fm$6J2(jn0Y`ol$NG%os@<({IwKzB2Ad ze5fZmv0L^4M|_nqmlA=(HLjYP5aXn~^pMY}<}wU+Hlv!$W>S-{W+(VN;NV3Gksf&X z`UKdv-P@2*#lS{mTSbCWf`9)p!Az{ed*Ua*Bs`I$$Mp$gnP14<@X?WkcT)7p9|_Z` z9r&+561s?S`?CpOxQI8AnFX(IPBt7`7q@3Bx9DBcs?23B7N~occ z@7si3#HOznpM0B;$S`40yGTYSW};zq;w0Qol-S*afhe_joGS5e2JQ4r{I{*9fiKWf z%~^0F{cfoS^k~_lE!6;HuEI;b5o_5-x9* zX9={=1vFVeUkQlU3y0e#NT7W$AlT{KuJh~@h(`o;LO{apr*h%)Q+cD{`j>z%3+Re~ z{t?g(0o@T$;XNCykO;_0Kw1HX3P@0YPh!ehc>meq)gr(c$Oyp8!p_InQZ;aXjCY2u5Wv83xP46G6MO3Pykmm!u>f z7Kv*9nS%OuORUGi-4l;f_FZNF| zdZ5KgfebKZf8@wjs4_{xy#r&KX*bsiSJcXL=k^>3ThB!?g#T*78@A06~YunVvnO97QyUZmQe%&^S`T_(DhzCz0C- z85aQN^K4-4TTY~ zJdz#)sG5^g01{44BZQOF2;t;3LO3~%cn4{wcIpu$#UC1hl$u`K^ zaAFle{3RDayk;LDzGnmCbqWFbam4~;<%$Z3U+HBVddf@fXK@uG58VlpYl{EN;Xn zAS;(0K>1wT0s4fK9|0P|$&>)`3?v|4bO?ygwnqi5HSBuiQNi$;^{60R7ncT95?fs! z6`)JRooRSfSov&wR1^`_pMEEO;O(m~uK9FwMVme7aJ>DI&%6LwlH;_#prg6ju-~oN?nq-y?Y_wDD^%}juKYQQt!7qNJBN58D$$gs>)Nw))? zI)#T4r=<$9*B8{~m=SzfW5Nn@U{2JxxagE9WW< zd6;)9F78ZorTySNvsYlkBBv&80Yy{<$)N`Nt2V6zsytu;Lx6|U;+#OPO0~5ge=LLN z_+pu1m=b?*BCR`9DIGtQ0#j$1xeSF@USPw-zoapS$w=a z>9HRu5{r)}jbz~W;PE712^Ed6oK7N>l0wK~G)xfxoK4cW(2oo8QVoDVoDHZy+RIz|FdmTC$hA=zi;5G_Bc>?0QEg*jK1k}WJ zQ9wN71?V={l>y!5x;LPQTn7#vOolKnSg+{g%A9}^jt~8$=!+L6 z@YbwNb*pS{bv8XhQytMG#203oY<7Z8bteU1e*i+(*(TmJx~c8~5OCZa(`gE+=b3`E zeQjP(e8d;hbfO;=5_O(u3UwPPxRUc*JYk+GisFX5=|m-odh2}CVLWMpX&8lXE;RL^ zv2~G2CC1a1n=Xq(dh=7)uuCHZG)_P>1+*9@HZ)?jDId;44z4zR=Zr^}n+Ef2&+3}~ zB%y|%O*X^TH3fvwZ@a0IV~keUusc%O4%01)zZF(jbBIzK%++9_4dia`m`CV=LS3 zR}&bS#}0c;VkUu=#gyDQZ1ZvhB4FFL#Pa|!yU)>Mho4?(BUqMe6K2e_&# zc}@z4#~n6xuo>BYZrgN~JU>s8D5*28gV^KiO<>MegGU^J#CWsSuZGzYcr_dlcKOY; z!)8bN)o+3ultP25j+uzr`{?7QISiln>#s9k!%j+ZNK2*S`p~T>{!IAfEd^P4dsx{o4SWNt zMN>xy@g3qDCtfuT6*;rphdtA-c7lVovVTpUl82q9o z^V_TNL!VF(pV5X;@>*<@0gh1{P<~)2oTd1~@#-!3zyq@^L0+v>AZsvONpff(y3&C> zs5$6@T4^RKzW;|s<<<_M+FyX=_61H~gE)=5Is9vQ=mV7d3?6#i6cGw<@Q!kW1vN6X zPDh=sERKYQMzL&R>`4arZ%t)y%T@PEYuXpId+=MREHa&fi8~N=Rc_B1>`bl28ADa0y}zWJ(bHej zm(V{A#(y?<_jeRsfL+R?+uglgMem`}=S=9r?6}*pa0=y+xUrYc$sZT4KLd(xWZUq%Q?KPTJU#9Kty&!@;1Eenm{9G znjGzgKzn10Wm6j#kszD=2$Q>JOFRlida{$e*8v|l1fAJQaC6O4@q#RPT=w*K?lTm%!#0OqGb&|7^M0gj&!PV zaYIl~(XyXAJO!a*Zye>Vg)PRCSPS=-#XV5=yH9l)qd|{@l-5uAX4{-Qns2Plxt|F%+p4}fcaq>rW_yym&AC&dq4E01K^od@B&ZAH434P7)1YZ+=hL8I^zYN421(6^ML@+no&`BN;I$~y5RQ? zK|S^2n`98+O#h%;G(BPyHU$M;6JxK?pach&mEEy2NJWP%hHID>C7db^YJxK<6Ive! z3~rz3paqVUlzm@V!XU#CI0E|sQH^lxrJXfs1WlOd3IE%jP(c-_O|9=7^rsZGWT-m0 zs52owD50_}pcjRrMr7Whiwp6IJded%*~a>R`0CwQ|CH2P-*FzbZfG94*zx!}Tg(4R!io}gy6WY%U z6-FBW^{wKND;}B*!f3oIJZ&U}r&6j41}&PL&_vH*aL*k*+G=1s`{mIdDI$F6SdSHQ z{K@4W)nTM_f-PjX>>{ufik8W<8^i+%BZmigWFM!&f~G;0z1fLg)DPGAW>?7Zcysnv zC*c1S@!3)-LzpqFOv(P+h`$_`4eDqkn&A|u>%ThCWq}iNTstcJ9*x^dJ*P-frJLti z+*YG-pfDWg-k~W2N`4Fa2#3dHUv)uG4_I`l^FcTQyl~i}LjK2LFQhzeQQ-0^*(yf_ zk{l_%FeAIfjjRdb_HBa4F3m1?M1Hm1)ks;Atwx^^R94$P1hp^84xtKA@j+;z-wy-z zL*j0%>#jj#O0rdGNFC6omtjFrTEQNTMf0`;I&(*48&OaPT?$kl=!V+2-JNm=I$6sa#UI@f=l{Y&&i*Vr-ucspF zIv!NvSEiDD&_H%Zm^$G1y_o*6H(Flnm(2=B(dAmdt4t1=f%Y8o6UoIv(ZnM@<2T3M zrNcLTUHsm05l+A6H^h(dDDpK~O7s(B=#4M#v#KPx_-p?Z2A%=9^ph3Fp=G=E4yZ7% z|1emIvUgaEK{wkvIW`BEO^z)Rp}cOH??K9z^U_#GiDgBw{^19&j2$WZL(X z)i7QCH85_0n47Mv9{Z44YWUE&Wzt}lt3K*013zTu1;h(-0P%txKp@CLuSdtdOkkx# zNBw&8+iO78+-4b210RK7PyR?2XuJgIs9!Hqg-^%CZDsJ5@p0W`w4T4K_HcUKBrR37 zJJ5TmTQIvT$$K%Auj9NIvu$1Z#ax~-$a?{MKP4U(<(=b+tFyh&JGu|p&->p$knBzI z(!Snsmbrz%Q3Jd;1>gs7l;1FLFW}E7`cm;!_No3XmUl^ups4xyP}dZdm{wfD z4H+rHdMp}|@M8W|35yyZ7pG=XxQjG(YATs`l=g!J@5@N_lT($P_UQrc{CE8; zKP7t5FI9ov_NU*VD2!7Il8U9wN3ihYs!2(mWON1?UzwW(8mH`tUwy^Q*W>CdM0|l? z%uAY2Nh*2*X9{C|LDFd_JZxoBA2)dPw74FQx~s~PTxi^GTCAf89&bPMXAm-4`Bn=4 zsgHnQeP`P>_$OcoHE8mgpz-MGnIID=x+b3u`dI|yWL$^vdMUO>gu95{3UszUUI6DS zxNB_qLK(i)J^XBFAaH1HV(kkq>;jhAQ}MQm;rD2I>ptAu!@85`T&_`CM@mJcK^^th zwIaO3*NR*q{r(}=Z^&{EH|k8*8kQ%*JHo9-njCVf@%czAr9;OFE4dmNNPHp7S|CAZ z;z4Mb*4sMGi}1#6y4oj=YCf}mPtVn%u3gjWvASEDhZEcah8wdA9FUu~hN6pp#HXuc zEpFKNkJw8(EWQ=nznw0x9pBCSr$yR??%TN(4edlGCN96ai(lS_u)7x9d z!_{tlB+@d2f`{f=ZhjN>9~?uF9tnuyw#I-QxKRm6#`RY~ewXv;uxa}CLLMYQDxQ_?znUPv}Tu) zudbS1P;qKJW2EJ}gj$62$62PpaxlyC1;fBRs>J>0TYmFHBYv=`@SPtlz!N+?1>;Lj zw9|Fx;S<~lA96JsZ6LboMc2Uf&^17RUWZQ}xoTYy3HyL2_rM{BXe`ETw-}|^@mI@v z8X5Ol;O+-e39KX6sMEc?VC{^Sqdc_G{U$=BN5W3=|zb){93r&~y%W6>9-VK@Vr;S@d>tK2cvh&e$T89eCv)~mN z&$uni`uvi7LxsaG<(*lck^mSh(CBj4 z?oydkh1I^1LU$$VPr4Be?^X_4pL2|s(Othl3Omg0LlY*6armbRuN@?Qlw_*(3E}Tl zXz-7aBVy;SfDvier!aXNlNNcObjz PMsxr0_eYQFvhV*t8k3-) delta 44088 zcmZr3XFya(llSgjq1CO3TYt&pXIZU3az!mQN_I0_|m;L@flUB6q%i#mj`qRAR=+0Jnao~%8*a%%)r3M}c5+f{L@32cO}P~2d}gS^+zX6Heyt3_ zoCliR%Fx`^gVI`nON~3*46P)>93aN??S?QpPRlmfZCtQQ#ql#77Dl@iia)TW@gH880gQNX zE8|LD$OCh+a~op{k2|zAF5*y5hS3igKglo(JldLRY^^#3!ik!o0W}Z?=yj$sT2J)` z4Y*$a>Na^5+1~gowqzOoIou}OsNzu19ODG^2l*M5YaFWj*g^j37f=ZNDA#yXCOoQ9 zd*gFmjUK!!ji8|WDNwEWMt9>*A6)*qu|RH7sMm{RjcJ!0VR4q$-lS`PEx|>$$^|W;)*Fpf% zkV~$mHJKJ@YN?79-`$63r70r$elcsC$@j}x%S*lw^djd2C(^OJMv1{Sg@uQox!iI-De zZE=|Ps*+TEz!1|@cVQtgWAAaMo1VfR;KuTWCO_Z4H0`8iaA(At1n8PrlK|a!Ks?it zmLV{`X&DM;OIn7SX-mtnGRLK5q_E_QD;`nK(`Y0g5`GHw{K-W3@VT;Jj%81a#H~Q=h1g2PcU^X@7BW zRy{PY9xAPeR@Ors>Y;7*&>jaw8a2jJb5C!G&CU(Xj|8F}?+!H&q`&?tu12ftadrvnRh#jax>T8_EO|sr9~b=AMFvrkvcO2COo3i-OR#rsifSHNkun z$22p$a{?{~i(j`e+c&bHcaU)=)Oou()%7_m*nmkd@s920Up&)6w`j#05JLSuV9jXgZ4uWESTlyX zWWXB7hj+jl`0&zC;ea(?I;5=`4|KTXjJd)?>_`o`Lq3jF#-01bxU^r*aVh~yufqlR z%`H{qX<8e+(TSy@!5dRpy$;^knkg8((awYn-so`F;EiA~^~d0ig^;+2iou&e3N6Io zO=<`4CJi%g@FwCYko}# zG}_H`9S&1^I`cT$-80_BmAawusEoMzQ?uu5*HCI%(d%o>o}$+enLS0XA2Tb8UPC45 z@h5?v>2hHl=)pM56U%(5Lne-L*fnvK!>);=h+TMCtmm92ICQY*w>&;G#IwIL>`zw0 znKSM}J|!gtNNg$uV$BR7s2rrumxiJEFFgO?)Hr#p=MQqO9d?`KIZ;7ES%;?2@@x)~ zb$FJigqJ!|3lDzn$!T1v=ZYIZNa)ewGS5SeU9-4E7%<4O;)fuMn|B}G2Vyb;EK(j-8hvaT12oYvnX_XHEB~Awm7pD;{ND2`4fMs=AN7oq;N+8@XQjf2pb@#A z^Bg3Q#)gNT^L*uubAI*=;&IV6&pZMDaoy9$MR-KopX8orfB?O=;76XtJg$1;xln?) zzVQ51#<_1#v?w{~kN4y(U#P{A3@UMA?FW^BNwn%v2^d0+LnYTpX|8x!#wf&I+BZB< z(RbhQK&8Q*JS}>KEA`eQ^~cz&?2rrT zq`@?bvhXV0B*~J)Ga)$>Nnxj_SoT68a#~s>9P~K{rdo=i2l^z{lBE}Q<=g@?5=x75 z!1qSnHO-PtC^xpU%oIE6i*h3zB)O49W`fOPW8Aq3^{<){?(sIuHykJkXk!V61~9IT zjV+42JTlDk-bA^JnRS?)Q=_7XC4ckqJ&{Xrf^ zwDm(vEqmQX53lj$9+p_rH9weVDRR8{g}kukld3l29=$BL6s*uaNSBVftj8cy2-{%G zC@JIm=mF8TcX++oJtag;qXJ7NDc8hLED7X!*<-K4h(4ASC%Wxs$(RF z;I3a=j2t+5_H0W9adyu+#OVe!d7dR29>>Lp$9!<85&bsb@`7=nkpegRX#w?c9kR@n za$2Xv33&br%QeolkY$v`GZwOZvv|fg0HI;4EKh}4 zVo=Z3mKxXb(4(g#sM5h3Bw~jGAfX;7ug59sajx|^H?bcC94u)AWUZ$QsHbaCj|;BH zg;3mh0azNF?@eSBOiO=+*_6pz{BXsZAfkgoP5WE9ff>)jwpHd zyQQnxPD`JX?;85*56cIF0$$;le^@#Y%d_rU3W$tf{<3UkHU2!)q2qb`dMK+N$|izN z-?Ml_v7X(7h6_pazU2-nrR|}`29Nmv$+gAew_G4 zUg`oLHv0Kn>T->J;+DEPk?Dk<;a&%Y@pLX_X`eEyIE(;DY=;6s4aKGe5Nn12v1SMm zODF)brnI!rGG^b>J}^9>b+ok4O4h+x+NYd#I+pgStf#}VF)~}`I2r-(DEe%>T#o-)MoSo=(wdw z*AKYw;Fx}1C`h%95w98tLn+qqt2NM`PB}uEIsvF`D0h+1AxE>_@^DvQN?$vyf#R1|7x$D5;2z7 zPFu&kv343sHn`C-FJ2`)C!MG0OJ2T`MA~^;cMJ+lt7_dba1iaztvhy}m22HG_#n}a z-MVAfSVgWo?nEjw=ZY7k`Oeq88cNbLSQ$68ayV&2t6ZjiL#ryg~`ry&?n>`Y8Xpmo`V_vdwmI*~;o6sA-xaHrT-D z40805H`vb9fyb zJJdU$MuAD#2=u7n}ds5)#r<;D-{aa~A-$T^=}XWZMxX9kZ$l|CPFc(KaID#3?6e6C9IdZW*JKQt)8=O1wU zz-B((IGRn--sV2La8V1NEGhc2rB99kq6|1N)#nEuNo_u(@Dv-7vBmBaD5xA`r~?JW zQTTK_pB9|pLwqqm%cq^`8nf&`>2+4*1FI?_`cY<%PX>y}_3=T2a(zNjX|7L=Ro9DI ze^3Y6fR^o`zL2$*gI;>HtD{dB*@Sop|C!=p)gK3DL-d>=E1XZ7-ty5dzse8xvWYDg&c>8HhOH~S>=;<&52-yEj0 zx}PJCs{4^DN4F|`4&m+J`LvL7R(u=#EOdvN*qKLsbZS9Oh9Mg-`Y1VH+O(_h)UX0q z-#NolK=mDPf)?+->dDC&tpq{H?X`L1%F;{KR4~K%`m>C8Q>tSlrY> zzqkccd}47D7=zbj`)*f`cO{X3((2@-cB4=fKuQWV1&HS3lT8a*?3`>`#x$I4x`oL- z*>oE#+R3Kmb0YHYVERustz^0UWCF;e(;p|B0pw2UTBrb2Q7{D{7u@3`-<{6TGTRRD zJ>o9b?#bWF9b$in+NF8&lE|SE(06|I{I! zgX$2_Q~#ejMCfs1sqZa`o-W*+`r&$t*!Knq6r;d0-{4sG>Sq0`n+}_PfPpZ3d#nEK zE%KGkEc4Bjcc+d#?c&6odz$oVXtkYoEo81g?OMr-objE$7esV@(n?0T9GwCI^L#W&bVw-FlPY7=70ejE><`| zpNcINpwGk+5kPFx9w6r2%Qk1`gv&M;=7h^Ow|Yob|JI%AZRH|dwz=0Uc83)N;z7U- za42^F*rC`RCa2ij;o`6h=tza3Ylp!`4m!nuiPOD{nWJlt(R9oqS)-x{=ecT*`o{Fk3wSA46D|0rjao9?f}{<;3Y z>d~KF{S{Mh5Aesg2LzlK_*dVdg00PTIAv&nG89?932>fz2nFCnsKHAeTD?)H$NM%k z@a}^06@hvbBMmg7o>G8j5C{W=f0YJ)Rt}3velbxm1oby9D%L8@1n?EWlC(i~b ze(Cd&z`*) zeIG_YK$Lly$ShzqBN)v{Ml+hpEM)JC*mDA-o5bj*iLxG$axP;u%Nfl|MpMpYZDH># z*z-F^w~f*55M{+~4xG%L5&efZgN=2J{#QnSozdT>^qd>YULL6D-5xNqhm7noBYRHC zR7x=*>94vGy0SUY*HJS{f00GmKx9#dh?cw{+F8vgSy%wYk%3!4WFMwx0LAgj;p{nDq{$&P%;8GraOEV%GfkxFPiRV*syWR3 zd5mTur7{mSHB7m06+@?2_kdftO*iQcg&*i%hQ6=4DAJN~_`4oivy z2cN)(j!Lo=qS`f(8*+9BhMBDIC9#SmCcn4*PU;Yc0Dqc*^e`l+xyRpwJvCyn{B>eY z`kSbY$hSskM8uHI) zWWAUu7XAJ#`u&HCYJVVVix}+$M$4k!UyOR*znHx*Vb3{?jzzxzLeV^K516-%(JW^) zD_IfBMH(ZasbDnUF`8|RW(O++Yb*X$jP3xVJ4ETA$h57b5mB{_7`EUp5qZzJGsTm`&0XadBb z!ISp{-W2#oPNJqpYP9SC`J5dHG@!Brfnlh@L4fAK4>w$VWjF+gF7U%$qdYkFa9})# za-{(pR8|uxpy>1rJ*t}Iua$y1*$S~d{j0$-9-@+LjaZy)omiY~6Q$v@k(D&6>?lSS z&7LugJdTk!6-CY^B3m+=R7!)mI}Jp&c9CW+p~+!1xs(Rf&^(;og_7{uEIPCE8Cfr; zt`Ac;fYA+S?+e&-gs3wAccyYQrNbAh15a~~Oq0#RB%6gvwiqTWYQU_sOb-i>>`S7_ zJIOm19oZ~8vRQOwi_rl^pdY&I2h5a*OcaZc?B}AW8#NF_IV?DG-WwdSRj>Zv+oY2t z1_z(Z!XlTWicrC1u~u^h(Koqb?ee)yNA7!d>zKla24r{W7*vr@Rg6J7hyi|C z4B&1D>dj*+-=}g+rKl1F6qWmHVSCt^18-G3se^I8YtUVH)W;HJ#3hy>lL~UCzZMmT z1_@}+4xNU#I?eTq)e7)|uSOLMgLFJRi`MIiC#q4^7HUE@Dp|*X=o|**e=XAbl?LhX zn$Vz#Fg^;h!6o3-MOjfnN|2V*p^DS~TCX!((7sPY z=Uu3BRS;~2@(&Y`#y`v-y~+!AMg@=Ew5Xqdm>MFYo;gxxeR={S!kqNEoFT)Zjilpv7#65MNR(gi(C zaZWp$w3O_TGvS6Olb%YE{ajL87z3|9m(;@<&_=BODX9@JjfQcv0XP07$<_py7?O7d zqO`VIT0F8vvQdFJ&tyIRzE$!UE>gGVg)MVYRd2fv9=RjEPgam26XsSg#mrGNO~2|TP$5~LLNasv+b76xZj>HR{H5)m zJnFbjnu-RFYGFVNwn-P^ZQG@@TH_C1NpH(>M?n_nhL@;iS6#KW?*uD!+q_+F$Kv%* z?M(#y=ihcanOshOZI?^tXSW@_{cKxr9ww=8@@-Eju@G%X68?5L+R)s#LR={d3}^*K zK-n#9Gofly5^Y_SczL?5vjX3~!4GrWZm@&PhLXyf%G+USN{_!0>@YpJSYd}Hm*3Hd zN5Vg#aPnheh!n?sXxqx+Z?EdZ-S|7Ral=oPP1JbsMCE7+zB@(vLXPi$t#p^EDw(S~ z-K_z^$Zx(e@?TM4$Il=waAiJ1$C(@`nOq!U*vAA@bw5OHW=EZIkNIoKXrRmPV_r z0;fS$-UdBRYphD=@QNm?$sCIGHOTp(IAlpsHR6I0w>?CUMisR%q7NoRr7WD>LXTS~ zs4#~&Hdl3Rz%3xnT#sY&R5}G(b|PAj3kInE)K+lMU<1O|7m~?RwBmTfZ*c!p8D9yw zM%Q+Yz|W|}yjqgN;dUMpn12`*B5|LBgEmVptHfob7kecWRd~t?NmGTm;5ZLR8EruBe@PN0oC;Muki3yT3#p5VOP&QA;pkFZsEx4hjNnV2JsN-=uf+MmY5PIn45VuUUS~EI&le zk~~f^Lcg53$e$VJ?=Z~YVVJ+eFn@<({?ssD`2T6;65`{*zo>X%C;6My8Lw zq!D9zm19p&`1BtMcd0yLX)3m*M?7#5l7VVXRHq1;aQBef2RG~<0Xr}B*ri9rMmehL z6Ok<~fxSp(?AABpnG049kN8LeJH`t?i707-En6b?xS_f|5u>Fa!AgM+P1zffiqGzi zNLETJVG20rc*IN6?5#NHY($QLXZ{e;g~xX`?k5x&Xm3^#A>Kuz1C3Wy&q6>5- zb%|gtnO!ZZgT)NG=ulDzX_PJ-m(&%KkCn?W5wMxTga=%UNRy!LzeS7@dXO^4T#tYy z&-j}Ww{$4#WyCuFg-pUC^&%#9k$N$djK~Lw*n9qE#8sKl1YVuWlEq zP~aUMBX0G%*#_Hm-1*ZD-=xbZlR&nL)a!NM))Lu?0gV4Zvt)r&ES2#0ju7JPFjoQR< zH8`eYR2nbQL9`D2Aj-%&)8j6ehwV}0uRBL=iV?P@uOkPe_TqRCF|k4p4&%ZLg8bg^qhc}EeFJb{(z7T0D3$5nL&Q4zM$_t z7EAT0WFYhr&JP5vVG#UuAwP=-(LRJnUOOE+|1t0n8V1;>!{O)i0{D@A0zWgzPX*B= zMLDDCgIk-RM=d`Efs;r#Fa0z4={6dE^0yEZrJ`aW|FWG9w;U6dtHf)kM6KjdP`nCc zk?*N&tPIs{m+Cng?Ulfz;xPTIZU%H{4&7`58vzR2k=OaF!1~&u&?zbTo>F-H(S+iw z>0cG&{Imi{)1aKTavi!w2t8Jdg7c_=mYDukG81f zS`_RD%%@xhrIf2>a}~7_xPbXVK|4KqxHiE^s*4~B)=+#w-)7`5zi&mVSyWR&4gG7` zh<18j7DF`vO`XW-S59Bn_5y)YyWEIsMP9$7VBTnAM@0u}N6E`3dZbvFU;y5t-W0{{ z0vhT0_P_+xfagYnl>6W_t}UwSEY}gzwW55|6_laqK9sS7Fy=0n8d1?P`nm!b;dRL} zYVdEDbbj}Tcn!}m69{C1$A2fr=&n1i7s17OkK7;Q>@XFzF>%U7*s)i zF%?;N9ApW_?F_tZpu@D1DO73BKU7=Geni?(hkHCqC|}8a`m$;dut!5lxlbM3+#B#m z8&dcOzzHT+0S7umYi<-p6zm12o79Cs3luFk&_dL?+Q?r8bEt;sr9ky;qbu~s_tDo6 zP6FaupL7r`(&r3-!bIEU#1C~q4UgK^ASh=OP-vz@O*~je75GU+1;7cfJq8oIc8PYy5WbQxs32}L@ICF5PL$P( zEG1Qd3IS2vVTVZ`Pr;=AM1KX)^Ri>2piZR7Ef0tq&H`7!CU9mI5QDS_V?|515QYm5 zNzqbpRYzhcx01a0(NXJ=sC1+~7CfWe9u*+2XjlvCdEfzo+(%;Fo}>Df9VF~G9qf>2 z2u&5R@v`4V^X#{pQ2)y)yWe?`n6Sx}pejHVFMBAG^*z^?;0nH@a%-Q90VAhOwZH`L zI7m#WaC#I}(`!dbxJ3|jbE!`toAI)-$ge}Z4ze2bdSH;n$;EUgM>L%+AVsF>Oit4o zyoQ`hsAx)qzaXWdwN#v#&g3ketr`nSmZmchEV9sa2Am|F0VhdkZAb!PxlGP-86wp~ zbD12GT!ua&ZKjIkF}aw>rV|9sV?aUj7(7TGlZ$x_s7M|IB*|lPMDv)OV3KlIBa(lANWbTLe==k`k1O z45t^8wmLM^qktB7~qy#ESZwWjLX^DHyd=5DYPn!{yqsQ}p zX#2SwU0xbxpz(zQes0^9x)@8!qVhSQ2hR=|4|6=<6~fQ2Q(&T}&$6h;5>&k^N{3IZ zj`HY*A1R_WJ-FR-^PB7O(tgn&!;}x~eB+&~(6W(9dh9nW`nWfW{7DX0xJ&f-`d88S zq?}otLp?V)`b>hvrO=Ka@`h+Z+BN_M-GetpMK$K+ziP%^oQ z8^{f(bm&Qa913y+n z>j$4}ZGX&R`HE(+5N^cAjm`SHVxMo*pGdfUD7lAyopjApP>rwmuzT<@0F1uNacA%o zUHHc`E)<=ygzH`D0&zp`xRt9!DS$xHUg7>|7Tk*f)8o%k@g%*@sCYYx!d8?Cg97y-pO-j&r28HYf?ZW|66 zxc%;|t9ZhmtUL~?zyp#RJZLrwq9Kfb-J2E5;YRzj{^rrCy;iwk)d)_g_I`V@Bl9c*|#Elk9LOyqkoONErfbn+;mjC+T& zUaI;n5*BqF{2C`za=X0_^*WdpfUe$eui!OWL`D&wR*hEkmgTK=a2%Z&Z`NqvYminn zNTSg>N~;q~8>rE}x3s!{iNU1@vu4ZqCHGOwnh-6t>8env7AGCcdd+iTIQL}MDHU#f zHEWripLG~l#3s~8kuokc8;?myc9dg31O_Bn^3M0V1Jzf zf44Z{1kde3pDszTLJMB7Bq7uVwUjs2;l1Svz8p?pm$1*o9Yy)BG98XRm~dUg&DlCt z*(PG^_2vq*hRX;|i=u)D(^Q8Ui5DqJPt%8dbv8&dK3NRNHFU>K>?9{W0y z7@8ZZ=p@AtBNW@E0w!f&7N@x23>T=3N>X$X@Xx7=k9odLJDh4$jN|dqHi{?ivGj9v z;rCP~>B8@=KoXI8;deX4tO#YZsmBYy4=4F{e`m!Q37VI$&|}*d3UHlvoFbdYv&So* zYha2A=5!l!@>1mS$W1HZhvIJ z0I~a1`{)HIvjLZ!Po1m4O@B%~DHC9lO^buCr(Tt%t61Rozo}w@4-f=C@fJV|aT_c^ zYH`vJAgeez2vCZ+eHkE9udjbk9p)@0Tlw|4|Krq-JU;w1wJ02CH%M#Gqw=7%V$Oi3 z2d6a`kDsoLBa5>{&&s$ERzEA_qQF*kH#n^~#Cc9g+Fn=bY#RH{acL(yqs3>fuq3O5 zHIZ3qdVF?P+HN^sF)!^`XS{ex+ViI1e3*Qnb1|)bf9#grYK@v(f_2N%SL*SB@6(YK z_1=@-25sAueibj;oBmpjmz_$V;O-XbINozC){Y~8PVZwyYyU~_$d_NkNAnX;Yw_|= z6W3UAhXskhOHi9diJ##kixTTN@nl0~Y2prx5J2He;_}Bf326xP#P8=q|Uz|<6 z;D@_CPJ{{Y>ZgfArDWmRfZDxEoP%$_N_?Y24_uRS1Se7*E!>i(@VJ$G(kQ9)1jHsR zC+m`$NbxgsQg5Ez)nvjQy^^pi=Y`xtl5B9nRKJj@=*G3Mu4qwTuWX!D7uL|SEUr4aWXENRs`89)^ z(~^p1^AzxnYQDDBP#xa7w^fP^eSf`$0Y5s}>KNRdR?`r!2s?pasxww{c&#R*A%_z_ z)_0QNhki1n1P*sSx9J~o_(>c6TnRt#F1r1TraS4D=yBpTO`t-Wt|0E}aa#k6xCXrH z4^3MhKfkN_lb!uD{?nUPpz$B*vY60~2bxh(FFhV=roqSdnMTFI(#YfIn*JQ>`?qGF zFptDW@Jr1|fz$(<|5EcQ|#U!lrDBN0Agpj0m>F59iTk51xdP_dZOG9O~r{c z>Qic!YzYRS4UD^1xtU3M2wMrJ}DYbCQ!HE4lwK`4!dvz$%qV-sEB0bBgga4vWjTG3MfO*w;f9!u2Ti5Cky8?PPu`F5gwp zv4_PRT$$n|rZRv)D={0cOtCs};7^7-RL_gUM{D6sB@LkB@1z4nUjg(n91!g>M*9md zHJWH7kJTQO?kFRDq9NcmItQc187dR>T$6x9f4x zRiz=bq8j!;F$k<-kmF#}is~ozI5ICloU)?&IcoKd_6AN|q#f!axPph!s+HPO(grlR z>ng30$Dgm!@@~+_7`IgmSDrK=Ms3}uJ!TSb-5hmNdz0h3;*O`a@QLxpxwTrOt2pEu za#g!VfqiahFDS+1u-qf)ya6>EY6hfCdz;V zb80bHoiev0j6Is@Cd;LV)BvNOl61R#ujh$Yo%-QMJ#@1kx`h`e>lO(}xZs- z5?FzS=YyqIoy1#Fh90Z|gkmLHR&LdecO0IAMpqzC61;n)3aWa<|6?ni)Svu6_L`G= znrl~MnXee9(E?EkUPoz$QHAC?0b5C1PV#EA#=u>Yc+NN;xNyI54U z49>y9SvTY{J54*@ap=tobc5feqdn9Vzz+I9Y$0F={uc{YIjINy7Yjx?sr&yI3r0Dq z`w^_daqHdU!!~G%-w~95Om}J-4t=-KOoM~9rbrnk&W!A2SjIvD7Z}z8{AEC_yn9# zf9T?FN+CUL03tnB`IDXhcT<^@$OCr%=bY6Y55p(k=su9}g|29Ym+X-^|DO5+dMUIM zmihvEB(z5k5bG+XzWA2)8B$*?As=MqE$c4ue|q8S%LyS8*&O3V^2z-DYQkp{Jm^|N zk-!;I%#DOsoHNQP(dhAaHxuG{*bd+74q6{%xQIumC?^Vhb#t7yT><rHN$_e48JFpF1SLhyS^^GpMW}U4i7<7Hizr*%FW@quDH+c z@B|(Pli?~USBd>!$?v&fi(CQy=_Rg;eo`2R)qN~U8E!j6Gh52dLA{2x{sB77orkwR z;*8@yZ~au@ryjy%wg(R}2pt4995Xm1TmrqtyrChhr2M{0bluG- z7>;bX=)#VJO48}9+y~t}+V!p6cd8yb!#c~A`z`_W{m2kW12DvYVaT^id~{XFE=~e7 zYqCqJe!V$ly#T9d`N|kAUcD{km4Ldg4ubjEogqm|SaX7v z2iW^k9nu$l{hO;y;0~)Ah`2sSLiVD}nh?ke@xfY@SQ8S2{wa;7B*h}h!kUmTP>=cX za>-%UCG_S9Nc#S0NEUJhE{-m0=wYoaXMQ{!pg9&2=nShOWHR)yJ8UYGYeAR03#yy| zn!Sif)&&eQ)@$pp_Vh_Ve4LPNCH~29*)y2 zm>I8T&iRe%LaWb)WVzHkpH_?xcRCmHDiHU75t8Q1&uN55H_r;?#SNFaM_|lK12Xr> z4=fCGkC5QQ%M-I2^Qyk=^#&U(DjD(B`CEABb4x)rshq~w#hY8UveOGOTF+HrKZPh=Pp~F34Cu6T&`bn_9nX?mi6a9ezwV5#EfE`38Bv|C^1&dZ3|wYCD?8k*F}m1(RVw`g#?l6ywZNVV7j`YN&vZtwVuMxazFH~c zWdiKXfkls{<#zaA7-HAkZ^J&1t@cEG`FH&@Ir{LfP{%L4jaT@k$4PKqgY@w#=;}b) z937i}!42o9q;GfOe@()wjC5xST&0=*1{U9Oa;NkSuJ}n_`dkT`NNQtRpY$%st#A55 zw5xAA+&DodoQL#FZ)E27!xk4%e}8;>m4RE2yHvK>E0tCKMMugW)onr~xbM+6sS<7x z>K>GdRF1iq&`nS`2BZtl93cx&_l7V)6M{3N#RY}Tr!g!pGM_qjCuBa2BTm>BoVi)T zEx>c)^qb{)NDKWy3AY**708-|o|@|?l-(8t8yx(0SFgo<;Zy%BHy zr3Ii!BiMNjnxzQ+s&GKp%TVKByA4eah7(PHT}O|D?a_ijg!qQof52}->{124Wfp$r z9qto?+qDiq>w;r)!bka{{lmiz*jNw_5jgO(@USqvet9^A_ImH z!Vc7PtSSWdlBjBM?{O-P-2Ei!ClHH_Ct>Q#gqKfJy=jTpSF8Te3&jLcd{wm#PLMuS z&9(BaCgI;S?yik6pX7ea0COY%baX%Cg)bGjpYDYUUb(};x%2Kr@#H6XhU&g^*H2Z=QDfB{k5~Kg=v>W4DVp0wbAaD`5Z~%yyX#Ce>hP)lHkd1d^rOd1 z2HBqQFh6XbSH!wXn`3_rXO9E?YPW+V4MqWhz4{`$Q*** zr`UdyswT0z?ss(_saMl1TOOV;%U0~_+Ky$oMe26gd7pDz{Ce8vz!q1+)(Nud}ghX-jXxO*ba2 zS#OgH;@w!Kw`xd9I&QXM;!d{;+XsRH>_`17Y$Lf?R9j)&06M??&IT8jkr`aHZL95u z7xiB0GoE>`^ce|H;?dG)&S?EM+g2fh(018w8v;_Rx7*+vT>SO-Hn=!bk4|A5+!2X~ z?y$kVyrQJP1BqS5J8dgS$?Usruvfu=RQqh~9^TTwX*YH3KHF62ZerCzVy*#M58L2I zN^C#O=xc23_Sn+buo=dL6i03B#@*7_1w_M-M{O{f2VdLc)Ke`^IHIKV^-03e?F8{O zzJJ0NslcHZY5x^|8WznV)HJPi zXp6Qr-2|$Yz&o-HR4V|`fDwgIB3>4?U{5&kq>u+{`5PR1gZ<;jq#_gSs-#RE8B-U^ zM7GS{Odz{s>9$EC9kxx19ChnNH3LK&T7mIE2b&?q*RUOu3LMD21V&w3-JAA1m&WfYA7tOU7O2?`ylH&W}&y>wTq$j{s>A0Qg%1Ed`FrJiH1Y`Qxf zwgZcfr29sRt@25tzG)&`9MJ$fK}DIc7nIV>6KNKTG>>@++0h7lJelUMBGpQfs$8Us zouMIAuyIqQf~}iW7Oew4$Esioi2~TiC{_U!N2~(ar%Am~Bg%qpn#9wf^C^=CJ2j~^ zS|xf;tPv0dJ2071Vx7=Un3VFmDDgIx7$Lv^PWPMb3M5B`qyDbUBB_6ME|Brbf*9Fp>&r!Zel|935b*1#gi z?LQL6b3DF^7j}>7+!ejp7IPN=vOQ)VkH_tZ@sPoCebv60fo_sw*u9f+JmwocWE@Fd z%q>4ybM%(Pj)JY2c&#Ef-wje>Uwv$kMEJrU%#C$c;2*lhmc>Y>!QgPrSFztmb#ABVOoECdJk1_?$twTZgzwoYY2ETJYtLadTtfLu$ms zrp661izlddj{7wPUnz@Qp#($5Z;HFm;fY(~1ey5%P|W;3ZjVIhNIp|Ncg2-r>F&5! z8svH^ZYZ93DsGqtzq%IpTO_`tj)w#8{WS4SCF1>h=R3exoG!ec??Aq-#8u}z!2Amx zAfNBBBm-QvR3Bd}!=HP_Z*W(R6rBjys11QPp<(fj<+vy={=OVfZ4p0!Y#t?JU<6lg znvss2Z@!ll4`+YRro?w>iO2|(KdeG^XWDSjwid7;;$ z?8))nIl4bbkIYlz4RC&w?Aa6!ySs`5Md$#_wRq^1_$C~>H8s9EZDQU#;r4b|nf(s- z?GW_+vQJw6?-Lm(q@^mIB@ zL$x?;>^mbq40%kB*CXA`_;A!2hMD|tYzVp;{=ipe#*cz?=6tYLfQ_<`>HbzUrz}34 zSM;HO@UR=Ut_?T{w#63HU9JX2_KSNq}d&_XI_cGwWBg`^Za=QRu$>tV6cXiTMs=o zamVpA6LGa3C6j&2M_0xx(MRrCGSqysz9UzNV@_*M%aQ9vO>5NsqNWilzNiVp$1ZBT z6nvQq?`|K{UHZ=@IJdIlVwe?N*;u04dlGFk0mZ+#-}=A{*c zY9EPoDdLuAdp0xG-jP*Z7aARUd)_RYCMZe*Fle&BnxSRu24(~08J1_WdKbQrwRaqJjm!ElQO7GoGE~} zm2fWAIi_*B24xI|J+~FD8t-Q}EC-Gt2Zaek;E0b%r4+Pj?5o0yIyG+2<2#)juO~Z- z=67qHCl$t$O1#&zaVK}&eput5HT=Lz++afEH2NRVX>tCf#{X;Tx&xxPnt0w`-90$! z(L@wQ@s2yAs2l>yp;T#>Sg>NEQKC^}!xq7yi8YB>9s;pO7i+ksd8>2Qt-%XTj z#g?dKiEF-!dds5_kM!~-L*I|P(lKZ7S5aO3-oRs^T%!S7E~?E(s!(YRQmXm`Qfrlt zKnj-{Y6DUmm5xAayV4OzQS;Y*7nLWb$dY%^7v+UYw+{NE?!J4_7j)lEc?|mUojQsv zfymWE*G{oY3FuX6GD>9UPf<@i^fUf_Ky3`a9hK#-&BR*s$&aH(gf>=2Wx>$B&6Gq) zHCL*NR0~|OELRkRC{J+ZLSX~E;Qd!o30mZ+%YySBT+%q3NI0go?#`-kZ5Gx4 zP&=oGU{RHFzJ4pPtI}~u z8saPi+fZk*kMQRU*g46$Ob@*aoWFVM*171GB=%Ehj8Rc88eQUi-Kgt@?ev6YE1fME z=|~5_o>k7i`T#tB$&2Knv(;)_4xO!`4Bp@9Y$NJklj$uxoMyutI9l@C1+JZH#gS4y zLLk*e>3F16Z6c)9W+9cU%q67MPCna1KCx8na<0^yZ>jx#cHM32o!$qWJq)@{RirDi z?uZk;Q`u?#pLNW6Pj|eK`gg=}rJK0u8xh(x6iCrM_P(E- zdrZ6%!5}<*G$InbhQy$uqA93TJn6bKLklbKIKvwA@ccM`+);S26fajJA#BWyR4VT%Q>IRttDyfX@#>Sr1qb~HU z$+3sY9PgkHV`rH)Vff|F;@DDyHkYKt)biLrHCjAxqviLNu?JHyqh`OxhUv5oDX8-w zvE8(~e7s9QbMX&jztU=LM8-dh?XJ~&5jpR#*!g-k5X>y@Yf-k=4kx8JQvlR7iObZ2 zGd#}IN818x4Cyg(fo9YSDN2pYZOlV|M8qs2*asg$D3;%w2sHN|f&;mf{##hs%EEI9 zWU_V?{)w1B89|OD^ogWl`6z7R>lsR!0e4jzwkS`R^jce8yzP}mwVIbSX*+hgg zEqN7pw>RI?t3v_1&LiB?yL#L#U#Ktw?#4G^Cr)%rpQV9rO*8S9a&v(76B8VZu-_Mi znIeByYB{GkC5U^5vs&iExMy>5v}pRqJ)5tNVBE7$Ro;wywo;WdanGuVJH9KkjMKn{ zPrOY6`xG2T-A*5z0KYfTeQSgxVY*`)SldF^-NbIflbf0C&1RAvl)1y)n}#L)apv_v z?J;CY(70#46$Ud~XXR=vvYm^*g;;_t)A|;o%=Lv^ZL=QMeZxnPx>Y2Xq{aE@thX$> z{27#KyR58y)uO}d!w?c|qb8u=FYFJ%=KkJDH zPU(9KvTp0)m&IA{S%mGmkhnSPeXW8uIlL|Fcw^p)Zi>5*#RM<3d%zc*LTI3lU%QFO zxm#o)>Ah(f>U^8ChhyziF{Ry{1lW5TM> z@eLrU2*Vz(Ze@YjFJ+w<`06=0(Ns$YcpHh947lzpq7!8+1{i==447R$Yal2X39@B? zKkG2wtUid=m4Uywu_jvv7*4hf>@o@oZ5h~A@b3?E0smrZ0{_As zteFb_wX5LYqm)tx|JoJs@7rRu9~L0Pf9*2-7yt4iq_SOs0AoCa0P{nO6A8s^S0KO` z6CuDn?|vGVKxPc=D*P84Nbp~bMqpmM0{?wXh05Sx3@7k!pLMOULkRqfH6}9#Vh+ZT zfxmVI_-j{yznB5W$5=A(7fU7JuU)leU{|2Ot*Liq=r8sYL4Rjb?lSZj0|@$?LNR0; z2G}OFVSxG3aN>__#QifWO$=WW8V<)~e2W0XC4V7tE0>O4bW7j*@~b zZ&5jf{ly=|{^Ac!L3uD_1TYRhf_eEds<4dy#a0sfchT}xY&L;@?YuDCfH-mtV2c&} ztGz_VzY6x1>hDJNcRO!YuJgqtXgq{c%J6@zIl=#5;@lSOD*hjs<7_cA!r9`FjI+gIAe=4s9vK0^?ja)pSaUK0U{{g0(QZj{!DIr!epjhqCH1q6 zwZ#cZ1^|W@80AKg0RX#-w8c+^w8dP>1ORpfA#JZwN*QU3g(A|HKfjuVU82JOF$|%$ zxSpu|?@%n6I27nV24f2RD$4*zoeV&NWB~q<40uG7SC#<|MFwCv$pB2O7yxi6G5`Y( zqV*R1k>vpXg+>6laXqFc<`*2n@;Fm8vU%cAm>z!!@$aIEEVH~rLHvhMIvMegF^Juh zE72B+Y_$Yq5ZWKZ3GMGt*xjM9J0B}YBUX1PtUj9pWL9@5tRB7-f%!74I~1HhMpWX< z?Cwz5-J!5Mej|3rK*ITB$;9psmECcb-h?%4T7x4XvpaSPv3pypyUgwwKnGDCmEzlqpG$MCgBP8u9-`>KGaOk3ETEfDa}qD+B+r zztM&XMkJey_#-3#vG)o2k3WR`$37tBKNd*H|6Vj>WaPg?MgAYWkEYM`*i|z69|wof z|IOy2=#!!Um?uI1+v8|4)rJW+h%o$EWdi?W3IhLQUCD~cYO1RY{Ksx4D<)lIJIVtg z!~U_lXvl=(E|HVS(0{BvSth{>k`)t&iu*U_*wt#0B@--?kpDf7r+6=_vTE^fS)5^| zNu2Fk-^v$PRfj6jFeegdXT@lxWRhqOMWSKCZfoQk&`OVg$#M+4m8_XyjmescLltLO zOA=?38u?+5k--3mD#|{fK9t26mPBFI21|7hfy?HiedXniVdy79T3uFW&le?sU$d5 z5r%(~2x}?x9xSZM`cr3qQuzPZF7Wm3EJ5(ccf9(4|A)*bF@Wkozh!;Mb$7FJ_~5^_ zXp`34r@uw3_ zPU)Mq`tR>gOn!!UZ?ecYwEpr&7Fpq>GDZs?zHW6t{ikuk2~$c^ZJ<@T@-e{C)EC| z-=Wj&!lQS@HT`2U>Nom^ewYc*bUyd>+q?*X7*M&#u#~}2!JuI$A_2FZi3nTYc?btoXxq-^xt$sT&)RSLwF*w7$dRhezPsC}LCj9zDJ$@=rD>ulksBWf3y zKmU%OTW6cYhp)E{<>%MiCPB^y+g}0;g*P_a?l7Lc)iw`qZnZ@l@svSE#UQxSw!$Fn zS_+jF$;Y~as7ons34`0F?3%}4uS#hFlb@!PF}4{l+{m7!6K-FF)Zel-A`E_%jT$K1 zd4`W;mttJ-#8f<3%9jKurY^;1aSva|Ej~Iht%m>eEc+W_!SCQPC4M#?-F%>QYP?g@ zUG}Bs-<=hYpu8*ca7!P@xA)dPn@!;zSH?GF++7z-%oGlLF?mv^-KrNw#LU8 zAg?0+4=-|29>BXEjvo&{9FBj1<{t3K#;d-MpN)2iks3b>V(Qd`1e`-ZpOUen-}p11>LBol-u;b<99=+f8wLH@}<|3>8=cI6;^x6x31}~ zP3p~6expq; zz|TBS(2j%5)-D9I4(jAOpy4f&T?cfUXi9oL8LOjv8|RxpY)f@DC2Z2AZmywPU6+68 zdt5IU&ZrF!sOtR(x^~&j`!Ja5crsu=B?_418q*ev_qjgumS2n^_p~dN@v##HU*Q32 z9RR9AFa6OqDingAxb*%IWlBIhe)7)DF+);lrW;<@oQDI46CX8JJe3#c7pk=@ z&i_E|gyQ^}YR44kBQwY{vN#_bEZ-0p=dV<6Q;PGe=;r3j+lhJFZn7_}wK~jAzH?ct z!*6oRwYpRMt?q_?nYFTS_)oKZAbv4AM!S@my=~*nqJxr7|2>ed; za;uz>9ne|HU(XE3Z$h zzFS~g_1yxg_4O$>)>E77(gu`otxv2zW?+&ke9Ra%Ei=!6d=m&i7iA)Dm*zf<{V4M@ zH$|3?9o0k~u(6}UaB#qLapnT18IK^xl}j=YYKi4wNNHvhL0d`W-11C(XNStn_w>+l zZ|3_A`04YROX0>sZ#1y67F;VVF4pw_d%6Cx^H{6@f<5hg!AeVK;lc!deUbMlwh)Fc z_P*c+DeJvQ1i_Ok@4fE)$PeBl*dypAruSg_&uei;TKGCC{k|7^w%Yn%R%if%e_~26 zgXDLU8wl{|rS`r7{(aTOqUXm0Qh$RDHtRknY?@gS(0i4p;!s~RtN5i~zDc>WizsZX zPR)oJp4j?|VZ)vqb$t$DODl55+`>IiMcTwgs+V?06)7iHT%L5J&Svl-69pVByof4J zi`LC6<>o{Sc0LxO+pIbDDqh4D@!xA}5Shh)3+&e)+ZPDOT)X1uM zUWywTEVdl2U-(zFUlE~amPJMDRIlugQ=~t(C~!SG9bVLPJt~`3gl|}cI=vN^&5PZ6 zZC*f}`PB<$V!7_sQqiBo27^%+qeDZ(D*7L|uBxI9)1z$nuZTZ*Os}P#R)ytQA9vYk zZ^f{4SHz0!s~3fe=#t*yU&}uYlmS9;93^xsih8t?|s=PdesSg*Rz-u zW;I|b8ifH$dnBs`l=etLihm!%PU8k(QzM2hrBNXyjP<}_f~(Eg06p{PDR!2lrtI}s zUCLg6Q#q^b%%{$`d=8BzRJLZa-I;xD7`c?^sQo;T`SHpqMn2%3PBsH`KICLf9pKV_ z%P8657}nIR3}shEKpGJuvCaHcaHc+^J7UO2zLnMeeEP9i%pj*9Lto*%q940e_nFLl@MZnwj2jG4 zn$mO-`<_7B9(gPj`-R88gWcr^p(EIH+C@4>F?8XF4(i7+Rfn+jyQ`GVXYVocbZr@n zJ>U;p#xe_;L^wBrp+y^ixHpOYL9MtkwZ3wvsB|crrW8AGI;-Qu(rW5k-e?Ba*N+#? zV839(ybst>by%u#xshi~Y4u5p*t&=vRWy-Gt8p@6U1zePMzxJUIw;CV^BHAmPLq$@!x`^Gu#_-czt`d~cC`0>Y4EY=% zX-b)@Pg;6*1EoqRV?JtOXSYy5&$9ZiKT9=-*mCAxH<)K}_M;E#&zQRjGo7%J$vU(L zHZfA=yt7Fuqjob}fkjnpVX?hd=wiWl8ws zewe8~%uBDhQxygrW=l|>a>Ggad+(EM31fJsRrmfuGGhX9VV5EX}E@_mMGvE@B; z`L93JMfvpc+eF56Z8$p`bB3?~`HABWw4U95neCG*S!5QD8SDu|9waRd3>@_gA z&RB0jR{;l-Gct|5+em!1!{;hruAgZ12e<5u7cNNtGy{FeP-9@-xIR_FSHeGT#_*>5jy{z5#)tP z19ZRf**(rX!yko#%^X@o#ja-#K>bEcF~AN?Pz{M+|S0pnPvvsGl{um zYzo6J8C#+Q?EA)v2AzEfacWtd?&3te?(V&w~oFdY}*bh2-h=LaN4xB#XFlMgbY4xR@7L@pk4;bqV1%Bcqjb;kI zV~-CK2O8i~sF3Ps(-Sqy@Ei0=|SLDpHx>^xFE`6D&PGnkLC2KM5`y~Rsr zOeb%ZGBa0V{(N{J@wtDra{ABA{2Z_DsBokZRmR`U5f7V;%0@0TbGs)G=_@w$cPTds z7|^vY_IA8o;2rylgZ=9>sHm>{SW$x?SN9deSuj7_SM2Pso-{Huzp9T7XaJ1|^%Iw1 zoZbDzW)XerQtvLQr*_p*dpzsvv?l=X8h`I6HbCvVSN+6n&1?8~a)0r44Q9Yc^%t9^ zZLdqU_d;E&y$|Zb_C?oI_08JXr!L+;^;njfxevA9_*F+>kg%_YKXe58_&2UgxW7eR z^!=@{p+91o2$>D$5BiG@G^i`awF9tU>bvT|@VbNtDAw2k;&s*)(g%tIy;1US9wT@Ix#ShJ9dagEEzWJ5DWZZSVrI#jgo16*FXoneoU-oWK+r?B2S2?aDxth zKZ=E9YjD9i5f`^?nEbQY+C$ro*kJ8%VyVD}L%ZKa50PxU1oDng#d36ubNZ<`PgZ({ z+-D*>Yk&POv5aYn&EWdqVsnj|G%aXij;N&j2XLzu*NF|~kPjvlXq1EP2NUofLf+^j zRmg)+whV^vj8do(J0$>ic}Yd0?i$_3@~8&VA)WtC3VzZ+`V3EDP~21+DDV-Ng9hN@ z^s1ROo=%Al5-?Krjg zbf?q+*+gcgQnN!Hd!$e;jNh-(H)vC$%oz+?sc;igRrOSLebSoxuz%pLQ+nH^HDir< zm(J37R>mtkOK(DGqSTbB6-|=RcFfI08oXl}()WT?1q(8zt{QfqpY1Az>z=$uH`dR( zN(ox!AiH`w4udQ^S1(6}H@vg$DV1xB&_p5l_L9&psk~9?o+GVQbTD~9e<@G5_yLK% zY5gUK?u0zU*7lcX^QZw*9AU{UFmiyj$;2DwNsXW+PZ|>p-XBVNdQGZlLzq5aiV#hr zGGeF-Z-vcEq@Q*0ahWub;q$|da%nqV9t86FtEAug2dkwxHU=tJOSM`pt_b)>utECM z2Q^}`=k#U4>}-CQgHA~ z4@iGm&B=cF8Xat=Sj%=6N4rrk}M-@YJaOE`&LHzcEmt>f{xr6q_(J$YO560|5e zy`bh-2{)b=zWttrj%@Bpo?7_xJ{HfWz=B6oJ3ar#-0=gvs+Gp-`PzN2Cqvs>=?y&; z>rB2nE$t~`rDSR;@$0^(-;~3}H`9KnN%oV)G!o4dWQELO-ZB$@vou&8ns1gig7$$X zf5vOGLk3{=h6kDQ887J;!l9;t>8wVXl-nAamLm+bN60V~qW5})>^7r>mu3ASOBLP0 zb!}?uF7mf}hWy1>+f9-7Ty?cL)GfEGGS860DN2lnRH4F5hq?`>Y7g!ea*6S?b`u&- z>=T0EgJ12Y;d$rbzNF#)jIC4Y!z&mj!qhLOQ<;rzAdz2=GbEDG< zQ#+apWFrGU@T8L|NXG+GO%V)@6sMXx;Z3XQJ*GP#3&x->rs0~SwF~&vE~Yo(P8ZWn zK`=ewhcZp6%!fD5GUcEIoRVc)%J{gOjVvTM`HY*5oY1tZDUfN~QJX*QW-@4W`cR^a z-!MI3O>AnF&RU%HRJ?lahTeJbHVr=QWeQ=`_438$*#;YlVK??RIFGG~3uOvByyNWV}C zKHOje#t-$!4eWT*UX2-Oyu`Z?#+NYk2+$ABY7Z{O=UKF#EBo@H$1#3>2u2PXijikX zN$C4V)t)4OexyZ7+G{**1jZSQo_e6;CR1BR8cMz}X0z!d4WEkc0ARy5(xl_f*w0fHZ+)f!UWaaTx-&6@Me*( z8XfKvh{Vd*{`;ps&B~t-qT?|lx^?a($E*4;+H0Q59kSqNMI95gZtG@~?cWN58*e?w z=mXhhZj%_lWNhsRN6X#xdbqLLZI6*J-`Gws2&4JJr3MT5Y<0_sWouBI1X13D?znBo z)%um2XH(wUtBW7c4|TV*w`G&_d=1ikmRA=$oCv^zZ4;L!+}%-Np;ux>PiE z@5CEEZ`_!rY^RxFO!% zkF#Bf*BBV@9>jzPZ^Hco+#W;7oMbz$o?f3E0p1&u*BbD#`dUsnTI=1GyjOq@9#Nh3K}*p*by6x# zFNa%lCuL!AxTPS)pOxqfSP7ie`5 zfAA&fLgo>D%g2i!;N~mhVy2%2y>DceG04r2|6CCE&x79ATUSV$o`0MN%^$6+C3yI} zwV$!lD{`X%hlI!q30AvD4lzKmC9;E$Yz}o!i^wqH*OAa{RN_JlYX?x27%0HaS&4tU z!8K!OE`zJZiK`f2x;QZc&M!`kksy3U;s7mV`J_(OapCPwPr;F6&1AyUY4CMR`#3ZL z-pbyD+MD0TjrrHt<)8{h6Ea+)cp`>ekzf8}rYP*p~`FyCA4n{Fj2c zJr+WB>!@u{^5;mOc(mWX8A<-bp!nAKC>og?k0|E=K74R|sb*`^5cqp=JZh_UdpllW zy3fDI0(sW3_?`g6;y>2$N$4;P`n?;UsE5jN@vj7Y1#g+>{z`|FW6)^#;~L?J$o+dq zexg`j>?p(GmEvh)sufXJ&5q=AQ{Fmtl#L9-hTf6G1&yB6x5;{pN8iYg7(2lu3X)rE z77Q)sJqwac!1y@jJpsl?wvT1pJGcu#nB9VACbr+pxWn-J=abQvs5UZE!+MQY2rANg zjn)K(Lg6Z}=+^7_)k6-uiIf?RjJ90X!HHijClM!b%14YLly0(f>lsjYu(nkF7s_J6w`9%+whWGZliTusw%{-+i11n zzdjdYaUaz3g|J(TOC0j#3!$wR5mWB}3V-8qv{tyF0ZF650Y1MA4t{U5#>jG+-!MdeylfdZAB#^^U(-@-io4M#ZVqKUO-jiaIHUYb~M6|4N@W< zX_F!=^7^qim4HhWAbgeP!^1A82JjflcH9~L3N%+NLk&rso7 z3ln6tI-lzv8G!VvlP(Kie#YX*+qT6lcZ8t^R%1-Z)7xT2lg%~@kD@<6UW~8QU5`e@ zr@%V19ouL#`?FtcamLPVLYP3)%Sp3kzi{P51yJHkI5VbLU8 zq5%c?4+XYQHMk8MS7h_jz{elj@UeJ5Kez;41l<4BmTo|%*}K;^NDIvl+V%_Z@{lb_ z18*F)wPM1Y%`mO6b)TSJM5EtffOV<>-wm>&N6@lS)_1h^>sUk~iVO7bHqP1!Jy<9Y zQV}zJRi=uV5kUNsJcg%Z2ABy_wke}>m)c{Wt}KM z+97MGM%O^*wxLI?YXt6g%9^iVL&C$87o4*8f~%*jB^op8j>x>QX*Qnf15kt5dVWwM z9_r+C_145s3zeNAQtH7KsqM;hGE!eE%P&$pm0cxLyOfn*)D7;JWn{A9}<3mG)n1OoyA+B@8azvVI+8#4F3rTvWwwrh;1=i7F0?@6`-b^^-VrbeQ@qFi@>I2DtM&nlOo zJU+7AO_1jB(95`y8JZEf1=3nt@Z7kgf8xKAaQ8TDFHG1GZl0{xwSA{4RM(*!6Dsu( z_C>;85iebz?n>Baf$AR;T8Sp~ze+-6&DbJ=*YuR4!EhnLM`Y2^;93HzCbYkq;Lf1y zt%NrPA^11gd9ydJZN$+p+E}{?F(yz9=hSvglV{lk(@y1+Rqa{ z%Y!!ucUq~{EdLD=HbH4k{c#pgXr0zsqiZ>gx~rmXTB#R%35m&R$6JAae%cfbFPoBf z6h=->JBr(->1it@xIH^ZZzPC8vHxeo^A#3B(t=bx1wQ zpos?M78IW`;yYC#+}G#^GU%<-p`rG^&8^tF39i&z4Bl +NOTION  notion.sonotion-static.com +notion.new +3 + +STREAMABLE embed-cdn.comstreamable.com +' +928PLUS 928.plus +zind.cloud +7 +DART dart.dev dartlang.org dartpad.dev M - MESSENGERfbmessenger.comm.me messenger.com -nbabot.net + +LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com + +MIRAHEZE miraheze.org +. +NETLIFY netlify.combitballoon.com + +GRAVATAR gravatar.com +s +SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +Û +SPOTIFY byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net +z +CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org +ô +EPOCHMEDIAGROUP dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net +etviet.comlagranepoca.com ntd.com  ntdca.com +ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz +5 +V2RAY  v2ray.com +v2ray.cool  v2fly.org +© +9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au +? +GEETEST geetest.com#geetest.datasink.sensorsdata.cn + +GLYPHS glyphsapp.com + +BETHESDA +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.com + + +INFRAPEDIAinfrapedia.com +É +LG +lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com +lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net +1 +ZIROOM +ziroom.comziroomapartment.com + +JIYUKOBOjiyu-kobo.co.jp +¥ +LYSOL lizol.co.in lysol.ca lysol.cllysol.cn +cn lysol.co.cr  lysol.com lysol.com.cn +cn lysol.com.mx  lysol.net +7 +PGYER  pgyer.com +tracup.com frontjs.com ++ +TYPEKIT typekit.com typekit.net +ñ +WANGSU  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org +T + +PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me +ó +REAGROUPflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com +) + ADCOLONY-ADS adcolony.com +ads +& +HUYA huya.com msstatic.com +ª +NIKEnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com +eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com +gonike.comhandbags-nike.comhightopnikes.com +idnike.cominikesneakers.com just-do-it.cn +cn justdoit.uskicksnike1.comkidsnikeshoes.com +mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn +cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn +cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com +nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn +cnnikebetterworld.com"nikebetterworld.com.cn +cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com +nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn +cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org +nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn +cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn +cn nikeid.com.cn +cnnikeidshoes.com nikeinc.comnikeinc.com.cn +cnnikeincchemistry.comnikeinstock.com +nikeit.comnikeitalia.com nikeitaly.com +nikekd.com nikekid.com +nikelab.cn +cnnikelab.com.cn +cn nikelink.comnikeliuxiang.cn +cnnikeliuxiang.comnikeliuxiang.com.cn +cn nikelives.comnikelunarglide.com nikemall.cn +cnnikemall.com.cn +cnnikemarketing.com nikenews.com +niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn +cnnikerunclub.com.cn +cnnikerunner.comnikerunning.com.cn +cnnikerunningshoes.com +nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn +cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh +swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e +Ý +VOLVO volvodynafleetonline.comescandinavia-arg.comindependentoperatorcn.com road-crew.com udfs.com vfsco.at vfsco.be vfsco.bg vfsco.ca vfsco.ch vfsco.cl vfsco.co.uk vfsco.co.za  vfsco.com vfsco.com.au vfsco.com.br vfsco.com.cn +cn vfsco.com.tr vfsco.cz vfsco.de vfsco.dk vfsco.ee vfsco.es vfsco.fi vfsco.fr vfsco.hu vfsco.ie vfsco.in vfsco.it vfsco.jp vfsco.kr vfsco.lt vfsco.lv vfsco.mx vfsco.nl vfsco.no vfsco.pe vfsco.pl vfsco.ro vfsco.ru vfsco.se vfsco.sk vfsco.us vgcareers.netvolvo-truck.nl volvo.cavolvo.cn +cn  volvo.com volvo.com.cn +cn volvo.sevolvobrandshop.com volvobuses.at volvobuses.be volvobuses.ca volvobuses.ch volvobuses.covolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zavolvobuses.comvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.tw volvobuses.de volvobuses.dk volvobuses.es volvobuses.fi volvobuses.fr volvobuses.hk volvobuses.hu volvobuses.in volvobuses.it volvobuses.jo volvobuses.kr volvobuses.ma volvobuses.mx volvobuses.my volvobuses.no volvobuses.om volvobuses.ph volvobuses.pk volvobuses.pl volvobuses.ru volvobuses.se volvobuses.sg volvobuses.tn volvobuses.us volvoce.comvolvodefense.com volvogroup.be volvogroup.cn +cnvolvogroup.comvolvogroup.com.brvolvogroup.com.cn +cn volvogroup.de volvogroup.fr volvogroup.jp volvogroup.kr volvogroup.mx volvogroup.nl volvogroup.pe volvogroup.pl volvogroup.ru volvogroup.sevolvogrouptruckcenter.nlvolvomerchandise.comvolvopenta.comvolvopenta.com.br volvopenta.de volvopenta.es volvopenta.fr volvopenta.it volvopenta.nl volvopenta.se volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.ukvolvotrucks.co.nzvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwvolvotrucks.comvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.cn +cnvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eevolvotrucks.esvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvolvotrucks.mavolvotrucks.mdvolvotrucks.mkvolvotrucks.mnvolvotrucks.myvolvotrucks.netvolvotrucks.nlvolvotrucks.novolvotrucks.pevolvotrucks.phvolvotrucks.pkvolvotrucks.plvolvotrucks.psvolvotrucks.qavolvotrucks.rovolvotrucks.rsvolvotrucks.ruvolvotrucks.sevolvotrucks.sgvolvotrucks.sivolvotrucks.skvolvotrucks.tmvolvotrucks.tnvolvotrucks.uyvolvotruckcenter.bevolvotruckcenter.dkvolvotruckcenter.esvolvotruckcenter.fivolvotruckcenter.itvolvotruckcenter.krvolvotruckcenter.kzvolvotruckcenter.nlvolvotruckcenter.novolvotruckcenter.sevolvotruckrental.beudtrucksmeena.com +0 + MIXPANEL-ADS decide.mixpanel.com +ads +Ÿ +PIXNET pimg.twpixanalytics.com  pixfs.netpixinsight.com.tw  pixnet.cc +pixnet.net +pixnet.pro  pixnet.tw +pixplug.in +3 +PPTV  pplive.cn +pplive.com pptv.com +, +GANJI  ganji.comganjistatic1.com +Ö + INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com +? +STRIPE +stripe.comstripe.network stripecdn.com + +SFACG  sfacg.com +© +WESTERNDIGITALg-technology.com +sandisk.ae +sandisk.it +sandisk.cn +cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw +sandisk.de +sandisk.es +sandisk.fr +sandisk.hk +sandisk.id +sandisk.in +sandisk.nl +sandisk.sg +wd.com wdc.comwesterndigital.com +& +JABLE cdnlab.live jable.tv +Ì +EA dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.net +- + PUBMATIC-ADSads.pubmatic.com +ads +7 +VANCL  vancl.com vanclimg.com  vcimg.com +_ +FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org + +OPENJSFOUNDATION amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.org +M + +STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com + +WIKIHOW wikihow.com +– +XIAOMI +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiyoupin.com +Œ +ESPN espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +ê +HP +123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com +compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info +hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com +hp.com +hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net +hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com +hpfaqs.comhpfeedback.com +hpgift.com +hpgpas.comhpgraphicspartners.com  hpiie.org +hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com +hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com +hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com +hpstore.cn +cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com +hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.com +J +HUPUhoopchina.com.cn hupu.com hupucdn.com  shihuo.cn +0 +OPENWRT openwrt.orglede-project.org +j + PLAYSTATION playstationplaystation.complaystation.net sonyentertainmentnetwork.com + +ZHANQI  zhanqi.tv +- + ACFUN-ADS apilog-web.acfun.cn +ads +’ +AZURE azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.com +Q + BANDWAGONHOSTbandwagonhost.com bwh1.net bwh8.net  bwh88.net +W +HAINANAIRLINEShainanairlines.com hnacargo.com  hnair.com 10044.cn +# + MOPUB-ADS mopub.com +ads +* +PAGECDN pagecdn.com +pagecdn.io +¡ + BYTEDANCE  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com +E +HCAPTCHA botstop.com hcaptcha.comhcaptchastatus.com +i +HKBN csifund.org hkbn.com.hk hkbn.net +hkbnes.net jos.comspeedtest.com.hk +o +IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com +¯ + +VISUALARTS abow.jp angelbeats.jp +anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp +Ô +VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com +i +ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +* +DANGDANG dangdang.com ddimg.cn +Þ +VERCEL +now.shvercel-dns.comvercel-status.com +vercel.app +vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com +Ü +WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.com +/ +XVIDEOS xvideos.comxvideos-cdn.com +í + WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org +w.wiki toolforge.orgwikimediacloud.org wmcloud.org wmflabs.org +$ +GITEE  gitee.com gitee.io +S +PORNHUB +phncdn.com phprcdn.com pornhub.compornhubpremium.com +F +SOGOU +go2map.com sogo.com  sogou.com sogoucdn.com +$ + FREECODECAMPfreecodecamp.org +¤ + SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads +œL +TLD-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup +olayan praxisapseek +vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci +hermesiwcjlc  lancaster lipsyloft mango  montblanc mrporter +netaporter +nextdirectnextnike oldnavy omega panerai  patagonia +piaget  piperlimepolo redstone +swatchaarp +abbott +abbvie aetna alcon +anthembms +boehringer caremore +cialis dabur  freseniusjnj merck mutuelle +sanofiaeg +airbus +alstom +aramco +blanco bosch +bostik +chesapeakechk crown +doosan +dupontflirfls flsmidth  gecompany grainger hitachi  honeywellifm ipirangajio komatsukoneksb  kuokgroup leclerclidl linde lottemanmtr reliance rexrothril rockwoolrwesandvikcoromant sandvik sapphiresca +schaeffler schmidt schwarzgroup schwarz senersewsncf statoil total +vanish +walter +warman weberweir woodsidezara zippo agakhanakdn +ansons +bharti +extraspace genting glean ikano +imamat  ladbrokes +livestrongmaif +mattel shell transformersvanawme astriumcern +emerck  hisamitsu lilly lundbeck lupin merckmsdmsdmtpc +otsuka +pfizer stadateva toray weather auspost deutschepostdhl epost fedex +pitneyaaa +abarthadac  alfaromeoaudi bentleybmw bridgestone bugatti buick cadillaccase +caseih  chevrolet chevy chrysler +datsun dodge +dunlop ferrarifiat  firestonefordgmc goodyear honda hyundai infiniti iveco +jaguarjeepkia lamborghini +lancia  landrover lexus lincoln maseratimini +mitsubishi mopar +newholland +nissanramseatsrt +suzuki +tatamotors +toyotatvs uconnect +volkswagen volvoaigo android apple bestbuy brother canondell digikey fujitsu  fujixerox  goldpointibm nikon nokia olympus  panasonic philips pioneer samsung sharpsony toshiba  yodobashi  allfinanzallfinanzberaterallfinanzberatungallyamericanexpressamexampanz banamex barclaycard barclaysbbtbbvabnl +bnpparibasbofa bradesco +capitalone cashbackbonuscbacfa chasecimb citadelciti commbank deloitte discover everbank fidelity hdfcbankhdfchsbcitaujcbjll jpmorganchase jpmorgankfhkpmg lacaixa lasalle lixil lplfinanciallplnab nadex netbanknorthwesternmutualopen +pictetpncpohl  pramerica +prudentialprupwcsaxosbiscbscor shriram softbank  statebank temasek +transunion ubankubs vanguardvisa wolterskluwerafamilycompany  aquarellediyduck +finish glade  homedepot  homegoods mrmuscleoffraid rightathome  scjohnsonaig allstateamericanfamily amfam amicaaxa chartis esurance farmers  goodhands guardian guardianlife iselect metlifemma +mutual +nationwide +nissaynorthlandinsurance +onyourside progressive redumbrella  statefarm +swiftcover thehartfordtiaatravelersinsurance  travelers travelguardtrvvig beats blockbusterbway netflix playstation showtimetab williamhillxboxasda bloomingdales +george  homesense justforulego macys  marshallsobiqvc safeway samsclub shopyourway staples +targetthd tiffany +tjmaxxtjx +tkmaxxvons walmartabb  accentureaceraco +active +airtel +amazonandaolawsaxis azure chatr +chrome cisco comcast +connectorscscdclkdish +docomodtvdwg emerson epson ericsson etisalat  fairwindsfido +flickr frogans frontierftrgbizgeaggeegle gmailgmogmx godaddygoog +googlegoogreeguge hangouthkt hotmailhtc +hughesieee iinet infosysinfy intel +intuitjavajcpjmpjprs juniperkddi +kindle +konamikpn lanxess liaison +lockermeo  microsoftmihmiimint mitekmit +mobily +mozaicmtn multichoice naspersnec neustar nexusnico +nortonntt +officeollo +oracle +orangeovh patchpayupccwqtel quest  richardli ricoh +rogers +sakurasaposassessfrshaw skolkovo skydrive skype sling smart stcgroupstc symantectatatcitdk telecity +telefonica terra translations  ultrabook unicornuol verisignvivavivo windows xfinity +xperia yahoo yamaxun +yandex yellowpages youtube +zappos +chanel clinique garnier  kerastase +kiehls lamer lancome +loreal +matrix +maybelline +natura origins +redkensvr barefoot beknown cityeatscookingchannel +cuisinella delmonte edekafage ferrero foodnetworkfood gallo heinz +kindermcd  mcdonalds pamperedchef +rocher +wilmarxn--3oq18vl8pn36axn--55qx5d8y0buji4b870uxn--5su34j936bgsgxn--b4w605ferd xn--cckwcxetd +xn--cg4bkixn--dkwm73cwpn xn--flw351exn--fzys8d69uvgmxn--hxt035cmppuelxn--hxt035czzpfflxn--j6w470d71isscxn--jlq480n2rgxn--jlq61u9w7bxn--kcrx77d1x4axn--kcrx7bb75ajk3bxn--mgba3a3ejtxn--mgba7c0bbn0axn--mgbaakc7dvfxn--mgbb9fbpob xn--ngbe9e0a xn--pgb3ceoj xn--qcka1pmcxn--w4r85el8fhu5dnra xn--w4rs40l avianca caravan changiairport cipriani clubmed delta firmdale +hilton hyatt kerryhotelskerrylogisiticskerryproperties marriott orientexpress  shangrila tradershotelstui +viking +virgin +webjetablecbre chintai  frontdoor +lefrakabc africamagicartebbc  canalpluscbncbsdstv +eurovisionfox +gallup globogotv guardianmediahbohgtvimdbitv +kyknetmnet movistar mzansimagicnhk nowtvsbs sevensky spiegel starhub +supersport theguardian travelchannelweatherchannel bauhaus latrobe +monashrmit +8 +TARGET +target +target.comtargetimg1.com + +3DM 3dmgame.com + +IPIP ipip.net +" + MASTERCLASSmasterclass.com +“ + LIMELIGHTdelvenetworks.com limelight.com  lldns.netllnw-trials.com llnw.com llnw.net  llnwd.net  llnwi.net +ä +PRIVATElan localdomain example invalid  localhosttest local  home.arpa ^[^.]+$router.asus.comlocalhost.sec.qq.comlocalhost.ptlogin2.qq.commsftconnecttest.com +Z +PICSEE pics.ee  picsee.co +picsee.pro pise.pw pros.ee +pse.is +U +SB +dns.sb ip.sb loli.net sb.sb sm.msu.nu +www.sb ‰ SONY playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl @@ -24,8 +900,65 @@ sony.co.nz sony.co.th sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net -Í - TENCENT-ADS ad.qq.com +2 +YNET ynet.cn ynet.com ynet.com.cn + +CODE code.org +8 + HOMEDEPOThomedepot-static.com homedepot.com +é +MINImini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com +mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl +mini.co.cr +mini.co.id +mini.co.il +mini.co.kr +mini.co.me +mini.co.th +mini.co.uk +mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua +mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com +minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com +minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com +trmini.comtroisrivieresmini.comyours-customised.mini.com + +GOFUNDME gofundme.com + +PINCONG pincong.rocks +ê + SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.com +. +CABLETVcabletv.com.hk i-cable.com +G +TEX ctan.orglatex-project.org +miktex.org tug.org +ý +CISCO webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn +cn  cisco.com cisco.com.cn +cn +cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co +devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com +mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com +mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn +cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com +versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org +mearki.com meraki-go.com  meraki.hk merakigo.com +tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net +9 +EMBEDLY embed.ly embedly.com playerjs.io +E +ETHEREUM +devcon.orgethereum.foundation ethereum.org +ß +OCULUS binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com + +TENCENT dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com ads ad.qun.qq.com ads!adfilter.imtt.qq.com ads adping.qq.com @@ -49,428 +982,664 @@ sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sony ads mtrace.qq.com ads push.qq.com ads pgdt.gtimg.cn +ads +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.com +rtx.com.cnservicewechat.com smtcdns.com smtcdns.net +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com wegame.com.cn +weiyun.com alloyteam.com imweb.io ivweb.io + +TSQUARE +tsquare.tv +u + +ATTWATCHTV +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com + +BINANCEbinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com +" +LIHKG +lih.kg  lihkg.com + +SAFECHAT safechat.com +9 +SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl +\ +TAIKANG taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +R +ARPHIC +arphic.com arphic.com.cn arphic.com.twifontcloud.com +2 + NEWRELIC-ADS"js-agent.newrelic.com ads -? - BONGACAMS bongacams.com -bcicdn.com bcrncdn.com +Õ +ONEDRIVE 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +¹ +UBI ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +cn +ô’ +BEATS100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com +aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com +airmay.com +ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com +beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn +cn  beats1.tv beats1.com.cn +cn beats123.com beats2.com.cn +cn beats4.cn +cn +beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com +beatsep.cn +cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com +biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net +bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com +cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com +dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com +lyzsxx.com mairbeats.com +makeeu.commallheadphone.commbeats-tech.commbheadphone.com +micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com +ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com +scnshop.cc +shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com +theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net +unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.net +B +MITmit mit.edu mit.netmitpressjournals.org +ä +SMARTONEbarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +¸ +AIRWICK +airwick.at +airwick.be +airwick.ca +airwick.ch +airwick.cl airwick.co.in airwick.co.nz airwick.co.uk airwick.co.za airwick.comairwick.com.auairwick.com.brairwick.com.cn +cnairwick.com.mxairwick.com.tr +airwick.cz +airwick.de +airwick.dk +airwick.es +airwick.fi +airwick.fr +airwick.hr +airwick.hu +airwick.ie +airwick.it +airwick.jp airwick.net +airwick.nl +airwick.no +airwick.pl +airwick.pt +airwick.ro +airwick.ru +airwick.se +airwick.si +airwick.sk +airwick.tv +airwick.usairwickarabia.com vipoo.es +, + BYTEDANCE-ADSmcs.snssdk.com +ads ++ +COWLEVEL cowlevel.net  cdncl.net +Q +NEWSMAXandysparis.com newsmax.com +newsmax.in newsmaxtv.com +f +OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads +³ + +BRIGHTCOVE bcove.video bcovlive.io bcvp0rtal.com boltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com videojs.com +zencdn.net zencoder.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.net +Ç + CATEGORY-ORGS archive.org ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net csis.orgcsis-prod.s3.amazonaws.comemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org +ieeer5.org +ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org +comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org nist.gov time.gov openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgrolfoundation.orgrolsociety.org aomedia.org  atypi.org +change.orgglobalsecurity.org ietf.org itu.int  smpte.org +un.org +w3.org who.int wto.org +© +GOOGLE-REGISTRYcharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4c ++ +VAPTCHA vaptcha.com vaptcha.net +d +REDDIT +reddit.comredditstatic.comredditmail.comredditmedia.com redd.it +, +DUYAOSS duyaoss.com duyaossr.com + +FIREFOX firefox.com +, +MEDIUM +medium.commedium.systems +ñ +VMWARE +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.net +· +HANYI hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cn A PINDUODUO pddpic.com pinduoduo.com yangkeduo.com -T - -PROTONMAIL protonmail.chprotonmail.comprotonstatus.com pm.me  -QUANTIL quantil.com -k - CHEETAHMOBILE cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.com - -MOCHA mochajs.org -ª -OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads -ô* -PAYPALaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.org anfutong.cn -cn anfutong.comanfutong.com.cn -cn beibao.cn -cn -beibao.com beibao.com.cn -cn bill-safe.combillmelater.combillmelater.infobillmelater.net bml.infobuyfast-paysmart.net cashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com -gmoney.org -i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net -pa9pal.com paaypal.com  paily.net  paily.org -paipal.com -pavpal.com paydiant.com paylike.com -paypa1.com -paypa1.org paypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net  paypal.ca -paypal.com paypal.com.cn -cn paypal.com.hk paypal.com.sg  paypal.hk paypal.info  paypal.jp  paypal.me paypal.net.cn -cn paypal.org.cn -cn  paypal.so  paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.cn -cnpaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.org paypalhere.cn -cnpaypalhere.compaypalhere.com.cn -cnpaypalhere.infopaypalhere.netpaypalhere.org paypalhere.tv paypali.net paypalinc.compaypalindia.compaypalinsuranceservices.org paypall.compaypallabs.com paypalme.com paypalnet.net paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.com paypalx.com paypaly.com payppal.com payypal.compdncommunity.com -pp-soc.com ppaypal.com  pppds.com pypl.com  pypl.info pypl.net pypl.tvsecure-paypal.infosecurepaypal.info sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info www-paypal.usxn--bnq297cix3a.cn -cnbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tv card.iogetbraintree.com krakenjs.comloanbuilder.comswiftcapital.com simility.com cashify.netswiftbank.info swiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com  venmo.com -venmo.info  venmo.net  venmo.org  cash2.comfilipino-music.net -s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.com wwwxoom.comxoom-experience.com xoom.com xoom.io xoom.net.cn -cn xoom.us xoomcom.comvenmo.s3.amazonaws.com +TABOOLA taboola.com $ -SCMP scmp.com -i-scmp.com -Y -JFROG  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net -1 -GODADDY godaddy.comx.co godaddy -Ò +TAOMEE +61.com +taomee.com +o +UNITY  unity.com unity3d.com!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +. +ANDROID android.comandroidify.com +B + APPLOVIN-ADS applovin.com +ads +applvn.com +ads +9 +MOGUJIE mogu.com mogucdn.com mogujie.com + +PARLER +parler.com +/ +CLEARBITJS-ADSx.clearbitjs.com +ads +( +IMGUR  imgur.com imgurinc.com +. +KUAIKAN kkmh.comkuaikanmanhua.com +6 +AGORA agora.io +agoraio.cn agoralab.co +š +DIDI didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com +„ + TONGCHENG 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com +¸ +VISA visa.be visa.ca visa.clvisa.cn +cn +visa.co.ao +visa.co.cr +visa.co.id +visa.co.il +visa.co.in +visa.co.jp +visa.co.ke +visa.co.ni +visa.co.nz +visa.co.th +visa.co.uk +visa.co.ve +visa.co.za visa.com visa.com.ag visa.com.ai visa.com.ar visa.com.au visa.com.az visa.com.bo visa.com.br visa.com.bs visa.com.bz visa.com.cn +cn visa.com.co visa.com.cy visa.com.dm visa.com.do visa.com.ec visa.com.ge visa.com.gt visa.com.gy visa.com.hk visa.com.hn visa.com.hr visa.com.jm visa.com.kh visa.com.kn visa.com.kz visa.com.lc visa.com.lk visa.com.ms visa.com.mx visa.com.my visa.com.ng visa.com.pa visa.com.pe visa.com.ph visa.com.pr visa.com.py visa.com.ru visa.com.sg visa.com.sv visa.com.tr visa.com.tt visa.com.tw visa.com.ua visa.com.uy visa.com.vc visa.com.vi visa.com.vn visa.cz visa.de visa.dk visa.es visa.fi visa.fr visa.gd visa.gp visa.gr visa.hk visa.hu visa.ie visa.is visa.ky visa.lt visa.lv visa.mn visa.mq visa.nl visa.no visa.pl visa.pt visa.ro visa.se visa.sk visa.so visa.sx visa.tc +visabg.com visaeurope.at visaeurope.ch visaeurope.lu visaeurope.sivisaitalia.com visakorea.comvisamiddleeast.comvisasoutheasteurope.comfinlitsummit.orgmyvisaluxuryhotels.comvisainfinite.cavisainfiniteluxuryhotels.ca!visaluxuryhotelcollection.com$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisaluxuryhotels.comvisaluxuryhotels.com.arvisasignaturehotels.com($connaissancesfinancierespratiques.ca dnsvisa.comeubluecardvisa.comfinancialsoccer.ca"financialsoccer.com.cn +cnlightbridge.commiamifintechfestival.commhshosting.compracticalbusinessskills.compracticalmoneyskills.ca#practicalmoneyskills.cn +cn'practicalmoneyskills.com.cn +cnpracticalmoneyskills.jpsoccerfinancier.catorcidadeouro.com vaultify.com vaultify.info vaultify.net visa-atm.com visa-news.jp visabank.orgvisabusinessinsights.comvisacarddesignlab.com visacards.comvisacheckout.netvisacheckout.orgvisaconciergelac.comvisadigital.comvisadigitalconcierge.com visadns.comvisadpsonline.usvisaeverywhereshop.comvisafintechfasttrack.comvisafulfillment.comvisagiftcard.usvisaglobalfinance.comvisaicsdirect.comvisainfinite.cavisainfinite.cn +cn visanet.net +visapay.cn +cnvisapcsdirect.comvisaplatinum.cn +cnvisaplatinum.com.cn +cn visaplus.comvisasavingsedge.cavisasignature.co.kr visb.org +0 + COWTRANSFER c-t.workcowtransfer.com +™ -SF-EXPRESS  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org -f - TAYLORFRANCIS tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -Ò - CALGONCARBON  calgon.at  calgon.be  calgon.ch calgon.cn -cn calgon.co.uk -calgon.com calgon.com.tr  calgon.de  calgon.es  calgon.fr  calgon.ie  calgon.it  calgon.nl  calgon.pt  calgon.ru  calgon.tvcalgoncarbon-china.comcalgoncarbon.com calgonit.com +EVERBRIGHT cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +- +SURFLITE surflite.co surflite.net +? +BOOTCSS bootcss.com +bootcdn.cnphpcomposer.com + +DISCORD +discord.co discord.com +discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com +µ +HUFFPOSThuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com +/ + STARTPAGE startpage.com ixquick.com +L + +TEAMBITIONteambition.comteambition.netteambitionapis.com +Í + +CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflare.netcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.one  pages.devtrycloudflare.comvideodelivery.net  warp.plus workers.dev +, +CYLINK +cylink.procylink0122.icu +C +MAOCLOUD +maoyun.commaoyuncloud.cnmaoyuncloud.com +— +WALMART walmart wal-mart.com +wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com +wmt.co +Ë + ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com + +TINYURL tinyurl.com +1 +JINSHUJU jinshuju.netjinshujucdn.com  -LINUX  linux.org -» - MCDONALDSmcd  mcdonalds4008-517-517.cn -cnaboutmcdonalds.comhappymeal.co.nzhappymeal.com.au mcd.commcdelivery.co.idmcdelivery.co.krmcdelivery.com.aumcdelivery.com.mymcdelivery.com.sgmcdelivery.com.twmcdindonesia.com mcdonalds.camcdonalds.co.uk mcdonalds.commcdonalds.com.hk mcdonalds.hk mcdonalds.it mcdonalds.no mcdonalds.semcdonaldsarabia.commcdonaldsparties.co.nzmcdonaldsparties.com.au!xn--qhrx81fxh2a.xn--55qx5d.hk -é -ATTaccbusiness.com -atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn -cn att.com att.jobs att.net -att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com -attcorp.cn -cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com -attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com -attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net -budatt.com -cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com -uverse.comwebhosting.com att-idns.net -attdns.com -attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com -dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com -diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.com - - MANMANBUY manmanbuy.com +WINDY  windy.com +Œ +AMAZON amazon-adsystem.com +adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws +amazonimdb +kindle xn--cckwcxetdxn--jlq480n2rg yamaxun +zappos a2z.comaboutamazon.cn +cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn +cnalexafund.com.cn +cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn +cn amazon.co.jp amazon.co.uk +amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl +amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn +cn!amazonbusiness.com.cn +cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn +cnamazonchoice.com.cn +cnamazonchoices.cn +cn amazonchoices.com.cn +cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn +cn amazoninspire.com.cn +cnamazonlaunchpad.cn +cnamazonlaunchpad.com"amazonlaunchpad.com.cn +cn amazonlending.com.cn +cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn +cnamazonnow.com.cn +cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn +cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn +cnprimeday.com.cn +cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de +yamaxun.cn +cn yamaxun.comz.cn +cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn +cnamazonworkdocs.com!amazonworkdocs.com.cn +cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn +cn kindle.co.jp kindle.co.uk +kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn +cnkindleoasis.comkindleoasis.com.cn +cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn +cn#amazonprimevideo.com.cn +cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com +cn-!images-cn-8.ssl-images-amazon.com +cn +% +CDN77  cdn77.com  cdn77.org +y +GANNETTgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.com + +GFASHION gfashion.com + +HKGOLDEN hkgolden.com + +HINET  hinet.net +þ +JIGUANG +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn + + +KINDLE4RSSkindle4rss.com +6 + NORDSTROM nordstrom.comnordstrommedia.com +k + PANASONIC  panasonic panasonic.cn +cn panasonic.com panasonic.jp technics.com +e +PYTHON  pycon.org pypa.io pypi.io pypi.org +python.orgpythonhosted.org +' + UBERADS-ADS uberads.com +ads +¦ + BRIDGESTONE bridgestone  bandag.cc +bandag.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpbridgestone-korea.co.krbridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clbridgestone.cn +cnbridgestone.co.crbridgestone.co.idbridgestone.co.inbridgestone.co.jpbridgestone.co.thbridgestone.combridgestone.com.arbridgestone.com.brbridgestone.com.cn +cnbridgestone.com.cobridgestone.com.mxbridgestone.com.sgbridgestone.com.twbridgestone.com.vnbridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.clbridgestonecomercial.co.crbridgestonecomercial.com.arbridgestonecomercial.com.brbridgestonecomercial.com.cobridgestonecomercial.com.mxbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.combridgestonetyre.com.mybridgestonevan.combridgestonewx.combs-adreview.com bs-awh.ne.jp  bsw.co.jp +bsw.jpcarcare-and-tireshop.jpdaytontrucktires.com ecoforme.jp gcrtires.comjsbridgestone.commenshin-channel.com monitrix.net mr-tireman.jpmybridgestoneeducation.com playz.jp +potenza.jpprodrive-japan.comstore-bridgestonesports.com thetread.com tiresplus.com cfna.combastropfirestone.comcrossfitfirestone.com firestone.clfirestone.co.crfirestone.com.arfirestone.com.brfirestone.com.cofirestone.com.mxfirestonebpco.comfirestonecomercial.clfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mx!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comhibdontire.comwheelworks.netnokiantyres.cn +cnnokiantyres.com + +FARFETCHfarfetch-apps.comfarfetch-contents.com farfetch.cn +cn farfetch.comfarfetch.com.cn +cn farfetch.netfarfetch.net.cn +cn  fflnk.net +š +QINIUstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com +J +36KR36dianping.com 36kr.com 36krcdn.com 36krcnd.com + +4399 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com +" + ACCUWEATHERaccuweather.com +% + FONTEXPLORERfontexplorerx.com +¹ +IBMibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com +4 + ARCHLINUX archlinux.orgarchlinuxarm.org +‹ +DMM-ADS bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads +_ +GUO  guo.media  gnews.org gtv.org gtv1.org +gclubs.com g-tvapp.com +# +EDX edx.org edx-cdn.org +` +OAN aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com ; UBERuber-assets.com uber.com ubereats.com -. +í +CATEGORY-CRYPTOCURRENCY asproex.comasproexapi.combinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com bitflyer.com bitflyer.jp bisq.io bisq.network bitsquare.io coinone.co.krcoinonecore.comcoinonecorp.com +devcon.orgethereum.foundation ethereum.org +hbabit.com +hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.comlocalbitcoins.comlocalbitcoinschain.com +zb.app +zb.com zb.io zb.live +bitbank.cc bitcoin.org bitfinex.com +bitmex.com bitquick.co bitstamp.net bittrex.com btcbox.co.jp +cex.io coinbase.com dogecoin.com +kraken.com okex.com +paxful.com +å -AMAZON-ADS amazon-adsystem.com -ads -x -FASTLY -fastly.com -fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com -zencdn.net - -IPIP ipip.net -> -NOTION  notion.sonotion-static.com -notion.new -$ -AFP afp.com afpforum.com -r - -PURIKONEJP"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.net -1 -TIANCITY tiancity.comtiancitycdn.com -? -MAFENGWO mafengwo.cn mafengwo.com mafengwo.net -b - -EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la -( -UDEMY  udemy.com udemycdn.com -Þ -VERCEL -now.shvercel-dns.comvercel-status.com -vercel.app -vercel.comzeit-world.co.ukzeit-world.comzeit-world.netzeit-world.org zeit.co zeit.sh zeitworld.com - - WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com -wp.com  wpvip.com -] -BUYPASSbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -Î -DNSPOD dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub - -MIAOPAI miaopai.com -0 -OPENWRT openwrt.orglede-project.org -ä -TLD-CNcn citic baidu -unicomsohu -xn--fiqs8s -xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g -xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b - -ADDTOANY addtoany.com -9 -DOUBAN -douban.com  douban.fm doubanio.com -2 - GROWINGIO-ADS!assets.growingio.com -ads -{ -OREILLY oreil.ly oreilly.comoreilly.com.cn -cnoreilly.revieworeillystatic.com -orl.ly -" - ADBLOCKPLUSadblockplus.org - - APPLE-DEVappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net -î? - CATEGORY-DEV anaconda.com anaconda.org conda.io android.comandroidify.comappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net archlinux.orgarchlinuxarm.orgbootstrapcdn.comgetbootstrap.combraventures.com braveux.com -compass.isfightforux.comforthebadge.comstockagainstphotography.com launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io -ubuntu.com -ubuntu.netubuntuforums.org canonical.com dart.dev dartlang.org dartpad.dev -debian.org -dotdeb.orgcompose-spec.io -docker.com  docker.io embed.ly embedly.com playerjs.ioaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com fastlane.cifastlane.tools getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org flathub.org flatpak.org flutter.devflutterapp.comfontawesome.comfortawesome.com  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com gitbook.com -gitbook.io npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io haskell.orghaskellstack.org stackage.org brew.shhomebrew.bintray.com -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.orgjava java.com java.net jetbrains.com jetbrains.net datalore.iokotlinlang.org  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net -cn kubernetes.io -k8s.ioadaptivecards.ioapi-extractor.com + MICROSOFT-DEVadaptivecards.ioapi-extractor.com apisof.net appcenter.ms blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn cn#microsoftreactor.com.cn cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net mongodb.com mongodb.org  nginx.com  nginx.org openwrt.orglede-project.org perl.org cpan.org metacpan.orgpolymer-project.orgpolymerproject.org  pycon.org pypa.io pypi.io pypi.org -python.orgpythonhosted.org qt.ioqt-project.orgreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org redis.io redislabs.com remirepo.net ruby-lang.org rubygems.orgscala-lang.org scala-sbt.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.commystrikingly.comstrikingly.comstrikinglycdn.com -kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.orglfai.foundationlinuxfoundation.org  unity.com unity3d.com!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -v8.dev v8project.org vim.orgxda-developers.com xda-cdn.comalpinelinux.org -apache.org atom.io -badgen.net bitvise.com  cdnjs.com -centos.orgchocolatey.org clojure.org -cnpmjs.org -cygwin.com -cython.org  deno.landelixir-lang.org -elrepo.org -erlang.org -ffmpeg.org freebsd.org -gentoo.orggetcomposer.org git-scm.com gnu.orggreenend.org.uk -ius.io -jenkins.io -js.org jupyter.org kali.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mobatek.net  mysql.com  nixos.orgnodesource.comnotepad-plus-plus.org -openai.com openresty.org openssl.org opensuse.org packagist.org pcre.org phantomjs.org php.net  putty.orgpostgresql.org r-project.orgraspberrypi.org raspbian.org rpmfusion.orgscientificlinux.org scoop.sh -shields.io -sqlite.orgsublimetext.com termius.com  unpkg.com videojs.com videolan.org wireshark.org x.org xposed.info yarnpkg.com zsh.org -7 -DART dart.dev dartlang.org dartpad.dev - -DOI doi.org doi.info -G -TEX ctan.orglatex-project.org -miktex.org tug.org - -TINYURL tinyurl.com +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net +% +MIHOYO +mihoyo.com bh3.com +Ð + OPENSTREETMAP openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.org +‰ + +APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com +H +COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net +W +FLICKR +flickr flic.kr +flickr.com +flickr.netstaticflickr.com +t + CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org +ž +NUROFEN +nurofen.at +nurofen.bg +nurofen.cn +cn nurofen.co.il nurofen.co.nz nurofen.co.uk nurofen.co.za nurofen.comnurofen.com.aunurofen.com.cn +cnnurofen.com.sg +nurofen.cz +nurofen.de +nurofen.es +nurofen.fr +nurofen.hr +nurofen.hu +nurofen.ie +nurofen.it nurofen.net +nurofen.no +nurofen.pl +nurofen.pt +nurofen.ro +nurofen.sk +nurofen.runurofengel.com51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com + - MXPLAYER-ADSevt.mxplay.com -ads -ñ -WANGSU  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org -- -MYRADIO -myradio.hkmyradio.com.hk +TRELLO +trello.com trellocdn.com +ÞU + MICROSOFT azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv  microsoft azure hotmail +office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com +m12.vc +aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com +binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com +ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com +gears5.com gearspop.comgearstactics.com +gfx.ms +gigjam.com hololens.com +hotmail.co hotmail.com +hotmail.eu hotmail.net hotmail.orghummingbird.ms +ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl +ingads.comintunewiki.comiotinactionevents.com +kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn +cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn +cn +msauth.netmschallenge2018.com +msecnd.net +msedge.net  msft.info msft.net msftauth.cn +cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com +msocdn.com +msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com +office.com +office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net +pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com +pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net +sfx.ms sharepoint.cn +cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com +techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com +userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net +wbd.ms what-fan.netwindows-int.net windows.com windows.net +windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com +winhec.com +winhec.net +yammer.com(dl.delivery.mp.microsoft.com +cn&download.windowsupdate.com +cn'bg.v4.a.dl.ws.microsoft.com +cn(bg4.v4.a.dl.ws.microsoft.com +cn2&cdn.marketplaceimages.windowsphone.com +cn cn.windowssearch.com +cn#ctldl.windowsupdate.com +cn#developer.microsoft.com +cndocs.microsoft.com +cn"download.microsoft.com +cn/#download.visualstudio.microsoft.com +cnfs.microsoft.com +cn(msgr.dlservice.microsoft.com +cn, msgruser.dlservice.microsoft.com +cn#officecdn.microsoft.com +cn&qh.dlservice.microsoft.com +cnsdx.microsoft.com +cn/#silverlight.dlservice.microsoft.com +cn, slupdate.dlservice.microsoft.com +cn, storeedgefd.dsx.mp.microsoft.com +cn&wl.dlservice.microsoft.com +cn&wscont1.apps.microsoft.com +cn&wscont2.apps.microsoft.com +cnwww.microsoft.com +cn&xb.dlservice.microsoft.com +cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net + +VIM vim.org +? + BONGACAMS bongacams.com +bcicdn.com bcrncdn.com +6 +CATEGORY-COLLABORATE-CN shimo.im  yuque.com +& +SMZDM  smzdm.com +zdmimg.com Y UNIONPAY  95516.com unionpay.comunionpayintl.comunionpaysecure.com -£ -YANDEXxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il -yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md -yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net -yandex -H - ZYNGA-ADS zynga.com -ads#zyngaplayersupport.com -ads -B - LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com -” - EASTMONEY1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn -á2 -ALIBABA alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to -ele.me elemecdn.com eleme.cnteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net -' -MOJI moji.com mojichina.com -† -MUJI muji.com muji.com.cn -cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.net -j - PLAYSTATION playstationplaystation.complaystation.net sonyentertainmentnetwork.com -C - SCIENCEDIRECTsciencedirect.comsciencedirectassets.com - -ABEMA abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net -¶ - APPLE-UPDATEappldnld.apple.com gg.apple.comgnf-mdn.apple.comgnf-mr.apple.com gs.apple.com ig.apple.commesu.apple.comns.itunes.apple.comoscdn.apple.comosrecovery.apple.com skl.apple.comswcdn.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.com xp.apple.com -ß - CANONICAL launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io -ubuntu.com -ubuntu.netubuntuforums.org canonical.com - -SVP svp-team.com -/ -FASTLANE fastlane.cifastlane.tools -y -FONTSHOP fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com  - SITEPOINT sitepoint.com -¹ -UBI ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +ELECTRONelectronjs.org +m +WPS +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn +á + +AKAMAI ak1.net +aka-ai.com +aka-ai.net akacrypto.net akadeem.net +akadns.com akadns6.net +akaeai.com +akafms.net akahost.net +akaint.net akam.net +akamaa.com +akamah.com +akamak.com +akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com akamai.co.kr +akamai.com +akamai.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.net akamaihd.com akamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaized-staging.net akamaized.netakamaizercentral.com +akamci.com  akami.com  akami.net +akamii.com +akamqi.com akastream.com akastream.net +akatns.net iamakamai.com iamakamai.netsoasta-dswb.com +srtcdn.net + + INOREADER inoreader.com + +MIAOPAI miaopai.com +F + +TAGTIC-ADS g1.tagtic.cn +adsxy-log.tagtic.cn +ads +ä +CATEGORY-ANTICENSORSHIP citizenlab.cacitizenlab.org  gfw.press +gfw.reportapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.orghaveibeenpwned.compwnedpasswords.comgetlantern.org +lantern.io softether.orgsoftether-download.com  v2ray.com +v2ray.cool  v2fly.org ahmia.fi akasha.worldbrowserleaks.combypasscensorship.orgdat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org +geti2p.netguardianproject.info ipfs.io  jitsi.org  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co +uproxy.org vuvuzela.io +whonix.org wikileaks.org wireguard.com +zeronet.io +— + GETTYIMAGESgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chgettyimages.co.jpgettyimages.co.nzgettyimages.co.ukgettyimages.comgettyimages.com.augettyimages.com.brgettyimages.com.mxgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.se +å +MOZILLA firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net + +TIKTOK  amemv.com +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net + +ERJI erji.net + +HEYTEA +heytea.com +Y +JSDELIVR jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net cn +Ð +NEWSCORPbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com +nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au +news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au +nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.uk +æ +ADOBE typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com +adobedc.cn +cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com +demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com +omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com +fotolia.cc fotolia.com +fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net +marketo.tvmarketodesigner.commarketolive.com +mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.new +C +BOOKING +booking.cn +cn booking.com bstatic.com +F +DEEPIN  deepin.cn +deepin.com  deepin.io +deepin.org +² +MONOTYPEfontexplorerx.com  fonts.com  fonts.net fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com linotype.com myfonts.com myfonts.net monotype.commonotypeimaging.com bitstream.com itcfonts.com +B +PUGPIGpugpig-dev.compugpig-stage.com +pugpig.com Ë{ CATEGORY-ECOMMERCE  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk adidas.com adidas.com.cn @@ -604,112 +1773,292 @@ shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg target.comtargetimg1.com walmart wal-mart.com wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com wmt.co -ã -TESLA solarcity.comtesla.cn -cn  tesla.com tesla.com.cn -cnteslamotors.cn -cnteslamotors.comteslamotors.com.cn -cntesla-cdn.thron.cn -cntesla-cdn.thron.com -– - SOUNDOFHOPE bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com -_ -FEDORA getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org -Z -INTERCOM intercom.com intercom.iointercomassets.comintercomcdn.com - -OK ok.ru -. -SCALAscala-lang.org scala-sbt.org -– -WEBEX webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr -% -CDN77  cdn77.com  cdn77.org -€ - INTEL-DEV -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org -. -JIEMIAN jiemian.comjiemian.com.cn -„ - TONGCHENG 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com - -GEEKPARK geekpark.net -` -OAN aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com -Û -SPOTIFY byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net -b - YAHOO-ADS ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com + +DOOM9  doom9.org +Þ +HEROKU  heroku.co +heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh +codeish.co +codeish.io +L +APKPURE apkpure.com cdnpure.com pureapk.com +winudf.com +L +LANZOU baidupan.com +lanzou.com lanzous.com woozooo.com +ê +THOMSONREUTERS reuters.com +reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs +tr.com +( +UDEMY  udemy.com udemycdn.com +* +GITBOOK gitbook.com +gitbook.io +3 + SEGMENTFAULTsegmentfault.com  sifou.com + +XUNLEI +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com +- +ASUS asus.com asus.com.cn +cn +u +CREATIVECOMMONS ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net + +3TYPE 3type.cn +Ô +GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com +ì + +GOOGLE-ADS2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ ads +œ +HUOBI +hbabit.com +hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.com  - FASTSTONE faststone.org + 4PARADIGM 4paradigm.com + +QUALCOMMairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org +iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com +qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com +uplinq.com wipower.comwirelessreach.com +brewmp.comqualcomm.sc.omtrdc.net +h +51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn + + +CODECADEMYcodecademy.com +% +NEOWIN neow.in +neowin.net + + +SKILLSHAREskillshare.com + +TGBUS  tgbus.com + +GCORES +gcores.com +¿ +GIGABYTE  aorus.com aoruszone.cn +cn gigabyte.cn +cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net +e +METART +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net +; + SCORELAND scoreland.comcdn77.scoreuniverse.com + + BRILLIANT brilliant.org +( +UCLOUD  ucloud.cn ufileos.com +™ +INSIDERbusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.com + +115 115.com +é +ATTaccbusiness.com +atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn +cn att.com att.jobs att.net +att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com +attcorp.cn +cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com +attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com +attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net +budatt.com +cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com +uverse.comwebhosting.com att-idns.net +attdns.com +attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com +dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com +diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.com +3 +ELEME +ele.me elemecdn.com eleme.cn + + YUNFANJIASU yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +% +ZHIHU  zhihu.com  zhimg.com +< + BITSQUARE bisq.io bisq.network bitsquare.io +b + ECONOMIST economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com + +CAIXIN +caixin.com +/ +REALTYPErealtype.co.jp realtype.jp +N +THETYPE thetype.cloud +cn thetype.comtypeisbeautiful.com +ª + 58TONGCHENG +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com +² +MOVEFREEkeepmovingwithmovefree.com move-free.net movefree.cn +cn movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.com + +REMIREPO remirepo.net +™ +SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com +. +U17 u17.com u17i.com u17t.com + + NEURALINK neuralink.com +× +SOHU-ADSadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads + +GITV gitv.cn gitv.tv +E + HIIDO-ADSmlog.hiido.com +adsylog.hiido.com +ads +b + +EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la +* +JAVBUS +javbus.com javbus22.com +. + +AMAZON-ADS amazon-adsystem.com +ads + +CNKI cnki.net +1 + LETSENCRYPT  lencr.orgletsencrypt.org +¤ +ZEE +bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com +ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com +zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com + + ZHIHUISHU zhihuishu.com +9 + +ARTSTATIONartstation.comartstationmedia.com +@ +HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com +) + REBRANDLY rb.gy rebrandly.com +¡ +VOXMEDIA cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net +Š +ZEETV +z5.app +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com +Í +ORIGIN dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.com +Ü +VANISHo2action.co.krpowerofresolve.capowerofresolve.comspraynwash.com  vanish.at  vanish.be  vanish.ch  vanish.cl vanish.cn +cn vanish.co.id vanish.co.il vanish.co.in vanish.co.nz vanish.co.uk vanish.co.za vanish.com.ar vanish.com.br vanish.com.co vanish.com.hr vanish.com.mx vanish.com.my vanish.com.pe vanish.com.sg vanish.com.tr  vanish.de  vanish.dk  vanish.es  vanish.fi  vanish.fr  vanish.hu  vanish.ie  vanish.it  vanish.nl  vanish.no  vanish.pl  vanish.pt  vanish.ro  vanish.ru  vanish.se  vanish.si  vanish.skvanisharabia.comvanishbancaseulook.com.brvanishcentroamerica.com vanishinfo.czvanishstains.comvanishstains.com.au +D +YY +duowan.com dwstatic.com +yy.com yystatic.com +7 + BOOTSTRAPbootstrapcdn.comgetbootstrap.com +© +CBScbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com +cbsi.video +cbsiam.com  cbsig.net +cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com +viacbs.com +viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com +: + ENTERMEDIADBentermediadb.netentermediadb.org +û + HARPERCOLLINSbookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com +( +LAGOU  lagou.com lgstatic.com +H +ACFUN acfun.cn aixifan.com apilog-web.acfun.cn +ads + +ANTUTU +antutu.com TYPOGRAPHYtypography.com -… -AMP amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.net -‰ - -APPLEDAILYappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com - -ISGD is.gdv.gd - -JINJIANG  jjwxc.net -ô -EPOCHMEDIAGROUP dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net -etviet.comlagranepoca.com ntd.com  ntdca.com -ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz -1 -HOMEBREW brew.shhomebrew.bintray.com -& -JABLE cdnlab.live jable.tv -7 - -LONDONREALfreedomplatform.tv londonreal.tv -g - READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org -% -RTHK etvonline.hk rthk.hk -( -DEBIAN -debian.org -dotdeb.org -* -TELEKOM telekom.com -telekom.de -— -WALMART walmart wal-mart.com -wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com -wmt.co -s -EHENTAI e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org -p -ONEPLUS oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com -¤ - SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud -ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads - - SPOTIFY-ADS'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com -ads -Ì -EA dawngate.com eastore.comlordofultima.com +ôš +CATEGORY-ENTERTAINMENT abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net +att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net bandcamp.com +bcbits.com blizzard.cn +cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +cn +battle.netbattlenet.com.cn +cn bnet.163.com +cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com +cn!diablo3.nosdn.127.net +cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net +cnheroesofthestorm.com%hearthstone.nosdn.127.net +cn"heroes.nos.netease.com +cnplayoverwatch.com#overwatch.nosdn.127.net +cn starcraft.comstarcraft2.comsc2.nosdn.127.net +cnplaywarcraft3.comworldofwarcraft.com wowchina.com +cnwow.nosdn.127.net +cnblizzcon-a.akamaihd.netblz.nosdn.127.net +cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net +cn dawngate.com eastore.comlordofultima.com origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com dicela.com dicela.netea-anz-press.com @@ -721,307 +2070,451 @@ yogify.comanthemgame.comanthemthegame.comapexlegends.com pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.net -° - EPICGAMESbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn -› -NAVER -lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw -nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com -ý -RIOThistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com lpl.com.cn cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.com -M - -STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com -+ - MYTVSUPER mytvsuper.com tvb.com -À -ADIDAS  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk -adidas.com adidas.com.cn -cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se - -AP -ap.org -apnews.com -E -HCAPTCHA botstop.com hcaptcha.comhcaptchastatus.com -- - ACFUN-ADS apilog-web.acfun.cn -ads -\ -TAIKANG taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com -Þ -HEROKU  heroku.co -heroku.com  heroku.me herokuapp.com herokucdn.comherokucharge.com herokussl.comheroku-app.comheroku-charge.com codei.sh -codeish.co -codeish.io -Ô -GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com -8 - CLUBHOUSEclubhouseapi.comjoinclubhouse.com -å -NETFLIX fast.com +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +cn +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv fanatical.comhumblebundle.com dazn-api.com dazn.com +dazndn.com +indazn.com indaznlab.comdeviantart.comdeviantart.net da-files.comabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com +babble.com babyzone.com +dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za +disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com +dssott.comgo-disneyworldgo.com +go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com hbomaxcdn.com +hbonow.com  maxgo.com +112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com +huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com +hulugo.com +huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com +huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com +hulutv.com huluusa.comjoinmaidez.com mushymush.tv +myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com +kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.net - -SOLIDOT solidot.org +nflxso.net nflxvideo.netnetflixdnstest1.comnetflixdnstest2.comnetflixdnstest3.comnetflixdnstest4.comnetflixdnstest5.comnetflixdnstest6.comnetflixdnstest7.comnetflixdnstest8.comnetflixdnstest9.comnetflixdnstest10.comnico +nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net +pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com +movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsoundcloud.com +sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  tidal.com tidalhifi.com wimpmusic.com  amemv.com +muscdn.com +musical.ly +tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +vhx.tv +vhxqa1.com +vhxqa2.com +vhxqa3.com +vhxqa4.com +vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com abow.jp angelbeats.jp +anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com +z5.app +z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com  linetv.tw litv.tv megaphone.fm moov.hk +odysee.com overcast.fm syosetu.com +weverse.io yande.re + +SPACEX +spacex.com +» +VIU +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net +d +BARRONSbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.com +Ú + + BLOOMBERG  bloomberg bbgevent.com bbhub.io +bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video + + +GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com +cnocsp.globalsign.com +cn ocsp2.globalsign.com +cn +™ +MARVEL +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com +ž + ALJAZEERA +ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com +® +CATEGORY-BANK-CN +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +s +EHENTAI e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org +% +FONTS  fonts.com  fonts.net +/ +MAPBOX mapbox.cn +cn +mapbox.com +U +DOWJONESdjreprints.com dowjones.com dowjones.iodowjoneson.com +, +PAOFUYUN paofu.cloud paofuyun.me U TVER dogatch.jp gorin.jpscreens-lab.jp tver.co.jp tver.jp - -3TYPE 3type.cn - -EGGHEAD -egghead.io -* -GITBOOK gitbook.com -gitbook.io -B -MITmit mit.edu mit.netmitpressjournals.org - -PASTEBIN pastebin.com - -PINGPE ping.pe -g - ATLASSIAN atlassian.com bitbucket.org statuspage.io -trello.com trellocdn.com -Ñ -RARBG rarbg.me rarbg.toproxyrarbg.org rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com -Ð -VK mvk.com userapi.com  vk-cdn.me -vk-cdn.net vk-portal.net vk.cc -vk.com  vk.design vk.link vk.me vkcache.com vkgo.app -vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net -‡ -WHOLEFOODSMARKETwholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.org +8 +NPMJS npm.community  npmjs.com  npmjs.org +6 +4CHAN 4cdn.org  4chan.org 4channel.org +Š+ +BAIDU a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads zuoyebang.cc zuoyebang.com +zybang.com baidu +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com +bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.com +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com +Õ$ +CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com +scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skscholar.l.google.com ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com +knovel.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com +apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com +aclweb.org acm.org acs.org +airiti.comairitilibrary.com altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org +nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu +zenodo.org +` +GEMFURY  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com +2 +KU6 ku6.com +ku6cdn.com +ku6img.com +) +MEITU  meitu.com meitudata.com + +DGTLE  dgtle.com +w +JWPLAYER +jwpcdn.comjwplatform.com jwplayer.com +jwpltx.com +jwpsrv.comlongtailvideo.com +) +LIANJIA lianjia.com  ljcdn.com +» + MCDONALDSmcd  mcdonalds4008-517-517.cn +cnaboutmcdonalds.comhappymeal.co.nzhappymeal.com.au mcd.commcdelivery.co.idmcdelivery.co.krmcdelivery.com.aumcdelivery.com.mymcdelivery.com.sgmcdelivery.com.twmcdindonesia.com mcdonalds.camcdonalds.co.uk mcdonalds.commcdonalds.com.hk mcdonalds.hk mcdonalds.it mcdonalds.no mcdonalds.semcdonaldsarabia.commcdonaldsparties.co.nzmcdonaldsparties.com.au!xn--qhrx81fxh2a.xn--55qx5d.hk +„ +DEDAO biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com +% +KUGOU  kgimg.com  kugou.com +× +OPPO coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com + +SINGTAONEWSCORPsingtaonewscorp.com +sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com +eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hk +Ü + DAILYMAIL  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk +mol.imthisismoney.co.uk +thismon.ee ' POLYV  polyv.net videocc.net -4 - KHANACADEMYkhanacademy.org kastatic.org -  -ORACLE -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net -F -SOGOU -go2map.com sogo.com  sogou.com sogoucdn.com -+ -FORBES -forbes.com forbesimg.com -E -PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net -( -CHINAZ -chinaz.com -chinaz.net -ñ -SHOPEE shopee.cn -cn shopee.co.id shopee.co.th -shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com -cn -shp.ee -< -TIDAL  tidal.com tidalhifi.com wimpmusic.com -ž -CNN cnn.com -cnn.io -cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com -þ -JIGUANG -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn -ß -THETIMES driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.com - -WEBFLOW webflow.com -, -GANJI  ganji.comganjistatic1.com -d - JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net -0 - -SOUNDCLOUDsoundcloud.com -sndcdn.com +C + SCIENCEDIRECTsciencedirect.comsciencedirectassets.com +; +XUEERSI speiyou.com +xesimg.com xueersi.com +Ý +BESTBUY bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com +bestbuy.ca +bestbuy.cn +cn bestbuy.combestbuy.com.cn +cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn +cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info +gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com  TUMBLR tumblr.com - -CUTTLY cutt.ly -¡ - -FAMILYMARTfamifun.com.tw family.co.jp family.com.twfamilymart.com.cn -cnfamilymart.com.myfamilymart.com.ph  famima.vn -¿ -GIGABYTE  aorus.com aoruszone.cn -cn gigabyte.cn -cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net -% -NGINX  nginx.com  nginx.org -U -SB -dns.sb ip.sb loli.net sb.sb sm.msu.nu -www.sb -, -BANDCAMP bandcamp.com -bcbits.com -ê -HP -123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com -compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info -hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com -hp.com -hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net -hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com -hpfaqs.comhpfeedback.com -hpgift.com -hpgpas.comhpgraphicspartners.com  hpiie.org -hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com -hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com -hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com -hpstore.cn -cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com -hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.com -ê - SONYPICTURESimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.com -i -HKBN csifund.org hkbn.com.hk hkbn.net -hkbnes.net jos.comspeedtest.com.hk -¢ -WIX editorx.comparastorage.com wix-code.com wix.comwixanswers.com wixapps.net  wixmp.com wixsite.com wixstatic.com - -ANTUTU -antutu.com -â - HUNANTV-ADSclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -ads - -J-TEST -j-test.com -· -HANYI hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cn -û - STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com -' - UBERADS-ADS uberads.com -ads -ô’ -BEATS100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com -aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com -airmay.com -ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com -beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn -cn  beats1.tv beats1.com.cn -cn beats123.com beats2.com.cn -cn beats4.cn +• +WOOLITE +woolite.ca +woolite.cn +cn woolite.comwoolite.com.cn cn -beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com -beatsep.cn -cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com -biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net -bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com -cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com -dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com -lyzsxx.com mairbeats.com -makeeu.commallheadphone.commbeats-tech.commbheadphone.com -micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com -ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com -scnshop.cc -shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com -theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net -unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.net -¡ - BYTEDANCE  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com -Q - CHINANEWS chinanews.comchinanews.com.cn -cns.com.cn ecns.cn -7 - BOOTSTRAPbootstrapcdn.comgetbootstrap.com -5 -COLORFULCLOUDS caiyunai.com caiyunapp.com - -GUOKR  guokr.com -B -HKEDCITY  edcity.hk hkedcity.nethkreadingcity.net -žŸ -CATEGORY-COMPANIESacer-group.com acer.com acer.com.cn -cn typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com -adobedc.cn -cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com -demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com -omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com -fotolia.cc fotolia.com -fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net -marketo.tvmarketodesigner.commarketolive.com -mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.newalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon-adsystem.com -adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws -amazonimdb -kindle xn--cckwcxetdxn--jlq480n2rg yamaxun -zappos a2z.comaboutamazon.cn -cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn -cnalexafund.com.cn -cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn -cn amazon.co.jp amazon.co.uk -amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl -amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn -cn!amazonbusiness.com.cn -cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn -cnamazonchoice.com.cn -cnamazonchoices.cn -cn amazonchoices.com.cn -cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn -cn amazoninspire.com.cn -cnamazonlaunchpad.cn -cnamazonlaunchpad.com"amazonlaunchpad.com.cn -cn amazonlending.com.cn -cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn -cnamazonnow.com.cn -cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn -cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn -cnprimeday.com.cn -cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de -yamaxun.cn -cn yamaxun.comz.cn -cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn -cnamazonworkdocs.com!amazonworkdocs.com.cn -cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn -cn kindle.co.jp kindle.co.uk -kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn -cnkindleoasis.comkindleoasis.com.cn -cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn -cn#amazonprimevideo.com.cn -cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com -cn-!images-cn-8.ssl-images-amazon.com -cn amd.comamdfanstore.com -radeon.comiadsdk.apple.com +woolite.pl +woolite.uswoolitecarpet.com + +0X0 +0x0.st + + +XUEYUANJUNxueyuanjun.com +- +BITFLYER bitflyer.com bitflyer.jp +Ž +ELSEVIER els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com +scopus.com +‹ +STEAMplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.net +ã +TESLA solarcity.comtesla.cn +cn  tesla.com tesla.com.cn +cnteslamotors.cn +cnteslamotors.comteslamotors.com.cn +cntesla-cdn.thron.cn +cntesla-cdn.thron.com ++ + MXPLAYER-ADSevt.mxplay.com +ads +A +NYPOST +nypost.com nypost.helpnypostreprints.com +9 + SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net +c +COMODO +comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com +f +COURSERAcoursera-for-business.orgcoursera.community coursera.help coursera.org +Ë +GITHUB npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com +ÿÆ +APPLEiadsdk.apple.com ads iad.apple.com ads qwapi.com adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn @@ -1323,338 +2816,86 @@ touchid.tv touchid.wangtracking-location.comtruedepth3d.com cn<0www.apple.com.edgekey.net.globalredir.akadns.net cn%www.apple.com.edgekey.net cn www.apple.com -cn asus.com asus.com.cn -cn atlassian.com bitbucket.org statuspage.io -trello.com trellocdn.comaccbusiness.com -atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn -cn att.com att.jobs att.net -att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com -attcorp.cn -cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com -attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com -attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net -budatt.com -cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com -uverse.comwebhosting.com att-idns.net -attdns.com -attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com -dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com -diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.combandwagonhost.com bwh1.net bwh8.net  bwh88.net canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn -cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn -cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn -cn  cisco.com cisco.com.cn +cn +Q + SOURCEFORGEsourceforge.comsourceforge.net +sf.net fsdn.com +4 +MAILRU imgsmail.ru mail.ru mycdn.me +/ +ADGUARDadguard-vpn.com adguard.com +­] +CATEGORY-GAMES blizzard.cn +cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn cn -cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co -devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com -mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com -mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn -cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com -versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org -mearki.com meraki-go.com  meraki.hk merakigo.com -tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net clco.cc -cloudc.one cloudcone.com cloudcone.net -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn +battle.netbattlenet.com.cn +cn bnet.163.com +cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com +cn!diablo3.nosdn.127.net +cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net +cnheroesofthestorm.com%hearthstone.nosdn.127.net +cn"heroes.nos.netease.com +cnplayoverwatch.com#overwatch.nosdn.127.net +cn starcraft.comstarcraft2.comsc2.nosdn.127.net +cnplaywarcraft3.comworldofwarcraft.com wowchina.com +cnwow.nosdn.127.net +cnblizzcon-a.akamaihd.netblz.nosdn.127.net +cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net +cn dawngate.com eastore.comlordofultima.com +origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com +dicela.com +dicela.netea-anz-press.com +ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com +eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com +popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com +tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com +yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com +pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com +skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net +mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com +uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th +garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net +lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com +lpl.com.cn +cn pvp.net +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com +s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com +cn csgo.wmsj.cn +cndl.steam.ksyna.com +cn dota2.wmsj.cn +cn st.dl.bscstorage.net +cnst.dl.eccdnx.com +cn!st.dl.pinyuncloud.com +cn."steampipe.steamcontent.tnkjmec.com +cn&steampowered.com.8686c.com +cn%steamstatic.com.8686c.com +cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.comaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com -nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org -atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com -facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com -faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com -fb.careers -fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com -fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com -fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net -freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com -groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com -redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net  aorus.com aoruszone.cn -cn gigabyte.cn -cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net godaddy.comx.co godaddy android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org -v8.dev v8project.org youtubeggpht.cn -cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com -youtube.ae -youtube.al -youtube.am -youtube.at -youtube.az -youtube.ba -youtube.be -youtube.bg -youtube.bh -youtube.bo -youtube.by -youtube.ca youtube.cat -youtube.ch -youtube.cl -youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve -youtube.cr -youtube.cz -youtube.de -youtube.dk -youtube.ee -youtube.es -youtube.fi -youtube.fr -youtube.ge -youtube.gr -youtube.gt -youtube.hk -youtube.hr -youtube.hu -youtube.ie -youtube.in -youtube.iq -youtube.is -youtube.it -youtube.jo -youtube.jp -youtube.kr -youtube.kz -youtube.la -youtube.lk -youtube.lt -youtube.lu -youtube.lv -youtube.ly -youtube.ma -youtube.md -youtube.me -youtube.mk -youtube.mn -youtube.mx -youtube.my -youtube.ng -youtube.ni -youtube.nl -youtube.no -youtube.pa -youtube.pe -youtube.ph -youtube.pk -youtube.pl -youtube.pr -youtube.pt -youtube.qa -youtube.ro -youtube.rs -youtube.ru -youtube.sa -youtube.se -youtube.sg -youtube.si -youtube.sk -youtube.sn youtube.soy -youtube.sv -youtube.tn -youtube.tv -youtube.ua -youtube.ug -youtube.uy -youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand -chromedclkgbizgle gmailgoogoog -googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca -google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn -cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw -google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com -466453.com abc.xyz adgoogle.net -admeld.comangulardart.org -api.ai -apigee.com appbridge.ca appbridge.io appbridge.it appspot.com -apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com -brotli.org bumpshare.com -bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org -chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com -foofle.com froogle.com fuchsia.dev  g-tun.comg.cn -cng.co g.dev -g.page gateway.dev -gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn -cn globaledu.org  gmail.com gmodules.com  gogle.com -gogole.comgonglchuangl.net -goo.gl -googel.com -googil.com  googl.comgoogle-syndication.com google.berlin -google.dev -google.net -google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn -cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn -cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com -googlr.com -goolge.com gooogle.com gridaware.app gsrc.io -gstatic.cn -cn gstatic.comgstaticcnapps.cn -cn -gsuite.com -gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo -oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org -picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.com -pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com -revolv.comridepenguin.com run.appsavethedate.foo -saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com -verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org -wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com -webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company -x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com -cnwww.recaptcha.net -cn265.com -cn2mdn.net -cn adservice.google.com -cnapp-measurement.com -cn beacons.gcp.gvt2.com -cnbeacons.gvt2.com -cnbeacons3.gvt2.com -cn c.admob.com -cn(c.android.clients.google.com -cn!cache.pack.google.com -cncheckin.gstatic.com -cn%clickserve.dartsearch.net -cn)clientservices.googleapis.com -cn)connectivitycheck.gstatic.com -cncorp.google.com -cn crl.pki.goog -cncsi.gstatic.com -cn dl.google.com -cndl.l.google.com -cndoubleclick.net -cn-!firebase-settings.crashlytics.com -cn fonts.googleapis.com -cnfonts.gstatic.com -cn google-analytics.com -cn googleadservices.com -cngoogleanalytics.com -cn!googlesyndication.com -cn googletagmanager.com -cn!googletagservices.com -cngtm.oasisfeng.com -cn!imasdk.googleapis.com -cn ocsp.pki.goog -cn, pagead-googlehosted.l.google.com -cn!pki-goog.l.google.com -cn recaptcha.net -cnredirector.gvt1.com -cn)safebrowsing-cache.google.com -cn'safebrowsing.googleapis.com -cn$settings.crashlytics.com -cn-!ssl-google-analytics.l.google.com -cnssl.gstatic.com -cn%toolbarqueries.google.com -cntools.google.com -cntools.l.google.com -cn$translate.googleapis.com -cn!update.googleapis.com -cn-!www-googletagmanager.l.google.com -cnwww.gstatic.com -cn  hinet.net csifund.org hkbn.com.hk hkbn.net -hkbnes.net jos.comspeedtest.com.hk -123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com -compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info -hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com -hp.com -hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net -hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com -hpfaqs.comhpfeedback.com -hpgift.com -hpgpas.comhpgraphicspartners.com  hpiie.org -hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com -hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com -hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com -hpstore.cn -cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com -hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.comibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn -cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn -cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt -altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com -intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn -cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com -niosii.com -niosii.netomekinteractive.com -omnitek.tv openamt.comopendroneid.orgoptanedifference.com -pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com -siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net -vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn -xscale.combarefootnetworks.com -lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com -lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net linkedin.com  licdn.com logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net imgsmail.ru mail.ru mycdn.me azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org xbox360.co xbox360.com @@ -1663,296 +2904,191 @@ xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn cn xboxlive.com xboxone.co xboxone.com xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv  microsoft azure hotmail -office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com -m12.vc -aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com -binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com -ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com -gears5.com gearspop.comgearstactics.com -gfx.ms -gigjam.com hololens.com -hotmail.co hotmail.com -hotmail.eu hotmail.net hotmail.orghummingbird.ms -ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl -ingads.comintunewiki.comiotinactionevents.com -kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn -cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn -cn -msauth.netmschallenge2018.com -msecnd.net -msedge.net  msft.info msft.net msftauth.cn -cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com -msocdn.com -msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com -office.com -office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net -pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com -pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net -sfx.ms sharepoint.cn -cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com -techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com -userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net -wbd.ms what-fan.netwindows-int.net windows.com windows.net -windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com -winhec.com -winhec.net -yammer.com(dl.delivery.mp.microsoft.com -cn&download.windowsupdate.com -cn'bg.v4.a.dl.ws.microsoft.com -cn(bg4.v4.a.dl.ws.microsoft.com -cn2&cdn.marketplaceimages.windowsphone.com -cn cn.windowssearch.com -cn#ctldl.windowsupdate.com -cn#developer.microsoft.com -cndocs.microsoft.com -cn"download.microsoft.com -cn/#download.visualstudio.microsoft.com -cnfs.microsoft.com -cn(msgr.dlservice.microsoft.com -cn, msgruser.dlservice.microsoft.com -cn#officecdn.microsoft.com -cn&qh.dlservice.microsoft.com -cnsdx.microsoft.com -cn/#silverlight.dlservice.microsoft.com -cn, slupdate.dlservice.microsoft.com -cn, storeedgefd.dsx.mp.microsoft.com -cn&wl.dlservice.microsoft.com -cn&wscont1.apps.microsoft.com -cn&wscont2.apps.microsoft.com -cnwww.microsoft.com -cn&xb.dlservice.microsoft.com -cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net +xbx.lv fanatical.comhumblebundle.com + + FASTSTONE faststone.org +s + GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.org +š +KINGSOFT cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com +& +CHINASO chinaso.com +pg0.cn + +PKOPLINK pkoplink.com +ó +SQUAREUP cash.appcashbycashapp.com gosq.co gosq.comissquaredown.comissquareup.com mkt.comsellercommunity.comsquarecapital.com squarecdn.comsquarecloudservices.com squareup.com +Ž +THESUNdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie +› +NAVER lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw -nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com neuralink.com -geforce.cn -cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn -cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn -cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk -nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net -oracle -oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com -bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net  panasonic panasonic.cn -cn panasonic.com panasonic.jp technics.com 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hkairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org -iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com -qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com -uplinq.com wipower.comwirelessreach.com -brewmp.comqualcomm.sc.omtrdc.net  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn -cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.combarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com -sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com -snapkit.co playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl -sony.co.cr -sony.co.id -sony.co.in -sony.co.jp -sony.co.kr -sony.co.nz -sony.co.th -sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com -sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net -spacex.comboringcompany.com x.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com -twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.couber-assets.com uber.com ubereats.com -oath.cloud oath.com ouroath.comstatic-verizon.com -uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com -xo.com mvk.com userapi.com  vk-cdn.me -vk-cdn.net vk-portal.net vk.cc -vk.com  vk.design vk.link vk.me vkcache.com vkgo.app -vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netg-technology.com -sandisk.ae -sandisk.it -sandisk.cn -cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw -sandisk.de -sandisk.es -sandisk.fr -sandisk.hk -sandisk.id -sandisk.in -sandisk.nl -sandisk.sg -wd.com wdc.comwesterndigital.com -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.comxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il -yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md -yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net -yandex - - -CRAIGSLISTcraigslist.org -‰ -BRAVEUXbraventures.com braveux.com -compass.isfightforux.comforthebadge.comstockagainstphotography.com +nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com +c + UMENG-ADSalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads +9 + YCOMBINATORstartupschool.orgycombinator.com +Ì +CATEGORY-SECURITIES-CN +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn +j +IMPERIALCOLLEGE ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com | MEITUAN dianping.com maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com -® -OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com -Ý -BESTBUY bby.combbycastatic.ca bbycloud.combbycontent.combbycontent.net bbyintl.com bbystatic.com  bbyurl.us bestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com -bestbuy.ca -bestbuy.cn -cn bestbuy.combestbuy.com.cn -cnbestbuy.com.mx bestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.ca bestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com bestbuyus.com besztbuy.com bextbuy.combienvenuechezbestbuy.ca cowboom.com futureshop.cainitproducts.commagnoliaav.com.cn -cn mybestbuy.commybestbuyclaims.commyrewardzone.com myrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.net geeksquad.ca geeksquad.cc geeksquad.com geeksquad.net geeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org gscanada.info -gsccdn.com  gslink.usonlinegeeksquad.comrocketfishproducts.com dealtree.orgtechliquidators.com -/ -CLEARBITJS-ADSx.clearbitjs.com +9 +NIKKEI +nikkei.com  nikkei.jp nikkei.co.jp + +SETAPP +setapp.com ++ +WIKIDOT wdfiles.com wikidot.com +B +HKEDCITY  edcity.hk hkedcity.nethkreadingcity.net +L +IMDBboxofficemojo.com imdb.com imdb.tomedia-imdb.com +B + LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com +7 +AMD amd.comamdfanstore.com +radeon.com +¦ + CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +) +DRIBBBLE drbl.in dribbble.com + +GEEKPARK geekpark.net + +JINJIANG  jjwxc.net +1 + STACKPATH stackpath.com stackpath.dev +¸ + STARBUCKS sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn +cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com +— +LINE +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp + +QUANTIL quantil.com +¯ +JD-ADSads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com ads -ž -DIGICERT digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr -Ö - INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com -v -NATIONALGEOGRAPHICnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.com -a -NOW now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com +' +MOJI moji.com mojichina.com +$ +SCMP scmp.com +i-scmp.com +/ + SNAPCRAFT snapcraft.io snapstore.io + +B3LOG  b3log.org +Î +DNSPOD dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub +À +HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk +hbomax.com hbomaxcdn.com +hbonow.com  maxgo.com +Ë +HULU +112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com +huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com +hulugo.com +huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com +huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com +hulutv.com huluusa.comjoinmaidez.com mushymush.tv +myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com +„ +MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud + +AP +ap.org +apnews.com + +LINUX  linux.org +f + TAYLORFRANCIS tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com +ä +TLD-CNcn citic baidu +unicomsohu +xn--fiqs8s +xn--fiqz9s xn--1qqw23a xn--xhq521b xn--8y0a063a xn--6frz82g +xn--fiq64b xn--estv75g xn--vuq861b xn--zfr164b +e + ATOM-DATA-ADS atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads +Ð +VK mvk.com userapi.com  vk-cdn.me +vk-cdn.net vk-portal.net vk.cc +vk.com  vk.design vk.link vk.me vkcache.com vkgo.app +vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net +* +BETTEREXPLAINEDbetterexplained.com + + LARACASTS laracasts.com +: + SOFTETHER softether.orgsoftether-download.com +$ +AFP afp.com afpforum.com +2 +REABBLE +reabble.cn +cn reabble.com + +TIDELIFT tidelift.com 6 UDN udn.com udn.com.twudnfunlife.com -L -APKPURE apkpure.com cdnpure.com pureapk.com -winudf.com -Ò - YOUKU-ADSactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads -· -ROCKSTARrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.net -; -XUEERSI speiyou.com -xesimg.com xueersi.com -) -KEEP gotokeep.com keepcdn.com -¹ -IBMibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com -ibm.eu ibm.net -ibm.us s-bluemix.net s81c.com - -GAMERSKY gamersky.com -7 - FONTAWESOMEfontawesome.comfortawesome.com -©$ -INTEL -01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net -oneapi.comopenvinotoolkit.orgsnap-telemetry.io -acpica.com clearlinux.cn -cnclearlinux.org -ospray.net -ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn -cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn -cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt -altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com -intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn -cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com -niosii.com -niosii.netomekinteractive.com -omnitek.tv openamt.comopendroneid.orgoptanedifference.com -pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com -siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net -vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn -xscale.combarefootnetworks.com -– -NYTIMES nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com -* -BETTEREXPLAINEDbetterexplained.com -; - SCORELAND scoreland.comcdn77.scoreuniverse.com -æ -ADOBE typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com -adobedc.cn -cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com -demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com -omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com -fotolia.cc fotolia.com -fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net -marketo.tvmarketodesigner.commarketolive.com -mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.new -+ -TRELLO -trello.com trellocdn.com -E - HIIDO-ADSmlog.hiido.com -adsylog.hiido.com -ads -J -HUPUhoopchina.com.cn hupu.com hupucdn.com  shihuo.cn - - LARACASTS laracasts.com -Ì -NVIDIA -geforce.cn -cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn -cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn -cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk -nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net -+ -RUBY ruby-lang.org rubygems.org -/ - JIBENCAOZUO jbcz.tvjibencaozuo.com +G +ASAHI  asahi.com asahicom.jpasahishimbun.sc.omtrdc.net +¢ +CITIC citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com « YOUTUBE youtubeggpht.cn cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com @@ -2035,75 +3171,141 @@ youtube.ua youtube.ug youtube.uy youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.com - -BETHESDA -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.com -£ -CATEGORY-MEDIA-CN36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.com - -GFYCAT -gfycat.com - -TGBUS  tgbus.com -) - ADCOLONY-ADS adcolony.com -ads -‹ - HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io - -UDACITY udacity.com -_ -GUO  guo.media  gnews.org gtv.org gtv1.org -gclubs.com g-tvapp.com - -MEWE mewe.com - -CAIXIN -caixin.com - - NEURALINK neuralink.com -. -OP op.ggopgg-static.akamaized.net - -PKOPLINK pkoplink.com -Ž -ELSEVIER els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.com -+ -LINKEDIN linkedin.com  licdn.com - -SFACG  sfacg.com -Ó -UU-CHAT  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com -# - EMOGI-ADS emogi.com -ads - - -JINRISHICIjinrishici.com +N +SEASUNseasungames.com xishanju.com xoyo.com testplus.cn +5 +YOUJIZZ youjizz.comyjcontentdelivery.com +á2 +ALIBABA alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to +ele.me elemecdn.com eleme.cnteambition.comteambition.netteambitionapis.com mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net +F +COINONE coinone.co.krcoinonecore.comcoinonecorp.com +ô +DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com É LETV-ADS#api.game.letvstore.com ads ark.letv.com @@ -2121,3162 +3323,29 @@ JINRISHICIjinrishici.com ads stat.letv.com ads"static.app.m.letv.com ads -ƒ -MSNmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com -k - PANASONIC  panasonic panasonic.cn -cn panasonic.com panasonic.jp technics.com -5 -V2RAY  v2ray.com -v2ray.cool  v2fly.org - -5CH 2ch.net 5ch.net -W -HAINANAIRLINEShainanairlines.com hnacargo.com  hnair.com 10044.cn -1 -JINSHUJU jinshuju.netjinshujucdn.com -+ - -KUBERNETES kubernetes.io -k8s.io -r -ZENDESK outbound.io zdassets.comzdusercontent.com zendesk.com  zndsk.com  zopim.com -˜ -CCTV cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn -P - KUAISHOU-ADS log-sdk.gifshow.com -adswlog.kuaishou.com -ads -3 -QUORA  quora.com quoracdn.net qr.ae -Ô -VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com -5 -YOUJIZZ youjizz.comyjcontentdelivery.com -i -ARCHIVEOFOUROWN ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -. -FLUTTER flutter.devflutterapp.com -% -IMGIX  imgix.com  imgix.net -, -MATTERS matters.news matters.one - -SAFECHAT safechat.com -, -CYLINK -cylink.procylink0122.icu -( -LAGOU  lagou.com lgstatic.com -9 -MOGUJIE mogu.com mogucdn.com mogujie.com - -TIKTOK  amemv.com -muscdn.com -musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net -- -BITFLYER bitflyer.com bitflyer.jp -7 -OSCHINA  gitee.com gitee.io oschina.net -6 - RULEOFLAWrolfoundation.orgrolsociety.org -œ -TMTPOST tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com - -HINET  hinet.net - -ZHANQI  zhanqi.tv -À -FANDOM cursecdn.com -fandom.com  wikia.com  wikia.org dndbeyond.com futhead.com gamepedia.com muthead.comwikia.nocookie.netfandom.zendesk.com -+ -FLATPAK flathub.org flatpak.org -* - -FLURRY-ADSdata.flurry.com -ads -— - GETTYIMAGESgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chgettyimages.co.jpgettyimages.co.nzgettyimages.co.ukgettyimages.comgettyimages.com.augettyimages.com.brgettyimages.com.mxgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.se - -OPENJSFOUNDATION amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.org -k -SLING dishworld.comslinginternational.com  sling.commovenetworks.com -movetv.com - -DMZJ dmzj.com -= -LANDIAN -lancdn.comlandiannews.com  wsoso.com -; -WJX -sojump.com -wjx.cn wjx.com wjx.top -" - ACCUWEATHERaccuweather.com -C -MAOCLOUD -maoyun.commaoyuncloud.cnmaoyuncloud.com - -MZED mzed.com -% -NEOWIN neow.in -neowin.net -µ -HUFFPOSThuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com -: - ENTERMEDIADBentermediadb.netentermediadb.org -è -ALIYUNalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com -Œ -AMAZON amazon-adsystem.com -adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws -amazonimdb -kindle xn--cckwcxetdxn--jlq480n2rg yamaxun -zappos a2z.comaboutamazon.cn -cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn -cnalexafund.com.cn -cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn -cn amazon.co.jp amazon.co.uk -amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl -amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn -cn!amazonbusiness.com.cn -cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn -cnamazonchoice.com.cn -cnamazonchoices.cn -cn amazonchoices.com.cn -cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn -cn amazoninspire.com.cn -cnamazonlaunchpad.cn -cnamazonlaunchpad.com"amazonlaunchpad.com.cn -cn amazonlending.com.cn -cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn -cnamazonnow.com.cn -cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn -cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn -cnprimeday.com.cn -cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de -yamaxun.cn -cn yamaxun.comz.cn -cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn -cnamazonworkdocs.com!amazonworkdocs.com.cn -cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn -cn kindle.co.jp kindle.co.uk -kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn -cnkindleoasis.comkindleoasis.com.cn -cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn -cn#amazonprimevideo.com.cn -cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com -cn-!images-cn-8.ssl-images-amazon.com -cn -e -METART -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net -é -MINImini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com -mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl -mini.co.cr -mini.co.id -mini.co.il -mini.co.kr -mini.co.me -mini.co.th -mini.co.uk -mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua -mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com -minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com -minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com -trmini.comtroisrivieresmini.comyours-customised.mini.com -6 -AGORA agora.io -agoraio.cn agoralab.co - -GOFUNDME gofundme.com -j -IMPERIALCOLLEGE ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com - -SHORTURL shorturl.at -± -ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com -® -CATEGORY-BANK-CN -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -² -HUAWEI  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com -J -36KR36dianping.com 36kr.com 36krcdn.com 36krcnd.com - -KNOVEL -knovel.com -€ -GOOGLE android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skpolymer-project.orgpolymerproject.org -v8.dev v8project.org youtubeggpht.cn -cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com -youtube.ae -youtube.al -youtube.am -youtube.at -youtube.az -youtube.ba -youtube.be -youtube.bg -youtube.bh -youtube.bo -youtube.by -youtube.ca youtube.cat -youtube.ch -youtube.cl -youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve -youtube.cr -youtube.cz -youtube.de -youtube.dk -youtube.ee -youtube.es -youtube.fi -youtube.fr -youtube.ge -youtube.gr -youtube.gt -youtube.hk -youtube.hr -youtube.hu -youtube.ie -youtube.in -youtube.iq -youtube.is -youtube.it -youtube.jo -youtube.jp -youtube.kr -youtube.kz -youtube.la -youtube.lk -youtube.lt -youtube.lu -youtube.lv -youtube.ly -youtube.ma -youtube.md -youtube.me -youtube.mk -youtube.mn -youtube.mx -youtube.my -youtube.ng -youtube.ni -youtube.nl -youtube.no -youtube.pa -youtube.pe -youtube.ph -youtube.pk -youtube.pl -youtube.pr -youtube.pt -youtube.qa -youtube.ro -youtube.rs -youtube.ru -youtube.sa -youtube.se -youtube.sg -youtube.si -youtube.sk -youtube.sn youtube.soy -youtube.sv -youtube.tn -youtube.tv -youtube.ua -youtube.ug -youtube.uy -youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand -chromedclkgbizgle gmailgoogoog -googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca -google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn -cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw -google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com -466453.com abc.xyz adgoogle.net -admeld.comangulardart.org -api.ai -apigee.com appbridge.ca appbridge.io appbridge.it appspot.com -apture.com area120.com -asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com -brotli.org bumpshare.com -bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org -chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com -fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com -foofle.com froogle.com fuchsia.dev  g-tun.comg.cn -cng.co g.dev -g.page gateway.dev -gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn -cn globaledu.org  gmail.com gmodules.com  gogle.com -gogole.comgonglchuangl.net -goo.gl -googel.com -googil.com  googl.comgoogle-syndication.com google.berlin -google.dev -google.net -google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn -cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn -cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com -googlr.com -goolge.com gooogle.com gridaware.app gsrc.io -gstatic.cn -cn gstatic.comgstaticcnapps.cn -cn -gsuite.com -gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com -j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo -oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org -picasa.com picasaweb.com picasaweb.net picasaweb.org -picnik.com pittpatt.com -pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com -revolv.comridepenguin.com run.appsavethedate.foo -saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com -stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com -verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org -wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com -webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company -x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com -cnwww.recaptcha.net -cn265.com -cn2mdn.net -cn adservice.google.com -cnapp-measurement.com -cn beacons.gcp.gvt2.com -cnbeacons.gvt2.com -cnbeacons3.gvt2.com -cn c.admob.com -cn(c.android.clients.google.com -cn!cache.pack.google.com -cncheckin.gstatic.com -cn%clickserve.dartsearch.net -cn)clientservices.googleapis.com -cn)connectivitycheck.gstatic.com -cncorp.google.com -cn crl.pki.goog -cncsi.gstatic.com -cn dl.google.com -cndl.l.google.com -cndoubleclick.net -cn-!firebase-settings.crashlytics.com -cn fonts.googleapis.com -cnfonts.gstatic.com -cn google-analytics.com -cn googleadservices.com -cngoogleanalytics.com -cn!googlesyndication.com -cn googletagmanager.com -cn!googletagservices.com -cngtm.oasisfeng.com -cn!imasdk.googleapis.com -cn ocsp.pki.goog -cn, pagead-googlehosted.l.google.com -cn!pki-goog.l.google.com -cn recaptcha.net -cnredirector.gvt1.com -cn)safebrowsing-cache.google.com -cn'safebrowsing.googleapis.com -cn$settings.crashlytics.com -cn-!ssl-google-analytics.l.google.com -cnssl.gstatic.com -cn%toolbarqueries.google.com -cntools.google.com -cntools.l.google.com -cn$translate.googleapis.com -cn!update.googleapis.com -cn-!www-googletagmanager.l.google.com -cnwww.gstatic.com -cn -Ë - KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.com -, -SECOM secom.co.jpsecomtrust.net -«• - CATEGORY-ADS apilog-web.acfun.cn -ads adcolony.com -ads -adjust.com -ads a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -ads amazon-adsystem.com -adsiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads applovin.com -ads -applvn.com -ads atom-data.io -adsanalytics-data.io -ads ironbeast.io -ads a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -adsmcs.snssdk.com -adsx.clearbitjs.com -ads bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp -ads -microad.jp -ads socdm.com -ads emogi.com -adsdata.flurry.com -ads2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -ads!assets.growingio.com -adsmlog.hiido.com -adsylog.hiido.com -adsstatic.hotjar.com -adsclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -adsinner-active.mobi -adsa.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -adsads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads log-sdk.gifshow.com -adswlog.kuaishou.com -ads leanplum.com -ads#api.game.letvstore.com -ads ark.letv.com -ads dc.letv.com -adsdev.dc.letv.com -ads fz.letv.com -ads g3.letv.com -adsletv.allyes.com -adsminisite.letv.com -adsmsg.m.letv.com -adsn.mark.letv.com -adsplog.dc.letv.com -adspro.hoye.letv.com -ads pro.letv.com -ads stat.letv.com -ads"static.app.m.letv.com -ads decide.mixpanel.com -ads mopub.com -adsevt.mxplay.com -adsanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads"js-agent.newrelic.com -ads ogury.com -ads -presage.io -adsogury.co -ads onesignal.com -adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads cdn.pocoiq.cn -ads oct.pocoiq.cn -adsads.pubmatic.com -adscdn.segment.com -ads"static.sensorsdata.cn -ads 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -adsadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com -adssupersonic.com -adssupersonicads.com -ads -ssacdn.com -ads)supersonicads-a.akamaihd.net -ads g1.tagtic.cn -adsxy-log.tagtic.cn -adsssp.api.tappx.com -ads ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads uberads.com -adsalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads!unityads.unity3d.com -ads#unityads.unitychina.cn -ads ads.wteam.xyz -ads#collector.xhamster.com -adsad.intl.xiaomi.com -ads ad.mi.com -ads ad.xiaomi.com -adsadmob.xiaomi.com -adsad1.xiaomi.com -adsmistat.xiaomi.com -adstracking.miui.com -adsadv.sec.miui.com -ads"adv.sec.intl.miui.com -ads"misc.in.duokanbox.com -ads ad.hpplay.cn -adsadeng.hpplay.cn -ads kuyun.com -ads umeng.com -ads ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -adsactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads zynga.com -ads#zyngaplayersupport.com -ads 51y5.net a.adtng.com -aaxads.comaddthisedge.com -adtrue.com -ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com -exosrv.com -go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com -lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn -« -XIAOMI -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -$ -GFW  gfw.press -gfw.report -" - MASTERCLASSmasterclass.com -2 -MORISAWAmorisawa.co.jptypesquare.com -< -NGA -nga.cn 178.com -ngabbs.com ngacn.cc -c - UMENG-ADSalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads -À - -DUCKDUCKGOcispaletter.comcispaletter.orgcometotheduckside.com -ddg.co -ddg.gg -ddh.gg -dgg.gg dontbubble.us donttrack.us duck.co duck.comduckduckco.com duckduckco.de duckduckgo.ca duckduckgo.coduckduckgo.co.ukduckduckgo.comduckduckgo.com.mxduckduckgo.com.tw duckduckgo.de duckduckgo.dk duckduckgo.in duckduckgo.jp duckduckgo.ke duckduckgo.mx duckduckgo.nlduckduckgo.org duckduckgo.pl duckduckgo.sg duckduckgo.ukduckduckhack.com -duckgo.com ducksear.ch duckside.com  dukgo.comenteentegeh.defixtracking.com goduckgo.com hacksear.chjustduckit.comprivacysimplified.comprivatebrowsingmyths.comspreadprivacy.com -ö -ICBCicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn - - INOREADER inoreader.com -* -DANGDANG dangdang.com ddimg.cn -: -ESRI -arcgis.comarcgisonline.com esri.com -E -ETHEREUM -devcon.orgethereum.foundation ethereum.org -í - NBCUNIVERSALdreamworks.com cnbc.com -cnbcfm.com  msnbc.com -nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com -nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com -”$ -CATEGORY-SCHOLAR-!CN apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.com -knovel.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com -ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com -apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -aclweb.org acm.org acs.org altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org -nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu -zenodo.org -Ú% - BAIDU-ADS a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads -¦ - CHINAMOBILE 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -* -HKOPENTV hkopentv.com fantv.hk -¸ - STARBUCKS sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn -cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com -' -928PLUS 928.plus -zind.cloud - - ZHIHUISHU zhihuishu.com -ž - ALJAZEERA -ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com -H -BLENDERbigbuckbunny.org blender.orgelephantsdream.org -Y -DAZN dazn-api.com dazn.com -dazndn.com -indazn.com indaznlab.com -4 -ZB -zb.app -zb.com zb.io zb.live -Œ -9TO59to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com - -TIPDM -tipdim.org -) -TUTANOTA tuta.io tutanota.com - -ERJI erji.net - -GLYPHS glyphsapp.com -F - IDENTRUST identrust.comidentrust.co.uk identrust.net -f -OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads -< -SHOWTIMEANYTIMEshowtimeanytime.com showtime.com -2 -YNET ynet.cn ynet.com ynet.com.cn -u - -ATTWATCHTV -att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com -² -SAMSUNG samsung -xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn -cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.com -™ -SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com -) - REBRANDLY rb.gy rebrandly.com -< -QUIP quip-cdn.com quip.comquipelements.com -Æ -SOFTBANK softbank sb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.net softbank.jp softbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com -ÿ -TELEGRAM contest.com  graph.orgquiz.directoryt.me tdesktop.com -telega.one -telegra.ph telegram.dog telegram.me telegram.orgtelegram.space -telesco.pe -tg.dev tx.meusercontent.dev -# -V8 -v8.dev v8project.org -P -AEROGARDaerogard.com.auaerogard.com.cn -cnaerogardcn.com - -EVERNOTE evernote.com -œ -FINISH$dishwashingexpert.com.cn -cn  finish.at  finish.bg finish.co.kr finish.co.nz finish.co.uk finish.co.za finish.com.cn -cn finish.com.hr finish.com.tr  finish.de  finish.es  finish.fr  finish.gr  finish.hu  finish.lv  finish.pl  finish.pt  finish.ro  finish.si  finish.skfinisharabia.comfinishbrasil.com.brfinishdishwashing.cafinishdishwashing.com finishinfo.be finishinfo.clfinishinfo.comfinishinfo.com.arfinishinfo.com.au finishinfo.cz finishinfo.fi finishinfo.it finishinfo.jp finishinfo.nl finishinfo.no finishinfo.ru finishinfo.sefinishkilpailu.fi finishwin.beyarininsuyu.com -@ - ZUOYEBANG zuoyebang.cc zuoyebang.com -zybang.com +» +PCCW 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hk + +UDACITY udacity.com š CCBccb-life.com.cn ccb.com ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn - -TOR onion -% -ZHIHU  zhihu.com  zhimg.com -s - GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.org -% -FONTS  fonts.com  fonts.net -$ -GITEE  gitee.com gitee.io -/ -REALTYPErealtype.co.jp realtype.jp -0 -SOHU sohu.com -sohucs.com -itc.cn - -3DM 3dmgame.com -@ -HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com -) - LEANPLUM-ADS leanplum.com -ads -/ - STARTPAGE startpage.com ixquick.com -‹ -STEAMplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.net -^ -BITAUTO bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com -8 - HOMEDEPOThomedepot-static.com homedepot.com -² -MONOTYPEfontexplorerx.com  fonts.com  fonts.net fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com linotype.com myfonts.com myfonts.net monotype.commonotypeimaging.com bitstream.com itcfonts.com - -TIDELIFT tidelift.com -q -CATEGORY-HOSPITAL-CN  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn -ë -CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com -W -FLICKR -flickr flic.kr -flickr.com -flickr.netstaticflickr.com -ž -NUROFEN -nurofen.at -nurofen.bg -nurofen.cn -cn nurofen.co.il nurofen.co.nz nurofen.co.uk nurofen.co.za nurofen.comnurofen.com.aunurofen.com.cn -cnnurofen.com.sg -nurofen.cz -nurofen.de -nurofen.es -nurofen.fr -nurofen.hr -nurofen.hu -nurofen.ie -nurofen.it nurofen.net -nurofen.no -nurofen.pl -nurofen.pt -nurofen.ro -nurofen.sk -nurofen.runurofengel.com51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com -Š -SLACKslack-edge.comslack-imgs.com  slack.com -slackb.comslackcertified.com slackdemo.com slackhq.com -: -WEIPHONE feng.com fengimg.com wfdata.club -? -STRIPE -stripe.comstripe.network stripecdn.com -C -BOOKING -booking.cn -cn booking.com bstatic.com -œ - STREPSILS -cepacol.ca cepacol.com dobendan.degraneodin.com.mx -repsils.no strepsils.at strepsils.ch strepsils.cn -cnstrepsils.co.krstrepsils.co.nzstrepsils.co.zastrepsils.com.arstrepsils.com.brstrepsils.com.cn -cnstrepsils.com.costrepsils.com.austrepsils.com.hkstrepsils.com.phstrepsils.com.tw strepsils.es strepsils.fi strepsils.fr strepsils.hr strepsils.hu strepsils.ie strepsils.net strepsils.pl strepsils.pt strepsils.ro strepsils.ru strepsils.si strepsils.usstrepsilsarabia.com - -ARCHIVE archive.org -Þ - -JD3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads -ß -THELINUXFOUNDATION -kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org -cnamp.akamaized.netelectronjs.org -jquery.comjquerymobile.com jqueryui.com mochajs.org -nodejs.org openjsf.orglfai.foundationlinuxfoundation.org -ª -XBOX -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv -®' -FOXfoxfox-corporation.com fox-news.com fox.com -fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com -fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com -fox5dc.com -fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com -foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv -foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com -foxest.com -foxfaq.com -foxfdm.com foxfiles.com -foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com -foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com -foxnews.cc foxnews.com foxnews.net foxnews.org -foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com -foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com -fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com -anidom.comcasoneexchange.comcoronavirusnow.com -fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com -my13la.com -my20dc.commy20houston.com -my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com -q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.net -t - CAMBRIDGE cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org -% -KUGOU  kgimg.com  kugou.com -0 -BITLY -bit.ly  bitly.com bitly.is -© -VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz -ý -ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com -. -ASPROEX asproex.comasproexapi.com 3 -PPTV  pplive.cn -pplive.com pptv.com -B -PUGPIGpugpig-dev.compugpig-stage.com -pugpig.com -1 - STACKPATH stackpath.com stackpath.dev -™ -MARVEL -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com -¥ -LYSOL lizol.co.in lysol.ca lysol.cllysol.cn -cn lysol.co.cr  lysol.com lysol.com.cn -cn lysol.com.mx  lysol.net -ª - 58TONGCHENG -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com -, -ACPLAY -acplay.netdandanplay.com -6 - RUBYCHINAruby-china.orgrubyconfchina.org -Ž -THESUNdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie -ï™ -CATEGORY-ADS-ALL7box.vip -adsad-delivery.net -ads adinplay.com -ads adnxs.com -ads!ads.trafficjunky.net -adsadvertserve.com -adscasalemedia.com -ads!contextual.media.net -ads cpmstar.com -ads -demdex.net -ads httpool.com -ads lijit.com -ads1rx.io -ads mfadsrvr.com -adsmgid.com -adsns1p.net -ads openx.net -ads pubmatic.com -adsspotxchange.com -ads -unimhk.com -ads upapi.net -ads taboola.com apilog-web.acfun.cn -ads adcolony.com -ads -adjust.com -ads a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -ads amazon-adsystem.com -adsiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads applovin.com -ads -applvn.com -ads atom-data.io -adsanalytics-data.io -ads ironbeast.io -ads a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -adsmcs.snssdk.com -adsx.clearbitjs.com -ads bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp -ads -microad.jp -ads socdm.com -ads emogi.com -adsdata.flurry.com -ads2mdn.net -ads admob.com -ads adsense.com -ads'adsensecustomsearchads.com -ads%adsenseformobileapps.com -ads$advertisercommunity.com -ads%advertiserscommunity.com -ads"adwords-community.com -ads adwords.com -adsadwordsexpress.com -ads app-measurement.com -ads&clickserver.googleads.com -adsdoubleclick.com -adsdoubleclick.net -ads!google-analytics.com -adsgoogleadapis.com -ads!googleadservices.com -ads googleanalytics.com -adsgoogleoptimize.com -ads"googlesyndication.com -ads!googletagmanager.com -ads"googletagservices.com -ads'googletraveladservices.com -ads -urchin.com -ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ -ads!assets.growingio.com -adsmlog.hiido.com -adsylog.hiido.com -adsstatic.hotjar.com -adsclick.hunantv.com -adsda.hunantv.com -ads da.mgtv.com -adslog.hunantv.com -adslog.v2.hunantv.com -adsres.hunantv.com -adsv2.log.hunantv.com -adsinner-active.mobi -adsa.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -adsads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads log-sdk.gifshow.com -adswlog.kuaishou.com -ads leanplum.com -ads#api.game.letvstore.com -ads ark.letv.com -ads dc.letv.com -adsdev.dc.letv.com -ads fz.letv.com -ads g3.letv.com -adsletv.allyes.com -adsminisite.letv.com -adsmsg.m.letv.com -adsn.mark.letv.com -adsplog.dc.letv.com -adspro.hoye.letv.com -ads pro.letv.com -ads stat.letv.com -ads"static.app.m.letv.com -ads decide.mixpanel.com -ads mopub.com -adsevt.mxplay.com -adsanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads"js-agent.newrelic.com -ads ogury.com -ads -presage.io -adsogury.co -ads onesignal.com -adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ -ads cdn.pocoiq.cn -ads oct.pocoiq.cn -adsads.pubmatic.com -adscdn.segment.com -ads"static.sensorsdata.cn -ads 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -adsadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads'adeventtracker.spotify.com -ads$adstudio-assets.scdn.co -ads#bloodhound.spotify.com -adssupersonic.com -adssupersonicads.com -ads -ssacdn.com -ads)supersonicads-a.akamaihd.net -ads g1.tagtic.cn -adsxy-log.tagtic.cn -adsssp.api.tappx.com -ads ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads uberads.com -adsalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads!unityads.unity3d.com -ads#unityads.unitychina.cn -ads ads.wteam.xyz -ads#collector.xhamster.com -adsad.intl.xiaomi.com -ads ad.mi.com -ads ad.xiaomi.com -adsadmob.xiaomi.com -adsad1.xiaomi.com -adsmistat.xiaomi.com -adstracking.miui.com -adsadv.sec.miui.com -ads"adv.sec.intl.miui.com -ads"misc.in.duokanbox.com -ads ad.hpplay.cn -adsadeng.hpplay.cn -ads kuyun.com -ads umeng.com -ads ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -adsactives.youku.com -ads ad.api.3g.youku.com -ads$ad.api.mobile.youku.com -ads ad.mobile.youku.com -ads(a-dxk.play.api.3g.youku.com -ads atm.youku.com -ads#b.smartvideo.youku.com -adsc.yes.youku.com -adsdas.api.youku.com -ads!das.mobile.youku.com -ads!dev-push.m.youku.com -adsdl.g.youku.com -adsdmapp.youku.com -adse.stat.ykimg.com -ads#gamex.mobile.youku.com -ads!guanggaoad.youku.com -ads hudong.pl.youku.com -ads!huodong.pl.youku.com -ads"huodong.vip.youku.com -ads hz.youku.com -adsiyes.youku.com -ads l.ykimg.com -adslstat.youku.com -ads mobilemsg.youku.com -ads msg.youku.com -adsmyes.youku.com -ads p.l.youku.com -ads pl.youku.com -ads#passport-log.youku.com -adsp-log.ykimg.com -adspush.m.youku.com -ads r.l.youku.com -ads s.p.youku.com -adssdk.m.youku.com -adsstat.youku.com -ads$statis.api.3g.youku.com -ads&store.tv.api.3g.youku.com -ads&store.xl.api.3g.youku.com -adstdrec.youku.com -adstest.ott.youku.com -ads!test.sdk.m.youku.com -ads v.l.youku.com -adsval.api.youku.com -ads wan.youku.com -adsykatr.youku.com -adsykrec.youku.com -ads zynga.com -ads#zyngaplayersupport.com -ads 51y5.net a.adtng.com -aaxads.comaddthisedge.com -adtrue.com -ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com -exosrv.com -go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com -lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn -$ -CAS -csdl.ac.cn  las.ac.cn -4 -CSIS csis.orgcsis-prod.s3.amazonaws.com - -FREENODE freenode.net -o -IFANR coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com -' - WTEAM-ADS ads.wteam.xyz -ads - - BITWARDEN bitwarden.com -: -POLYMERpolymer-project.orgpolymerproject.org - -0X0 -0x0.st -$ -CSDN csdn.net -csdnimg.cn -Ë -GITHUB npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com - -RSSHUB -rsshub.app - -SPACEX -spacex.com -- -SURFLITE surflite.co surflite.net - - BRILLIANT brilliant.org -4 -PERL perl.org cpan.org metacpan.org -â -NINTENDO100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com - -FARFETCHfarfetch-apps.comfarfetch-contents.com farfetch.cn -cn farfetch.comfarfetch.com.cn -cn farfetch.netfarfetch.net.cn -cn  fflnk.net -2 -INNER-ACTIVE-ADSinner-active.mobi -ads -o -UNITY  unity.com unity3d.com!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -¦ - BRIDGESTONE bridgestone  bandag.cc -bandag.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpbridgestone-korea.co.krbridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clbridgestone.cn -cnbridgestone.co.crbridgestone.co.idbridgestone.co.inbridgestone.co.jpbridgestone.co.thbridgestone.combridgestone.com.arbridgestone.com.brbridgestone.com.cn -cnbridgestone.com.cobridgestone.com.mxbridgestone.com.sgbridgestone.com.twbridgestone.com.vnbridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.clbridgestonecomercial.co.crbridgestonecomercial.com.arbridgestonecomercial.com.brbridgestonecomercial.com.cobridgestonecomercial.com.mxbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.combridgestonetyre.com.mybridgestonevan.combridgestonewx.combs-adreview.com bs-awh.ne.jp  bsw.co.jp -bsw.jpcarcare-and-tireshop.jpdaytontrucktires.com ecoforme.jp gcrtires.comjsbridgestone.commenshin-channel.com monitrix.net mr-tireman.jpmybridgestoneeducation.com playz.jp -potenza.jpprodrive-japan.comstore-bridgestonesports.com thetread.com tiresplus.com cfna.combastropfirestone.comcrossfitfirestone.com firestone.clfirestone.co.crfirestone.com.arfirestone.com.brfirestone.com.cofirestone.com.mxfirestonebpco.comfirestonecomercial.clfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mx!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comhibdontire.comwheelworks.netnokiantyres.cn -cnnokiantyres.com + +CONTENTFULcontentful.com ctfassets.net # -QT qt.ioqt-project.org -Q -SSRCLOUDairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com -ô -DROPBOX db.ttdropbox-dns.com dropbox.com dropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com&"paper-attachments.s3.amazonaws.com -T - DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best -Ë -HULU -112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com -huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com -hulugo.com -huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com -huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com -hulutv.com huluusa.comjoinmaidez.com mushymush.tv -myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com -" -LIHKG -lih.kg  lihkg.com -2 -ZOOM zoom.com zoom.com.cn zoom.us -Ô -CATEGORY-MOOC-CNchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com -N -CNBC cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com -9 -EMBEDLY embed.ly embedly.com playerjs.io - -XDTY xdty.org -Ì - CHINATELECOM -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com + EMOGI-ADS emogi.com +ads † NICONICOnico nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp -Ÿ -QIHOO360 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn -= - TRANSLATEWIKItranslatewiki.nettranslatewiki.org -­ -MEDIACHINESEGROUPmediachinese.com mysinchew.comsinchew.com.my -sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com -š -KINGSOFT cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com -. -KUAIKAN kkmh.comkuaikanmanhua.com -M - -LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com - -BILIPLUS biliplus.com -+ -BOSLIFE boslife.biz boslife.net -+ -COWLEVEL cowlevel.net  cdncl.net -# -DCARD dcard.io dcard.tw -ñ - -SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io -pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com -sforce.com site.com -social.comsteelbrick.com twinprime.comweinvoiceit.com - - 4PARADIGM 4paradigm.com -* -DUOWAN -duowan.com dwstatic.com -H - NEXITALLY nexitally.comnexitallysafe.com nexitcore.com -Ë - ALIBABACLOUDalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com -- -C-SPAN -c-span.orgc-spanvideo.org -Ç - CATEGORY-ORGS archive.org ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net csis.orgcsis-prod.s3.amazonaws.comemojipedia.orgworldemojiawards.comworldemojiday.com xn--yt8h.la ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org -ieeer5.org -ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org -comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org nist.gov time.gov openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgrolfoundation.orgrolsociety.org aomedia.org  atypi.org -change.orgglobalsecurity.org ietf.org itu.int  smpte.org -un.org -w3.org who.int wto.org -«X -FACEBOOKaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com -nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org -atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com -facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com -faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com -fb.careers -fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com -fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com -fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net -freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com -groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com -redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net -õ -BBCbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk -bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net -ç -PEARSONactivelearnprimary.co.ukactivelearnprimary.com.auactiveteachonline.comaddison-wesley.ch adobepress.ch -btec.co.uk ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comdombosco.com.br ecpa.frescapestudios.co.uk ilongman.com integral7.com'#internationalconnectionsacademy.com -longman.ch -mut.chmyhelpinglab.commylogiclab.com mypearson.commypearsonenglish.chmypearsonshop.com.mxmypearsonshop.mxmysocialworklab.comnetname.com.brpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch -pearson.ch -pearson.cl pearson.co.in pearson.co.jp pearson.compearson.com.arpearson.com.aupearson.com.cn -cnpearson.com.hkpearson.com.uy -pearson.es -pearson.fr -pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonclinical.co.ukpearsonclinical.com.aupearsonclinical.com.brpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoned.co.nz pearsoned.compearsoneducacion.netpearsoneducationbooks.com pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.compearsoninstitute.ac.zapearsonlongman.chpearsononlineacademy.compearsonperu.pepearsonplaces.com.au%!pearsonschoolsandfecolleges.co.ukpearsonvue.compearsonvue.netpobl-content.com  pvue1.com  pvue2.comquatrum.com.brstark-verlag.chtalentlens.comthemathsfactor.comxn--pearsonenespaol-brb.com -à -ICLOUDapple-icloud.cn -cnappleicloud.cn -cnapplemx-icloud.comicloud-apple.cn -cnicloud-content.comicloud-isupport.com  icloud.ch -icloud.com icloud.com.cn -cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn -cn  icloud.om -icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn -cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com -icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com -me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net -Z -PICSEE pics.ee  picsee.co -picsee.pro pise.pw pros.ee -pse.is -¥ - MEADJOHNSONenfinitas.com.cn -cnmeadjohnson.commeadjohnson.com.cn -cnmeadjohnson.com.hkmeadjohnson.com.twmeadjohnson.net -ñ -VMWARE -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.net - -HKGOLDEN hkgolden.com -. - POCKETCASTS -pca.stpocketcasts.com -š -DIDI didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com - - YUNFANJIASU yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -+ -AFDIAN -afdian.net afdiancdn.com -R -ARPHIC -arphic.com arphic.com.cn arphic.com.twifontcloud.com -f -COURSERAcoursera-for-business.orgcoursera.community coursera.help coursera.org -‘ -KUAISHOU gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads -ê -THOMSONREUTERS reuters.com -reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs -tr.com -h -51JOB  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -Í -ORIGIN dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.com -© - CATEGORY-CASbuypass-ssl.com buypass.com -buypass.no -buypass.se minid.no -comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.comcybertrust.co.jpcybertrust.ne.jp digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com -thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com -cnocsp.globalsign.com -cn ocsp2.globalsign.com -cn identrust.comidentrust.co.uk identrust.net  lencr.orgletsencrypt.org secom.co.jpsecomtrust.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com -telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com -+ -VAPTCHA vaptcha.com vaptcha.net -9 -YOUZAN -youzan.com yzcdn.cn youzanyun.com -¤ -ZEE -bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com -ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com -zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com -š -TVB mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com -tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn -cntvbeventpower.com.hk -tvbusa.com tvbweekly.comtvmedia.net.au -- -WANFANGwanfangdata.com.cn -wf.pub -3 -ELEME -ele.me elemecdn.com eleme.cn -9 - SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net -ó -SQUAREUP cash.appcashbycashapp.com gosq.co gosq.comissquaredown.comissquareup.com mkt.comsellercommunity.comsquarecapital.com squarecdn.comsquarecloudservices.com squareup.com -² -BLIZZARD blizzard.cn -cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn -cn -battle.netbattlenet.com.cn -cn bnet.163.com -cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com -cn!diablo3.nosdn.127.net -cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net -cnheroesofthestorm.com%hearthstone.nosdn.127.net -cn"heroes.nos.netease.com -cnplayoverwatch.com#overwatch.nosdn.127.net -cn starcraft.comstarcraft2.comsc2.nosdn.127.net -cnplaywarcraft3.comworldofwarcraft.com wowchina.com -cnwow.nosdn.127.net -cnblizzcon-a.akamaihd.netblz.nosdn.127.net -cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn -Ž -GUCCI guccichimeforchange.orggucci.cn -cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com - -STAGE1ST saraba1st.com - -B3LOG  b3log.org -, -RENREN -renren.comrenren-inc.com -N -THETYPE thetype.cloud -cn thetype.comtypeisbeautiful.com -F - -DEVIANTARTdeviantart.comdeviantart.net da-files.com -© -GOOGLE-REGISTRYcharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4c - -KERNEL -kernel.org -í -CATEGORY-CRYPTOCURRENCY asproex.comasproexapi.combinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com bitflyer.com bitflyer.jp bisq.io bisq.network bitsquare.io coinone.co.krcoinonecore.comcoinonecorp.com -devcon.orgethereum.foundation ethereum.org -hbabit.com -hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.comlocalbitcoins.comlocalbitcoinschain.com -zb.app -zb.com zb.io zb.live -bitbank.cc bitcoin.org bitfinex.com -bitmex.com bitquick.co bitstamp.net bittrex.com btcbox.co.jp -cex.io coinbase.com dogecoin.com -kraken.com okex.com -paxful.com -— -LINE -lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw -nhncorp.jp - -PATREON patreon.com -1 -ZIROOM -ziroom.comziroomapartment.com -V - JETBRAINS jetbrains.com jetbrains.net datalore.iokotlinlang.org -* -BOXUN  boxun.combowenpress.com -6 -CATEGORY-COLLABORATE-CN shimo.im  yuque.com -à -DUREXdewitwithdurex.com dotherex.com durex-shop.chdurex-shopline.comdurex-slovenia.si durex.at durex.be durex.cl durex.co.id durex.co.il durex.co.nz durex.co.th durex.co.uk durex.co.za  durex.com durex.com.au durex.com.bd durex.com.cn -cn durex.com.co durex.com.hr durex.com.my durex.com.ng durex.com.pe durex.com.ph durex.com.pk durex.com.sg durex.com.tr durex.cz durex.de durex.dk durex.ee durex.es durex.fi durex.fr durex.hu durex.ie durex.it durex.jp durex.lv durex.mx durex.nl durex.no durex.pl durex.pt durex.ro durex.ru durex.se durex.us durexcam.comdurexcanada.comdurexchina.comdurexchina.com.cn -cndurexindia.comdurexloveclub.comdurexukraine.com durexusa.comlovesexdurex.cn -cnlovesexdurex.complaybydurex.com shopdurex.com trydurex.net trydurex.tv -1 - LETSENCRYPT  lencr.orgletsencrypt.org - - TRUSTWAVE trustwave.com -Š+ -BAIDU a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads zuoyebang.cc zuoyebang.com -zybang.com baidu -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com -bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.com -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -S - OGURY-ADS ogury.com -ads -presage.io -adsogury.co -ads -˜ -CATEGORY-SCHOLAR-CN -csdl.ac.cn  las.ac.cn cnki.netwanfangdata.com.cn -wf.pub  apabi.comcnthinkers.com  cqvip.com - -SSPAI  sspai.com -ô -VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com -{ - CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com - - -CODECADEMYcodecademy.com -æ -DWION acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com -" - TYPENETWORKtypenetwork.com -Ÿs -BMWmini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com -mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl -mini.co.cr -mini.co.id -mini.co.il -mini.co.kr -mini.co.me -mini.co.th -mini.co.uk -mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua -mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com -minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com -minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com -trmini.comtroisrivieresmini.comyours-customised.mini.combmwapprovedusedbmw.combaltimorebmw.combayareabmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.com bmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.ca bmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.chbmw-connecteddrive.co.nzbmw-connecteddrive.co.ukbmw-connecteddrive.co.zabmw-connecteddrive.combmw-connecteddrive.com.aubmw-connecteddrive.com.brbmw-connecteddrive.com.cybmw-connecteddrive.com.hrbmw-connecteddrive.com.kwbmw-connecteddrive.com.mtbmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.combmw-driving-center.co.krbmw-drivingexperience.com bmw-dubai.com -bmw-eg.com bmw-fleet.net bmw-ghana.combmw-golfsport.com bmw-group.com bmw-group.netbmw-grouparchiv.debmw-grouparchives.com -bmw-gta.cabmw-i-pure-impulse.com bmw-i.jp bmw-int1.com bmw-iraq.combmw-jordan.combmw-konzernarchiv.de bmw-ksa.combmw-kuwait.com -bmw-lao.labmw-lebanon.combmw-m-safetycar.com  bmw-m.combmw-mdrivetour.com -bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.cobmw-motorrad.co.idbmw-motorrad.co.krbmw-motorrad.co.nzbmw-motorrad.co.thbmw-motorrad.co.ukbmw-motorrad.co.zabmw-motorrad.combmw-motorrad.com.arbmw-motorrad.com.aubmw-motorrad.com.brbmw-motorrad.com.dobmw-motorrad.com.hrbmw-motorrad.com.mxbmw-motorrad.com.mybmw-motorrad.com.pebmw-motorrad.com.pybmw-motorrad.com.trbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.com bmw-oman.com bmw-ottawa.cabmw-pakistan.combmw-plant-munich.combmw-pma.com.sgbmw-powertrain.combmw-product-highlights.com bmw-qatar.combmw-routes.com -bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.ca bmw-voli.me bmw-welt.com bmw-welt.net bmw-welt.tvbmw-werk-berlin.de bmw-world.com bmw-world.net bmw-world.tvbmw-worldfinal.combmw-yachtsport.com -bmw-yeg.ca bmw-yemen.com -bmw.am -bmw.at -bmw.az -bmw.ba -bmw.bb -bmw.be -bmw.bg -bmw.bm -bmw.bs -bmw.by -bmw.ca -bmw.cc -bmw.ch -bmw.cl  bmw.co.ao  bmw.co.cr  bmw.co.id  bmw.co.il  bmw.co.jp  bmw.co.ke  bmw.co.kr  bmw.co.nz  bmw.co.th  bmw.co.uk  bmw.co.za bmw.com -bmw.com.ar -bmw.com.au -bmw.com.bd -bmw.com.bn -bmw.com.bo -bmw.com.br -bmw.com.cn -cn -bmw.com.co -bmw.com.cy -bmw.com.do -bmw.com.ec -bmw.com.ge -bmw.com.gt -bmw.com.kh -bmw.com.ky -bmw.com.mk -bmw.com.mo -bmw.com.mt -bmw.com.mx -bmw.com.my -bmw.com.ni -bmw.com.pa -bmw.com.pe -bmw.com.ph -bmw.com.py -bmw.com.sg -bmw.com.sv -bmw.com.tr -bmw.com.tw -bmw.com.uy -bmw.com.ve -bmw.cw -bmw.cz -bmw.de -bmw.dk -bmw.dz -bmw.ee -bmw.es -bmw.fi -bmw.fr -bmw.gp -bmw.gr -bmw.hn -bmw.hr -bmw.ht -bmw.hu -bmw.ie -bmw.in -bmw.is -bmw.it -bmw.kg -bmw.kz -bmw.lc -bmw.lk -bmw.lt -bmw.lu -bmw.lv -bmw.ly -bmw.ma -bmw.md -bmw.mn -bmw.mq -bmw.mu -bmw.nc -bmw.nl -bmw.no -bmw.pl -bmw.ps -bmw.pt -bmw.re -bmw.ro -bmw.rs -bmw.se -bmw.si -bmw.sk -bmw.sn -bmw.tm -bmw.tt -bmw.ua -bmw.uz -bmw.vn bmwarchiv.at bmwarchiv.debmwartjourney.com bmwasia.combmwauslieferungszentrum.com bmwbikes.com  bmwbkk.de -bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.com bmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.com bmwgroup.at bmwgroup.com bmwgroup.net bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com  bmwhk.com bmwi.ca bmwi.jpbmwiventures.combmwjamaica.com -bmwlat.combmwlifestyle.ca bmwm.combmwmagazine.combmwmagazine.de bmwmass.com bmwmass.net  bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.combmwmotorrad.co.krbmwmotorrad.com.aubmwmotorrad.com.phbmwmotorrad.com.sgbmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com bmwsafari.com -bmwsfl.com -bmwsfl.net -bmwshop.cabmwspecialoffers.ca bmwsports.combmwstartupgarage.com bmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com -bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.com bmwworld.com bmwworld.net bmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com daytonbmw.comdealerspeed.net desertbmw.com dreambmw.ca grupobmw.com guambmw.comhackthedrive.com hawaiibmw.com iaablog.comlasvegasbmw.com m-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.com mybmw.ca  mybmw.comnewhampshirebmw.com  nmbmw.comocbmwdealers.comoffresspecialesbmw.ca park-now.com parkinfo.com -pdxbmw.com -phxbmw.compre-bmwgroup.jobspugetsoundbmw.com rentaride.com rentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.com socalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.com alfera.com.hk alfera.com.my  alfera.in  alfera.myalphera-finance.co.inalphera-finance.com.hkalphera-finance.in -alphera.ca alphera.co.in alphera.co.nz alphera.comalphera.com.esalphera.com.hkalphera.com.my -alphera.de -alphera.es -alphera.ie -alphera.in -alphera.my alphera.netalpherafinance.com.hkalpherafinancialservices.esalpherafinancialservices.in alpherafs.caalpherafs.co.nzalpherafs.com.hkalpherafs.com.my alpherafs.ie alpherafs.in alpherafs.my premiumfs.de alphabet.asia alphabet.at alphabet.be alphabet.biz alphabet.chalphabet.co.hualphabet.co.ukalphabet.co.za alphabet.comalphabet.com.cn -cnalphabet.com.esalphabet.com.lvalphabet.com.mxalphabet.com.plalphabet.com.pt alphabet.cz alphabet.de alphabet.es alphabet.eu alphabet.fr alphabet.info alphabet.jp alphabet.lt alphabet.lu alphabet.lv alphabet.mxalphabet.net.cn -cn alphabet.noalphabet.org.uk alphabet.pl alphabet.pt alphabet.uk alphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com  rrtis.comspiritofecstasy.com -y -GANNETTgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.com -© -9NEWS 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au -B -DISQUS -disqus.com disquscdn.comdisqusservice.com - - -INFRAPEDIAinfrapedia.com - -MPV -mpv.io -ª -NIKEnikeair-nike-shoes.com airmax360.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.com easynike.com -eenike.comfashionnike.com finenike.comfoampositeshoes.comgoldnikeclub.com -gonike.comhandbags-nike.comhightopnikes.com -idnike.cominikesneakers.com just-do-it.cn -cn justdoit.uskicksnike1.comkidsnikeshoes.com -mynike.comnike-air-max.comnike-dunksb.com nike-fr.com nike-org.com nike-shox.cn -cn nike-uk.com nike-us.com nike-usa.com nike.cinike.cn -cn nike.com nike.com.br nike.com.hk nike.gy nike.hk  nike.shop nike.usnike.xn--hxt814e nike0594.com -nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.com nikeasia.comnikeaustralia.com nikeaw77.com  nikeb.com nikebbn.comnikebetrue.comnikebetterworld.cn -cnnikebetterworld.com"nikebetterworld.com.cn -cnnikebetterworld.infonikebetterworld.netnikebetterworld.org nikebiz.info nikebuy.com -nikeby.com nikecdn.comnikecompany.comnikeconfluence.com nikechina.cn -cnnikechosen.com nikecloud.com nikeclub.com nikecraft.com nikedawn.com nikedunks.netnikedunksshoes.com nikeelite.comnikefactorystore.com nikefind.com nikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org -nikefr.comnikefrance.com nikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.com nikegolf.ca nikegolf.cn -cn nikegrid.com nikehelp.comnikehightops.comnikehyperdunk.com nikeid.cn -cn nikeid.com.cn -cnnikeidshoes.com nikeinc.comnikeinc.com.cn -cnnikeincchemistry.comnikeinstock.com -nikeit.comnikeitalia.com nikeitaly.com -nikekd.com nikekid.com -nikelab.cn -cnnikelab.com.cn -cn nikelink.comnikeliuxiang.cn -cnnikeliuxiang.comnikeliuxiang.com.cn -cn nikelives.comnikelunarglide.com nikemall.cn -cnnikemall.com.cn -cnnikemarketing.com nikenews.com -niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.com nikeplus.com nikeplus.org nikepress.com nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunclub.cn -cnnikerunclub.com.cn -cnnikerunner.comnikerunning.com.cn -cnnikerunningshoes.com -nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.com nikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com nikestore.cn -cn nikestore.comnikestore.com.aunikestyles.com nikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.com nikeusa.com nikewear.com  nikey.com nikezoom.com nke6.comoutletnike.com runnike.comrunningnike.comsale-nikeshoes.comstatic-nike.com swoo.sh -swoosh.com  swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comxn--74q035i.xn--hxt814e - -NODEJS -nodejs.org -F - -TAGTIC-ADS g1.tagtic.cn -adsxy-log.tagtic.cn -ads -H -COOLAPK coolapk.comcoolapkmarket.comcoolapkmarket.net -„ -DEDAO biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com -© -CBScbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com -cbsi.video -cbsiam.com  cbsig.net -cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com -viacbs.com -viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com -F -DEEPIN  deepin.cn -deepin.com  deepin.io -deepin.org -? -LIEPIN -liepin.com -lietou.comlietou-static.com -“ - LIMELIGHTdelvenetworks.com limelight.com  lldns.netllnw-trials.com llnw.com llnw.net  llnwd.net  llnwi.net -¸ -VISA visa.be visa.ca visa.clvisa.cn -cn -visa.co.ao -visa.co.cr -visa.co.id -visa.co.il -visa.co.in -visa.co.jp -visa.co.ke -visa.co.ni -visa.co.nz -visa.co.th -visa.co.uk -visa.co.ve -visa.co.za visa.com visa.com.ag visa.com.ai visa.com.ar visa.com.au visa.com.az visa.com.bo visa.com.br visa.com.bs visa.com.bz visa.com.cn -cn visa.com.co visa.com.cy visa.com.dm visa.com.do visa.com.ec visa.com.ge visa.com.gt visa.com.gy visa.com.hk visa.com.hn visa.com.hr visa.com.jm visa.com.kh visa.com.kn visa.com.kz visa.com.lc visa.com.lk visa.com.ms visa.com.mx visa.com.my visa.com.ng visa.com.pa visa.com.pe visa.com.ph visa.com.pr visa.com.py visa.com.ru visa.com.sg visa.com.sv visa.com.tr visa.com.tt visa.com.tw visa.com.ua visa.com.uy visa.com.vc visa.com.vi visa.com.vn visa.cz visa.de visa.dk visa.es visa.fi visa.fr visa.gd visa.gp visa.gr visa.hk visa.hu visa.ie visa.is visa.ky visa.lt visa.lv visa.mn visa.mq visa.nl visa.no visa.pl visa.pt visa.ro visa.se visa.sk visa.so visa.sx visa.tc -visabg.com visaeurope.at visaeurope.ch visaeurope.lu visaeurope.sivisaitalia.com visakorea.comvisamiddleeast.comvisasoutheasteurope.comfinlitsummit.orgmyvisaluxuryhotels.comvisainfinite.cavisainfiniteluxuryhotels.ca!visaluxuryhotelcollection.com$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisaluxuryhotels.comvisaluxuryhotels.com.arvisasignaturehotels.com($connaissancesfinancierespratiques.ca dnsvisa.comeubluecardvisa.comfinancialsoccer.ca"financialsoccer.com.cn -cnlightbridge.commiamifintechfestival.commhshosting.compracticalbusinessskills.compracticalmoneyskills.ca#practicalmoneyskills.cn -cn'practicalmoneyskills.com.cn -cnpracticalmoneyskills.jpsoccerfinancier.catorcidadeouro.com vaultify.com vaultify.info vaultify.net visa-atm.com visa-news.jp visabank.orgvisabusinessinsights.comvisacarddesignlab.com visacards.comvisacheckout.netvisacheckout.orgvisaconciergelac.comvisadigital.comvisadigitalconcierge.com visadns.comvisadpsonline.usvisaeverywhereshop.comvisafintechfasttrack.comvisafulfillment.comvisagiftcard.usvisaglobalfinance.comvisaicsdirect.comvisainfinite.cavisainfinite.cn -cn visanet.net -visapay.cn -cnvisapcsdirect.comvisaplatinum.cn -cnvisaplatinum.com.cn -cn visaplus.comvisasavingsedge.cavisasignature.co.kr visb.org -É -GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk -+ -XIMALAYA ximalaya.com  xmcdn.com -N - CLOUDCONE clco.cc -cloudc.one cloudcone.com cloudcone.net -¬ -IQIYI 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads - -ADBLOCKgetadblock.com -a -DYNA dynacw.co.jp -dynacw.com dynacw.com.cn dynacw.com.hk dynacw.com.tw -– - HKETGROUPapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn -cn etnet.com.hketnetchina.com.cn -cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk -) -LINGUEE linguee.com  deepl.com -7 -PGYER  pgyer.com -tracup.com frontjs.com -: -ZAOBAO -zaobao.com zaobao.com.sg  zaobao.sg -) -EASYLIST easylist.to lanik.us -n -TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net -9 - -ARTSTATIONartstation.comartstationmedia.com -Ÿ -PIXNET pimg.twpixanalytics.com  pixfs.netpixinsight.com.tw  pixnet.cc -pixnet.net -pixnet.pro  pixnet.tw -pixplug.in -‡± -CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au -mi9.com.au -mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au9to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com afp.com afpforum.com -ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com -ap.org -apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk -atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com -bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk -bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net  bloomberg bbgevent.com bbhub.io -bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com -c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com -cbsi.video -cbsiam.com  cbsig.net -cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com -viacbs.com -viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com cnbc.com -cnbcfm.com -nbcuni.comnbcudigitaladops.com cnn.com -cnn.io -cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk -mol.imthisismoney.co.uk -thismon.ee economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net -etviet.comlagranepoca.com ntd.com  ntdca.com -ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz -forbes.com forbesimg.comfoxfox-corporation.com fox-news.com fox.com -fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com -fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com -fox5dc.com -fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com -foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv -foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com -foxest.com -foxfaq.com -foxfdm.com foxfiles.com -foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com -foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com -foxnews.cc foxnews.com foxnews.net foxnews.org -foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com -foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com -fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com -anidom.comcasoneexchange.comcoronavirusnow.com -fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com -my13la.com -my20dc.commy20houston.com -my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com -q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.netgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org -gclubs.com g-tvapp.comapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn -cn etnet.com.hketnetchina.com.cn -cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk hkopentv.com fantv.hkhuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com banned.video infowars.cominfowarsmedia.combusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.comes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.comfreedomplatform.tv londonreal.tv -ltn.com.tw yes123.com.twmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in -theweek.invanitaonline.com -vanitha.invanithaveedu.com matters.news matters.onemediachinese.com mysinchew.comsinchew.com.my -sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com -medium.commedium.systems -myradio.hkmyradio.com.hkdreamworks.com cnbc.com -cnbcfm.com  msnbc.com -nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com -nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com neow.in -neowin.netbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com -nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au -news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au -nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.ukandysparis.com newsmax.com -newsmax.in newsmaxtv.com -nikkei.com  nikkei.jp nikkei.co.jp now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com etvonline.hk rthk.hk scmp.com -i-scmp.comsingtaonewscorp.com -sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com -eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hksky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com theguardiandev-guardianapis.comdev-theguardian.com -gu-web.netguardianapis.comguardianapps.co.uk -guim.co.uktheguardian.comtheguardiandns.comtheinitium.com  init.shop thetype.cloud -cn thetype.comtypeisbeautiful.com reuters.com -reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs -tr.com mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com -tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn -cntvbeventpower.com.hk -tvbusa.com tvbweekly.comtvmedia.net.au -dogatch.jp gorin.jpscreens-lab.jp -tver.co.jp tver.jp udn.com -udn.com.twudnfunlife.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com -voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net -curbed.com  eater.comfunnyordie.com meridian.net polygon.com -racked.com -recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com -voxops.net watchout.tw -waa.twstartupschool.orgycombinator.com -zaobao.com zaobao.com.sg  zaobao.sg -bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com -ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com -zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com -881903.com am730.com.hkamericasvoice.newsappleinsider.com  axios.com bbgwatch.com breitbart.combusinessfocus.iocaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.com -cup.com.hk d100.net -dw.com factwire.orgfortuneinsight.comfreebeacon.com hk01.comhkcitizenmedia.com hkcnews.com hkej.com -hkgpao.comhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com macrumors.com newyorker.com on.ccpassiontimes.hk post852.com qmap.pubrealvision.com rfa.org -rfi.fr rsf.org -rt.com -rtings.comshuziyimin.orgsingpao.com.hksinoinsider.com slashdot.org -socrec.orgthegatewaypundit.comthenationalpulse.comthestandnews.com tvmost.com.hk  unwire.hkvjmedia.com.hk warroom.orgwashingtonpost.com weiyuksj.com -wenzhao.ca youlucky.com zerohedge.com zoomingin.tv -è -ENFAbebepremium3.com.bo -enfa.co.id enfa.com.vn enfaaplus.com enfababy.com enfabebe.comenfabebe.com.brenfabebe.com.coenfabebe.com.doenfabebe.com.ecenfabebe.com.mxenfabebe.com.peenfabebe.com.veenfabebe3.com.arenfagrow.co.inenfagrow.com.bnenfagrow.com.myenfagrow.com.phenfagrow.com.sg enfagrow4.comenfamama.com.arenfamama.com.ph -enfamil.ca enfamil.com -enfamil.es -enfamil.pl -enfamil.pt enfasmart.comenspireformula.comnutramigen.net nutramigen.pl -" - HUBBLEPHONEhubblephone.com -) -MEITU  meitu.com meitudata.com - -REMIREPO remirepo.net -^ -CTEXCEL -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -× -OPPO coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com -% - FONTEXPLORERfontexplorerx.com -y - QINGCLOUD frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.com -$ - CLOUDCONVERTcloudconvert.com -‰½ +m +SUNING cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com +¹½ CNcn citic baidu unicomsohu xn--fiqs8s @@ -5935,7 +4004,7 @@ weiyun.com alloyteam.com imweb.io ivweb.io mi-img.com  mifile.cn miui.com miwifi.com  xiaomi.cn xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com +xiaomi.netxiaomiyoupin.com sandai.netthunderurl.com xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn cmvideo.cn miguvideo.com andfx.cn  andfx.net @@ -5997,7 +4066,7 @@ ctfile.com ctiforum.com ctoutiao.com  ctsbw.com cubead.com  cwxzx.com cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com -dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com deepinos.org develenv.com dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com diopic.net diyiyou.com dj99.com  docin.com dockerone.com dockone.io dogedoge.com @@ -6086,7 +4155,7 @@ sanwen.net  scdng.com scoregg.com sczsxx.com sdo.com sec-wiki.com sencdn.com seniverse.comsenlinjimore.com sgamer.com shanbay.com shang360.com -shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.com  shssp.orgshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com shutcm.com simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com snimay.com  sobot.com sofreight.com softwhy.com @@ -6099,7 +4168,7 @@ taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air tianqi.com tietuku.com tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com -tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.toolsubuntukylin.com  ucbug.com +tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com  txrjy.com u.toolsubuntukylin.com  ucbug.com uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com @@ -6108,7 +4177,7 @@ wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wscdns.com  wtown.com  wumii.com wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com xfdown.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomiflash.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com xzking.com yahui.cc @@ -6136,362 +4205,86 @@ zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com fm3838.comlarsonlimited.com runsheng.com vzuu.com zoom3g.com zoomyou.cn chaoxing.com chaoxing.cc -å + +MEWE mewe.com + - MICROSOFT-DEVadaptivecards.ioapi-extractor.com +QINGTINGFM qingting.fm + +SVP svp-team.com +d + JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net +E +PIXIV  pixiv.net  pixiv.org pixiv.co.jp  pximg.net +î? + CATEGORY-DEV anaconda.com anaconda.org conda.io android.comandroidify.comappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net archlinux.orgarchlinuxarm.orgbootstrapcdn.comgetbootstrap.combraventures.com braveux.com +compass.isfightforux.comforthebadge.comstockagainstphotography.com launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io +ubuntu.com +ubuntu.netubuntuforums.org canonical.com dart.dev dartlang.org dartpad.dev +debian.org +dotdeb.orgcompose-spec.io +docker.com  docker.io embed.ly embedly.com playerjs.ioaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com fastlane.cifastlane.tools getfedora.orgfedoraforum.orgfedoraproject.orgfedoramagazine.org flathub.org flatpak.org flutter.devflutterapp.comfontawesome.comfortawesome.com  fury.blog fury.co fury.dev  fury.help fury.io gemfury.com gitbook.com +gitbook.io npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.com +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io haskell.orghaskellstack.org stackage.org brew.shhomebrew.bintray.com +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.orgjava java.com java.net jetbrains.com jetbrains.net datalore.iokotlinlang.org  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net +cn kubernetes.io +k8s.ioadaptivecards.ioapi-extractor.com apisof.net appcenter.ms blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn cn#microsoftreactor.com.cn cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net - -4399 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com -¡ -VOXMEDIA cstatic.net -curbed.com  eater.comfunnyordie.com meridian.net polygon.com -racked.com -recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com -voxops.net -S -PORNHUB -phncdn.com phprcdn.com pornhub.compornhubpremium.com -i -RAZER  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com -× -SOHU-ADSadnet.sohu.com -ads ads.sohu.com -ads!adv-sv-show.focus.cn -ads aty.sohu.com -adsdata.vod.itc.cn -adsepro.sogou.com -ads go.sohu.com -adsgolden1.sogou.com -adsimp.optaim.com -adsinte.sogou.com -adsinte.sogoucdn.com -adslu.sogoucdn.com -ads pv.sohu.com -adstheta.sogoucdn.com -adstrack.sohu.com -adsuranus.sogou.com -adsv2.reachmax.cn -ads)e8aeb8bbdbbd7.cdn.sohucs.com -ads)643108e7617ef.cdn.sohucs.com -ads -( -LTN -ltn.com.tw yes123.com.tw -U -DOWJONESdjreprints.com dowjones.com dowjones.iodowjoneson.com -¢ -CITIC citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com -ß -OCULUS binoculus.com buyoculus.com ocul.usoculus-china.com -oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com -È - REALCLEAR realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com - -SINGTAONEWSCORPsingtaonewscorp.com -sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com -eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hk -ä -CATEGORY-ANTICENSORSHIP citizenlab.cacitizenlab.org  gfw.press -gfw.reportapplecensorship.comfreebrowser.orgfreewechat.com freeweibo.com greatfire.orghaveibeenpwned.compwnedpasswords.comgetlantern.org -lantern.io softether.orgsoftether-download.com  v2ray.com -v2ray.cool  v2fly.org ahmia.fi akasha.worldbrowserleaks.combypasscensorship.orgdat.foundationdemocracy.earth eff.orgepicbrowser.com ffprofile.comfreenetproject.org fteproxy.org -geti2p.netguardianproject.info ipfs.io  jitsi.org  ntc.partyonionshare.org ooni.org openvpn.netprivacytools.io psiphon3.comshadowsocks.org stunnel.org telex.cctorproject.org tribler.org tunsafe.comtwister.net.co -uproxy.org vuvuzela.io -whonix.org wikileaks.org wireguard.com -zeronet.io -œ -HUOBI -hbabit.com -hbfile.net  huobi.com huobi.me  huobi.pro huobi.sc huobiasia.viphuobigroup.comhuobitoken.com -O -COSTCOcostco-static.com -costco.comcostcobusinessdelivery.com -‹ -DMM-ADS bluekai.com -adsfout.jp -ads gmossp-sp.jp -adsi-mobile.co.jp -ads im-apps.net -ads impact-ad.jp -ads ladsp.com -ads microad.co.jp -ads -microad.jp -ads socdm.com -ads - -ELECTRONelectronjs.org -# - MOPUB-ADS mopub.com -ads -/ -MAPBOX mapbox.cn -cn -mapbox.com -+ - TAPPX-ADSssp.api.tappx.com -ads -¦ -JUEJIN  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com -¼ -GOG gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn -& -XNXX xnxx.com xnxx-cdn.com -b - ECONOMIST economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com -. -CABLETVcabletv.com.hk i-cable.com -­ -HBO cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -µ -LOGITECH logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net -µ - PINTEREST -pin.it -pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com -D - -POCOIQ-ADS cdn.pocoiq.cn -ads oct.pocoiq.cn -ads -~ -GITLAB -gitlab.com  gitlab.io -gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com -* -JIANSHU jianshu.com -jianshu.io -6 -PROQUESTserialssolutions.com proquest.com -* -WIWIDE wamawama.com -wiwide.com -¬ -DELL -cfblob.comcloudchoose.comcloudvolumes.com -cmpaas.com -cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com -virsto.com -virsto.net vmglobal.net -vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com -vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com -vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com -badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com -nyansa.com velocloud.com gopivotal.com heptio.cn -cn -heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com -getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.com -D -RUST rust-lang.org  rustup.rs  crates.io docs.rs - - -STATICFILEstaticfile.org -' -WATCHOUT watchout.tw -waa.tw - -WEBTYPE webtype.com - - -FONTSINUSEfontsinuse.com -8 -NPMJS npm.community  npmjs.com  npmjs.org -K -PINGAN -pingan.com pingan.com.cn pingan.com.hk yqb.com -/ - SNAPCRAFT snapcraft.io snapstore.io -D -YY -duowan.com dwstatic.com -yy.com yystatic.com -Q - BANDWAGONHOSTbandwagonhost.com bwh1.net bwh8.net  bwh88.net - -MIRAHEZE miraheze.org -Õ -ONEDRIVE 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com -4 -SCInewisiknowledge.comisiknowledge.com - -SETAPP -setapp.com -Ý -SKYsky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com -g -SPRINGER -apress.com springer.comspringerlink.comspringernature.com wkap.nl -% -MIHOYO -mihoyo.com bh3.com -L -IMDBboxofficemojo.com imdb.com imdb.tomedia-imdb.com -0 - MIXPANEL-ADS decide.mixpanel.com -ads -ï -WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com -¥ -YUEWEN -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -@ - DIGITALOCEANdigitalocean.comdigitaloceanspaces.com - -GFASHION gfashion.com -( -IMGUR  imgur.com imgurinc.com -D - -LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com -ÿ -MANORAMAmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in -theweek.invanitaonline.com -vanitha.invanithaveedu.com -³ - -BRIGHTCOVE bcove.video bcovlive.io bcvp0rtal.com boltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com videojs.com -zencdn.net zencoder.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.net - -STEEMIT steemit.com -” - HELLOFONT hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com -9 -ABCabc-studios.com abc.com edgedatg.com -™ - -EVERBRIGHT cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com -š -QINIUstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com -¬ -VIMEO -vhx.tv -vhxqa1.com -vhxqa2.com -vhxqa3.com -vhxqa4.com -vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com -H -BTTZYW -btt804.com -btt904.com -bttzyw.com -bttzyw.net -@ - GLOBALVOICESglobalvoices.orgglobalvoicesonline.org -6 - NORDSTROM nordstrom.comnordstrommedia.com -+ -WIKIDOT wdfiles.com wikidot.com -3 - -CITIZENLAB citizenlab.cacitizenlab.org -+ - SEGMENT-ADScdn.segment.com -ads -c -YOUKU -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net - - -CUGBONLINE cugbonline.cn -Ü - DAILYMAIL  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk -mol.imthisismoney.co.uk -thismon.ee - -GAB gab.com -, -MEDIUM -medium.commedium.systems -Ð - OPENSTREETMAP openmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.org osm.orgosmfoundation.orgstateofthemap.comstateofthemap.org - - -SKILLSHAREskillshare.com - -TABOOLA taboola.com -m -WPS -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn -’ -CANON canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn -cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn -cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com -< -DOCKERcompose-spec.io -docker.com  docker.io -" -NIST nist.gov time.gov -0 - COWTRANSFER c-t.workcowtransfer.com -â -HKT 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com -0 -MEGA -mega.co.nz mega.io mega.nz -£ -MINISOloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn -cn  miniso.co miniso.co.id miniso.co.tz -miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn -cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn -cn myminiso.com - -REURL reurl.cc - -DOOM9  doom9.org -/ -XVIDEOS xvideos.comxvideos-cdn.com - -GITV gitv.cn gitv.tv -å -MORTEIN -mortein.cn -cn mortein.co.in mortein.co.nz mortein.co.za mortein.commortein.com.aumortein.com.brmortein.com.ngmortein.com.pkmorteincam.compifpafarabia.com -Ê -VEET veet.at veet.be veet.ca veet.ch veet.clveet.cn -cn -veet.co.id -veet.co.in -veet.co.kr -veet.co.nz -veet.co.uk -veet.co.za veet.com veet.com.ar veet.com.au veet.com.bd veet.com.br veet.com.cn -cn veet.com.co veet.com.hk veet.com.mx veet.com.my veet.com.ph veet.com.pk veet.com.sg veet.com.tr veet.de veet.dk veet.es veet.fi veet.fr veet.hu veet.jp veet.nl veet.no veet.pt veet.ro veet.ru veet.se veet.tv veet.usveetarabia.comveetbangladesh.comveetcentroamerica.com veetclub.it -F -COINONE coinone.co.krcoinonecore.comcoinonecorp.com -k -DOUYU  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com -Y -JSDELIVR jsdelivr.com jsdelivr.net esm.runcdn.jsdelivr.net -cn -I -MADSHI -madshi.net  madvr.com  madvr.net madvrlabs.llc +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net mongodb.com mongodb.org  nginx.com  nginx.org openwrt.orglede-project.org perl.org cpan.org metacpan.orgpolymer-project.orgpolymerproject.org  pycon.org pypa.io pypi.io pypi.org +python.orgpythonhosted.org qt.ioqt-project.orgreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org redis.io redislabs.com remirepo.net ruby-lang.org rubygems.orgscala-lang.org scala-sbt.org askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.commystrikingly.comstrikingly.comstrikinglycdn.com +kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.orglfai.foundationlinuxfoundation.org  unity.com unity3d.com!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +v8.dev v8project.org vim.orgxda-developers.com xda-cdn.comalpinelinux.org +apache.org atom.io +badgen.net bitvise.com  cdnjs.com +centos.orgchocolatey.org clojure.org +cnpmjs.org +cygwin.com +cython.org  deno.landelixir-lang.org +elrepo.org +erlang.org +ffmpeg.org freebsd.org +gentoo.orggetcomposer.org git-scm.com gnu.orggreenend.org.uk +ius.io +jenkins.io +js.org jupyter.org kali.orglinuxfromscratch.org linuxmint.com lua.org macports.org mariadb.org  mingw.org mobatek.net  mysql.com  nixos.orgnodesource.comnotepad-plus-plus.org +openai.com openresty.org openssl.org opensuse.org packagist.org pcre.org phantomjs.org php.net  putty.orgpostgresql.org r-project.orgraspberrypi.org raspbian.org rpmfusion.orgscientificlinux.org scoop.sh +shields.io +sqlite.orgsublimetext.com termius.com  unpkg.com videojs.com videolan.org wireshark.org x.org xposed.info yarnpkg.com zsh.org +1 +GODADDY godaddy.comx.co godaddy ì NETEASE 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com 163yun.com 166.net @@ -6504,67 +4297,930 @@ youdao.comanalytics.163.com ads crashlytics.163.com ads g.163.com ads -4 -THEBORINGCOMPANYboringcompany.com x.com - -VIM vim.org -© -WESTERNDIGITALg-technology.com -sandisk.ae -sandisk.it -sandisk.cn -cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw -sandisk.de -sandisk.es -sandisk.fr -sandisk.hk -sandisk.id -sandisk.in -sandisk.nl -sandisk.sg -wd.com wdc.comwesterndigital.com -d -BARRONSbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.com -e - ATOM-DATA-ADS atom-data.io -adsanalytics-data.io -ads ironbeast.io +, +BANDCAMP bandcamp.com +bcbits.com +­ + +BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn +- +C-SPAN +c-span.orgc-spanvideo.org +© + CATEGORY-CASbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no +comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.comcybertrust.co.jpcybertrust.ne.jp digicert.comdigitalcertvalidation.com freessl.com geotrust.com rapidssl.com +thawte.com  thawte.de  thawte.fr entrust.netentrustdatacard.comglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com +cnocsp.globalsign.com +cn ocsp2.globalsign.com +cn identrust.comidentrust.co.uk identrust.net  lencr.orgletsencrypt.org secom.co.jpsecomtrust.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.com sectigo.com usertrust.com digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch telekom.com +telekom.de trustwave.com verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com +* +HKOPENTV hkopentv.com fantv.hk +ï +WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com +' +APA apa.orgpsyccareers.com +k +DOUYU  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com +’ +RUANMEI 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com +Ó +UU-CHAT  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com + +STEEMIT steemit.com +Ò + CALGONCARBON  calgon.at  calgon.be  calgon.ch calgon.cn +cn calgon.co.uk +calgon.com calgon.com.tr  calgon.de  calgon.es  calgon.fr  calgon.ie  calgon.it  calgon.nl  calgon.pt  calgon.ru  calgon.tvcalgoncarbon-china.comcalgoncarbon.com calgonit.com + +EVERNOTE evernote.com +â + HUNANTV-ADSclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com ads -» -PCCW 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com -now.com.hk nowe.com nowe.hk -now-tv.comnow-ashare.com -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hk +† +MUJI muji.com muji.com.cn +cn muji.com.hk muji.eu muji.net muji.tw muji.us mujikorea.net + +PASTEBIN pastebin.com + +CHIPHELL chiphell.com +ã +GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skscholar.l.google.com +H + NEXITALLY nexitally.comnexitallysafe.com nexitcore.com +* +WIWIDE wamawama.com +wiwide.com +Ç +YAHOO +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com +æ +DWION acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com + +FIGMA  figma.com +² +HUAWEI  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com +ô* +PAYPALaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.org anfutong.cn +cn anfutong.comanfutong.com.cn +cn beibao.cn +cn +beibao.com beibao.com.cn +cn bill-safe.combillmelater.combillmelater.infobillmelater.net bml.infobuyfast-paysmart.net cashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com +gmoney.org +i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net +pa9pal.com paaypal.com  paily.net  paily.org +paipal.com +pavpal.com paydiant.com paylike.com +paypa1.com +paypa1.org paypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net  paypal.ca +paypal.com paypal.com.cn +cn paypal.com.hk paypal.com.sg  paypal.hk paypal.info  paypal.jp  paypal.me paypal.net.cn +cn paypal.org.cn +cn  paypal.so  paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.cn +cnpaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.org paypalhere.cn +cnpaypalhere.compaypalhere.com.cn +cnpaypalhere.infopaypalhere.netpaypalhere.org paypalhere.tv paypali.net paypalinc.compaypalindia.compaypalinsuranceservices.org paypall.compaypallabs.com paypalme.com paypalnet.net paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.com paypalx.com paypaly.com payppal.com payypal.compdncommunity.com +pp-soc.com ppaypal.com  pppds.com pypl.com  pypl.info pypl.net pypl.tvsecure-paypal.infosecurepaypal.info sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info www-paypal.usxn--bnq297cix3a.cn +cnbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tv card.iogetbraintree.com krakenjs.comloanbuilder.comswiftcapital.com simility.com cashify.netswiftbank.info swiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com  venmo.com +venmo.info  venmo.net  venmo.org  cash2.comfilipino-music.net +s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.com wwwxoom.comxoom-experience.com xoom.com xoom.io xoom.net.cn +cn xoom.us xoomcom.comvenmo.s3.amazonaws.com +S + UNITY-ADS!unityads.unity3d.com +ads#unityads.unitychina.cn +ads +; +WJX +sojump.com +wjx.cn wjx.com wjx.top +ª +XBOX +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv +Ë + KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.com +i +RAZER  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com +7 + BUYMEACOFFEE buymeacoff.eebuymeacoffee.com +( +DEBIAN +debian.org +dotdeb.org +/ + JIBENCAOZUO jbcz.tvjibencaozuo.com + + TEST-IPV6 test-ipv6.com +™ +TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com +twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.co ++ +BOSLIFE boslife.biz boslife.net +' +CODING  coding.me +coding.net +$ +GFW  gfw.press +gfw.report +œ +TMTPOST tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com + +5CH 2ch.net 5ch.net +Œ +DETTOLdettol-prize.com  dettol.at  dettol.be  dettol.ch  dettol.cl dettol.co.id dettol.co.in dettol.co.ke dettol.co.nz dettol.co.uk +dettol.com dettol.com.au dettol.com.bd dettol.com.br dettol.com.cn +cn dettol.com.eg dettol.com.hk dettol.com.my dettol.com.ng dettol.com.sg  dettol.cz  dettol.fr  dettol.hu  dettol.ie +dettol.net  dettol.nl  dettol.pk  dettol.pl  dettol.pt  dettol.rudettolarabia.comdettolcleannaija.comdettolsitishield.co.indettolthailand.comespadoldettol.com.ar + +FEEDLY +feedly.com +¸ +SINA-ADS 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +@ + ZUOYEBANG zuoyebang.cc zuoyebang.com +zybang.com +a +LE +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com +µ + PINTEREST +pin.it +pinimg.com pinterest.at pinterest.be pinterest.ca pinterest.ch pinterest.cl pinterest.copinterest.co.atpinterest.co.inpinterest.co.krpinterest.co.nzpinterest.co.uk pinterest.compinterest.com.aupinterest.com.bopinterest.com.ecpinterest.com.mxpinterest.com.pepinterest.com.pypinterest.com.uypinterest.com.vn pinterest.de pinterest.dk pinterest.ecpinterest.engineering pinterest.es pinterest.fr pinterest.hu pinterest.id pinterest.ie pinterest.inpinterest.info pinterest.it pinterest.jp pinterest.kr pinterest.mx pinterest.nl pinterest.nz pinterest.pe pinterest.ph pinterest.pt pinterest.ru pinterest.se pinterest.th pinterest.tw pinterest.uk pinterest.vnpinterestmail.com + +NODEJS +nodejs.org ++ + ONESIGNAL-ADS onesignal.com +ads +£ +YANDEXxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il +yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md +yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net +yandex 9 - YCOMBINATORstartupschool.orgycombinator.com +ABCabc-studios.com abc.com edgedatg.com +˜ +CCTV cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn +3 +ENTRUST entrust.netentrustdatacard.com +œ +FINISH$dishwashingexpert.com.cn +cn  finish.at  finish.bg finish.co.kr finish.co.nz finish.co.uk finish.co.za finish.com.cn +cn finish.com.hr finish.com.tr  finish.de  finish.es  finish.fr  finish.gr  finish.hu  finish.lv  finish.pl  finish.pt  finish.ro  finish.si  finish.skfinisharabia.comfinishbrasil.com.brfinishdishwashing.cafinishdishwashing.com finishinfo.be finishinfo.clfinishinfo.comfinishinfo.com.arfinishinfo.com.au finishinfo.cz finishinfo.fi finishinfo.it finishinfo.jp finishinfo.nl finishinfo.no finishinfo.ru finishinfo.sefinishkilpailu.fi finishwin.beyarininsuyu.com ™ IEEE ieee.org ieee.tvtryengineering.org ieee-ccnc.org ieee-ecce.org ieeemce.orgstandardsuniversity.orgieee-region6.org ieee.ca ieeer10.org ieeer5.org ieeer8.org ieeeusa.orgieeefoundation.orgieee-into-focus.org ieee-vics.org ieeeday.orgdatasheets360.comglobalspec.com ieee-isto.orgtechstreet.com computer.org comsoc.org embs.org emcs.org grss-ieee.org ieee-aess.org ieee-cas.org ieee-ceda.orgieee-edusociety.org ieee-ies.org ieee-ims.org ieee-npss.org ieee-pels.org ieee-pes.org ieee-ras.orgieee-sensors.org ieee-tems.org ieee-uffc.org ieeeaps.org ieeecsc.org ieeecss.org ieeedeis.orgieeemagnetics.org ieeenano.org ieeeoes.org ieeesmc.orgieeesystemscouncil.org  itsoc.org mtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org vtsociety.org -´ - CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +< +SHOWTIMEANYTIMEshowtimeanytime.com showtime.com +A +ACERacer-group.com acer.com acer.com.cn +cn +4 +CSIS csis.orgcsis-prod.s3.amazonaws.com +0 +BITLY +bit.ly  bitly.com bitly.is +ß + CANONICAL launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org snapcraft.io snapstore.io +ubuntu.com +ubuntu.netubuntuforums.org canonical.com +~ +GITLAB +gitlab.com  gitlab.io +gitlab.netgitlab-static.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.com +3 + XHAMSTER-ADS#collector.xhamster.com +ads +ë +CTRIP c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com + +DIDA365 dida365.com +Y +JFROG  jfrog.com  jfrog.org bintray.com!d29vzk4ow07wi7.cloudfront.net +ª +OOKLA-SPEEDTEST  cdnst.net cellmaps.com ekahau.cloud +ekahau.com  ookla.comooklaserver.net pingtest.net speedtest.co speedtest.netspeedtestcustom.com webtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads +à +DUREXdewitwithdurex.com dotherex.com durex-shop.chdurex-shopline.comdurex-slovenia.si durex.at durex.be durex.cl durex.co.id durex.co.il durex.co.nz durex.co.th durex.co.uk durex.co.za  durex.com durex.com.au durex.com.bd durex.com.cn +cn durex.com.co durex.com.hr durex.com.my durex.com.ng durex.com.pe durex.com.ph durex.com.pk durex.com.sg durex.com.tr durex.cz durex.de durex.dk durex.ee durex.es durex.fi durex.fr durex.hu durex.ie durex.it durex.jp durex.lv durex.mx durex.nl durex.no durex.pl durex.pt durex.ro durex.ru durex.se durex.us durexcam.comdurexcanada.comdurexchina.comdurexchina.com.cn +cndurexindia.comdurexloveclub.comdurexukraine.com durexusa.comlovesexdurex.cn +cnlovesexdurex.complaybydurex.com shopdurex.com trydurex.net trydurex.tv +' +HACPAI +hacpai.com  ld246.com + + +JINRISHICIjinrishici.com +® +OUPamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.com +Æ +SOFTBANK softbank sb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.net softbank.jp softbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com +‡ +WHOLEFOODSMARKETwholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.org +D + +POCOIQ-ADS cdn.pocoiq.cn +ads oct.pocoiq.cn +ads +% +RUMBLE rmbl.ws +rumble.com +, +ACPLAY +acplay.netdandanplay.com +À + +DUCKDUCKGOcispaletter.comcispaletter.orgcometotheduckside.com +ddg.co +ddg.gg +ddh.gg +dgg.gg dontbubble.us donttrack.us duck.co duck.comduckduckco.com duckduckco.de duckduckgo.ca duckduckgo.coduckduckgo.co.ukduckduckgo.comduckduckgo.com.mxduckduckgo.com.tw duckduckgo.de duckduckgo.dk duckduckgo.in duckduckgo.jp duckduckgo.ke duckduckgo.mx duckduckgo.nlduckduckgo.org duckduckgo.pl duckduckgo.sg duckduckgo.ukduckduckhack.com +duckgo.com ducksear.ch duckside.com  dukgo.comenteentegeh.defixtracking.com goduckgo.com hacksear.chjustduckit.comprivacysimplified.comprivatebrowsingmyths.comspreadprivacy.com + + TRUSTWAVE trustwave.com + + W3SCHOOLS w3schools.com +Þ + +JD3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads +f +ROKU fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com +‹ + HASHICORP  consul.io hashicorp.comnomadproject.io  packer.io terraform.io vagrantup.comvaultproject.io +> +UBUNTU +ubuntu.com +ubuntu.netubuntuforums.org ++ +XIMALAYA ximalaya.com  xmcdn.com +< +ANACONDA anaconda.com anaconda.org conda.io +4 + KHANACADEMYkhanacademy.org kastatic.org +à +NETFLIX fast.com +netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net +nflxso.net nflxvideo.netnetflixdnstest1.comnetflixdnstest2.comnetflixdnstest3.comnetflixdnstest4.comnetflixdnstest5.comnetflixdnstest6.comnetflixdnstest7.comnetflixdnstest8.comnetflixdnstest9.comnetflixdnstest10.com +" + ADBLOCKPLUSadblockplus.org + +RSSHUB +rsshub.app +9 +DOUBAN +douban.com  douban.fm doubanio.com +Z +INTERCOM intercom.com intercom.iointercomassets.comintercomcdn.com +O +COSTCOcostco-static.com +costco.comcostcobusinessdelivery.com +% +RTHK etvonline.hk rthk.hk +è +ALIYUNalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com +è +ENFAbebepremium3.com.bo +enfa.co.id enfa.com.vn enfaaplus.com enfababy.com enfabebe.comenfabebe.com.brenfabebe.com.coenfabebe.com.doenfabebe.com.ecenfabebe.com.mxenfabebe.com.peenfabebe.com.veenfabebe3.com.arenfagrow.co.inenfagrow.com.bnenfagrow.com.myenfagrow.com.phenfagrow.com.sg enfagrow4.comenfamama.com.arenfamama.com.ph +enfamil.ca enfamil.com +enfamil.es +enfamil.pl +enfamil.pt enfasmart.comenspireformula.comnutramigen.net nutramigen.pl +­ + IQIYI-ADSa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads +, +JAVAjava java.com java.net +f +PHOENIX  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com +^ +SWIFTappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cn +ô +VERIZON +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com +oath.cloud oath.com ouroath.comstatic-verizon.com +uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com +xo.com + +ADDTOANY addtoany.com +^ + APPLE-ADSiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads +­ +MEDIACHINESEGROUPmediachinese.com mysinchew.comsinchew.com.my +sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +Œ +9TO59to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com + +J-TEST +j-test.com +" +KODI kodi.tv  kodi.wiki +' +ZEPLIN +zeplin.dev  zeplin.io +¶ + APPLE-UPDATEappldnld.apple.com gg.apple.comgnf-mdn.apple.comgnf-mr.apple.com gs.apple.com ig.apple.commesu.apple.comns.itunes.apple.comoscdn.apple.comosrecovery.apple.com skl.apple.comswcdn.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.com xp.apple.com +g + ATLASSIAN atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.com + +IINA iina.io +r +ZENDESK outbound.io zdassets.comzdusercontent.com zendesk.com  zndsk.com  zopim.com +^ +BITAUTO bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com +6 +PROQUESTserialssolutions.com proquest.com +Æ +BOC +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cn 8 CYBERTRUSTcybertrust.co.jpcybertrust.ne.jp - -DGTLE  dgtle.com -@ -JQUERY -jquery.comjquerymobile.com jqueryui.com -. -XDAxda-developers.com xda-cdn.com -Œ +” +DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to +å +MORTEIN +mortein.cn +cn mortein.co.in mortein.co.nz mortein.co.za mortein.commortein.com.aumortein.com.brmortein.com.ngmortein.com.pkmorteincam.compifpafarabia.com + +ADBLOCKgetadblock.com +% +IMGIX  imgix.com  imgix.net +A +MEIZU flyme.cn meizu.cn  meizu.com  mzres.com ++ +RUBY ruby-lang.org rubygems.org +? +MAFENGWO mafengwo.cn mafengwo.com mafengwo.net +0 +N3RO n3ro.lol n3ro.net n3ro.wtf +«X +FACEBOOKaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com +nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org +atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com +facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com +faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com +fb.careers +fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com +fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com +fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net +freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com +groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com +redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net +? +LIEPIN +liepin.com +lietou.comlietou-static.com + + SITEPOINT sitepoint.com +4 +SCInewisiknowledge.comisiknowledge.com +Ý +SKYsky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com +‡± +CATEGORY-MEDIA 9cdn.net9nation.com.au 9news.com.au 9now.com.aufreeviewplus.net.au +mi9.com.au +mi9cdn.com nine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au yourtv.com.au9to5google.com 9to5mac.com9to5terminal.com 9to5toys.com dronedj.com electrek.cospaceexplored.com afp.com afpforum.com +ajplus.net aljazeera.com aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.com syhacked.com +ap.org +apnews.comappledaily.comappledaily.com.hkappledaily.com.tw appledaily.hkapplefruity.comapplehealth.com.hk +atnext.combestmallawards.com deluxe.com.hk eracom.com.tw next.hknextdigital.com.hknextdigital.com.twnextfilm.com.hknextmag.com.tw nextmedia.comnextmedia.com.tw nextmgz.comnextplus.com.hk nexttv.com.twnextwork.com.hknextwork.com.tw nextwork.hk nextwork.tw nxtdig.com.hk nxtdig.com.tw omoplanet.com privilege.hk privilege.tw sharpdaily.tw tomonews.nettwnextdigital.com  asahi.com asahicom.jpasahishimbun.sc.omtrdc.netbbc  bbc.co.uk bbc.com +bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk +bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net  bloomberg bbgevent.com bbhub.io +bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video  boxun.combowenpress.com +c-span.orgc-spanvideo.orgcabletv.com.hk i-cable.comcbs showtime cbs.comcbsaavideo.comcbscorporation.com cbsi.com +cbsi.video +cbsiam.com  cbsig.net +cbsimg.netcbsinteractive.comcbsistatic.com cbsivideo.com cbsnews.comcbspressexpress.com cbssports.com cbsstatic.com cbssvideo.com +viacbs.com +viacom.com viacomcbs.comviacomcbspressexpress.com paramount.com cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com cnn.com +cnn.io +cnn.it cnnarabic.com cnnlabs.com cnnmoney.ch cnnmoney.comcnnmoneystream.comcnnpolitics.com  anm.co.uk  dailym.aidailymail.co.uk dailymail.comdailymail.com.au dailymail.dkdailymailonline.comdmgmediaprivacy.co.ukmailhealth.commailonline.co.ukmailonline.commailonsunday.co.ukmailonsunday.ie metro.co.uk +mol.imthisismoney.co.uk +thismon.ee economist.comeconomistgroup.comeconomistgroupcareers.com eiu.com dajiyuan.com dajiyuan.eu edninfo.com epoch.cloud epoch.org.il epochbuy.com epochcar.com epochhk.com epochmall.comepochmediagroup.com epochshop.comepochstories.com epochtime.comepochtimes-bg.comepochtimes-romania.comepochtimes.co.ilepochtimes.co.krepochtimes.co.ukepochtimes.comepochtimes.com.auepochtimes.com.brepochtimes.com.sgepochtimes.com.twepochtimes.com.ua epochtimes.cz epochtimes.de epochtimes.eu epochtimes.fr epochtimes.it epochtimes.jp epochtimes.nl epochtimes.pl epochtimes.ru epochtimes.seepochtimeshk.orgepochtimestr.com epochweek.comepochweekly.com erabaru.net +etviet.comlagranepoca.com ntd.com  ntdca.com +ntdimg.com ntdtv.ca ntdtv.co.kr  ntdtv.com ntdtv.com.tw ntdtv.jp ntdtv.kr  ntdtv.org ntdtv.ru ntdtvla.com  ntdvn.compersianepochtimes.comtheepochtimes.comtheepochtimessubscribe.comvelkaepocha.cz +forbes.com forbesimg.comfoxfox-corporation.com fox-news.com fox.com +fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com +fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com +fox5dc.com +fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com +foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv +foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com +foxest.com +foxfaq.com +foxfdm.com foxfiles.com +foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com +foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com +foxnews.cc foxnews.com foxnews.net foxnews.org +foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com +foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com +fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com +anidom.comcasoneexchange.comcoronavirusnow.com +fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com +my13la.com +my20dc.commy20houston.com +my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com +q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.netgannett-cdn.com gannett.comgannettdigital.com usatoday.comusatodaynetworkservice.comglobalvoices.orgglobalvoicesonline.org  guo.media  gnews.org gtv.org gtv1.org +gclubs.com g-tvapp.comapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn +cn etnet.com.hketnetchina.com.cn +cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk hkopentv.com fantv.hkhuffingtonpost.cahuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.comhuffingtonpost.com.auhuffingtonpost.com.mxhuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.kr huffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com banned.video infowars.cominfowarsmedia.combusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.comes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com trithucvn.net trithucvn.org vct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com  vtvan.comwatchinese.comfreedomplatform.tv londonreal.tv +ltn.com.tw yes123.com.twmalayalamanorama.com manorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com radiomango.fm  theman.in +theweek.invanitaonline.com +vanitha.invanithaveedu.com matters.news matters.onemediachinese.com mysinchew.comsinchew.com.my +sinchew.mysoccerfanz.com.my enanyang.mychinapress.com.myguangming.com.my mingpao.commingpaocanada.commingpaomonthly.commingpaotor.commingpaovan.commingshengbao.com mingwatch.com mpfinance.com mpweekly.com yzzk.com  omghk.com mings.hkmings-fashion.com +medium.commedium.systems +myradio.hkmyradio.com.hkdreamworks.com cnbc.com +cnbcfm.com  msnbc.com +nbc.co nbc.com nbcnews.comnbcolympics.com nbcsports.com +nbcuni.comnbcuniversal.com s-nbcnews.com peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com neow.in +neowin.netbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk +collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com +hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com +nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg +makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com +rea.design +rea.global +rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au +news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au +nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.ukandysparis.com newsmax.com +newsmax.in newsmaxtv.com +nikkei.com  nikkei.jp nikkei.co.jp now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com aweencore.com  awetv.comherringnetwork.com oanencore.com oann.com realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com etvonline.hk rthk.hk scmp.com +i-scmp.comsingtaonewscorp.com +sing68.com singtao.comsingtaobooks.com singtaola.comsingtaousa.comstheadline.comsingtaoopo.comhkheadline.comthestandard.com.hkeastweek.com.hkeasttouch.com.hkbastillepost.com +eduplus.hkheadlinejobs.hkjobmarket.com.hkmy-magazine.mepcmarket.com.hksky sky.com skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it skysports.com skysports.fr skysports.ieskysportsonline.comskysportsracing.com bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com theguardiandev-guardianapis.comdev-theguardian.com +gu-web.netguardianapis.comguardianapps.co.uk +guim.co.uktheguardian.comtheguardiandns.comtheinitium.com  init.shop thetype.cloud +cn thetype.comtypeisbeautiful.com reuters.com +reuters.tvreutersmedia.net aranzadi.escorepublishingsolutions.com  elite.comlegaltracker.comlivrariart.com.brreutersagency.cnsweetandmaxwell.co.ukthomsonreuters.cathomsonreuters.cnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.comthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.esthomsonreuters.inthomsonreuters.ruthomsonreutersmexico.com  tmsnrt.rs +tr.com mytvsuper.com tvb.combigbigchannel.com.hkbigbigshop.com encoretvb.com tvb.com +tvb.com.autvbanywhere.comtvbanywhere.com.sg tvbc.com.cn +cntvbeventpower.com.hk +tvbusa.com tvbweekly.comtvmedia.net.au +dogatch.jp gorin.jpscreens-lab.jp +tver.co.jp tver.jp udn.com +udn.com.twudnfunlife.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com bbg.govdandalinvoa.com darivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com insidevoa.com pashtovoa.com persagg.comradiyoyacuvoa.com urduvoa.com voa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.com voahausa.comvoaindonesia.com voakorea.comvoalingala.comvoandebele.com voanews.com +voanews.euvoanoticias.com voanouvel.comvoaportugues.com voashona.com voasomali.comvoaswahili.com voathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.com voatour.comvoazimbabwe.comzeriamerikes.com cstatic.net +curbed.com  eater.comfunnyordie.com meridian.net polygon.com +racked.com +recode.net sbnation.com theverge.com vox-cdn.com vox.comvoxcreative.comvoxfieldguide.com voxmedia.com +voxops.net watchout.tw +waa.twstartupschool.orgycombinator.com +zaobao.com zaobao.com.sg  zaobao.sg +bgr.inbollywoodlife.comcareerfundas.comcricketcountry.com dnai.in dnaindia.com earngeek.com ekhindi.com +ind.sh  india.comindiancolleges.com itripto.com  oncars.in prepsure.comthehealthsite.com wionews.com yo1health.com zee.com +zeebiz.comzeeentertainment.com zeenews.com"zeenews-fonts.s3.amazonaws.com +881903.com am730.com.hkamericasvoice.newsappleinsider.com  axios.com bbgwatch.com breitbart.combusinessfocus.iocaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.com +cup.com.hk d100.net +dw.com factwire.orgfortuneinsight.comfreebeacon.com hk01.comhkcitizenmedia.com hkcnews.com hkej.com +hkgpao.comhongkongfp.com inmediahk.net jfengtime.com landofhope.tvlocalpresshk.com macrumors.com newyorker.com on.ccpassiontimes.hk post852.com qmap.pubrealvision.com rfa.org +rfi.fr rsf.org +rt.com +rtings.comshuziyimin.orgsingpao.com.hksinoinsider.com slashdot.org +socrec.orgthegatewaypundit.comthenationalpulse.comthestandnews.com tvmost.com.hk  unwire.hkvjmedia.com.hk warroom.orgwashingtonpost.com weiyuksj.com +wenzhao.ca youlucky.com zerohedge.com zoomingin.tv +D -ITUNES!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn -cn itun.es itunbes.com ituneas.comitunes-apple.cn -cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th -itunes.com  itunes.hk  itunes.mx -itunes.org -itunes.rio  itunes.usitunes12days.comitunesapple.cn -cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn -cnitunesradio.comitunesradio.com.cn -cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.net +LIVEJASMINlivejasmin.com dditsadn.com dditscdn.com +0 + +SOUNDCLOUDsoundcloud.com +sndcdn.com +: +WEIPHONE feng.com fengimg.com wfdata.club +. +SXL mysxl.cn +sxl.cn  sxlcdn.cn + +TOR onion +£ +CATEGORY-MEDIA-CN36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.com +Á +GOOGLE android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skscholar.l.google.compolymer-project.orgpolymerproject.org +v8.dev v8project.org youtubeggpht.cn +cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com +youtube.ae +youtube.al +youtube.am +youtube.at +youtube.az +youtube.ba +youtube.be +youtube.bg +youtube.bh +youtube.bo +youtube.by +youtube.ca youtube.cat +youtube.ch +youtube.cl +youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve +youtube.cr +youtube.cz +youtube.de +youtube.dk +youtube.ee +youtube.es +youtube.fi +youtube.fr +youtube.ge +youtube.gr +youtube.gt +youtube.hk +youtube.hr +youtube.hu +youtube.ie +youtube.in +youtube.iq +youtube.is +youtube.it +youtube.jo +youtube.jp +youtube.kr +youtube.kz +youtube.la +youtube.lk +youtube.lt +youtube.lu +youtube.lv +youtube.ly +youtube.ma +youtube.md +youtube.me +youtube.mk +youtube.mn +youtube.mx +youtube.my +youtube.ng +youtube.ni +youtube.nl +youtube.no +youtube.pa +youtube.pe +youtube.ph +youtube.pk +youtube.pl +youtube.pr +youtube.pt +youtube.qa +youtube.ro +youtube.rs +youtube.ru +youtube.sa +youtube.se +youtube.sg +youtube.si +youtube.sk +youtube.sn youtube.soy +youtube.sv +youtube.tn +youtube.tv +youtube.ua +youtube.ug +youtube.uy +youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand +chromedclkgbizgle gmailgoogoog +googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca +google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn +cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw +google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com +466453.com abc.xyz adgoogle.net +admeld.comangulardart.org +api.ai +apigee.com appbridge.ca appbridge.io appbridge.it appspot.com +apture.com area120.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +brotli.org bumpshare.com +bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org +chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com +foofle.com froogle.com fuchsia.dev  g-tun.comg.cn +cng.co g.dev +g.page gateway.dev +gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn +cn globaledu.org  gmail.com gmodules.com  gogle.com +gogole.comgonglchuangl.net +goo.gl +googel.com +googil.com  googl.comgoogle-syndication.com google.berlin +google.dev +google.net +google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn +cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn +cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com +googlr.com +goolge.com gooogle.com gridaware.app gsrc.io +gstatic.cn +cn gstatic.comgstaticcnapps.cn +cn +gsuite.com +gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org +picasa.com picasaweb.com picasaweb.net picasaweb.org +picnik.com pittpatt.com +pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com +revolv.comridepenguin.com run.appsavethedate.foo +saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com +verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org +wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com +webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company +x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com +cn%gstaticadssl.l.google.com +cnwww.recaptcha.net +cn265.com +cn2mdn.net +cn adservice.google.com +cnapp-measurement.com +cn beacons.gcp.gvt2.com +cnbeacons.gvt2.com +cnbeacons3.gvt2.com +cn c.admob.com +cn(c.android.clients.google.com +cn!cache.pack.google.com +cncheckin.gstatic.com +cn%clickserve.dartsearch.net +cn)clientservices.googleapis.com +cn)connectivitycheck.gstatic.com +cncorp.google.com +cn crl.pki.goog +cncsi.gstatic.com +cn dl.google.com +cndl.l.google.com +cndoubleclick.net +cn-!firebase-settings.crashlytics.com +cn fonts.googleapis.com +cnfonts.gstatic.com +cn google-analytics.com +cn googleadservices.com +cngoogleanalytics.com +cn!googlesyndication.com +cn googletagmanager.com +cn!googletagservices.com +cngtm.oasisfeng.com +cn!imasdk.googleapis.com +cn ocsp.pki.goog +cn, pagead-googlehosted.l.google.com +cn!pki-goog.l.google.com +cn recaptcha.net +cnredirector.gvt1.com +cn)safebrowsing-cache.google.com +cn'safebrowsing.googleapis.com +cn$settings.crashlytics.com +cn-!ssl-google-analytics.l.google.com +cnssl.gstatic.com +cn%toolbarqueries.google.com +cntools.google.com +cntools.l.google.com +cn$translate.googleapis.com +cn!update.googleapis.com +cn-!www-googletagmanager.l.google.com +cnwww.gstatic.com +cn ½B RBaerogard.com.auaerogard.com.cn cnaerogardcn.com @@ -6665,189 +5321,460 @@ woolite.uswoolitecarpet.comdigital-rb.com rb-crisis.com rb.netrbbusinessshop.comrbdigitalab.comrbdigitallab.comrbeuroinfo.com rbgrads.comrbgraduates.comrbmavericks.comrbnainternational.com  rbplc.comrbrandlibrary.com rbspeakup.com reckitt.netreckittbenckiser.cn cnreckittbenckiser.com#reckittbenckiser.com.cn cnreckittbenckiser.netreckittbenckiser.tvreckittprofessional.com -& - STEAMUNLOCKEDsteamunlocked.net -' -CODING  coding.me -coding.net - -DIDA365 dida365.com -' -HEYZO heydoga.com  heyzo.com -E -INFOWARS banned.video infowars.cominfowarsmedia.com -) -LIANJIA lianjia.com  ljcdn.com -„ -MDNdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud -0 -N3RO n3ro.lol n3ro.net n3ro.wtf -. -NETLIFY netlify.combitballoon.com - -DISCORD -discord.co discord.com -discord.gg discord.gift discord.gifts discord.media discord.newdiscordapp.comdiscordapp.netdiscordstatus.com -W -MOJANGcallersbane.com minecraft.netminecraftshop.com -mojang.com -+ -MONGODB mongodb.com mongodb.org -( -REDIS redis.io redislabs.com - -AVSFORUM avsforum.com -æ˜ -CATEGORY-ENTERTAINMENT abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net ao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net -att.tv atttvnow.comattwatchtv.com directv.com  dtvce.comnettyinternet.com gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net bandcamp.com -bcbits.com blizzard.cn -cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn +, +SECOM secom.co.jpsecomtrust.net +x +FASTLY +fastly.com +fastly.netfastlylabs.com fastlylb.netfastly-terrarium.com +zencdn.net +æ + SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch +swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch += + JAVFINDER javfinder.sh findercdn.me o0-2.com +¦ +JUEJIN  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com +c +YOUKU +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net + +CUTTLY cutt.ly +* +JAVWIDE +javwide.tv javwide.com + +OK ok.ru + +REURL reurl.cc +¥ +YUEWEN +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +… +AMP amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.net +ߟ +CATEGORY-COMPANIESacer-group.com acer.com acer.com.cn +cn typekit.com typekit.net10xfotolia.com 2o7.net acrobat.com adbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com  adobe.com adobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.com +adobedc.cn +cn adobedc.net adobedemo.com adobedtm.comadobeexchange.comadobeexperienceawards.com adobegov.comadobehiddentreasures.comadobejanus.com adobeku.comadobelanding.comadobelogin.com adobeoobe.comadobeplatinumclub.comadobeprojectm.com adobesc.com adobesign.comadobesigncdn.comadobespark.com adobess.comadobestock.com adobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com authorxml.combusinesscatalyst.com ccnsite.com  ccpsx.com +demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.com echocdn.com echosign.com edgefonts.netenablementadobe.com  ftcdn.net gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.com omniture.com +omtrdc.net photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.com adobe.iodevelopria.com behance.nets2stagehance.com adobecc.com adobecce.comadobeccstatic.comcreativecloud.comcreativesdk.com cotolia.com ffotolia.com fiotolia.com foftolia.com fonolia.com fotiolia.com fotoiia.comfotolia-noticias.com +fotolia.cc fotolia.com +fotolia.tv fotolja.com fptolia.com gfotolia.com motolia.com photolia.nettenbyfotolia.com votolia.combluefootcms.com mageconf.commageconf.com.ua magento.com magento.netmagentocommerce.commagentomobile.commarketing-cloud.com marketo.co.uk marketo.com marketo.net +marketo.tvmarketodesigner.commarketolive.com +mktdns.commkto-c0100.com mktorest.com mktroute.commobilemarketo.com&"revenue-performance-management.com toutapp.comcompresspdf.new pdf.new sign.newalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.com amazon-adsystem.com +adswholecitiesfoundation.orgwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgaws +amazonimdb +kindle xn--cckwcxetdxn--jlq480n2rg yamaxun +zappos a2z.comaboutamazon.cn +cnaboutamazon.co.ukaboutamazon.comaboutamazon.com.auaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.pl alexafund.cn +cnalexafund.com.cn +cn amaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com  amazon.ae  amazon.ca amazon.cn +cn amazon.co.jp amazon.co.uk +amazon.com amazon.com.au amazon.com.br amazon.com.mx amazon.com.tr  amazon.de  amazon.es  amazon.fr  amazon.in  amazon.it amazon.jobs  amazon.jp  amazon.nl +amazon.red  amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.cn +cn!amazonbusiness.com.cn +cnamazonbusiness.orgamazonbusinessblog.comamazonchoice.cn +cnamazonchoice.com.cn +cnamazonchoices.cn +cn amazonchoices.com.cn +cnamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazoninspire.cn +cn amazoninspire.com.cn +cnamazonlaunchpad.cn +cnamazonlaunchpad.com"amazonlaunchpad.com.cn +cn amazonlending.com.cn +cn!amazonliterarypartnership.comamazonlumberyard.wang amazonnow.cn +cnamazonnow.com.cn +cn amazonpay.com amazonpay.in amazonsdi.comamazonstudiosguilds.comamazontrust.comamazonvideodirect.com amzn.com amzn.to  amznl.comassoc-amazon.cn +cnassociates-amazon.comgameon-masters.comgdansk-amazon.comimages-amazon.commedia-amazon.com primeday.cn +cnprimeday.com.cn +cn primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.de +yamaxun.cn +cn yamaxun.comz.cn +cn  alexa.com audible.comacmvalidations.comacmvalidationsaws.comaesworkshops.comamazonaws-china.comamazonaws.co.uk amazonaws.com amazonaws.tvamazonworkdocs.cn +cnamazonworkdocs.com!amazonworkdocs.com.cn +cnamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comawsautoscaling.com awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com awsstatic.comawsthinkbox.com awstrust.comcdkworkshop.comcloudfront.netcontainersonaws.comelasticbeanstalk.comthinkboxsoftware.com".+\.awsdns-[0-9][0-9]\.co\.uk$.+\.awsdns-[0-9][0-9]\.com$.+\.awsdns-[0-9][0-9]\.net$.+\.awsdns-[0-9][0-9]\.org$".+\.awsdns-cn-[0-9][0-9]\.biz$!.+\.awsdns-cn-[0-9][0-9]\.cn$".+\.awsdns-cn-[0-9][0-9]\.com$".+\.awsdns-cn-[0-9][0-9]\.net$createspace.com kindle.cn +cn kindle.co.jp kindle.co.uk +kindle.com  kindle.de  kindle.es  kindle.fr  kindle.in  kindle.it  kindle.jpkindleoasis.cn +cnkindleoasis.comkindleoasis.com.cn +cnkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com aiv-cdn.netamazonprimevideo.cn +cn#amazonprimevideo.com.cn +cnamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com primevideo.ccprimevideo.comprimevideo.infoprimevideo.org primevideo.tv+images-cn.ssl-images-amazon.com +cn-!images-cn-8.ssl-images-amazon.com +cn amd.comamdfanstore.com +radeon.comiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com +aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com +airmay.com +ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com +beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn +cn  beats1.tv beats1.com.cn +cn beats123.com beats2.com.cn +cn beats4.cn cn -battle.netbattlenet.com.cn -cn bnet.163.com -cnblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.net diablo3.comdiabloimmortal.comdi.res.netease.com -cn!diablo3.nosdn.127.net -cnfiresidegatherings.complayhearthstone.com%hearthstone.nosdn.127.net -cnheroesofthestorm.com%hearthstone.nosdn.127.net -cn"heroes.nos.netease.com -cnplayoverwatch.com#overwatch.nosdn.127.net -cn starcraft.comstarcraft2.comsc2.nosdn.127.net -cnplaywarcraft3.comworldofwarcraft.com wowchina.com -cnwow.nosdn.127.net -cnblizzcon-a.akamaihd.netblz.nosdn.127.net -cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn -cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net -lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com -lpl.com.cn -cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com +beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com +beatsep.cn +cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com +biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net +bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com +cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com +dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com +lyzsxx.com mairbeats.com +makeeu.commallheadphone.commbeats-tech.commbheadphone.com +micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com +ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com +scnshop.cc +shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com +theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net +unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.netapple-icloud.cn +cnappleicloud.cn +cnapplemx-icloud.comicloud-apple.cn +cnicloud-content.comicloud-isupport.com  icloud.ch +icloud.com icloud.com.cn +cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn +cn  icloud.om +icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn +cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com +icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com +me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn +cn itun.es itunbes.com ituneas.comitunes-apple.cn +cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th +itunes.com  itunes.hk  itunes.mx +itunes.org +itunes.rio  itunes.usitunes12days.comitunesapple.cn +cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn +cnitunesradio.comitunesradio.com.cn +cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.netappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cn apple apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cmapple.cn +cn apple.co apple.co.cr apple.co.hu apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk  apple.com apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn +cn apple.com.co apple.com.de apple.com.do apple.com.gr apple.com.gy apple.com.jm apple.com.lk apple.com.mg apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pl apple.com.pr apple.com.pt apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.eu apple.fi apple.fr apple.hamburg apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.jp apple.kr apple.lk apple.lt apple.lv apple.me apple.my  apple.net apple.net.gr apple.nl apple.no apple.pk apple.pl apple.pt apple.ro apple.rs apple.ru apple.sa apple.se apple.sg apple.si apple.sk apple.so apple.tt apple.tw apple.uk apple.usapple.xn--czr694bapple.xn--fiqs8s  apple.xyz aplestore.comapple-store.cn +cnapple-store.netapple-store.wang applestor.com applestore.bg applestore.cc applestore.ch applestore.cm applestore.cn +cnapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.comapplestore.com.auapplestore.com.bnapplestore.com.cn +cnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.tw applestore.de applestore.hk applestore.kr applestore.meapplestore.netapplestore.net.gr applestore.ph applestore.qa applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comapple-appstore.cn +cnappleappstore.cn +cnappleappstore.netappleappstore.tv  appsto.reappstore.co.id appstore.hk appstore.my appstore.phappstoreapple.cn +cn asto.retvappstore.netapple-imac.com appleimac.comimac-apple.comimac-applecomputer.com imac.co +imac.co.nz imac.com imac.eu imac.gr imac.one imac.rs imacapple.comimacapplecomputer.comebookforipad.com euroipad.comfindmyipad.com indiaipad.com +ipad.co.kr ipad.de  ipad.host  ipad.wang  ipad3.com +ipadair.cl +ipadair.cmipadair.com.bripadair.com.es +ipadair.fr +ipadair.hk +ipadair.ie +ipadair.jp +ipadair.twipadaustralia.com ipadmini.cmipadmini.com.lk ipadmini.lk ipadpro.buzz +ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com dl-iphone.comfundaiphone5s.com hebiphone.com hf-iphone.com +iphine.comiphone-8.com.cn +cn iphone-cd.com iphone-cn.com iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.com iphone-x.tv iphone-yh.com iphone-zh.com  iphone.cm +iphone.com iphone.com.au iphone.com.gr  iphone.es iphone.host iphone.net.gr  iphone.pt  iphone.rs  iphone.ru iphone.wang iphone4.comiphone4.com.br iphone4s.com iphone5.comiphone5casescovers.comiphone5s5case.comiphoneacessorios.com.briphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comiphoneclaro.com.briphonecollcase.com iphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang iphonerip.net iphonese.tviphoneunlockimei.com iphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.com ipod.ca ipod.ch ipod.cm ipod.co +ipod.co.nz +ipod.co.uk +ipod.co.za ipod.com ipod.com.au ipod.com.cn +cn ipod.com.fr ipod.com.hk ipod.com.sg ipod.com.tw ipod.de ipod.es ipod.eu ipod.fr ipod.gr ipod.hk ipod.is ipod.net ipod.no ipod.pk ipod.rs ipod.ru ipod.tw ipodcentre.nlipodcleaner.comipoditouch.com ipodnano.com ipodnano.netipodprices.com +ipodrip.caipodrocks.com.au  ipods.comipodshop.com.au ipodtouch.co ipodtouch.com +myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wang mac.wang +macbook.co +macbook.hk +macbook.tw macbook.wang macbookair.cn +cnmacbookair.co.krmacbookair.co.ukmacbookair.commacbookair.com.aumacbookair.com.cn +cnmacbookair.com.es macbookair.es macbookair.hk macbookair.kr macbookair.jpmacbookair.net macbookpro.comacbookpro.commacbookpro.com.aumacbookpro.net macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapple-watch.com.ru applewatch.hk applewatch.tv applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin applemusic.coapplemusic.comapplemusic.com.auapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.com musickit.netwwwapplemusic.comapple.comscoreresearch.com +apple.newsappleenews.comapplenews.berlinapplenews.hamburg applenews.tvapplenewsformat.com apple-pay.com apple-pay.rsapple-pay.wangapplepay.berlinapplepay.co.rsapplepay.com.twapplepay.hamburg applepay.hk applepay.info applepay.jp applepay.rs applepay.tvapplepaycash.cn +cnapplepaycash.com.cn +cnapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.cn +cnapplepaysupplies.com#applepaysupplies.com.cn +cnapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv +i-book.com +i-book.net ibook.co.nz  ibook.com ibook.eu  ibook.netibookpartner.comibooksauthor.com  iphoto.eu  iphoto.no  iphoto.se iphoto.wang  imovie.euimoviegallery.comimoviestage.comapplecare.berlin applecare.cc applecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com appleid-uk.usappleid.berlin appleid.comappleid.hamburg +appleid.hk ids-apple.com myappleid.com appletv.com +appletv.fr appletv.wang appletv4.cn +cnappletv4.com.cn +cnappletvapp.appleappleone.audio appleone.blog appleone.chatappleone.cloud appleone.clubappleone.community appleone.filmappleone.guide appleone.hostappleone.space appleone.techappleone.website +shazam.com1to1computing.com.au1to1conference.com.au 5lml.com +a0pple.net aapl.twairport.brussels airport.com +airport.euairsupportapp.com airtunes.com airtunes.info airtunes.netalchemysynth.com  ap0le.com aple.com  apole.com +app0le.com +appl-e.com appl.com +appl4e.com  appla.comapple-darwin.comapple-darwin.netapple-darwin.org apple-dns.cn +cn apple-dns.comapple-dns.com.cn +cn apple-dns.netapple-enews.comapple-expo.com apple-expo.eu apple-hk.comapple-ibooks.cn +cn apple-inc.netapple-livephotoskit.com apple-maps.cn +cnapple-online.com apple-usa.netappleafrica.comappleantilles.comappleaustralia.comappleaustralia.com.auappleaustralia.net.au applebk.netapplecarbon.com applecard.tvapplecentar.co.rsapplecentar.rsapplecenter.cn +cnapplecenter.com.cn +cnapplecentre.com.auapplecentre.infoappleclub.com.hk applecom.comapplecomputer-imac.comapplecomputer.cn +cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com applecomputer.com.cn +cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoapplecomputers.co.nzapplecoronavirus.com appledns.cn +cnappledns.com.cn +cn appleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comapplehongkong.com.hkappleinclegal.comappleipodsettlement.comappleiservices.com applelink.comapplemagickeyboard.comapplemalaysia.com.myapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com +appleos.tvapplepencil.netapplepodcasts.comapplepremiumreseller.com.au applepremiumresellers.com.auapplereach.comapplereach.net apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoappleshop.co.uk applesiri.cn +cnapplesurveys.comappletaiwan.com appletips.net appleweb.net applexpo.net applezh.com  applf.com +applfe.com +applle.com  applw.comappmediagroup.com +appule.com  appye.com  apyle.com  beddit.tvbraeburncapital.com burstly.netburstlyrewards.com buyaapl.com buyaapl.net buyaple.com camelphat.comcamelspaceeffect.com +carbon.com catalina.hk cdn-apple.com  chomp.com +coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com +dot-mac.de  dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us +earpod.net ecgapp.com.cn cn -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv fanatical.comhumblebundle.com dazn-api.com dazn.com -dazndn.com -indazn.com indaznlab.comdeviantart.comdeviantart.net da-files.comabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com -babble.com babyzone.com -dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za -disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com -dssott.comgo-disneyworldgo.com -go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com -hbonow.com  maxgo.com -112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com -huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com -hulugo.com -huluim.comhuluinstantmessenger.com huluitaly.com hulunet.comhulunetwork.com huluplus.comhulupremium.comhulupurchase.com -huluqa.comhulurussia.com huluspain.comhulusports.comhulustream.com huluteam.com -hulutv.com huluusa.comjoinmaidez.com mushymush.tv -myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com -kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com -netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.netnico -nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net -pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com -movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com -wwtbam.comyourfantasybeginsnow.comsoundcloud.com -sndcdn.com byspotify.com pscdn.co scdn.co spoti.fispotify-everywhere.com spotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com&"audio-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net  tidal.com tidalhifi.com wimpmusic.com  amemv.com -muscdn.com -musical.ly -tiktok.com tiktokcdn.com tiktokv.com#p16-tiktokcdn-com.akamaized.net -dogatch.jp gorin.jpscreens-lab.jp -tver.co.jp tver.jp ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net -vhx.tv -vhxqa1.com -vhxqa2.com -vhxqa3.com -vhxqa4.com -vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com abow.jp angelbeats.jp -anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net wwe.com wwe9.com -z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com blubrry.com  castro.fm fireside.fminternationalsaimoe.com joox.com  linetv.tw litv.tv megaphone.fm moov.hk -odysee.com overcast.fm syosetu.com -weverse.io yande.re -u -CREATIVECOMMONS ccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net -è -ZDNS zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cn -­ - -BLOGSPOT blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn -å -MOZILLA firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net -Ÿ -MUCINEX -mucinex.ca -mucinex.cn mucinex.co.nz mucinex.commucinex.com.cn mucinex.net -mucinex.tvmucinexprofessional.com - -115 115.com - - TEST-IPV6 test-ipv6.com -G -ASAHI  asahi.com asahicom.jpasahishimbun.sc.omtrdc.net -. -ANDROID android.comandroidify.com -ì - -GOOGLE-ADS2mdn.net +ecgapp.netedu-research.org +emac.co.in emac.in  emagic.de +eworld.com faceid99.com faceid99.netfaceidglobal.com faceshift.cn +cn facetime.netfinalcutpro.comfind-apple.com firewire.cl firewire.eu geoport.com +homepod.cn +cn +hopstop.tv ichat.co.in idvd.eu  ikids.comilecture.co.nz ilife.eu ilife.gr +ilife.wang imessage.tv insidear.cn +cninsidemacintosh.comiosinthecar.comipa-iphone.net  ipple.com ischool.com itools.info  iwork.com iwork.se +iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com livephotos.cn +cnlivephotos.com.cn +cn livephotos.tvlojaiphone.com.br mac-mini.com mac.com +mac.com.au +mac.eu +mac.rs macappsto.re macboxset.com mach-os.com mach-os.net +machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com +newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us +touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn +cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com +cn"amp-api.apps.apple.com +cn aod.itunes.apple.com +cn#api-edge.apps.apple.com +cn(apptrailers.itunes.apple.com +cn bag.itunes.apple.com +cn'bookkeeper.itunes.apple.com +cnbooks.apple.com +cn'client-api.itunes.apple.com +cn cma.itunes.apple.com +cn!communities.apple.com +cn(discussionschinese.apple.com +cnfides-pol.apple.com +cn(gspe11-2-cn-ssl.ls.apple.com +cn&gspe12-cn-ssl.ls.apple.com +cn&gspe85-cn-ssl.ls.apple.com +cn!init.itunes.apple.com +cn$iosapps.itunes.apple.com +cn"js-cdn.music.apple.com +cn km.support.apple.com +cnmaps.apple.com +cn$osxapps.itunes.apple.com +cnpd.itunes.apple.com +cn!play.itunes.apple.com +cn$se-edge.itunes.apple.com +cn se2.itunes.apple.com +cn#search.itunes.apple.com +cn1%sf-api-token-service.itunes.apple.com +cnsp.itunes.apple.com +cn&stocks-sparkline.apple.com +cn+streamingaudio.itunes.apple.com +cnsu.itunes.apple.com +cn!sync.itunes.apple.com +cn upp.itunes.apple.com +cn"weather-data.apple.com +cn#^a[1-5]\.mzstatic\.com$ +cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$ +cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$ +cn!^cl[1-5]\.apple\.com$ +cn+^is[1-5](-ssl)?\.mzstatic\.com$ +cn$^s[1-5]?\.mzstatic\.com$ +cna1.mzstatic.com +cna2.mzstatic.com +cna3.mzstatic.com +cna4.mzstatic.com +cna5.mzstatic.com +cn, adcdownload.apple.com.akadns.net +cn!adcdownload.apple.com +cnappldnld.apple.com +cn"appldnld.g.aaplimg.com +cnapps.apple.com +cnapps.mzstatic.com +cn$cdn-cn1.apple-mapkit.com +cn$cdn-cn2.apple-mapkit.com +cn$cdn-cn3.apple-mapkit.com +cn$cdn-cn4.apple-mapkit.com +cn cdn.apple-mapkit.com +cn!cdn1.apple-mapkit.com +cn!cdn2.apple-mapkit.com +cn!cdn3.apple-mapkit.com +cn!cdn4.apple-mapkit.com +cn!cds-cdn.v.aaplimg.com +cn$cds.apple.com.akadns.net +cn cds.apple.com +cn/#cl1-cdn.origin-apple.com.akadns.net +cn cl1.apple.com +cncl2-cn.apple.com +cn<0cl2.apple.com.edgekey.net.globalredir.akadns.net +cn cl2.apple.com +cn/#cl3-cdn.origin-apple.com.akadns.net +cn cl3.apple.com +cn/#cl4-cdn.origin-apple.com.akadns.net +cncl4-cn.apple.com +cn cl4.apple.com +cn/#cl5-cdn.origin-apple.com.akadns.net +cn cl5.apple.com +cn+clientflow.apple.com.akadns.net +cn clientflow.apple.com +cn."configuration.apple.com.akadns.net +cn#configuration.apple.com +cncstat.apple.com +cn."dd-cdn.origin-apple.com.akadns.net +cn(download.developer.apple.com +cngs-loc-cn.apple.com +cngs-loc.apple.com +cn%gsp10-ssl-cn.ls.apple.com +cn!gsp11-cn.ls.apple.com +cn!gsp12-cn.ls.apple.com +cn!gsp13-cn.ls.apple.com +cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net +cn, gsp4-cn.ls.apple.com.edgekey.net +cn gsp4-cn.ls.apple.com +cn gsp5-cn.ls.apple.com +cn%gsp85-cn-ssl.ls.apple.com +cn&gspe19-cn-ssl.ls.apple.com +cn-!gspe19-cn.ls-apple.com.akadns.net +cn"gspe19-cn.ls.apple.com +cn#gspe21-ssl.ls.apple.com +cngspe21.ls.apple.com +cn#gspe35-ssl.ls.apple.com +cniadsdk.apple.com +cn, icloud-cdn.icloud.com.akadns.net +cn icloud.cdn-apple.com +cn'images.apple.com.akadns.net +cn?3images.apple.com.edgekey.net.globalredir.akadns.net +cnimages.apple.com +cn3'init-p01md-lb.push-apple.com.akadns.net +cn init-p01md.apple.com +cn3'init-p01st-lb.push-apple.com.akadns.net +cn%init-p01st.push.apple.com +cn3'init-s01st-lb.push-apple.com.akadns.net +cn%init-s01st.push.apple.com +cn(iosapps.itunes.g.aaplimg.com +cniphone-ld.apple.com +cn is1-ssl.mzstatic.com +cnis1.mzstatic.com +cn is2-ssl.mzstatic.com +cnis2.mzstatic.com +cn is3-ssl.mzstatic.com +cnis3.mzstatic.com +cn is4-ssl.mzstatic.com +cnis4.mzstatic.com +cn is5-ssl.mzstatic.com +cnis5.mzstatic.com +cn'itunes-apple.com.akadns.net +cnitunes.apple.com +cn#itunesconnect.apple.com +cn)mesu-cdn.apple.com.akadns.net +cn+mesu-china.apple.com.akadns.net +cnmesu.apple.com +cnmusic.apple.com +cn(ocsp-lb.apple.com.akadns.net +cnocsp.apple.com +cnoscdn.apple.com +cn-!oscdn.origin-apple.com.akadns.net +cnpancake.apple.com +cn, pancake.cdn-apple.com.akadns.net +cnphobos.apple.com +cn1%prod-support.apple-support.akadns.net +cn#reserve-prime.apple.com +cns.mzstatic.com +cn4(stocks-sparkline-lb.apple.com.akadns.net +cn>2store.apple.com.edgekey.net.globalredir.akadns.net +cn'store.apple.com.edgekey.net +cnstore.apple.com +cn2&store.storeimages.apple.com.akadns.net +cn+store.storeimages.cdn-apple.com +cn2&support-china.apple-support.akadns.net +cnsupport.apple.com +cn."swcatalog-cdn.apple.com.akadns.net +cnswcatalog.apple.com +cnswcdn.apple.com +cnswcdn.g.aaplimg.com +cn'swdist.apple.com.akadns.net +cnswdist.apple.com +cn+swscan-cdn.apple.com.akadns.net +cnswscan.apple.com +cn1%updates-http.cdn-apple.com.akadns.net +cn&updates-http.cdn-apple.com +cnvalid.apple.com +cn-!valid.origin-apple.com.akadns.net +cn<0www.apple.com.edgekey.net.globalredir.akadns.net +cn%www.apple.com.edgekey.net +cn www.apple.com +cn asus.com asus.com.cn +cn atlassian.com bitbucket.org statuspage.io +trello.com trellocdn.comaccbusiness.com +atandt.comatt-bundles.com att-japan.com att-mail.comatt-promotions.com att-rsvp.comatt.cn +cn att.com att.jobs att.net +att.tvattalascom.comattbelieves.comattbusiness.net attcenter.comattcollaborate.com +attcorp.cn +cnattexperts.com attglobal.netattinnovationspace.comattinternetservice.com +attjoy.comattnetclient.comattonlineoffers.com attproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com +attssl.comattstadium.comattsuppliers.com atttvnow.comattuverseoffers.comattuverseonline.com attvoip.com attwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com bellsouth.net +budatt.com +cobatt.com currently.com currently.netdirectvbusinessmarket.comenterprisepaging.com itcanwait.com mymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com signalbar.comsundayready.com synaptic.netthanksloyalty.com tvpromise.com +uverse.comwebhosting.com att-idns.net +attdns.com +attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.com dierectv.com +dirctv.com direcpath.com direcpath.netdirecttv-deals.tvdirecttv-dish.com dkrecttv.com directtv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.com directv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.com direectv.com +diretv.comdtv2009offers.comfreedirecttvspecial.com getdirect.tv hddirectv.com le-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com txdirectv.com  xandr.combandwagonhost.com bwh1.net bwh8.net  bwh88.net canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn +cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn +cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn +cn  cisco.com cisco.com.cn +cn +cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co +devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com +mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com +mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn +cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com +versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org +mearki.com meraki-go.com  meraki.hk merakigo.com +tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net clco.cc +cloudc.one cloudcone.com cloudcone.net +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.comaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me  igcdn.com igsonar.com igtv.com imstagram.com imtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.com instagda.com instagify.cominstagmania.com instagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com instagran.cominstagranm.com instagrem.com instagrm.cominstagtram.com instagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net instastyle.tv instgram.com intagram.com intagrm.com intgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me messenger.com +nbabot.net binoculus.com buyoculus.com ocul.usoculus-china.com +oculus.comoculus2014.com oculus3d.comoculusblog.comoculusbrand.comoculuscasino.net oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.com oculusvr.compowersunitedvr.com wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.com acebooik.com acebook.comadvancediddetection.comaskfacebook.netaskfacebook.org +atdmt2.com atlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com click-url.comcomo-hackearfacebook.comcrowdtangle.com dacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.com faacebok.com faacebook.com faasbook.com facbebook.com facbeok.com +facboo.com facbook.com facbool.com facboox.com faccebook.comfaccebookk.com facdbook.com facdebook.com face-book.com faceabook.com facebboc.com facebbook.comfacebboook.com facebcook.com facebdok.com facebgook.com facebhook.com facebkkk.com facebo-ok.com faceboak.com facebock.com facebocke.com facebof.com faceboik.com facebok.comfacebokbook.com facebokc.com facebokk.com facebokok.com faceboks.com facebol.com facebolk.com facebomok.com faceboo.com facebooa.com faceboob.comfaceboobok.com facebooc.com faceboock.com facebood.com facebooe.com faceboof.com facebooi.com facebooik.com facebooik.org facebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.net facebook.br facebook.ca facebook.cc facebook.comfacebook.design facebook.net facebook.hu facebook.in fecebook.net facebook.nl facebook.org facebook.se facebook.shop facebook.tv facebook.us facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com facebookw.comfacebookworld.com facebool.com facebool.info facebooll.com faceboom.com faceboon.com faceboonk.comfaceboooik.com faceboook.com faceboop.com faceboot.com faceboox.com facebopk.com facebpook.com facebuk.com facebuok.com facebvook.com facebyook.com facebzook.comfacecbgook.com facecbook.com facecbook.org facecook.com facecook.org facedbook.com faceebok.com faceebook.com faceebot.com facegbok.com facegbook.com faceobk.com faceobok.com faceobook.com faceook.comfacerbooik.com facerbook.com facesbooc.comfacesounds.com facetook.com facevbook.com facewbook.co facewook.comfacfacebook.com facfebook.com fackebook.com facnbook.com facrbook.com facvebook.com facwebook.com facxebook.com fadebook.com +faebok.com faebook.com faebookc.com faeboook.com faecebok.com faesebook.comfafacebook.com faicbooc.com fasebokk.com fasebook.com faseboox.com favebook.com faycbok.com +fb.careers +fb.com fb.me fbacebook.com fbbmarket.comfbboostyourbusiness.com  fbcdn.com  fbcdn.netfbfeedback.com +fbhome.com fbidb.io  fbinc.comfbinnovation.comfbmarketing.com  fbreg.com +fbrpms.com  fbsbx.com  fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org  fburl.comfbworkmail.com fcacebook.com fcaebook.com fcebook.com fcebookk.comfcfacebook.comfdacebook.info feacboo.com feacbook.com feacbooke.com feacebook.com fecbbok.com fecbooc.com fecbook.com feceboock.com feceboox.com fececbook.com  feook.com ferabook.com fescebook.com fesebook.com ffacebook.com fgacebook.com ficeboock.com fmcebook.com fnacebook.com fosebook.com fpacebook.com fqcebook.com fracebook.com  freeb.comfreebasics.comfreebasics.net +freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.com fsacebok.com fscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.org gacebook.com gameroom.comgfacecbook.com +groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.org internet.org klik.me liverail.com liverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.com myfbfans.com newsfeed.com nextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.com rocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.net thefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com +redkix.com workplace.comworkplaceusecases.comfbcdn-a.akamaihd.net  aorus.com aoruszone.cn +cn gigabyte.cn +cn gigabyte.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net godaddy.comx.co godaddy android.comandroidify.com blogspot.ae blogspot.al blogspot.am blogspot.ba blogspot.be blogspot.bg blogspot.bj blogspot.ca blogspot.cf blogspot.ch blogspot.clblogspot.co.atblogspot.co.idblogspot.co.ilblogspot.co.keblogspot.co.nzblogspot.co.ukblogspot.co.za blogspot.comblogspot.com.arblogspot.com.aublogspot.com.brblogspot.com.byblogspot.com.coblogspot.com.cyblogspot.com.eeblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.ngblogspot.com.trblogspot.com.uy blogspot.cv blogspot.cz blogspot.de blogspot.dk blogspot.fi blogspot.fr blogspot.gr blogspot.hk blogspot.hr blogspot.hu blogspot.ie blogspot.in blogspot.is blogspot.it blogspot.jp blogspot.kr blogspot.li blogspot.lt blogspot.lu blogspot.md blogspot.mk blogspot.mx blogspot.my blogspot.nl blogspot.no blogspot.pe blogspot.pt blogspot.qa blogspot.re blogspot.ro blogspot.rs blogspot.ru blogspot.se blogspot.sg blogspot.si blogspot.sk blogspot.sn blogspot.td blogspot.tw blogspot.ug blogspot.vn dart.dev dartlang.org dartpad.dev fastlane.cifastlane.tools flutter.devflutterapp.com go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org2mdn.net ads admob.com ads adsense.com ads'adsensecustomsearchads.com @@ -6873,19 +5800,2483 @@ GOOGLE-ADS2mdn.net ads urchin.com ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +adscharlestonroadregistry.comregistry.google get.app get.dev get.how get.page iam.soyxn--p8j9a0d9c9a.xn--q9jyb4cscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skscholar.l.google.compolymer-project.orgpolymerproject.org +v8.dev v8project.org youtubeggpht.cn +cn  ggpht.comgooglevideo.comwithyoutube.com youtu.beyoutube-nocookie.com +youtube.ae +youtube.al +youtube.am +youtube.at +youtube.az +youtube.ba +youtube.be +youtube.bg +youtube.bh +youtube.bo +youtube.by +youtube.ca youtube.cat +youtube.ch +youtube.cl +youtube.co youtube.co.ae youtube.co.at youtube.co.cr youtube.co.hu youtube.co.id youtube.co.il youtube.co.in youtube.co.jp youtube.co.ke youtube.co.kr youtube.co.ma youtube.co.nz youtube.co.th youtube.co.tz youtube.co.ug youtube.co.uk youtube.co.ve youtube.co.za youtube.co.zw youtube.comyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve +youtube.cr +youtube.cz +youtube.de +youtube.dk +youtube.ee +youtube.es +youtube.fi +youtube.fr +youtube.ge +youtube.gr +youtube.gt +youtube.hk +youtube.hr +youtube.hu +youtube.ie +youtube.in +youtube.iq +youtube.is +youtube.it +youtube.jo +youtube.jp +youtube.kr +youtube.kz +youtube.la +youtube.lk +youtube.lt +youtube.lu +youtube.lv +youtube.ly +youtube.ma +youtube.md +youtube.me +youtube.mk +youtube.mn +youtube.mx +youtube.my +youtube.ng +youtube.ni +youtube.nl +youtube.no +youtube.pa +youtube.pe +youtube.ph +youtube.pk +youtube.pl +youtube.pr +youtube.pt +youtube.qa +youtube.ro +youtube.rs +youtube.ru +youtube.sa +youtube.se +youtube.sg +youtube.si +youtube.sk +youtube.sn youtube.soy +youtube.sv +youtube.tn +youtube.tv +youtube.ua +youtube.ug +youtube.uy +youtube.vnyoutubeeducation.comyoutubefanfest.comyoutubegaming.comyoutubego.co.idyoutubego.co.in youtubego.comyoutubego.com.br youtubego.id youtubego.inyoutubei.googleapis.comyoutubekids.comyoutubemobilesupport.com yt.be  ytimg.comand +chromedclkgbizgle gmailgoogoog +googleguge hangout nexus xn--qcka1pmc  google.ad  google.ae  google.al  google.am  google.as  google.at  google.az  google.ba  google.be  google.bf  google.bg  google.bi  google.bj  google.bs  google.bt  google.by  google.ca +google.cat  google.cd  google.cf  google.cg  google.ch  google.ci  google.cl  google.cm google.cn +cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.id google.co.il google.co.in google.co.jp google.co.ke google.co.kr google.co.ls google.co.ma google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw +google.com google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn  google.cv  google.cz  google.de  google.dj  google.dk  google.dm  google.dz  google.ee  google.es  google.fi  google.fm  google.fr  google.ga  google.ge  google.gg  google.gl  google.gm  google.gr  google.gy  google.hn  google.hr  google.ht  google.hu  google.ie  google.im  google.iq  google.is  google.it  google.je  google.jo  google.kg  google.ki  google.kz  google.la  google.li  google.lk  google.lt  google.lu  google.lv  google.md  google.me  google.mg  google.mk  google.ml  google.mn  google.ms  google.mu  google.mv  google.mw  google.ne  google.nl  google.no  google.nr  google.nu  google.pl  google.pn  google.ps  google.pt  google.ro  google.rs  google.ru  google.rw  google.sc  google.se  google.sh  google.si  google.sk  google.sm  google.sn  google.so  google.sr  google.st  google.td  google.tg  google.tl  google.tm  google.tn  google.to  google.tt  google.vg  google.vu  google.ws 0emm.com  1e100.net  1ucrs.com +466453.com abc.xyz adgoogle.net +admeld.comangulardart.org +api.ai +apigee.com appbridge.ca appbridge.io appbridge.it appspot.com +apture.com area120.com +asp-cc.com autodraw.com bandpage.combaselinestudy.combaselinestudy.org bazel.build bdn.devbeatthatquote.com  blink.org blogblog.com blogger.combrocaproject.com +brotli.org bumpshare.com +bumptop.ca bumptop.com bumptop.net bumptop.org bumptunes.comcampuslondon.com certificate-transparency.org +chrome.comchromebook.comchromecast.com chromeos.dev chromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudrobotics.comcobrasearch.com codespot.com conscrypt.com conscrypt.orgcookiechoices.org  coova.com  coova.net  coova.orgcrossmediapanel.com crr.com  cs4hs.comdartsearch.netdataliberation.org  debug.comdebugproject.com deepmind.comdevsitetest.howdialogflow.comdigitalassetlinks.org episodic.comfeedburner.com +fflick.comfinanceleadsonline.comfirebaseapp.comfirebaseio.com +foofle.com froogle.com fuchsia.dev  g-tun.comg.cn +cng.co g.dev +g.page gateway.dev +gcr.iogerritcodereview.comgetbumptop.com ggoogle.com gipscorp.com gkecnapps.cn +cn globaledu.org  gmail.com gmodules.com  gogle.com +gogole.comgonglchuangl.net +goo.gl +googel.com +googil.com  googl.comgoogle-syndication.com google.berlin +google.dev +google.net +google.orggoogle.ventures"googleacquisitionmigration.com googleapis.cn +cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com googlebot.comgooglecapital.comgooglecert.netgooglecnapps.cn +cngooglecode.comgooglecommerce.comgooglecompare.co.ukgoogledanmark.comgoogledomains.comgoogledrive.com googlee.comgoogleearth.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com +googlr.com +goolge.com gooogle.com gridaware.app gsrc.io +gstatic.cn +cn gstatic.comgstaticcnapps.cn +cn +gsuite.com +gv.com gvt0.com gvt1.com gvt2.com gvt3.com gvt5.com gvt6.com gvt7.com gvt9.comhdrplusdata.org hindiweb.comhowtogetmo.co.ukhtml5rocks.com hwgo.comiamremarkable.org igoogle.com impermium.com +j2objc.orgjibemobile.com keyhole.comkeytransparency.comkeytransparency.fookeytransparency.org lanternal.com like.commadewithcode.com material.io mdialog.com meet.newmfg-inspector.commobileview.pagemoodstocks.com near.by nest.com nomulus.foo +oauthz.com on.here on2.comonefifteen.netonefifteen.orgoneworldmanystories.com openthread.io openweave.io orbitera.com  page.linkpagespeedmobilizer.com pageview.mobi panoramio.compartylikeits1986.orgpaxlicense.org +picasa.com picasaweb.com picasaweb.net picasaweb.org +picnik.com pittpatt.com +pixate.com postini.comprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.com quiksee.com +revolv.comridepenguin.com run.appsavethedate.foo +saynow.com schemer.comscreenwisetrends.comscreenwisetrendspanel.com snapseed.com solveforx.com +stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org synergyse.comtensorflow.org  tfhub.devthecleversense.comthegooglestore.comthinkquarterly.co.ukthinkquarterly.comthinkwithgoogle.com tiltbrush.com txcloud.net  txvia.comunfiltered.news useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com +verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org +wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com +webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company +x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com +cn%gstaticadssl.l.google.com +cnwww.recaptcha.net +cn265.com +cn2mdn.net +cn adservice.google.com +cnapp-measurement.com +cn beacons.gcp.gvt2.com +cnbeacons.gvt2.com +cnbeacons3.gvt2.com +cn c.admob.com +cn(c.android.clients.google.com +cn!cache.pack.google.com +cncheckin.gstatic.com +cn%clickserve.dartsearch.net +cn)clientservices.googleapis.com +cn)connectivitycheck.gstatic.com +cncorp.google.com +cn crl.pki.goog +cncsi.gstatic.com +cn dl.google.com +cndl.l.google.com +cndoubleclick.net +cn-!firebase-settings.crashlytics.com +cn fonts.googleapis.com +cnfonts.gstatic.com +cn google-analytics.com +cn googleadservices.com +cngoogleanalytics.com +cn!googlesyndication.com +cn googletagmanager.com +cn!googletagservices.com +cngtm.oasisfeng.com +cn!imasdk.googleapis.com +cn ocsp.pki.goog +cn, pagead-googlehosted.l.google.com +cn!pki-goog.l.google.com +cn recaptcha.net +cnredirector.gvt1.com +cn)safebrowsing-cache.google.com +cn'safebrowsing.googleapis.com +cn$settings.crashlytics.com +cn-!ssl-google-analytics.l.google.com +cnssl.gstatic.com +cn%toolbarqueries.google.com +cntools.google.com +cntools.l.google.com +cn$translate.googleapis.com +cn!update.googleapis.com +cn-!www-googletagmanager.l.google.com +cnwww.gstatic.com +cn  hinet.net csifund.org hkbn.com.hk hkbn.net +hkbnes.net jos.comspeedtest.com.hk +123-hp.com123hplaserjet.com8008206616.com as-hp.cabaterias-hp.com campushp.comcolorprotechnology.com +compaq.orgdavid-laserscanner.com demoprint.comdigitalpack.com eprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com hp-invent.comhp-invent.info +hp-mns.comhp-printing.comhp-webplatform.com  hp-ww.com +hp.com +hp.company hp.io hp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.com hpbundle.com hpcampus.comhpcatridge.com  hpccp.com  hpceo.com  hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com  hpcpi.com hpcu.orghpcustomersupport.comhpcustomersupport.net +hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.com hpdriver.com hpdrivers.com hpdrivers.org hpeclipse.com hpengage.com hpeprint.comhpeprintcenter.com hpeurope.comhpeventcenter.com +hpfaqs.comhpfeedback.com +hpgift.com +hpgpas.comhpgraphicspartners.com  hpiie.org +hpinc.info  hpinc.nethpindigopress.com hpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.com hplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com hplfmedia.com  hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com +hpmini.com hpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.com hpserver.comhpservices.comhpshooping.com +hpshop.com hpshoping.com hpshopping.hk hpsignage.com hpsmart.com hpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com hpspeaker.comhpsprocket.com  hpsso.comhpstore-china.comhpstore-emea.com +hpstore.cn +cn hpstore.comhpstorethailand.com hpsupport.comhpsuresupply.comhptechventures.com hpto.net hptouch.comhptouchpointmanager.comhptrainingcenter.com  hpuae.comhpuniversity.infohpusertraining.com +hpveer.comhpvirtualthin.com hpwallart.comhpwellnesscentral.com  hpwsn.com i-123-hp.com inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tv www8-hp.comxn--6eup7j.comxn--6eup7j.nethpstore.corpmerchandise.comibmweatherchannel weatherappdomain.cloud bluemix.com bluemix.net ibm.com +ibm.eu ibm.net +ibm.us s-bluemix.net s81c.com +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn +cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn +cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt +altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com +intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn +cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com +niosii.com +niosii.netomekinteractive.com +omnitek.tv openamt.comopendroneid.orgoptanedifference.com +pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com +siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net +vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn +xscale.combarefootnetworks.com +lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com +lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net linkedin.com  licdn.com logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net imgsmail.ru mail.ru mycdn.me azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn +cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn +cnchinacloudapp.cn +cnchinacloudsites.cn +cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn +cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com +git.io github.blog +github.comgithub.community +github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com +apisof.net appcenter.ms +blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com +jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn +cn#microsoftreactor.com.cn +cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn +cn +sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com +beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com +mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org +xbox360.co xbox360.com +xbox360.eu xbox360.org +xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn +cn xboxlive.com +xboxone.co xboxone.com +xboxone.euxboxplayanywhere.comxboxstudios.com +xbx.lv  microsoft azure hotmail +office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com +m12.vc +aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com +binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com +ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com +gears5.com gearspop.comgearstactics.com +gfx.ms +gigjam.com hololens.com +hotmail.co hotmail.com +hotmail.eu hotmail.net hotmail.orghummingbird.ms +ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl +ingads.comintunewiki.comiotinactionevents.com +kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn +cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn +cn +msauth.netmschallenge2018.com +msecnd.net +msedge.net  msft.info msft.net msftauth.cn +cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com +msocdn.com +msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com +office.com +office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net +pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com +pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net +sfx.ms sharepoint.cn +cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com +techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com +userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net +wbd.ms what-fan.netwindows-int.net windows.com windows.net +windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com +winhec.com +winhec.net +yammer.com(dl.delivery.mp.microsoft.com +cn&download.windowsupdate.com +cn'bg.v4.a.dl.ws.microsoft.com +cn(bg4.v4.a.dl.ws.microsoft.com +cn2&cdn.marketplaceimages.windowsphone.com +cn cn.windowssearch.com +cn#ctldl.windowsupdate.com +cn#developer.microsoft.com +cndocs.microsoft.com +cn"download.microsoft.com +cn/#download.visualstudio.microsoft.com +cnfs.microsoft.com +cn(msgr.dlservice.microsoft.com +cn, msgruser.dlservice.microsoft.com +cn#officecdn.microsoft.com +cn&qh.dlservice.microsoft.com +cnsdx.microsoft.com +cn/#silverlight.dlservice.microsoft.com +cn, slupdate.dlservice.microsoft.com +cn, storeedgefd.dsx.mp.microsoft.com +cn&wl.dlservice.microsoft.com +cn&wscont1.apps.microsoft.com +cn&wscont2.apps.microsoft.com +cnwww.microsoft.com +cn&xb.dlservice.microsoft.com +cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net firefox.comdeveloper.mozilla.org($interactive-examples.mdn.mozilla.netmdn.mozillademos.orgmedia.prod.mdn.mozit.cloud rust-lang.org  rustup.rs  crates.io docs.rsmozilla.community mozilla.net mozilla.org bugzilla.org getpocket.comseamonkey-project.orgthunderbird.net +lin.eeline-apps-beta.com line-apps.com line-beta.me line-cdn.net line-scdn.net line.me line.naver.jp linecorp.comlinefriends.comlinefriends.com.tw linegame.jplinemobile.com  linetv.tw +nhncorp.jp grafolio.com  naver.com naver.jp  naver.net navercorp.com  plug.game pstatic.net webtoons.com neuralink.com +geforce.cn +cn geforce.co.kr geforce.co.uk geforce.comgeforce.com.twgputechconf.cn +cngputechconf.co.krgputechconf.comgputechconf.com.augputechconf.com.twgputechconf.eugputechconf.ingputechconf.jp nvidia.asia  nvidia.at  nvidia.be  nvidia.ch nvidia.cn +cn nvidia.co.at nvidia.co.in nvidia.co.jp nvidia.co.kr nvidia.co.uk +nvidia.com nvidia.com.au nvidia.com.br nvidia.com.mx nvidia.com.pe nvidia.com.pl nvidia.com.tr nvidia.com.tw nvidia.com.ua nvidia.com.ve  nvidia.cz  nvidia.de  nvidia.dk  nvidia.es  nvidia.eu  nvidia.fi  nvidia.fr  nvidia.in  nvidia.it  nvidia.jp  nvidia.lu  nvidia.mx  nvidia.nl  nvidia.no  nvidia.pl  nvidia.ro  nvidia.ru  nvidia.se  nvidia.twnvidiaforhp.comshotwithgeforce.com tegrazone.cotegrazone.co.kr tegrazone.com tegrazone.jp tegrazone.krnvidia.tt.omtrdc.net +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net  panasonic panasonic.cn +cn panasonic.com panasonic.jp technics.com 1010.com.hkesmarthealth.com  hkcsl.comhkt-enterprise.com hkt-eye.com hkt.comhkteducation.comhktpremier.com hktshop.comnetvigator.comtheclub.com.hk uhub.com now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com +viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net pccw.compccwglobal.compccwsolutions.com moov.hkairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org +iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com +qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com +uplinq.com wipower.comwirelessreach.com +brewmp.comqualcomm.sc.omtrdc.net  razer.comrazersupport.com razerzone.com razerzone.jprespawnbyrazer.com appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com samsung +xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.net knoxemm.com samsung.comsamsungapps.comsamsungcloud.com samsungdm.comsamsungeshop.com.cn +cnsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.combarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com +sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com +snapkit.co playstationplaystation.complaystation.net sonyentertainmentnetwork.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com +wwtbam.comyourfantasybeginsnow.comsonyginzasonypark.jpsony-africa.com sony-asia.comsony-europe.comsony-hes.co.jpsony-latin.com sony-mea.comsony-olympus-medical.comsony-promotion.eusony-semicon.co.jp sony.at sony.ba sony.be sony.bg sony.ca sony.ch sony.cl +sony.co.cr +sony.co.id +sony.co.in +sony.co.jp +sony.co.kr +sony.co.nz +sony.co.th +sony.co.uk sony.com sony.com.ar sony.com.au sony.com.bo sony.com.br sony.com.co sony.com.do sony.com.ec sony.com.gt sony.com.hk sony.com.hn sony.com.mk sony.com.mx sony.com.my sony.com.ni sony.com.pa sony.com.pe sony.com.ph sony.com.sg sony.com.sv sony.com.tr sony.com.tw sony.com.vn sony.cz sony.de sony.dk sony.ee sony.es sony.eu sony.fi sony.fr sony.gr sony.hr sony.hu sony.ie sony.it sony.kz sony.lt sony.lu sony.lv sony.net sony.nl sony.no sony.pl sony.pt sony.ro sony.rs sony.ru sony.se sony.si sony.sk sony.ua sonybo.co.jp sonybsc.comsonybuilding.jpsonydesign.com sonydna.comsonyglobalsolutions.jp sonykigyo.jpsonylatvija.com +sonypcl.jpsonyprotechnosupport.co.jpsonystoragemedia.co.jp sonytc.co.jp  sovec.net +spacex.comboringcompany.com x.comads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com +twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.couber-assets.com uber.com ubereats.com +oath.cloud oath.com ouroath.comstatic-verizon.com +uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com +xo.com mvk.com userapi.com  vk-cdn.me +vk-cdn.net vk-portal.net vk.cc +vk.com  vk.design vk.link vk.me vkcache.com vkgo.app +vklive.appvkmessenger.comvkmessenger.app vkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netg-technology.com +sandisk.ae +sandisk.it +sandisk.cn +cn sandisk.co.jp sandisk.co.kr sandisk.co.uk sandisk.comsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw +sandisk.de +sandisk.es +sandisk.fr +sandisk.hk +sandisk.id +sandisk.in +sandisk.nl +sandisk.sg +wd.com wdc.comwesterndigital.com +flickr flic.kr +flickr.com +flickr.netstaticflickr.com ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn +cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn +cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com +myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.comxn--d1acpjx3f.xn--p1ai  yandex.az  yandex.by yandex.co.il +yandex.com yandex.com.am yandex.com.ge yandex.com.tr  yandex.ee  yandex.kg  yandex.kz  yandex.lt  yandex.lv  yandex.md +yandex.net  yandex.ru  yandex.st  yandex.sx  yandex.tj  yandex.tm  yandex.ua  yandex.uzyandexcloud.net yastatic.net +yandex +€ + INTEL-DEV +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org +õ +BBCbbc  bbc.co.uk bbc.com +bbci.co.ukbbcverticals.combbcfmt.s.llnwi.net bidi.net.ukbbcmedia.co.uk +bbc.net.uk"vod-dash-ww-live.akamaized.net#vod-thumb-ww-live.akamaized.net"vod-dash-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net +ˆ +SINA  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com ads -, +1 +HOMEBREW brew.shhomebrew.bintray.com + +ALI213 +ali213.net + +CATEGORY-VPNSERVICES 928.plus +zind.cloud boslife.biz boslife.net +cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net n3ro.lol n3ro.net n3ro.wtf nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.meshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.netairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz aaex.uk amytele.com +ark.tobaicaonetwork.com bighead.groupblinkload.zone  cloudn.me  conair.me cordcloud.org ctyun.online geph.io  maying.comocloudplus.com  mray.club muncloud.dog renzhe.cloud +ssplive.pw +ssrpass.pwstc-server.com +Ÿ +QIHOO360 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn +– + SOUNDOFHOPE bayvoice.net ozvoice.org sohcradio.com sohfrance.orgsoundofhope.krsoundofhope.orgwanokokorosoh.com +µ +LOGITECH logi.comlogicool.co.jp logicoolg.com logitech.biz logitech.com logitech.fr logitechg.com logitechg.frworldsfastestgamer.net +$ +CAS +csdl.ac.cn  las.ac.cn +@ + DIGITALOCEANdigitalocean.comdigitaloceanspaces.com ++ +LINKEDIN linkedin.com  licdn.com + + APPLE-DEVappleswift.com  swift.org +swiftui.cn +cnswiftui.com.cn +cncalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn +cnresearchkit.com.cn +cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io +webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net +{ + CLARIVATEnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com +< +DOCKERcompose-spec.io +docker.com  docker.io + +MOCHA mochajs.org +" + TYPENETWORKtypenetwork.com + + WORDPRESSvideopress.com w.org wordpress.com wordpress.org wordpress.tv wp-themes.com +wp.com  wpvip.com +è +ZDNS zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cn + -HOTJAR-ADSstatic.hotjar.com +CUGBONLINE cugbonline.cn +2 + GROWINGIO-ADS!assets.growingio.com ads + +OSDN osdn.net +g + READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org + +WEBFLOW webflow.com +é» +GEOLOCATION-CN +42r.cn +5566ua.com aurorapush.cn +e0n.cn japps.cn jchat.io +jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com +jsurvey.cn  jvoice.cn +kc9.cn +n0q.cn pushcfg.com +s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com +uyunad.comwhalecloud.comalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads bootcss.com +bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn +dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn +flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn +tlgslb.com +maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com +yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com +qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com +lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org +wangsu.com +wscdns.com wscdns.info +wscdns.org yfcache.com +yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net +yfscdn.net yunfancdn.com +boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com +ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn +bsb.com.cn ccb.comcgbchina.com.cn +cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn +hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com +sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com +ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn +hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com +shgsec.com +shhxzq.com shzq.com stocke.com.cn +swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com +ztfsec.com +zts.com.cn +99fund.com +abc-ca.com avicfund.cn  bdfund.cn +bobbns.com boscam.com.cn +bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com +ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com +fsfund.com +ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com +hffunds.cn hftfund.comhongdefund.com +hsfund.com huaan.com.cn +igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn +nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn +py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn +zhfund.com +zofund.com +5ifund.com +fund123.cn +howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com +csc108.com csci.hk +ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com +eb-ind.com ebasset.com ebchina.comebchinaintl.com +ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com +pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com +58.com  58.com.cn 5858.com  58che.com 58xueche.com +anjuke.comanjukestatic.com chinahr.com +daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn +skysea.com  suanya.cn +suanya.com +tieyou.com +toptown.cn toursbms.com trip.com tripcdn.com +vipdlt.com dangdang.com ddimg.cn +ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com +360buy.com 360buyimg.com +360top.com +7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn +dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com +jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com +jd-app.com  jd-ex.com jd.cn jd.co.th +jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com +jingxi.com +jkcsjd.com +joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn +paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com +vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads lianjia.com  ljcdn.com manmanbuy.com dianping.com +maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com +pddpic.com pinduoduo.com yangkeduo.com  smzdm.com +zdmimg.com cnsuning.com +suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn +17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com +ly.com  vancl.com vanclimg.com  vcimg.com +youzan.com yzcdn.cn youzanyun.com +ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com +4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn +ads +acplay.netdandanplay.com +ali213.net +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com +ddmogo.com +igetget.cn igetget.com luojilab.com  mogoo.com +sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com +gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +ads  jjwxc.net ku6.com +ku6cdn.com +ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com +yximgs.com log-sdk.gifshow.com +adswlog.kuaishou.com +ads  kgimg.com  kugou.com +le.com lecloud.com +lemall.com letv.com letvcdn.com letvimg.com miaopai.com +mihoyo.com bh3.com  pplive.cn +pplive.com pptv.com qingting.fm  sfacg.com +61.com +taomee.com +tapimg.com +taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com +vgtime.com ximalaya.com  xmcdn.com +kumiao.com  youku.com  ykimg.com +mmstat.com soku.com +cibntv.net +duowan.com dwstatic.com +yy.com yystatic.com  zhanqi.tv +heytea.com chiphell.com +douban.com  douban.fm doubanio.com erji.net +hacpai.com  ld246.com +nga.cn 178.com +ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com +caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn +cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn +cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn +ipanda.com ipanda.com.cn +ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn +cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com +ifanrx.com +minapp.com jiemian.comjiemian.com.cn +lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com +ithome.com lapin365.com ruanmei.com +saayaa.com win7china.com win8china.com sohu.com +sohucs.com +itc.cn solidot.org  sspai.com tmtpost.com chaindd.com +72whys.com checkzeit.com +tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com +imedao.comsnowballsecurities.com +xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn +nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com +jrj.com.cn  jrjimg.cn +cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn +ths123.com +dzh.com.cn  gw.com.cn +yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com +csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn +afdian.net afdiancdn.com agora.io +agoraio.cn agoralab.co +antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com +pg0.cn +chinaz.com +chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com +jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com +lanzou.com lanzous.com woozooo.com +liepin.com +lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net +renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com +wiwide.com +sojump.com +wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn +wf.pub speiyou.com +xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me +coding.net csdn.net +csdnimg.cn  deepin.cn +deepin.com  deepin.io +deepin.org  gitee.com gitee.iojinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com +tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn +sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com +tipdim.orgxueyuanjun.com alibaba +alipay +taobao tmall a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com +alicdn.com alidayu.com +alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com +aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn +aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk +aliimg.com +alikmd.com alimama.com alimebot.com +alimei.com alios.cn +alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com +aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn +asczwa.comasczxcefsv.com +asmlink.cn atatech.org +b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com +dfkhgj.com doctoryou.ai doctoryou.cn dongting.com +dratio.com emas-poc.com +gongyi.xin ialicdn.com iconfont.cn +ics.design +jhgtgb.com +kanbox.com +lazada.comliangxinyao.com m-now.cn +maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com +zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com +hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com +mashort.cn pailitao.com +taobao.com +taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn +feizhu.com +fliggy.com  fliggy.hk +iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +ads zuoyebang.cc zuoyebang.com +zybang.com baidu +91.com +aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com +baifae.com baifubao.com +bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn +bdydns.com +bdydns.net chuanke.com  dlnel.com  dlnel.org +duapps.com +dwz.cn +hao123.com hao123img.com +hao222.com +haokan.com jomocdn.net jomodns.com +mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com +bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com +douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com +pstatp.com +snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com +wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com +ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn +huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn +wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com +ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com +163yun.com 166.net +haowu.linkicourse163.org  kaola.com +lofter.com  nease.netnetease-inc.com netease.com +netease.im +qiyukf.com ydstatic.com yeah.net +youdao.comanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads coloros.com finzfin.com +heytap.com heytapcs.comheytapdownload.comheytapimage.com +myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn +realme.com realmebbs.comrealmemobile.com oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team +75team.com baomitu.com +360.cn 360.com +360-jr.com 360chou.com360daikuan.com360huzhubao.com +360jie.com360jinrong.net +360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com +haosou.com haosou.com.cn +haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com +qihuapi.cn qihucdn.com  qihoo.com qikucdn.com +so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com +youhua.com  yunpan.cn  97973.com +picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com +sinaimg.cn sinaimg.com  sinajs.cn +sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +ads +go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn +dnspod.com dnspod.com.cn +dnspod.net +dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +yuewen.com hongxiu.com lrts.me qdmm.com +qidian.com readnovel.com tingbook.com webnovel.com +xs8.cn xxsy.net +apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com +qcloud.com qcloudimg.com qlogo.cn qpic.cn +qq.com +qqmail.com  qzone.com +rtx.com.cnservicewechat.com smtcdns.com smtcdns.net +tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com +tenpay.com +wechat.com +wegame.com wegame.com.cn +weiyun.com alloyteam.com imweb.io ivweb.io +mi.com +mi-img.com  mifile.cn miui.com +miwifi.com  xiaomi.cn +xiaomi.com +xiaomi.netxiaomiyoupin.com +sandai.netthunderurl.com +xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn +cmvideo.cn miguvideo.com andfx.cn  andfx.net +cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com +055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com +114chn.com 114piaowu.com 114shouji.com +119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com +310win.com +315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc +35.com 3533.com 360aiyi.com +360doc.com  360jq.com 360zhyx.com +365azw.com +365dmp.com +37.com 3733.com 3839.com +39.net 3conline.com 3d66.com +3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me +50bang.org +51.com 51.la +510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com +51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com +52miji.com 52pk.com 52z.com 53kf.com +55.com +56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com +6rooms.com 714.com 7230.com +72byte.com  7down.com 7k7k.com  7moor.com 7po.com +7x24cc.com +7xdown.com  818ps.com  84399.com 885.com +900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com +9xgame.com 9xu.com a9vg.com +aardio.com +adxvip.com +afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com +aizhan.comalittle-tea.com +allyes.com anfensi.com +anquan.org +anruan.com +aotrip.net  aoyou.com apk3.com apk8.com appchina.com +appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com +bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com +bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com +caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com +carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org +ch.com chachaba.com changba.com chashebao.comchazhengla.com +che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com +chouti.com chuangxin.com chuansong.mechuansongme.com +chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com +cnbeta.com cnbetacdn.com cnblogs.com +cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com +cofeed.com +cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com +csmjzs.com csslcloud.net +ctfile.com ctiforum.com ctoutiao.com  ctsbw.com +cubead.com  cwxzx.com +cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com +danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com +dcdkjx.com  dd373.com  ddooo.com dedecms.com deepinos.org develenv.com +dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com +diopic.net diyiyou.com dj99.com  docin.com dockerone.com +dockone.io dogedoge.com +donews.com +dongao.comdongguantoday.com dopa.com +douxie.com +downcc.com downxia.com +downyi.com +dpfile.comdreams-travel.comdrivergenius.com +dui.ai duiopen.com duoduocdn.com duokanbox.com +duomai.com duoshuo.com  duote.com dxpmedia.com +dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com +eayyou.com  ebico.com  ebrun.com +ecitic.com ecjobhome.com +edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com +emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net +feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com +fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com +gaodun.comgaoshouyou.comgaoxiaojob.com +gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com +gezida.com gfan.com +giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com +gwdang.comgxairlines.com +gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc +heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com +hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com +houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com +ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com +iheima.com ijiandao.com +ikafan.com im2maker.com  im-cc.com +imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com +ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com +itjuzi.com  itmop.com  iyiou.com iyunxiao.com +izuche.com +jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com +job910.com  jobjm.com jsbc.com +jsrdgg.com jstv.com  jsyks.com juefeng.com +julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com +kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com +kimiss.com kingdee.com kkzj.com +kongfz.com koolearn.com +kouclo.com +koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com +kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com +liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com +likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net +longre.comlongtugame.com longzhu.com  lotpc.com +loupan.com +lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com +lvmama.comlvsexitong.com  lxway.com +magedu.com maisanqi.com +mamecn.com manhuatai.com manmankan.com +mapbar.com mayi.com +mayihr.com +mcbang.com  mdpda.com mechina.org +mediav.com meifang.com meika360.com meilishuo.commeimingteng.com +meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com +miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc +mmbang.com mmbang.info +mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com +mokahr.com moleecel.commoocollege.com mop.com msanjia.com +mscbsc.com mukewang.com +mumayi.com +muomou.com muzhiwan.com +mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com +newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com +oicq88.com  okooo.com +ol-cdn.com +ol-img.com oldboyedu.com +oneapm.com onegreen.net +oneyac.comonlinedown.netonlinesjtu.com onlylady.com +opdown.com oray.com  ottcn.com +oupeng.com +p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com +pcbeta.com +pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com +pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com +pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com +qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com +qschou.com +qtmojo.com +qudong.com +qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com +runoob.com rzrc114.com  saibo.com sanguosha.com +sanwen.net  scdng.com scoregg.com +sczsxx.com sdo.com sec-wiki.com +sencdn.com seniverse.comsenlinjimore.com +sgamer.com shanbay.com shang360.com +shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.com  shssp.orgshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com +shutcm.com +simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com +snimay.com  sobot.com sofreight.com softwhy.com +sojson.com +somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com +sunrtb.com supermap.comsupermapcloud.com +sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com +tao123.com +taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com +tianqi.com tietuku.com +tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net +tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com +tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com  txrjy.com u.toolsubuntukylin.com  ucbug.com +uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com +vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com +wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com +win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  wolai.com  womai.com wondercv.com wonnder.com +wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com +wscdns.com  wtown.com  wumii.com +wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com +xfdown.com +xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomiflash.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com +xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com +xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com +xzking.com yahui.cc +yaolan.com  yaoyl.com  yaozh.com +ycgame.com +yeepay.com +yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com +yiqifa.com +yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com +yocajr.com +youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com +yslyhr.com  ysten.com +yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com +yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com +yxdown.com +yytcdn.com +zampda.net zampdsp.com zastatic.com +zbjimg.com zczj.com +zdfans.com zgjm.org +zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com +zhenai.com  zhibo8.cc  zhidx.com zhifang.com +zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com +zpb365.com +zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com +fm3838.comlarsonlimited.com runsheng.com vzuu.com +zoom3g.com +zoomyou.cn chaoxing.com chaoxing.cc + + MANMANBUY manmanbuy.com +. + POCKETCASTS +pca.stpocketcasts.com +: +ZAOBAO +zaobao.com zaobao.com.sg  zaobao.sg + +STAGE1ST saraba1st.com 4 -MAILRU imgsmail.ru mail.ru mycdn.me +PERL perl.org cpan.org metacpan.org +· +ROCKSTARrockstargames.com +rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.net +¢ +WIX editorx.comparastorage.com wix-code.com wix.comwixanswers.com wixapps.net  wixmp.com wixsite.com wixstatic.com +ç +PEARSONactivelearnprimary.co.ukactivelearnprimary.com.auactiveteachonline.comaddison-wesley.ch adobepress.ch +btec.co.uk ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comdombosco.com.br ecpa.frescapestudios.co.uk ilongman.com integral7.com'#internationalconnectionsacademy.com +longman.ch +mut.chmyhelpinglab.commylogiclab.com mypearson.commypearsonenglish.chmypearsonshop.com.mxmypearsonshop.mxmysocialworklab.comnetname.com.brpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch +pearson.ch +pearson.cl pearson.co.in pearson.co.jp pearson.compearson.com.arpearson.com.aupearson.com.cn +cnpearson.com.hkpearson.com.uy +pearson.es +pearson.fr +pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonclinical.co.ukpearsonclinical.com.aupearsonclinical.com.brpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoned.co.nz pearsoned.compearsoneducacion.netpearsoneducationbooks.com pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.compearsoninstitute.ac.zapearsonlongman.chpearsononlineacademy.compearsonperu.pepearsonplaces.com.au%!pearsonschoolsandfecolleges.co.ukpearsonvue.compearsonvue.netpobl-content.com  pvue1.com  pvue2.comquatrum.com.brstark-verlag.chtalentlens.comthemathsfactor.comxn--pearsonenespaol-brb.com +/ + +THEINITIUMtheinitium.com  init.shop +) +TUTANOTA tuta.io tutanota.com +( +CHINAZ +chinaz.com +chinaz.net +, +RENREN +renren.comrenren-inc.com + + +STATICFILEstaticfile.org += +SIGNAL +signal.art +signal.orgsignalusers.org +H + ZYNGA-ADS zynga.com +ads#zyngaplayersupport.com +ads + +AVSFORUM avsforum.com + +KERNEL +kernel.org + +KNOVEL +knovel.com ++ +MYFONTS myfonts.com myfonts.net ++ + MYTVSUPER mytvsuper.com tvb.com +ç +BINGbing bing.com bing.com.cn +cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com +dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com +cn cn.bing.net +cn ditu.live.com +cnbj1.api.bing.com +cnemoi-cncdn.bing.com +cn ++ + +KUBERNETES kubernetes.io +k8s.io +ƒ + NETEASE-ADSanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads + +SSPAI  sspai.com C ADDTHIS addthis.comaddthiscdn.comaddthisedge.com +ï™ +CATEGORY-ADS-ALL7box.vip +adsad-delivery.net +ads adinplay.com +ads adnxs.com +ads!ads.trafficjunky.net +adsadvertserve.com +adscasalemedia.com +ads!contextual.media.net +ads cpmstar.com +ads +demdex.net +ads httpool.com +ads lijit.com +ads1rx.io +ads mfadsrvr.com +adsmgid.com +adsns1p.net +ads openx.net +ads pubmatic.com +adsspotxchange.com +ads +unimhk.com +ads upapi.net +ads taboola.com apilog-web.acfun.cn +ads adcolony.com +ads +adjust.com +ads a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +ads amazon-adsystem.com +adsiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads applovin.com +ads +applvn.com +ads atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +adsmcs.snssdk.com +adsx.clearbitjs.com +ads bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads emogi.com +adsdata.flurry.com +ads2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +ads!assets.growingio.com +adsmlog.hiido.com +adsylog.hiido.com +adsstatic.hotjar.com +adsclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com +adsinner-active.mobi +adsa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +adsads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads log-sdk.gifshow.com +adswlog.kuaishou.com +ads leanplum.com +ads#api.game.letvstore.com +ads ark.letv.com +ads dc.letv.com +adsdev.dc.letv.com +ads fz.letv.com +ads g3.letv.com +adsletv.allyes.com +adsminisite.letv.com +adsmsg.m.letv.com +adsn.mark.letv.com +adsplog.dc.letv.com +adspro.hoye.letv.com +ads pro.letv.com +ads stat.letv.com +ads"static.app.m.letv.com +ads decide.mixpanel.com +ads mopub.com +adsevt.mxplay.com +adsanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads"js-agent.newrelic.com +ads ogury.com +ads +presage.io +adsogury.co +ads onesignal.com +adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads cdn.pocoiq.cn +ads oct.pocoiq.cn +adsads.pubmatic.com +adscdn.segment.com +ads"static.sensorsdata.cn +ads 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +adsadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads'adeventtracker.spotify.com +ads$adstudio-assets.scdn.co +ads#bloodhound.spotify.com +adssupersonic.com +adssupersonicads.com +ads +ssacdn.com +ads)supersonicads-a.akamaihd.net +ads g1.tagtic.cn +adsxy-log.tagtic.cn +adsssp.api.tappx.com +ads ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads uberads.com +adsalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads!unityads.unity3d.com +ads#unityads.unitychina.cn +ads ads.wteam.xyz +ads#collector.xhamster.com +adsad.intl.xiaomi.com +ads ad.mi.com +ads ad.xiaomi.com +adsadmob.xiaomi.com +adsad1.xiaomi.com +adsmistat.xiaomi.com +adstracking.miui.com +adsadv.sec.miui.com +ads"adv.sec.intl.miui.com +ads"misc.in.duokanbox.com +ads ad.hpplay.cn +adsadeng.hpplay.cn +ads kuyun.com +ads umeng.com +ads ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +adsactives.youku.com +ads ad.api.3g.youku.com +ads$ad.api.mobile.youku.com +ads ad.mobile.youku.com +ads(a-dxk.play.api.3g.youku.com +ads atm.youku.com +ads#b.smartvideo.youku.com +adsc.yes.youku.com +adsdas.api.youku.com +ads!das.mobile.youku.com +ads!dev-push.m.youku.com +adsdl.g.youku.com +adsdmapp.youku.com +adse.stat.ykimg.com +ads#gamex.mobile.youku.com +ads!guanggaoad.youku.com +ads hudong.pl.youku.com +ads!huodong.pl.youku.com +ads"huodong.vip.youku.com +ads hz.youku.com +adsiyes.youku.com +ads l.ykimg.com +adslstat.youku.com +ads mobilemsg.youku.com +ads msg.youku.com +adsmyes.youku.com +ads p.l.youku.com +ads pl.youku.com +ads#passport-log.youku.com +adsp-log.ykimg.com +adspush.m.youku.com +ads r.l.youku.com +ads s.p.youku.com +adssdk.m.youku.com +adsstat.youku.com +ads$statis.api.3g.youku.com +ads&store.tv.api.3g.youku.com +ads&store.xl.api.3g.youku.com +adstdrec.youku.com +adstest.ott.youku.com +ads!test.sdk.m.youku.com +ads v.l.youku.com +adsval.api.youku.com +ads wan.youku.com +adsykatr.youku.com +adsykrec.youku.com +ads zynga.com +ads#zyngaplayersupport.com +ads 51y5.net a.adtng.com +aaxads.comaddthisedge.com +adtrue.com +ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com +exosrv.com +go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com +lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn +T + DLERCLOUD dlercloud.com dlercloud.org dlercloud.me dleris.best +I +DMM dmm.com  dmm.co.jpdmm-extension.com dmmapis.com +P +AEROGARDaerogard.com.auaerogard.com.cn +cnaerogardcn.com +p +KKBOX +kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me +  +ORACLE +oracle +oracle.comoraclecloud.comoraclefoundation.org oracleimg.comateam-oracle.com +bronto.comcovid19-rx.org covid19rx.org sun.com addthis.comaddthiscdn.comaddthisedge.comjava java.com java.net + +BILIPLUS biliplus.com +’ +CANON canon c-ij.com canon-cee.comcanon-cmos-sensors.com canon-cna.comcanon-ebm.com.hkcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.com canon-me.com canon-ois.qacanon-se.com.tw canon.am canon.at canon.az canon.ba canon.be canon.bg canon.ca canon.chcanon.cn +cn canon.co.il canon.co.uk canon.co.za  canon.com canon.com.al canon.com.au canon.com.by canon.com.cn +cn canon.com.cy canon.com.hk canon.com.mk canon.com.mt canon.com.my canon.com.tr canon.com.tw canon.cz canon.de canon.dk canon.ee canon.es canon.fi canon.fr canon.ge canon.gr canon.hr canon.hu canon.ie canon.it canon.kz canon.lt canon.lu canon.lv canon.me  canon.net canon.nl canon.no canon.pl canon.pt canon.ro canon.rs canon.ru canon.se canon.si canon.sk canon.tj canon.ua canon.uzcanonfoundation.orgcanonproprinters.com +Í + TENCENT-ADS ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads +° + EPICGAMESbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ +cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ +cn +¯ + XIAOMITV-ADSad.intl.xiaomi.com +ads ad.mi.com +ads ad.xiaomi.com +adsadmob.xiaomi.com +adsad1.xiaomi.com +adsmistat.xiaomi.com +adstracking.miui.com +adsadv.sec.miui.com +ads"adv.sec.intl.miui.com +ads"misc.in.duokanbox.com +ads ad.hpplay.cn +adsadeng.hpplay.cn +ads kuyun.com +ads umeng.com +ads +™ +BILIBILI +acg.tv acgvideo.com +b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com +mincdn.com$ upos-hz-mirrorakam.akamaized.net +2 +MORISAWAmorisawa.co.jptypesquare.com +p +ONEPLUS oneplus.com +oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com ( -UCLOUD  ucloud.cn ufileos.com -­ - IQIYI-ADSa.ckm.iqiyi.com +TAPTAP +tapimg.com +taptap.com +. +ASPROEX asproex.comasproexapi.com +H +BLENDERbigbuckbunny.org blender.orgelephantsdream.org +7 + FONTAWESOMEfontawesome.comfortawesome.com +$ + HUANGHUAGANGhuanghuagang.org +y +FONTSHOP fontbook.com fontshop.comfstopimages.com40fontshop-prod-responsive-images.s3.amazonaws.com + +GFYCAT +gfycat.com +' + WTEAM-ADS ads.wteam.xyz +ads +† +GOLANG go-lang.com go-lang.net go-lang.org +go.dev  godoc.org +golang.com +golang.net +golang.org +% +NGINX  nginx.com  nginx.org +. +SCALAscala-lang.org scala-sbt.org +1 +TIANCITY tiancity.comtiancitycdn.com +Œ + +ITUNES!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn +cn itun.es itunbes.com ituneas.comitunes-apple.cn +cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th +itunes.com  itunes.hk  itunes.mx +itunes.org +itunes.rio  itunes.usitunes12days.comitunesapple.cn +cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn +cnitunesradio.comitunesradio.com.cn +cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.net + +LINOTYPE linotype.com +a +NOW now.com +now.com.hk nowe.com nowe.hk +now-tv.comnow-ashare.com + +PINGPE ping.pe ++ +FLATPAK flathub.org flatpak.org +, +HITUN hitun.ioxn--90wwvt03e.com + +XDTY xdty.org +Þ + ALIBABA-ADS a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +ads +U + CLEARASIL clearasil.cn +cnclearasil.com.cn +cn clearasil.us +×! + +MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.cl mastercard.cn +cnmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cn +cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.iemastercard.inc mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com idservice.incinclusivegrowthscore.com findacard.com mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.com paypass.netpieceofplastic.compredictivetechnologies.com priceless.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.cacashpassport.co.zacashpassport.comcashpassport.com.brcashpassport.netcorporatecashpassport.comicashpassport.com.mxintercamcashpassport.com.mx!multicurrencycashpassport.comshinhangmc.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.com +nab.com.aunabtravellercard.com.au 53world.com53worldsweeps.comlovethiscity.commastercardmoments.compahabicilemezsurprizler.com priceless.compriceless.com.cn +cn priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.cn +cnpricelessbeijing.com#pricelessbeijing.com.cn +cnpricelesshongkong.compricelesshonolulu.compricelesspick.compricelesssantiago.compricelesssydney.compricelesssurprises.compricelesstoronto.capricelesstv.com simplify.comsimplifycommerce.comcashpassportglobe.comgwktravelex.nl travelex.be travelex.bh travelex.catravelex.co.intravelex.co.jptravelex.co.nztravelex.co.uk travelex.comtravelex.com.autravelex.com.cn +cntravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.tr travelex.de travelex.fr travelex.it travelex.qatravelexae.comtravelexch.comtravelexmoneycard.combidvestbank.co.zaworldcurrencycard.co.zanab.demdex.net&"nationalaustraliaban.tt.omtrdc.net +¡ +SHOPIFY myshopify.com shop.app shopify.com shopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com += + TRANSLATEWIKItranslatewiki.nettranslatewiki.org +6 +75TEAM 75.team +75team.com baomitu.com +ç + FACEBOOK-DEVaccountkit.comatscaleconference.com botorch.org +buck.build buckbuild.comcomponentkit.org draftjs.org +f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com +fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com +ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com +Ž +GUCCI guccichimeforchange.orggucci.cn +cn  gucci.comguccimuseo.comguccitimeless.comregiongold.com +i +SNAP +sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com +snapkit.co +ß +THETIMES driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.com +* +DUOWAN +duowan.com dwstatic.com +. +FLUTTER flutter.devflutterapp.com + +SOLIDOT solidot.org +ÿ +TELEGRAM contest.com  graph.orgquiz.directoryt.me tdesktop.com +telega.one +telegra.ph telegram.dog telegram.me telegram.orgtelegram.space +telesco.pe +tg.dev tx.meusercontent.dev +% + +ADJUST-ADS +adjust.com +ads +k + CHEETAHMOBILE cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.com +Ì + CHINATELECOM +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com +chntel.com +< +NGA +nga.cn 178.com +ngabbs.com ngacn.cc +@ +REUTERS reuters.com +reuters.tvreutersmedia.net +¬ +DELL +cfblob.comcloudchoose.comcloudvolumes.com +cmpaas.com +cpedge.comcrit-staging.comexperience-vmware.com gemfire.netgeodesummit.com getboxer.com gitstar.com gitstar.net gopivotal.net greenplum.net hwslabs.com immidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.com ssdevrd.com vcanedge.com vcloudair.net vfabric.netvidmpreview.com +virsto.com +virsto.net vmglobal.net +vmmark.comvmtestdrive.com vmw.comvmware-cloudmanagement.comvmware-techcenter.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com vmwarevmc.com vmwdemo.com vmwgcomms.comvmwhorizonair.comvmwidm-ads.com +vmwidm.comvmwlabconnect.comvmwlearningplatform.com vmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com +vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.com xlstudio.comavinetworks.com +badaas.com bitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com cloudlive.comkubeacademy.com kubeapps.com +nyansa.com velocloud.com gopivotal.com heptio.cn +cn +heptio.com aliveipc.com aliveitsm.comaliveprofiler.com alivercm.comaliverewind.com alivertsm.com alivevm.com alivevmax.com alivevue.com vsphere.com vsphere.net air-watch.comairwatchexpress.comairwatchqa.com +getws1.com getwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.comvmware.tt.omtrdc.netdelldell-brand.com dell.com dellcdn.com + +FREENODE freenode.net +( +OPENCOLLECTIVEopencollective.com +) + LEANPLUM-ADS leanplum.com +ads +– +NYTIMES nyt.com nyt.net nytchina.com nytcn.me  nytco.com nyti.ms nytimes.com nytstyle.comtimestalks.com +O +PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com +ads +< +TIDAL  tidal.com tidalhifi.com wimpmusic.com +% + +CHINAPOWERchinapower.csis.org +* + +FLURRY-ADSdata.flurry.com +ads + + +FONTSINUSEfontsinuse.com + +GUOKR  guokr.com +7 + +LONDONREALfreedomplatform.tv londonreal.tv +) +EASYLIST easylist.to lanik.us +r + LAUNCHPAD launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org + +MZED mzed.com +{ +OREILLY oreil.ly oreilly.comoreilly.com.cn +cnoreilly.revieworeillystatic.com +orl.ly ++ + SEGMENT-ADScdn.segment.com +ads +‰ +BRAVEUXbraventures.com braveux.com +compass.isfightforux.comforthebadge.comstockagainstphotography.com +¬ +VIMEO +vhx.tv +vhxqa1.com +vhxqa2.com +vhxqa3.com +vhxqa4.com +vhxqa6.comvimeo-staging.comvimeo-staging2.com  vimeo.com vimeo.frvimeobusiness.com vimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com +– +WEBEX webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn +cn webex.com.hk webex.com.mx webex.de webex.es webex.fr +K +PINGAN +pingan.com pingan.com.cn pingan.com.hk yqb.com +¬ +IQIYI 71.am  iqiyi.com iqiyipic.com +pps.tv +ppsimg.com qiyi.com qiyipic.com +qy.net +71edge.coma.ckm.iqiyi.com adsad.m.iqiyi.com ads afp.iqiyi.com adsc.uaa.iqiyi.com @@ -6903,46 +8294,66 @@ C ads#policy.video.iqiyi.com adsyuedu.iqiyi.com ads -e -PYTHON  pycon.org pypa.io pypi.io pypi.org -python.orgpythonhosted.org -m -SUNING cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com -3 - XHAMSTER-ADS#collector.xhamster.com -ads +ý +RIOThistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn +cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net +lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com +lpl.com.cn +cn pvp.net +pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.com 8 KINGKONGLIVEkingkong.com.twkingkongapp.com -Ð -NEWSCORPbarrons-advisor.combarrons-conferences.com barrons.comwsjbarrons.comdjreprints.com dowjones.com dowjones.iodowjoneson.combookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com -nypost.com nypost.helpnypostreprints.comflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.comdreamteamfc.com  page3.comsunbingo.co.uk talksport.comthescottishsun.co.uk thesun.co.uk  thesun.ie driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk thetimes.ietimesmembership.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.com wsj.com wsj.jobs wsj.netwsjmediakit.com wsjplus.com wsjshop.com wsjwine.com1degree.com.auadelaidenow.com.auadhelpnews.com api.newsbestrecipes.com.au bigcharts.combodyandsoul.com.aubridge-studio.co.ukcairnspost.com.aucnivogue.com.aucouriermail.com.audailytelegraph.com.audelicious.com.au escape.com.au fnlondon.comgeelongadvertiser.com.augoldcoastbulletin.com.auheraldsun.com.au huanyuju.comintheknow.com.aukidspot.com.aumansionglobal.commarketwatch.comnativeincolour.com.aunewcastlenewslocal.com.au -news.co.uk news.com.au news.net.aunewsadds.com.aunewsamerica.comnewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.au newscorp.comnewscorpaustralia.comnewslicensing.co.uknewsprestigenetwork.com.aunewsprinters.co.uknewssyndication.comnewsukadops.comnewsxtend.com.au -nlm.io ntnews.com.auplacemyad.com.ausavvyshopper.net.au storyful.comsupercoach.com.au taste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhereilive.com.au whimn.com.auwireless.radiowirelessgroup.co.uk -+ - ONESIGNAL-ADS onesignal.com -ads -* -PAGECDN pagecdn.com -pagecdn.io -Š -ZEETV -z5.app -z5.com zee5.com zee5.in zee5.tvzeebioskop.com zeetv.co.uk  zeetv.com  zeeuk.com -Í + +SHORTURL shorturl.at +2 +ZOOM zoom.com zoom.com.cn zoom.us +] +BUYPASSbuypass-ssl.com buypass.com +buypass.no +buypass.se minid.no +8 + CLUBHOUSEclubhouseapi.comjoinclubhouse.com +¡ -CLOUDFLAREcloudflare-dns.comcloudflare-ipfs.comcloudflare.comcloudflare.netcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestream.comcloudflaretest.com one.one.one  pages.devtrycloudflare.comvideodelivery.net  warp.plus workers.dev -² -MOVEFREEkeepmovingwithmovefree.com move-free.net movefree.cn -cn movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.com -­] -CATEGORY-GAMES blizzard.cn +FAMILYMARTfamifun.com.tw family.co.jp family.com.twfamilymart.com.cn +cnfamilymart.com.myfamilymart.com.ph  famima.vn +ñ + +SALESFORCE appcloud.comappexchange.com attic.iobeyondcore.combuddymedia.com chatter.comcloudcraze.com cotweet.com data.comdemandware.com desk.comdocumentforce.comdreamforce.com einstein.comexacttarget.com  force.com govforce.comgravitytank.com heywire.com krux.commarketingcloud.com metamind.io +pardot.com quotable.com radian6.com relateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.com sequence.comsfdcstatic.com +sforce.com site.com +social.comsteelbrick.com twinprime.comweinvoiceit.com + +WEBTYPE webtype.com +$ +CSDN csdn.net +csdnimg.cn +E +INFOWARS banned.video infowars.cominfowarsmedia.com +0 +MEGA +mega.co.nz mega.io mega.nz +B +HASKELL haskell.orghaskellstack.org stackage.org +* +JIANSHU jianshu.com +jianshu.io +. +JIEMIAN jiemian.comjiemian.com.cn +* +BOXUN  boxun.combowenpress.com +@ +JQUERY +jquery.comjquerymobile.com jqueryui.com + +PATREON patreon.com +& + STEAMUNLOCKEDsteamunlocked.net +' +WATCHOUT watchout.tw +waa.tw +² +BLIZZARD blizzard.cn cn blizzard.comblizzardgearstore.comblz-contentstack.com blzstatic.cn cn battle.netbattlenet.com.cn @@ -6958,209 +8369,683 @@ battle.netbattlenet.com.cn cnwow.nosdn.127.net cnblizzcon-a.akamaihd.netblz.nosdn.127.net cnblzmedia-a.akamaihd.netblznav.akamaized.net cn.actual.battle.net -cn dawngate.com eastore.comlordofultima.com -origin.com  origin.tv#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com chillingo.comcommandandconquer.comconquerwithcharacter.com  crysis.jp dawngate.comdawngatechronicles.com -dicela.com -dicela.netea-anz-press.com -ea.com eaaccess.comeacashcard.com eacodigos.com eakorea.co.kr eamobile.com eanordic.com -eaplay.com easports.com easports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr futpromos.com futunited.comghostgames.comheroesofdragonage.com hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org  maxis.commysimsracing.com play4free.com playapex.com pogo.com pogobeta.com -popcap.comprojectapex.com pvzheroes.com spearhead.krspeedhunters.com  spore.com ssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.com tiburon.com -tnt-ea.comultimaforever.com unravel2.comunraveltwo.comvisceralgames.com -yogify.comanthemgame.comanthemthegame.comapexlegends.comprojectapex.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com battlelog.com bioware.combiowarestore.com eamythic.com eamythic.net cncrivals.comcommandandconquer.comtiberiumalliances.comcamelot-europe.comcamelotherald.comcamelotherald.net daoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.com dice.se dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comdungeonkeeper.com.cneafootballworld.comfifastreet.comfifastreet3.com frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.com nfsworld.comteamneedforspeed.complantsvszombies2.com -pvzgw2.com pvzheroes.comseaofsolitude.comsimcity-buildit.com simcity.com -skate2.com spearhead.krstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com  swjfo.com  swtor.com  swtor.net -mysims.com thesims.com thesims3.com thesims4.comthesimssocial.com titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com -uo.com uoherald.com xdsummit.comea.tt.omtrdc.neteaassets-a.akamaihd.netbattlebreakers.com eac-cdn.com easy.aceasyanticheat.net epicgames.com fortnite.com paragon.complayparagon.comroborecall.comshadowcomplex.com spyjinx.comunrealengine.comunrealtournament.com6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$ -cn*&^epicgames-download\d\.akamaized\.net$;/^epicgames-download\d-\d+\.file\.myqcloud\.com$ -cn"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net garena.co.id garena.co.th -garena.com garena.live  garena.my  garena.ph  garena.sg  garena.tv  garena.tw  garena.vn garenanow.com seagroup.com gog.comgog-statics.comgog.qtlglb.com -cn$gogalaxy.gog-statics.com -cn'menu-static.gog-statics.com -cn'productcard.gog-statics.com -cn(static-login.gog-statics.com -cn'www4-static.gog-statics.com -cn, ^images(-\d)?\.gog-statics\.com$ -cn100classicbooks.com -amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn -cn legendofzelda.com.cn -cn miitomo.commiitomo.com.cn -cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn -cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn -cn!supersmashbros.com.cn -cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com -dialga.com giratina.com -kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn -cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn -cnmariokart.com.cn -cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn -cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com -wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com op.ggopgg-static.akamaized.net playstationplaystation.complaystation.net sonyentertainmentnetwork.com"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.nethistoryofdota.comhistoryofdota.nethistoryofdota.orginstituteofwar.orgmolesports.com rgpub.ioriot-games.com riot.com riot.net riotcdn.netriotgames.co.kr riotgames.comriotgames.info riotgames.jp riotgames.net riotgames.tv riotpin.comriotpoints.com rstatic.net supremacy.com supremacy.net championshipseriesleague.com lcsmerch.comleaguehighschool.comleagueoflegends.caleagueoflegends.cn -cnleagueoflegends.co.krleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.com lolclub.org lolespor.comlolesports.com lolfanart.net -lolpcs.com lolshop.co.kr lolstatic.comlolusercontent.com -lpl.com.cn -cn pvp.net -pvp.tv ulol.comlolstatic-a.akamaihd.netplayvalorant.comriotforgegames.comruinedking.comconvrgencegame.comrockstargames.com -rsg.sc1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplayartifact.com -s.teamsteam-chat.comsteamcommunity.comsteamcontent.comsteamgames.comsteampowered.comsteamstatic.comsteamusercontent.comunderlords.comvalvesoftware.com wmsjsteam.com -cn csgo.wmsj.cn -cndl.steam.ksyna.com -cn dota2.wmsj.cn -cn st.dl.bscstorage.net -cnst.dl.eccdnx.com -cn!st.dl.pinyuncloud.com -cn."steampipe.steamcontent.tnkjmec.com -cn&steampowered.com.8686c.com -cn%steamstatic.com.8686c.com -cn steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamunlocked.net ubi.com ubisoft.com  uplay.com,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.com)uplaypc-s-ubisoft.cdn.ubi.com -cn -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv fanatical.comhumblebundle.com -s -SINOPECsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -R -UPAI  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com -Á: -EBAY21centuryaccess.com4ebaytraders.com adcommerce.cn -cn adcommerce.tv appforebay.cn -cnappsonebay.net -asebay.com -baazee.com -bidbay.combidorbuyindia.com billpoint.combillpoint.info billpoint.tv billpoint.usbillpointnewzealand.com blogebay.combookclubcorner.combuiltfromebay.com buyitnow.com buyitnow.net buyitnow.org buyitnow.tvbuyitnowshop.net cafr.ca carebay.comcargigileads.com  cebay.comcollective99.comcommerceos.comconnectcommerce.cn -cn"connectcommerce.com.cn -cnconnectcommerce.hkconnectcommerce.infoconnectcommerce.tv connectedcommerce.cn -cnconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.com cyber-bay.cn -cncyber-bay.com.cn -cncyber-bay.info cyber-bay.org -dba.dk dealbay.com dealtime.com  didce.com  douya.orgdreamtoplay.com  e-bay.com e-bay.it  e-bay.net eachpay.com eachpay.net  ebahy.comebay-authenticate.netebay-confirm.comebay-course.com ebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.com ebay-inc.com ebay-inc.net ebay-inc.orgebay-online.comebay-sales.comebay-stories.com ebay-us.comebay-vacation.com ebay.at ebay.be ebay.ca ebay.chebay.cn -cn -ebay.co.nz -ebay.co.uk -ebay.co.ve -ebay.co.za ebay.com ebay.com.ar ebay.com.au ebay.com.cn -cn ebay.com.ec ebay.com.hk ebay.com.mt ebay.com.my ebay.com.ph ebay.com.sg ebay.de ebay.es ebay.fr ebay.ie ebay.in ebay.it ebay.jp ebay.lt ebay.mn ebay.net.cn -cn ebay.nl ebay.org ebay.org.cn -cn ebay.ph ebay.pk ebay.pl ebay.sg ebay.us ebay.vn -ebay.yn.cn -cn -ebay.zj.cn -cn -ebay25.com -ebay68.com  ebaya.com ebayads.com ebayads.netebayadvertising.cn -cnebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebayauthenticate.com.cn ebaybags.com ebaybank.comebaybenefits.comebayboutique.com -ebayca.com -ebayca.org ebaycafe.com ebaycar.comebaycareers.com ebaycbt.co.kr ebaycdn.net ebaychina.netebayclassifiedsgroup.comebayclassifieds.cn -cnebayclassifieds.com"ebayclassifieds.com.cn -cnebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.com ebayclub.com ebaycoins.com ebaycom.comebaycommercenetwork.comebaycourse.com  ebayd.com -ebayde.com ebaydesc.cn -cnebaydesc.com.cn -cnebaydlassifieds.com -ebaydns.cn -cn ebaydts.com ebayedu.comebayeletro.comebayenterprise.cn -cnebayenterprise.com!ebayenterprise.com.cn -cnebayenterprise.infoebayenterprise.netebayenterprise.tv ebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com ebaygroup.com ebayhabit.com ebayheels.com ebayhots.com ebayimg.com ebayinc.com ebayinc.net ebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com -ebayit.comebayjewelry.com ebayjob.com -ebayla.orgebaylisting.com ebaylocal.netebaylocationsdevacances.com ebaymag.comebaymainstreet.com ebaymall.comebaymarketplace.net ebaymotors.ca ebaymotors.cn -cnebaymotors.comebaymotors.com.cn -cnebaymotors.orgebaymotorsblog.com ebaynow.com ebaynyc.com -ebayon.com -ebayon.netebayoncampus.com ebayopen.comebayopensource.comebayopensource.netebaypakistan.net ebaypark.com ebayparts.com ebaypedia.cn -cnebaypedia.com.cn -cnebayprivacycenter.com -ebayqq.com ebayradio.com ebayrtm.comebayseller.comebayshoesstore.com ebayshop.comebayshop111.comebayshopping.cn -cnebayshopping.com.cn -cnebayshopping.orgebaysocial.com ebaysocial.ru ebaysoho.com ebaysohos.com ebaystatic.cn -cnebaystatic.com ebaystore.comebaystore77.com ebaystores.cn -cn ebaystyle.comebaysweden.com  ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com -ebaytv.org ebayuae.netebayvakantiehuizen.com ebayvalet.comebayvietnam.netebayworlds.com  ebayy.com edisebay.com  eebay.com epinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.com half.com half.com.cn -cn half.tvhalfcanada.com halfjapan.comhandbagsoutletebay.com  iebay.com irribay.comitsbetterwhenyouwinit.com liketwice.comliveauction.com milofetch.com musicbay.netmyconstructionworld.net -myebay.com  nebay.net paisapay.cc paisapay.info paisapay.tv premobay.comprivatemarketplaces.netprivatemarketplaces.us prostores.cn -cn prostores.comprostores.com.cn -cn rethink.net shopibay.net shoping.comsourcingforebay.com.cnsourcingforebay.netsourcingforebay.tv speybay.comstoresense.com -svpply.com telebay.com telesell.com texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com  vendu.com weareebay.comwatch-ebay.org wwwdecide.com wwwebay.com wwwebay.net wwwwebay.com xindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--7hvy28f.cn -cnxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com  xxbay.com  yibei.orggittigidiyor.netgittigidiyorsikayet.com -gumtree.sg  jijiji.ca kiji.ca kijii.ca kijij.ca  kijiji.ca kijijiauto.cakijijiautos.ca kijijidns.cn -cnkijijidns.com.cn -cnkijijiforbusiness.ca -kijijii.ca kijijiraps.ca kijji.ca -kijjiji.ca automobile.fr  mobile.demobileinternational.com&mobileinternational.com.cn -cn -q10.jp qoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.net tearapeak.com terapeack.com terapeak.ca terapeak.cn -cn terapeak.comterapeak.com.hk terapeak.hk terapeak.info teraperk.com terrapeak.com thebayuk.com -nexcat.com nexpart.com -nexpart.tv renchead.comwhisolutions.com wrenchead.com-)ebay-25-assets.s3-us-west-1.amazonaws.com -û - HARPERCOLLINSbookclubgirl.com collins.co.uk -collins.inegmontbooks.co.uk epicreads.comharperacademic.comharperapps.comharpercollins.caharpercollins.co.inharpercollins.co.ukharpercollins.comharpercollins.com.auharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollinschristian.com#harpercollinsspeakersbureau.com -hcpdts.comlibrarylovefest.comnatgeokidsbooks.co.ukshelfstuff.com - - -QINGTINGFM qingting.fm -Æ -BOC -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cn - -LINOTYPE linotype.com -z -MATRIXarewereadyyet.com -element.io -matrix.org  matrix.to -modular.im riot.im  vector.im -< - BITSQUARE bisq.io bisq.network bitsquare.io -- -ASUS asus.com asus.com.cn cn - -BINANCEbinance.charity binance.cloud binance.combinance.vision binancezh.com bnbstatic.com yshyqxx.com -* -JAVBUS -javbus.com javbus22.com -Ý -VOLVO volvodynafleetonline.comescandinavia-arg.comindependentoperatorcn.com road-crew.com udfs.com vfsco.at vfsco.be vfsco.bg vfsco.ca vfsco.ch vfsco.cl vfsco.co.uk vfsco.co.za  vfsco.com vfsco.com.au vfsco.com.br vfsco.com.cn -cn vfsco.com.tr vfsco.cz vfsco.de vfsco.dk vfsco.ee vfsco.es vfsco.fi vfsco.fr vfsco.hu vfsco.ie vfsco.in vfsco.it vfsco.jp vfsco.kr vfsco.lt vfsco.lv vfsco.mx vfsco.nl vfsco.no vfsco.pe vfsco.pl vfsco.ro vfsco.ru vfsco.se vfsco.sk vfsco.us vgcareers.netvolvo-truck.nl volvo.cavolvo.cn -cn  volvo.com volvo.com.cn -cn volvo.sevolvobrandshop.com volvobuses.at volvobuses.be volvobuses.ca volvobuses.ch volvobuses.covolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zavolvobuses.comvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.tw volvobuses.de volvobuses.dk volvobuses.es volvobuses.fi volvobuses.fr volvobuses.hk volvobuses.hu volvobuses.in volvobuses.it volvobuses.jo volvobuses.kr volvobuses.ma volvobuses.mx volvobuses.my volvobuses.no volvobuses.om volvobuses.ph volvobuses.pk volvobuses.pl volvobuses.ru volvobuses.se volvobuses.sg volvobuses.tn volvobuses.us volvoce.comvolvodefense.com volvogroup.be volvogroup.cn -cnvolvogroup.comvolvogroup.com.brvolvogroup.com.cn -cn volvogroup.de volvogroup.fr volvogroup.jp volvogroup.kr volvogroup.mx volvogroup.nl volvogroup.pe volvogroup.pl volvogroup.ru volvogroup.sevolvogrouptruckcenter.nlvolvomerchandise.comvolvopenta.comvolvopenta.com.br volvopenta.de volvopenta.es volvopenta.fr volvopenta.it volvopenta.nl volvopenta.se volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.ukvolvotrucks.co.nzvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwvolvotrucks.comvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.cn -cnvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eevolvotrucks.esvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvolvotrucks.mavolvotrucks.mdvolvotrucks.mkvolvotrucks.mnvolvotrucks.myvolvotrucks.netvolvotrucks.nlvolvotrucks.novolvotrucks.pevolvotrucks.phvolvotrucks.pkvolvotrucks.plvolvotrucks.psvolvotrucks.qavolvotrucks.rovolvotrucks.rsvolvotrucks.ruvolvotrucks.sevolvotrucks.sgvolvotrucks.sivolvotrucks.skvolvotrucks.tmvolvotrucks.tnvolvotrucks.uyvolvotruckcenter.bevolvotruckcenter.dkvolvotruckcenter.esvolvotruckcenter.fivolvotruckcenter.itvolvotruckcenter.krvolvotruckcenter.kzvolvotruckcenter.nlvolvotruckcenter.novolvotruckcenter.sevolvotruckrental.beudtrucksmeena.com -í - WIKIMEDIA mediawiki.org wikibooks.org wikidata.orgwikimediafoundation.org wikimedia.org wikinews.org wikipedia.org wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org -w.wiki toolforge.orgwikimediacloud.org wmcloud.org wmflabs.org -• -WOOLITE -woolite.ca -woolite.cn -cn woolite.comwoolite.com.cn +Ÿs +BMWmini4myminicard.comaboutyourmini.comatlantaminidealers.comgreatergothammini.com!midatlanticbmwmotorcycles.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.co.ukmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com mini-coupe.camini-dubai.com +mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.com mini-ksa.commini-kuwait.commini-lebanon.com mini-me.com mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.com mini.am mini.at mini.be mini.bg mini.by mini.ca mini.cc mini.ch mini.cl +mini.co.cr +mini.co.id +mini.co.il +mini.co.kr +mini.co.me +mini.co.th +mini.co.uk +mini.co.za mini.com mini.com.ar mini.com.bn mini.com.br mini.com.co mini.com.cy mini.com.do mini.com.ec mini.com.gr mini.com.gt mini.com.hr mini.com.mk mini.com.mo mini.com.mt mini.com.mx mini.com.pa mini.com.pe mini.com.ph mini.com.pl mini.com.py mini.com.sg mini.com.tr mini.com.tw mini.com.uy mini.cz mini.de mini.dk mini.dz mini.es mini.fi mini.fr mini.gp mini.hu mini.ie mini.in mini.is mini.it mini.jp mini.kz mini.lu mini.ma mini.md mini.mq mini.mu mini.my mini.nc mini.nl mini.no mini.pt mini.re mini.ro mini.rs mini.ru mini.se mini.si mini.sk mini.tm mini.tn mini.ua +mini101.caminiargentina.comminibrossard.caminibrossard.com minicanada.caminicaribbean.com miniccrc.ca minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com minidurham.caminidurham.com  minie.com +minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com +minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.com minilat.com minilaval.ca minilaval.com minilondon.ca minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.com minishop.ca minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caminitroisrivieres.ca miniusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.capugetsoundmini.comshopminiusa.comsouthfloridamini.com +trmini.comtroisrivieresmini.comyours-customised.mini.combmwapprovedusedbmw.combaltimorebmw.combayareabmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.com bmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.ca bmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.chbmw-connecteddrive.co.nzbmw-connecteddrive.co.ukbmw-connecteddrive.co.zabmw-connecteddrive.combmw-connecteddrive.com.aubmw-connecteddrive.com.brbmw-connecteddrive.com.cybmw-connecteddrive.com.hrbmw-connecteddrive.com.kwbmw-connecteddrive.com.mtbmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.combmw-driving-center.co.krbmw-drivingexperience.com bmw-dubai.com +bmw-eg.com bmw-fleet.net bmw-ghana.combmw-golfsport.com bmw-group.com bmw-group.netbmw-grouparchiv.debmw-grouparchives.com +bmw-gta.cabmw-i-pure-impulse.com bmw-i.jp bmw-int1.com bmw-iraq.combmw-jordan.combmw-konzernarchiv.de bmw-ksa.combmw-kuwait.com +bmw-lao.labmw-lebanon.combmw-m-safetycar.com  bmw-m.combmw-mdrivetour.com +bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.cobmw-motorrad.co.idbmw-motorrad.co.krbmw-motorrad.co.nzbmw-motorrad.co.thbmw-motorrad.co.ukbmw-motorrad.co.zabmw-motorrad.combmw-motorrad.com.arbmw-motorrad.com.aubmw-motorrad.com.brbmw-motorrad.com.dobmw-motorrad.com.hrbmw-motorrad.com.mxbmw-motorrad.com.mybmw-motorrad.com.pebmw-motorrad.com.pybmw-motorrad.com.trbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.com bmw-oman.com bmw-ottawa.cabmw-pakistan.combmw-plant-munich.combmw-pma.com.sgbmw-powertrain.combmw-product-highlights.com bmw-qatar.combmw-routes.com +bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.ca bmw-voli.me bmw-welt.com bmw-welt.net bmw-welt.tvbmw-werk-berlin.de bmw-world.com bmw-world.net bmw-world.tvbmw-worldfinal.combmw-yachtsport.com +bmw-yeg.ca bmw-yemen.com +bmw.am +bmw.at +bmw.az +bmw.ba +bmw.bb +bmw.be +bmw.bg +bmw.bm +bmw.bs +bmw.by +bmw.ca +bmw.cc +bmw.ch +bmw.cl  bmw.co.ao  bmw.co.cr  bmw.co.id  bmw.co.il  bmw.co.jp  bmw.co.ke  bmw.co.kr  bmw.co.nz  bmw.co.th  bmw.co.uk  bmw.co.za bmw.com +bmw.com.ar +bmw.com.au +bmw.com.bd +bmw.com.bn +bmw.com.bo +bmw.com.br +bmw.com.cn cn -woolite.pl -woolite.uswoolitecarpet.com -+ -TYPEKIT typekit.com typekit.net -: - SOFTETHER softether.orgsoftether-download.com -‘ -SUPERSONIC-ADSsupersonic.com +bmw.com.co +bmw.com.cy +bmw.com.do +bmw.com.ec +bmw.com.ge +bmw.com.gt +bmw.com.kh +bmw.com.ky +bmw.com.mk +bmw.com.mo +bmw.com.mt +bmw.com.mx +bmw.com.my +bmw.com.ni +bmw.com.pa +bmw.com.pe +bmw.com.ph +bmw.com.py +bmw.com.sg +bmw.com.sv +bmw.com.tr +bmw.com.tw +bmw.com.uy +bmw.com.ve +bmw.cw +bmw.cz +bmw.de +bmw.dk +bmw.dz +bmw.ee +bmw.es +bmw.fi +bmw.fr +bmw.gp +bmw.gr +bmw.hn +bmw.hr +bmw.ht +bmw.hu +bmw.ie +bmw.in +bmw.is +bmw.it +bmw.kg +bmw.kz +bmw.lc +bmw.lk +bmw.lt +bmw.lu +bmw.lv +bmw.ly +bmw.ma +bmw.md +bmw.mn +bmw.mq +bmw.mu +bmw.nc +bmw.nl +bmw.no +bmw.pl +bmw.ps +bmw.pt +bmw.re +bmw.ro +bmw.rs +bmw.se +bmw.si +bmw.sk +bmw.sn +bmw.tm +bmw.tt +bmw.ua +bmw.uz +bmw.vn bmwarchiv.at bmwarchiv.debmwartjourney.com bmwasia.combmwauslieferungszentrum.com bmwbikes.com  bmwbkk.de +bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.com bmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.com bmwgroup.at bmwgroup.com bmwgroup.net bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com  bmwhk.com bmwi.ca bmwi.jpbmwiventures.combmwjamaica.com +bmwlat.combmwlifestyle.ca bmwm.combmwmagazine.combmwmagazine.de bmwmass.com bmwmass.net  bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.combmwmotorrad.co.krbmwmotorrad.com.aubmwmotorrad.com.phbmwmotorrad.com.sgbmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com bmwsafari.com +bmwsfl.com +bmwsfl.net +bmwshop.cabmwspecialoffers.ca bmwsports.combmwstartupgarage.com bmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com +bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.com bmwworld.com bmwworld.net bmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com daytonbmw.comdealerspeed.net desertbmw.com dreambmw.ca grupobmw.com guambmw.comhackthedrive.com hawaiibmw.com iaablog.comlasvegasbmw.com m-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.com mybmw.ca  mybmw.comnewhampshirebmw.com  nmbmw.comocbmwdealers.comoffresspecialesbmw.ca park-now.com parkinfo.com +pdxbmw.com +phxbmw.compre-bmwgroup.jobspugetsoundbmw.com rentaride.com rentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.com socalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.com alfera.com.hk alfera.com.my  alfera.in  alfera.myalphera-finance.co.inalphera-finance.com.hkalphera-finance.in +alphera.ca alphera.co.in alphera.co.nz alphera.comalphera.com.esalphera.com.hkalphera.com.my +alphera.de +alphera.es +alphera.ie +alphera.in +alphera.my alphera.netalpherafinance.com.hkalpherafinancialservices.esalpherafinancialservices.in alpherafs.caalpherafs.co.nzalpherafs.com.hkalpherafs.com.my alpherafs.ie alpherafs.in alpherafs.my premiumfs.de alphabet.asia alphabet.at alphabet.be alphabet.biz alphabet.chalphabet.co.hualphabet.co.ukalphabet.co.za alphabet.comalphabet.com.cn +cnalphabet.com.esalphabet.com.lvalphabet.com.mxalphabet.com.plalphabet.com.pt alphabet.cz alphabet.de alphabet.es alphabet.eu alphabet.fr alphabet.info alphabet.jp alphabet.lt alphabet.lu alphabet.lv alphabet.mxalphabet.net.cn +cn alphabet.noalphabet.org.uk alphabet.pl alphabet.pt alphabet.uk alphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com  rrtis.comspiritofecstasy.com +£ +MINISOloveminiso.com.br miniso-au.com miniso-bh.com miniso-np.com miniso-nz.com  miniso.by  miniso.ca miniso.cn +cn  miniso.co miniso.co.id miniso.co.tz +miniso.com miniso.com.es miniso.com.gr miniso.com.mx miniso.com.pl miniso.com.py miniso.com.tr  miniso.ge  miniso.ie  miniso.jp  miniso.ma  miniso.my  miniso.pe  miniso.pk  miniso.ua  miniso.uz minisohome.cn +cnminisoindia.comminisojordan.comminisokorea.comminisolife.co.zaminisothailand.comminisovietam.vn minsio.cn +cn myminiso.com +. +XDAxda-developers.com xda-cdn.com +@ + GLOBALVOICESglobalvoices.orgglobalvoicesonline.org +7 +OSCHINA  gitee.com gitee.io oschina.net +ô +VERISIGN verisign.asia verisign.biz verisign.chverisign.co.inverisign.co.uk verisign.comverisign.com.auverisign.com.brverisign.com.cnverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vn verisign.de verisign.dk verisign.es verisign.fr verisign.hk verisign.in verisign.info verisign.jobs verisign.mobi verisign.name verisign.net verisign.org verisign.pro verisign.se verisign.sg verisign.tw verisign.us verisign.vnverisigninc.com += +LANDIAN +lancdn.comlandiannews.com  wsoso.com +Ñ +RARBG rarbg.me rarbg.toproxyrarbg.org rarbg.israrbgaccess.org rarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.org rarbgprx.orgrarbgunblock.com +g +SPRINGER +apress.com springer.comspringerlink.comspringernature.com wkap.nl + +ARCHIVE archive.org +«• + CATEGORY-ADS apilog-web.acfun.cn +ads adcolony.com +ads +adjust.com +ads a.alimama.cn +adsacjs.aliyun.com +adsadash.m.taobao.com +ads!adashbc.m.taobao.com +ads"adashbc.ut.taobao.com +ads"adash-c.ut.taobao.com +ads adashx.m.taobao.com +ads$adashx4ae.ut.taobao.com +ads#adashx4yt.m.taobao.com +ads#adashxgc.ut.taobao.com +adsadsh.m.taobao.com +adsafp.adchina.com +adsafp.alicdn.com +ads agoodm.m.taobao.com +ads#agoodm.wapa.taobao.com +ads alipaylog.com +adsamdc.alipay.com +adsamdc.m.taobao.com +ads api.wapa.taobao.com +ads#api.waptest.taobao.com +adsapoll.m.taobao.com +ads#appdownload.alicdn.com +adsatanx.alicdn.com +adsatanx2.alicdn.com +adscbu01.alicdn.com +adscdn0.mobmore.com +adsclick.aliyun.com +ads&click.mz.simba.taobao.com +adscm.ipinyou.com +ads cm.mlt01.com +ads!dsp.simba.taobao.com +adserr.taobao.com +adsex.mobmore.com +ads ex.puata.info +ads!fav.simba.taobao.com +ads$feedback.whalecloud.com +adsff.win.taobao.com +ads fm.p0y.cn +adsg.click.taobao.com +ads +g.tbcdn.cn +adsgma.alicdn.com +adsgtms01.alicdn.com +adsgtms02.alicdn.com +adsgtms03.alicdn.com +adsgtms04.alicdn.com +adshydra.alibaba.com +ads'hz.pre.tbusergw.taobao.net +ads#hz.tbusergw.taobao.net +ads i.ipinyou.com +adsinit.phpwind.com +ads!intl.wapa.taobao.com +ads$intl.waptest.taobao.com +ads"jxlog.istreamsche.com +adslog.umtrack.com +adsm.intl.taobao.com +adsm.simba.taobao.com +adsmatch.p4p.1688.com +ads%material.istreamsche.com +ads mlt01.com +ads&nbsdk-baichuan.alicdn.com +ads&nbsdk-baichuan.taobao.com +ads"osfota.cdn.aliyun.com +ads osupdate.aliyun.com +ads&osupdateservice.yunos.com +ads%pindao.huoban.taobao.com +adspush.wandoujia.com +adsre.m.taobao.com +ads re.taobao.com +ads&redirect.simba.taobao.com +adsrj.m.taobao.co +adsrj.m.taobao.com +adssdkinit.taobao.com +adsshow.re.taobao.com +adssimaba.taobao.com +adssimba.m.taobao.com +ads!srd.simba.taobao.com +adsstats.ipinyou.com +ads strip.taobaocdn.com +ads$tanxlog.istreamsche.com +adstejia.taobao.com +adstemai.taobao.com +ads!tns.simba.taobao.com +ads tongji.linezing.com +ads tvupgrade.yunos.com +adstyh.taobao.com +adsuserimg.qunar.com +adsw.m.taobao.com +adsyiliao.hupan.com +ads amazon-adsystem.com +adsiadsdk.apple.com +ads iad.apple.com +ads qwapi.com +ads applovin.com +ads +applvn.com +ads atom-data.io +adsanalytics-data.io +ads ironbeast.io +ads a.baidu.com +ads ad.duapps.com +ads ad.player.baidu.com +ads adm.baidu.com +adsadscdn.baidu.com +adsadx.xiaodutv.com +adsae.bdstatic.com +ads afd.baidu.com +ads als.baidu.com +ads&api.mobula.sdk.duapps.com +ads"api.tuisong.baidu.com +adsappc.baidu.com +adsb.bdstatic.com +adsbaichuan.baidu.com +adsbaidustatic.com +adsbaidutv.baidu.com +adsbanlv.baidu.com +ads bar.baidu.com +ads"bdimg.share.baidu.com +adsbdplus.baidu.com +ads bj.bcebos.com +adsbtlaunch.baidu.com +ads c.baidu.com +ads cb.baidu.com +adscbjs.baidu.com +adscjhq.baidu.com +adscleaner.baidu.com +ads click.bes.baidu.com +adsclick.hm.baidu.com +adsclick.qianqian.com +ads"cm.baichuan.baidu.com +ads cm.baidu.com +adscm.pos.baidu.com +ads cpro.baidu.cn +adscpro.baidu.com +ads!cpro.baidustatic.com +ads!cpro.tieba.baidu.com +ads"cpro.zhidao.baidu.com +adscpro2.baidu.com +ads"cpro2.baidustatic.com +ads crs.baidu.com +adsdatax.baidu.com +ads dd713.bj.bcebos.com +ads dl.client.baidu.com +adsdl.ops.baidu.com +adsdl1sw.baidu.com +adsdl2.bav.baidu.com +adsdlsw.baidu.com +adsdlsw.br.baidu.com +ads!dl-vip.bav.baidu.com +ads(dl-vip.pcfaster.baidu.co.th +ads#download.bav.baidu.com +ads"download.sd.baidu.com +adsdrmcmm.baidu.com +ads dup.baidustatic.com +ads dxp.baidu.com +ads dzl.baidu.com +ads e.baidu.com +adseclick.baidu.com +adsecma.bdimg.com +adsecmb.bdimg.com +adsecmc.bdimg.com +ads eiv.baidu.com +ads em.baidu.com +adsentry.baidu.com +ads ers.baidu.com +ads f10.baidu.com +ads#fc-feed.cdn.bcebos.com +adsfclick.baidu.com +adsfeed.baidu.com +adsfexclick.baidu.com +ads g.baidu.com +adsgimg.baidu.com +adsguanjia.baidu.com +ads hc.baidu.com +ads hm.baidu.com +adshmma.baidu.com +ads hpd.baidu.com +adsidm.bce.baidu.com +adsidm-su.baidu.com +adsiebar.baidu.com +adsikcode.baidu.com +adsimg.taotaosou.cn +adsimg01.taotaosou.cn +adsj.br.baidu.com +adskstj.baidu.com +ads log.music.baidu.com +ads m1.baidu.com +ads ma.baidu.com +adsmobads.baidu.com +ads"mobads-logs.baidu.com +adsmpro.baidu.com +adsmsite.baidu.com +adsneirong.baidu.com +adsnsclick.baidu.com +ads#nsclickvideo.baidu.com +adsopenrcv.baidu.com +ads$pc.videoclick.baidu.com +ads pos.baidu.com +adspups.bdimg.com +ads%push.zhanzhang.baidu.com +ads qianclick.baidu.com +adsrelease.baidu.com +adsres.mi.baidu.com +ads"rigel.baidustatic.com +ads#river.zhidao.baidu.com +ads rj.baidu.com +adsrplog.baidu.com +ads s.baidu.com +adss.cpro.baidu.com +ads!sa.tuisong.baidu.com +adssclick.baidu.com +adssestat.baidu.com +adsshadu.baidu.com +adsshare.baidu.com +ads"snippet.pos.baidu.com +adssobar.baidu.com +adssobartop.baidu.com +adsspcode.baidu.com +adsstat.v.baidu.com +ads su.bdimg.com +adssu.bdstatic.com +ads t10.baidu.com +ads t11.baidu.com +ads t12.baidu.com +ads tk.baidu.com +adstkweb.baidu.com +ads"tob-cms.bj.bcebos.com +adstongji.baidu.com +adstoolbar.baidu.com +adstracker.baidu.com +adstuijian.baidu.com +ads*uat1.bfsspadserver.8le8le.com +ads#ubmcmm.baidustatic.com +adsucstat.baidu.com +adsulic.baidu.com +ads ulog.imap.baidu.com +adsunion.baidu.com +ads!unionimage.baidu.com +adsutility.baidu.com +ads utk.baidu.com +ads videopush.baidu.com +adsvv84.bj.bcebos.com +adsw.gdown.baidu.com +ads w.x.baidu.com +adswangmeng.baidu.com +adsweishi.baidu.com +ads$wenku-cms.bj.bcebos.com +ads%wisepush.video.baidu.com +ads wm.baidu.com +adswn.pos.baidu.com +adsznsv.baidu.com +adszz.bdstatic.com +adszzy1.quyaoya.com +adsmcs.snssdk.com +adsx.clearbitjs.com +ads bluekai.com +adsfout.jp +ads gmossp-sp.jp +adsi-mobile.co.jp +ads im-apps.net +ads impact-ad.jp +ads ladsp.com +ads microad.co.jp +ads +microad.jp +ads socdm.com +ads emogi.com +adsdata.flurry.com +ads2mdn.net +ads admob.com +ads adsense.com +ads'adsensecustomsearchads.com +ads%adsenseformobileapps.com +ads$advertisercommunity.com +ads%advertiserscommunity.com +ads"adwords-community.com +ads adwords.com +adsadwordsexpress.com +ads app-measurement.com +ads&clickserver.googleads.com +adsdoubleclick.com +adsdoubleclick.net +ads!google-analytics.com +adsgoogleadapis.com +ads!googleadservices.com +ads googleanalytics.com +adsgoogleoptimize.com +ads"googlesyndication.com +ads!googletagmanager.com +ads"googletagservices.com +ads'googletraveladservices.com +ads +urchin.com +ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$ +ads!assets.growingio.com +adsmlog.hiido.com +adsylog.hiido.com +adsstatic.hotjar.com +adsclick.hunantv.com +adsda.hunantv.com +ads da.mgtv.com +adslog.hunantv.com +adslog.v2.hunantv.com +adsres.hunantv.com +adsv2.log.hunantv.com +adsinner-active.mobi +adsa.ckm.iqiyi.com +adsad.m.iqiyi.com +ads afp.iqiyi.com +adsc.uaa.iqiyi.com +ads cloudpush.iqiyi.com +ads"cm.passport.iqiyi.com +adscupid.iqiyi.com +ads#emoticon.sns.iqiyi.com +ads!gamecenter.iqiyi.com +ads!hotchat-im.iqiyi.com +adsifacelog.iqiyi.com +adsmbdlog.iqiyi.com +ads msg.71.am +adsmsg.video.qiyi.com +ads msg2.video.qiyi.com +ads#policy.video.iqiyi.com +adsyuedu.iqiyi.com +adsads.union.jd.com +ads c-nfa.jd.com +adscps.360buy.com +ads +jzt.jd.com +ads stat.m.jd.com +ads img-x.jd.com +ads log-sdk.gifshow.com +adswlog.kuaishou.com +ads leanplum.com +ads#api.game.letvstore.com +ads ark.letv.com +ads dc.letv.com +adsdev.dc.letv.com +ads fz.letv.com +ads g3.letv.com +adsletv.allyes.com +adsminisite.letv.com +adsmsg.m.letv.com +adsn.mark.letv.com +adsplog.dc.letv.com +adspro.hoye.letv.com +ads pro.letv.com +ads stat.letv.com +ads"static.app.m.letv.com +ads decide.mixpanel.com +ads mopub.com +adsevt.mxplay.com +adsanalytics.163.com +ads crash.163.com +ads crashlytics.163.com +ads g.163.com +ads"js-agent.newrelic.com +ads ogury.com +ads +presage.io +adsogury.co +ads onesignal.com +adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$ +ads cdn.pocoiq.cn +ads oct.pocoiq.cn +adsads.pubmatic.com +adscdn.segment.com +ads"static.sensorsdata.cn +ads 2016.sina.cn +adsad.sina.com.cn +adsadbox.sina.com.cn +ads!adimages.sina.com.hk +ads!adimg.mobile.sina.cn +ads adimg.uve.weibo.com +ads!adm.leju.sina.com.cn +ads ads.sina.com +adsalitui.weibo.com +adsapi.apps.sina.cn +ads appgift.sinaapp.com +ads#appsupdate.sinaapp.com +ads atm.sina.com +adsbeacon.sina.com.cn +ads biz.weibo.com +adsc.biz.weibo.com +ads!c.wcpt.biz.weibo.com +ads%click.uve.mobile.sina.cn +ads click.uve.weibo.com +adscm.dmp.sina.cn +ads0#contentrecommend-out.mobile.sina.cn +ads$count.video.sina.com.cn +ads counter.sina.com.cn +adscre.dp.sina.cn +adscre-dp.sina.cn +adsd00.sina.com.cn +adsdcads.sina.com.cn +adsdl.kjava.sina.cn +ads dmp.sina.cn +adsdp.im.weibo.cn +ads game.weibo.cn +adsgame.weibo.com +ads"gw5.push.mcp.weibo.cn +ads"gw6.push.mcp.weibo.cn +ads"img.adbox.sina.com.cn +ads#img.amp.ad.sina.com.cn +ads"int.dpool.sina.com.cn +ads%interest.mix.sina.com.cn +ads)log.interest.mix.sina.com.cn +ads log.mix.sina.com.cn +ads log.sina.cn +ads!m.beacon.sina.com.cn +adsm.game.weibo.cn +ads!mg.games.sina.com.cn +ads!motu.p4p.sina.com.cn +adsnewspush.sinajs.cn +ads oascentral.sina.com +ads#oascentral.sina.com.hk +adsp4p.sina.com.cn +adspalmnews.sina.cn +adspay.mobile.sina.cn +adspfp.sina.com.cn +adspfpip.sina.com +ads!promote.biz.weibo.cn +ads r.dmp.sina.cn +adsrm.sina.com.cn +ads rs.sinajs.cn +adss.alitui.weibo.com +ads"s.img.mix.sina.com.cn +ads sapi.sina.cn +ads sax.sina.cn +adssax.sina.com.cn +adssaxn.sina.com.cn +adssaxs.sina.com.cn +ads sbeacon.sina.com.cn +ads"sdkapp.mobile.sina.cn +ads!sdkapp.uve.weibo.com +ads$sdkclick.mobile.sina.cn +ads slog.sina.cn +adsslog.sina.com.cn +ads'staticadm.leju.sina.com.cn +adstjs.sjs.sinajs.cn +ads"trends.mobile.sina.cn +ads"u1.img.mobile.sina.cn +ads&wapwbclick.mobile.sina.cn +ads!wbapp.mobile.sina.cn +ads wbapp.uve.weibo.com +ads#wbclick.mobile.sina.cn +ads$wbpctips.mobile.sina.cn +adswidget.weibo.com +ads woocall.sina.com.cn +adszc.biz.weibo.com +adszymo.mps.weibo.com +adsadnet.sohu.com +ads ads.sohu.com +ads!adv-sv-show.focus.cn +ads aty.sohu.com +adsdata.vod.itc.cn +adsepro.sogou.com +ads go.sohu.com +adsgolden1.sogou.com +adsimp.optaim.com +adsinte.sogou.com +adsinte.sogoucdn.com +adslu.sogoucdn.com +ads pv.sohu.com +adstheta.sogoucdn.com +adstrack.sohu.com +adsuranus.sogou.com +adsv2.reachmax.cn +ads)e8aeb8bbdbbd7.cdn.sohucs.com +ads)643108e7617ef.cdn.sohucs.com +ads'adeventtracker.spotify.com +ads$adstudio-assets.scdn.co +ads#bloodhound.spotify.com +adssupersonic.com adssupersonicads.com ads ssacdn.com ads)supersonicads-a.akamaihd.net -ads -A -NYPOST -nypost.com nypost.helpnypostreprints.com -3 - SEGMENTFAULTsegmentfault.com  sifou.com -¡ -SHOPIFY myshopify.com shop.app shopify.com shopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com -¯ - XIAOMITV-ADSad.intl.xiaomi.com +ads g1.tagtic.cn +adsxy-log.tagtic.cn +adsssp.api.tappx.com +ads ad.qq.com +ads ad.qun.qq.com +ads!adfilter.imtt.qq.com +ads adping.qq.com +adsadpm.app.qq.com +adsadsclick.qq.com +adsadsfile.qq.com +adsadshmmsg.qq.com +adsadslvfile.qq.com +adsadslvseed.qq.com +ads%adsmind.apdcdn.tc.qq.com +adsadsqqclick.qq.com +adsadstestview.qq.com +adsadsview.qq.com +adsadsview2.qq.com +adsadv.app.qq.com +ads adver.qq.com +ads btrace.qq.com +adse.qq.com +adslog.tbs.qq.com +ads mpush.qq.com +ads mtrace.qq.com +ads push.qq.com +ads pgdt.gtimg.cn +ads uberads.com +adsalog.umeng.com +ads alog.umengcloud.com +ads +w.cnzz.com +ads!unityads.unity3d.com +ads#unityads.unitychina.cn +ads ads.wteam.xyz +ads#collector.xhamster.com +adsad.intl.xiaomi.com ads ad.mi.com ads ad.xiaomi.com adsadmob.xiaomi.com @@ -7174,76 +9059,414 @@ nypost.com nypost.helpnypostreprints.com adsadeng.hpplay.cn ads kuyun.com ads umeng.com +ads ads.yahoo.com +adsgemini.yahoo.com +ads ysm.yahoo.com +adsactives.youku.com +ads ad.api.3g.youku.com +ads$ad.api.mobile.youku.com +ads ad.mobile.youku.com +ads(a-dxk.play.api.3g.youku.com +ads atm.youku.com +ads#b.smartvideo.youku.com +adsc.yes.youku.com +adsdas.api.youku.com +ads!das.mobile.youku.com +ads!dev-push.m.youku.com +adsdl.g.youku.com +adsdmapp.youku.com +adse.stat.ykimg.com +ads#gamex.mobile.youku.com +ads!guanggaoad.youku.com +ads hudong.pl.youku.com +ads!huodong.pl.youku.com +ads"huodong.vip.youku.com +ads hz.youku.com +adsiyes.youku.com +ads l.ykimg.com +adslstat.youku.com +ads mobilemsg.youku.com +ads msg.youku.com +adsmyes.youku.com +ads p.l.youku.com +ads pl.youku.com +ads#passport-log.youku.com +adsp-log.ykimg.com +adspush.m.youku.com +ads r.l.youku.com +ads s.p.youku.com +adssdk.m.youku.com +adsstat.youku.com +ads$statis.api.3g.youku.com +ads&store.tv.api.3g.youku.com +ads&store.xl.api.3g.youku.com +adstdrec.youku.com +adstest.ott.youku.com +ads!test.sdk.m.youku.com +ads v.l.youku.com +adsval.api.youku.com +ads wan.youku.com +adsykatr.youku.com +adsykrec.youku.com +ads zynga.com +ads#zyngaplayersupport.com +ads 51y5.net a.adtng.com +aaxads.comaddthisedge.com +adtrue.com +ad-srv.netad.api.moji.comad.wang502.com adbutter.netads.trafficjunky.net adtechus.com adxprtz.comcdn.advertserve.comcdn.banclip.comcfts1tifqr.comcontentabc.com cretgate.comero-advertising.comeroadvertising.com exoclick.com +exosrv.com +go2.globalimg-bss.csdn.net imglnkc.com imglnkd.comja2.gamersky.com jl3.yjaxa.top juicyads.comkepler-37b.com +lqc006.com realsrv.coms4yxaqyq95.comshhs-ydd8x2.yjrmss.cnstatic.javhd.comtm-banners.gamingadult.comtrafficfactory.biztsyndicate.com adx.36kr.comclick.ali213.netpbmp.ali213.net^pinggai\d\.caixin\.com$adq.chinaso.comstat.chinaso.com toboads.comdn-growing.qbox.me ad.unimhk.comdas-rpt-log.ucloud.cn + +EGGHEAD +egghead.io +B +DISQUS +disqus.com disquscdn.comdisqusservice.com +3 +QUORA  quora.com quoracdn.net qr.ae ++ + TAPPX-ADSssp.api.tappx.com ads +Ÿ +MUCINEX +mucinex.ca +mucinex.cn mucinex.co.nz mucinex.commucinex.com.cn mucinex.net +mucinex.tvmucinexprofessional.com +' +HEYZO heydoga.com  heyzo.com +$ + CLOUDCONVERTcloudconvert.com +R +UPAI  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com +9 +YOUZAN +youzan.com yzcdn.cn youzanyun.com +ý +ZOHO zoho.com zoho.com.au zoho.eu zoho.in zohocdn.comzohomeetups.comzohomerchandise.comzohopublic.comzohoschools.comzohostatic.com zohostatic.inzohouniversity.comzohowebstatic.com ++ +AFDIAN +afdian.net afdiancdn.com +1 + LIBERAPAY liberapay.com liberapay.org +©$ +INTEL +01.org hyperscan.iointellinuxgraphics.comintellinuxgraphics.net +oneapi.comopenvinotoolkit.orgsnap-telemetry.io +acpica.com clearlinux.cn +cnclearlinux.org +ospray.net +ospray.org intel intel.ac intel.ae intel.af intel.ag intel.ai intel.ar intel.at intel.az intel.ba intel.bg intel.bh intel.bi intel.bo intel.bs intel.by intel.ca intel.cc intel.cg intel.ch intel.cl intel.cmintel.cn +cn intel.co.ae intel.co.cr intel.co.id intel.co.il intel.co.jp intel.co.kr intel.co.uk intel.co.za  intel.com intel.com.ar intel.com.au intel.com.bo intel.com.br intel.com.cn +cn intel.com.co intel.com.ec intel.com.hk intel.com.jm intel.com.mx intel.com.my intel.com.pe intel.com.ph intel.com.pr intel.com.py intel.com.tr intel.com.tw intel.com.uy intel.com.ve intel.cr intel.cu intel.cz intel.de intel.dk intel.dz intel.ec intel.ee intel.eg intel.es intel.eu intel.fi intel.fr intel.ga intel.gd intel.ge intel.gl intel.gm intel.gr intel.gs intel.gt intel.gy intel.hk intel.hn intel.ht intel.hu intel.ie intel.in intel.io intel.it intel.je intel.jo intel.jp intel.ke intel.la intel.lc intel.lk intel.lt intel.lu intel.ly intel.ma intel.md intel.me intel.mg intel.mk intel.mn intel.mp intel.mt intel.mu intel.mw intel.mx intel.my intel.ng intel.nl intel.nu intel.nz intel.pa intel.pe intel.ph intel.pl intel.pn intel.re intel.ro intel.ru intel.rw intel.sa intel.sc intel.se intel.sg intel.si intel.sk intel.sn intel.sr intel.st intel.sv intel.sx intel.sy intel.tf intel.tj intel.tl intel.tm intel.tn intel.tt intel.tv intel.tw intel.ua intel.uk intel.us intel.uy intel.uz intel.vg intel.vn intel.vu intel.wf intel.yt +altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net buyaltera.com celeron.com celeron.net centrino.com centrino.net  chips.com cilk.com cilk.netcloudinsights.comclusterconnection.com coreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com  easic.com enpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.com intc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.com intelgo.netintelinsight.cominteliotmarketplace.com +intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component intelplay.comintelquark.comintelrealsense.cn +cnintelrealsense.com intelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com  itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.com movidius.com movidius.netnervanasys.com  nevex.comnextgenerationcenter.com +niosii.com +niosii.netomekinteractive.com +omnitek.tv openamt.comopendroneid.orgoptanedifference.com +pc.com pentium.com pentium.net pintool.compoweredbyintel.comreconinstruments.com reconjet.comresearchintel.comsaffrontech.comsensorynetworks.com +siport.comsmart-edge.comtheintelstore.comthunderbolttechnology.nettrustedanalytics.comtrustedanalytics.net +vokevr.com vpro.com vpro.net xeon.comxn--ztsq84g.cn +xscale.combarefootnetworks.com +€ + YUANFUDAO banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com +# +V8 +v8.dev v8project.org +˜ +CATEGORY-SCHOLAR-CN +csdl.ac.cn  las.ac.cn cnki.netwanfangdata.com.cn +wf.pub  apabi.comcnthinkers.com  cqvip.com +" + HUBBLEPHONEhubblephone.com +( +LTN +ltn.com.tw yes123.com.tw +S + OGURY-ADS ogury.com +ads +presage.io +adsogury.co +ads + +ABEMA abema.io abema.tv  adx.promo ameba.jp amebame.com amebaownd.comamebaowndme.com  ameblo.jp bucketeer.jpdokusho-ojikan.jp hayabusa.dev hayabusa.iohayabusa.media winticket.jpabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.net + +GAB gab.com +' +HM +hm.com hm.com.cn +cn +© +VILAVPN vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz + + BITWARDEN bitwarden.com + +MPV +mpv.io +< +QUIP quip-cdn.com quip.comquipelements.com +ß +THELINUXFOUNDATION +kernel.org  linux.org amp.devampproject.comampproject.netampproject.orgcdn.ampproject.org +cnamp.akamaized.netelectronjs.org +jquery.comjquerymobile.com jqueryui.com mochajs.org +nodejs.org openjsf.orglfai.foundationlinuxfoundation.org + +XINGRZ  xingrz.me + +GAMERSKY gamersky.com + +VGTIME +vgtime.com +¼ +GOG gog.comgog-statics.comgog.qtlglb.com +cn$gogalaxy.gog-statics.com +cn'menu-static.gog-statics.com +cn'productcard.gog-statics.com +cn(static-login.gog-statics.com +cn'www4-static.gog-statics.com +cn, ^images(-\d)?\.gog-statics\.com$ +cn +” + HELLOFONT hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com +û + STACKEXCHANGE askubuntu.comblogoverflow.commathoverflow.netserverfault.com sstatic.net stackapps.com stackauth.comstackexchange.com stackmod.blogstackoverflow.blogstackoverflow.comstackoverflow.emailstackoverflowbusiness.comstacksnippets.net superuser.com tex-talk.netthesffblog.com +± +ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com +Q + CHINANEWS chinanews.comchinanews.com.cn +cns.com.cn ecns.cn +´ + CHINAUNICOM  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn +â +NINTENDO100classicbooks.com +amiibo.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.comkirbysuperstarultra.comkirbysepicyarn.comlegendofzelda.cn +cn legendofzelda.com.cn +cn miitomo.commiitomo.com.cn +cn miiverse.com nentindo.netnintendo-europe-sales.comnintendo-europe.com nintendo.at nintendo.be nintendo.chnintendo.co.jpnintendo.co.krnintendo.co.uknintendo.co.za nintendo.comnintendo.com.hknintendo.com.pt nintendo.de nintendo.dk nintendo.es nintendo.eu nintendo.fi nintendo.fr nintendo.it nintendo.net nintendo.nl nintendo.no nintendo.pt nintendo.ru nintendo.se nintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendolabo.cn +cnnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comsupersmashbros.cn +cn!supersmashbros.com.cn +cnthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.com dkr.com donkeykongcountryreturns.comfire-emblem-heroes.comfireemblemawakening.com +dialga.com giratina.com +kyurem.com pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.com pokemon.compokemonbank.compokemonblackwhite.com pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.net xn--mts47c3w9b1qr.cn +cnxn--mts47c3w9b1qr.netsplatoon2tournament.com starfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.com mariokart.cn +cnmariokart.com.cn +cnmariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.com!supermariobros.com.cn +cnsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com  wii-u.com +wiifit.com wiifitu.com wiipartyu.com wiisports.comwiisportsresort.comwiiugamepad.com  wiivc.net xenoblade.com l XUEQIU aiganggu.comdanjuanfunds.com imedao.comsnowballsecurities.com xueqiu.com -L -LANZOU baidupan.com -lanzou.com lanzous.com woozooo.com +®' +FOXfoxfox-corporation.com fox-news.com fox.com +fox.tv fox10.tv fox10news.comfox10phoenix.com  fox11.comfox13memphis.com fox13news.com  fox23.comfox23maine.com +fox247.com  fox247.tv  fox26.comfox26houston.comfox28media.com  fox29.comfox2detroit.com fox2news.com  fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com fox42kptm.com  fox46.comfox46charlotte.com  fox47.com fox49.tv fox4news.com fox51tns.netfox5atlanta.com +fox5dc.com +fox5ny.com fox5storm.com fox6now.com fox7.comfox7austin.com fox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com +foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.com foxcincy.com foxcincy.jobs foxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com foxcredit.com foxcredit.org foxd.tv +foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.com foxdoua.comfoxentertainment.com +foxest.com +foxfaq.com +foxfdm.com foxfiles.com +foxinc.com foxkansas.com  foxla.com foxla.tvfoxlexington.comfoxmediacloud.com foxnation.comfoxnebraska.com +foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com +foxnews.cc foxnews.com foxnews.net foxnews.org +foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com foxnewsgo.net foxnewsgo.org foxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com  foxon.comfoxphiladelphia.com foxplus.com foxpoker.com  foxrad.io foxredeem.comfoxrelease.comfoxrichmond.com foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org foxsoccer.net foxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.com foxsports.cl foxsports.cofoxsports.co.ve foxsports.comfoxsports.com.arfoxsports.com.bofoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.gtfoxsports.com.mxfoxsports.com.pefoxsports.com.pyfoxsports.com.uyfoxsports.com.ve foxsports.gtfoxsports.info foxsports.netfoxsports.net.br foxsports.pe foxsports.sv foxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com foxsuper6.com +foxtel.com foxtel.com.aufoxtelevisionstations.com  foxtv.com foxtvdvd.com  foxuv.comfoxweatherwatch.com  fssta.com +fxn.ws fxnetwork.comfxnetworks.com bentobox.tv kicu.tv ktvu.commyfoxsanfran.comafewmomentswith.com +anidom.comcasoneexchange.comcoronavirusnow.com +fse.tvgeraldoatlarge.comgooddaychicago.com joeswall.comkilmeadeandfriends.commaskedsingerfox.com +my13la.com +my20dc.commy20houston.com +my29tv.com my45.com  my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.com myfoxdc.commyfoxdetroit.com myfoxdfw.commyfoxhouston.commyfoxhurricane.com myfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.com myfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com myfoxzone.com myq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.com q13.com +q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com rprimelab.comshopspeedtv.comsoccermatchpass.comspeeddreamride.comspeedfantasybid.comspeedracegear.com speedxtra.comteenchoice.com testonfox.comtheclasshroom.comthefoxnation.comthegeorgiascene.comwhatthefox.comwhosthehost.com wofl.tvwoflthenewsstation.com wogx.com foxnewsplayer-a.akamaihd.net +– + HKETGROUPapexprint.com.hk eprc.com.hk etbc.com.hk etnet.com.cn +cn etnet.com.hketnetchina.com.cn +cnetpress.com.hkettrade.com.hk etwealth.com hket.com hketgroup.comulifestyle.com.hkumagazine.com.hk +N +CNBC cnbc.com +cnbcfm.com +nbcuni.comnbcudigitaladops.com +à +ICLOUDapple-icloud.cn +cnappleicloud.cn +cnapplemx-icloud.comicloud-apple.cn +cnicloud-content.comicloud-isupport.com  icloud.ch +icloud.com icloud.com.cn +cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn +cn  icloud.om +icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn +cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com +icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com +me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net +- +MYRADIO +myradio.hkmyradio.com.hk +6 + RULEOFLAWrolfoundation.orgrolsociety.org + +XHAMSTER xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com +ads +Ô +CATEGORY-MOOC-CNchinesemooc.org +cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com +Á + CATEGORY-PORN bongacams.com +bcicdn.com bcrncdn.com +btt804.com +btt904.com +bttzyw.com +bttzyw.net e-hentai.org ehgt.org ehtracker.org +ehwiki.org exhentai.orghentaiverse.org heydoga.com  heyzo.com cdnlab.live jable.tv +javbus.com javbus22.com javfinder.sh findercdn.me o0-2.com +javwide.tv javwide.comlivejasmin.com dditsadn.com dditscdn.com +metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net +phncdn.com phprcdn.com pornhub.compornhubpremium.com scoreland.comcdn77.scoreuniverse.com  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com +ads xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youjizz.comyjcontentdelivery.com 0plkijj.vip  114av.xyz 16fhgdty.xyz 18novel.xyz +1jjdg2.vip +1jsa22.vip  1pondo.tv  51dh.site 520aa.tv 5278.cc +52hyse.com 54647.online 69story.com 69vj.com  721av.com +7mm.tv +85tube.com 91.51rmc.com +91porn.com 920share.com +a.91gay.me a.kslive.tv aavs.xyz  agzy1.com aibaobei.me aimei133.com airav.ccanimezilla.comasianpornmovies.com av01.tv  av1688.cc av6k.com avfox.cc  avgle.com +avinin.com +avmoo.cyou avn.com +avpanda.cc +avsee01.tv avseesee.com bangbros.com beeg.combesthentaitube.com brazzers.com +buzzav.com  caime.xyz calvappd.me cam4.comchaturbate.com cslpldyb.me  dkk37.comdownload.91porn005.medownload.i91av.org +dvh30n.vip eporner.comfanhaodian.comflirt4free.com follasian.com +gaypad.net  gouri.xyz  hanime.tv +hanime1.me  hegre.com hpjav.tv hqporner.com hsxhr.ccichineseporn.com  iijav.com  immxd.com isexlove.tw isexomega.tw jable.tvjapan-whores.comjapanesebeauties.net jav.guru jav01.cc +jav101.com  jav168.cc +jav321.com javcc.cc  javcc.com +javdoe.com javdove8.xyz  javfor.me javfull.net  javhd.com  javhd.pro javhd3x.com javhdfree.netjavlibrary.com javmost.com  javqd.com javynow.com  jgg18.xyz jiayoulu.com jinnaju.com jjdong7.com +johren.net kindgirls.com kissjav.com kphimsex.net  love7.xyz lp99.pw lsnzxzy1.com lubetube.com +lululu.one manyvids.com mdlf.xyz myavfun.commydirtyhobby.commyfreecams.com nekoxxx.com netflav.com nhentai.netohyeah1080.com +onejav.comosakamotion.netp3.csgfnmdb.com papalah.com  pigav.com  popjav.tv pornbest.org +pornhd.com porntea.com  press.vin +pyhapp.com +qingse.one  r18lu.comrealitykings.com redtube.com +rule34.xxx seqingx.com seselah.com sextop1.net +sexzy4.com +soirt4.funsouth-plus.net spankbang.com stripchat.com +sub147.com  swag.live t66y.comtbr.tangbr.net theav.cctheporndude.com +thisav.com thtmod1.com +tkb008.xyztokyomotion.net  tssp.best  tube8.comtubetubetube.com upjav.ccvaginacontest.com vgg8.com vjav.comwatchjavonline.com wuso.me  wzmyg.com  x-art.com x18r.com  x99av.com  xo104.com  xtube.com  youav.com youporn.com +P + KUAISHOU-ADS log-sdk.gifshow.com +adswlog.kuaishou.com +ads +Ì + THEGUARDIAN theguardiandev-guardianapis.comdev-theguardian.com +gu-web.netguardianapis.comguardianapps.co.uk +guim.co.uktheguardian.comtheguardiandns.com +À +ADIDAS  adidas.at  adidas.be  adidas.ch adidas.co.in adidas.co.uk +adidas.com adidas.com.cn +cn adidas.com.sa adidas.com.tw  adidas.cz  adidas.de  adidas.dk  adidas.hu  adidas.ie  adidas.it  adidas.nl  adidas.pl  adidas.ru  adidas.se +M + MESSENGERfbmessenger.comm.me messenger.com +nbabot.net ++ +MONGODB mongodb.com mongodb.org +k +SLING dishworld.comslinginternational.com  sling.commovenetworks.com +movetv.com * -JAVWIDE -javwide.tv javwide.com -¯ -JD-ADSads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads -) -DRIBBBLE drbl.in dribbble.com -™ -INSIDERbusinessinsider.co.zabusinessinsider.combusinessinsider.com.aubusinessinsider.com.plbusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sginsider-intelligence.com insider.cominsiderintelligence.com -r - LAUNCHPAD launchpad.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org -a -LE -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com -" -TED ted.com -tedcdn.com -¯ - -VISUALARTS abow.jp angelbeats.jp -anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.comkamisama-day.jpkamisama-maeda-lab.com koubaibu.jplitbus-anime.com product.co.jprewrite-anime.tvvisualarts.gr.jpvisual-arts.jp - -XINGRZ  xingrz.me -, - BYTEDANCE-ADSmcs.snssdk.com -ads -2 - NEWRELIC-ADS"js-agent.newrelic.com -ads -™ -TWITTERads-twitter.com periscope.tv pscp.tvt.co tellapart.com tweetdeck.com  twimg.com twitpic.com twitter.com -twitter.jptwitterinc.comtwitteroauth.comtwitterstat.us twtrdns.net  twttr.com vine.co - -CATEGORY-VPNSERVICES 928.plus -zind.cloud boslife.biz boslife.net -cylink.procylink0122.icu dlercloud.com dlercloud.org dlercloud.me dleris.best duyaoss.com duyaossr.com hitun.ioxn--90wwvt03e.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net n3ro.lol n3ro.net n3ro.wtf nexitally.comnexitallysafe.com nexitcore.com paofu.cloud paofuyun.meshadowsocks.comshadowsocks.nlsquirrelvpn.comsquirrelgroup.netairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com surflite.co surflite.net vilavpn.com vilavpn.xyz vilavpn1.xyz vilavpn2.xyz vilavpn3.xyz vilavpn4.xyz vilavpn5.xyz vilavpn6.xyz vilavpn7.xyz aaex.uk amytele.com -ark.tobaicaonetwork.com bighead.groupblinkload.zone  cloudn.me  conair.me cordcloud.org ctyun.online geph.io  maying.comocloudplus.com  mray.club muncloud.dog renzhe.cloud -ssplive.pw -ssrpass.pwstc-server.com - -CHIPHELL chiphell.com -% -RUMBLE rmbl.ws -rumble.com -Ü -VANISHo2action.co.krpowerofresolve.capowerofresolve.comspraynwash.com  vanish.at  vanish.be  vanish.ch  vanish.cl vanish.cn -cn vanish.co.id vanish.co.il vanish.co.in vanish.co.nz vanish.co.uk vanish.co.za vanish.com.ar vanish.com.br vanish.com.co vanish.com.hr vanish.com.mx vanish.com.my vanish.com.pe vanish.com.sg vanish.com.tr  vanish.de  vanish.dk  vanish.es  vanish.fi  vanish.fr  vanish.hu  vanish.ie  vanish.it  vanish.nl  vanish.no  vanish.pl  vanish.pt  vanish.ro  vanish.ru  vanish.se  vanish.si  vanish.skvanisharabia.comvanishbancaseulook.com.brvanishcentroamerica.com vanishinfo.czvanishstains.comvanishstains.com.au +TELEKOM telekom.com +telekom.de +ª +DISNEYabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com +espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net +marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com +babble.com babyzone.com +dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za +disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com +dssott.comgo-disneyworldgo.com +go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com +k +IKEAikea.cn +cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.com +DOI doi.org doi.info +5 +SENSORSDATA-ADS"static.sensorsdata.cn +ads +ñ +SHOPEE shopee.cn +cn shopee.co.id shopee.co.th +shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg  shopee.tw  shopee.vnshopeemobile.com shopeesz.com +cn +shp.ee +4 +ZB +zb.app +zb.com zb.io zb.live +ö +ICBCicbc icbc-ltd.com icbc-uk.com icbc-us.com +icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com +icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn +2 +INNER-ACTIVE-ADSinner-active.mobi +ads +_ +CATEGORY-WIKI-CNhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn +” + EASTMONEY1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn + + SHARETHIS sharethis.com +n +TWITCH ext-twitch.tv  jtvnw.net  ttvnw.net  twitch.tv twitchcdn.net twitchsvc.net +- +WANFANGwanfangdata.com.cn +wf.pub +4 +THEBORINGCOMPANYboringcompany.com x.com +^ +CTEXCEL +ctexcel.ca ctexcel.comctexcel.com.hk +ctexcel.fr +ctexcel.us +ƒ +MSNmicrosoftnews.ccmicrosoftnews.cn +cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com +" +NIST nist.gov time.gov +r -XUEYUANJUNxueyuanjun.com -3 +PURIKONEJP"api-priconne-redive.cygames.jpomotenashi.cygames.jp%!prd-priconne-redive.akamaized.net +6 + RUBYCHINAruby-china.orgrubyconfchina.org +q +CATEGORY-HOSPITAL-CN  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn +, -CONTENTFULcontentful.com ctfassets.net -¸Œ +HOTJAR-ADSstatic.hotjar.com +ads +F + IDENTRUST identrust.comidentrust.co.uk identrust.net +‘ +SUPERSONIC-ADSsupersonic.com +adssupersonicads.com +ads +ssacdn.com +ads)supersonicads-a.akamaihd.net +ads +¥ + MEADJOHNSONenfinitas.com.cn +cnmeadjohnson.commeadjohnson.com.cn +cnmeadjohnson.com.hkmeadjohnson.com.twmeadjohnson.net + +WWE wwe.com wwe9.com +z +CMB cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.com + +DMZJ dmzj.com +® GEOLOCATION-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup olayan praxisapseek vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci @@ -7758,10 +9981,11 @@ shopee.com shopee.com.br shopee.com.my  shopee.ph  shopee.sg target.comtargetimg1.com walmart wal-mart.com wal.cowalmart-content.com walmart.comwalmart.pharmacywalmartimages.com wmt.cobetterexplained.com brilliant.org apa.orgpsyccareers.com cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgnewisiknowledge.comisiknowledge.com clarivate.comwebofknowledge.comwebofscience.com doi.org doi.info els-cdn.comelsevier-ae.com elsevier.com elsevier.ioengineeringvillage.com  evise.com -scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com +scopus.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.skscholar.l.google.com ic.ac.ukimperial.ac.ukimperialbusiness.schoolimperial.insendi.commit mit.edu mit.netmitpressjournals.orgamamanualofstyle.com anb.org blackstonespoliceservice.com epigeum.com oed.com  omscr.com oup.com ouplaw.com ox.ac.ukoxfordaasc.comoxfordartonline.comoxfordbibliographies.comoxfordclinicalpsych.com oxforddnb.comoxfordfirstsource.comoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.com oxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org ukwhoswho.com"universitypressscholarship.comveryshortintroductions.comserialssolutions.com proquest.comsciencedirect.comsciencedirectassets.com apress.com springer.comspringerlink.comspringernature.com wkap.nl tandf.co.uktandfonline.comtaylorandfrancis.comtaylorfrancis.com -aclweb.org acm.org acs.org altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org +aclweb.org acm.org acs.org +airiti.comairitilibrary.com altmetric.comanalytictech.comannualreviews.org  arxiv.org asha.org berkeley.edubiomedcentral.com biorxiv.org  brill.com cell.com cmu.educomputingreviews.com degruyter.comdentalhypotheses.comelifesciences.org europepmc.orgfrontiersin.org gale.com galegroup.com  ggsrv.com hindawi.com informs.org iop.orgisca-speech.orgjamanetwork.comjapanknowledge.comjbe-platform.com jmlr.org jneurosci.org  jstor.org kuke.comlawdata.com.twliteratumonline.com mdpi.com medrxiv.org nature.com nejm.org neurology.org ovid.com  peerj.comphysiology.org plos.org pnas.org princeton.eduresearchgate.netroutledgehandbooks.comroyalsocietypublishing.org rsc.org sagepub.comscholarpedia.orgsciencemag.orgscientificamerican.com scitation.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com thelancet.com uchicago.edu ucla.edu  umass.edu  wiley.com yale.edu zenodo.orgcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.orgchinapower.csis.org code.orgcodecademy.comcoursera-for-business.orgcoursera.community coursera.help coursera.org edx.org edx-cdn.org egghead.iofreecodecamp.orgkhanacademy.org kastatic.org @@ -7868,7 +10092,7 @@ dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.net disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com dssott.comgo-disneyworldgo.com go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com cinemax.comforthethrone.com hbo.com hboasia.com  hbogo.com hbogoasia.com hbogoasia.hk -hbomax.com +hbomax.com hbomaxcdn.com hbonow.com  maxgo.com 112263.com callhulu.comfindyourlimits.com freehulu.com  hooloo.tv  hoolu.com hoolu.tv hu1u.com huloo.cc huloo.tv hulu.com hulu.tv hulu.ushuluaction.com huluad.com huluapp.com huluasks.com hulucall.com hulufree.com hulugans.comhulugermany.com @@ -7879,7 +10103,7 @@ hulutv.com huluusa.comjoinmaidez.com mushymush.tv myhulu.comoriginalhulu.com payhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.comboxofficemojo.com imdb.com imdb.tomedia-imdb.comkingkong.com.twkingkongapp.com kfs.io  kk.stream  kkbox.com kkbox.com.tw  kktix.com kktv.com.tw kktv.me mytvsuper.com tvb.com fast.com netflix.ca netflix.com netflix.netnetflixinvestor.comnetflixtechblog.com nflxext.com nflximg.com nflximg.netnflxsearch.net -nflxso.net nflxvideo.netnico +nflxso.net nflxvideo.netnetflixdnstest1.comnetflixdnstest2.comnetflixdnstest3.comnetflixdnstest4.comnetflixdnstest5.comnetflixdnstest6.comnetflixdnstest7.comnetflixdnstest8.comnetflixdnstest9.comnetflixdnstest10.comnico nicodic.jp nicomanga.jp niconico.com nicoseiga.jp nicovideo.jp nimg.jp simg.jp  pixiv.net  pixiv.org pixiv.co.jp  pximg.net pca.stpocketcasts.com fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com dishworld.comslinginternational.com  sling.commovenetworks.com movetv.comimageworks.commotionpictureser.com playshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.com wheelpop.com @@ -8718,6 +10942,7 @@ verily.comverilylifesciences.comverilystudyhub.comverilystudyw wallet.com  waymo.com waze.com web.app web.devwebappfieldguide.comwebmproject.orgwebpkgcache.com webrtc.orgweltweitwachsen.dewhatbrowser.org widevine.comwithgoogle.com womenwill.comwomenwill.com.br womenwill.id womenwill.in womenwill.mx  x.company x.team xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxn--ngstr-lra8j.com xplr.cozukunftswerkstatt.de"csi-china.l.google.com +cn%gstaticadssl.l.google.com cnwww.recaptcha.net cn265.com cn2mdn.net @@ -9044,2225 +11269,5 @@ rea.global rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com sbux.com.my sbuxcard.comstarbucks-stars.com starbucks.ad starbucks.at starbucks.be starbucks.bg starbucks.ca starbucks.chstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.za starbucks.comstarbucks.com.arstarbucks.com.bnstarbucks.com.cn cnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uy starbucks.de starbucks.dk starbucks.es starbucks.fr starbucks.hu starbucks.ie starbucks.in starbucks.it starbucks.nl starbucks.no starbucks.ph starbucks.pl starbucks.pt starbucks.rs starbucks.ru starbucks.se starbucks.tt starbucks.vnstarbucksathome.comstarbucksavie.castarbuckscard.phstarbuckscardb2b.comstarbuckscoffee.czstarbuckscoffeegear.com starbuckscoffeegearstore.comstarbucksforlife.castarbucksforlife.comstarbuckspoq.comstarbucksreserve.comstarbucksrewardsstarland.ca starbucksrewardsstarland.comstarbucksromania.rostarbucksrtd.comstarbucksslovakia.skstarbuckssummergame.castarbuckssummergame.com tsquare.tv  windy.com xdty.org  xingrz.me - - -GLOBALSIGNglobalsign-media.com globalsign.be globalsign.chglobalsign.co.ukglobalsign.comglobalsign.com.auglobalsign.com.hkglobalsign.com.sg globalsign.es globalsign.eu globalsign.frglobalsign.net globalsign.nl!secure.globalsign.com -cnocsp.globalsign.com -cn ocsp2.globalsign.com -cn -ô -VERIZON -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com -oath.cloud oath.com ouroath.comstatic-verizon.com -uplynk.com verizon.com verizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.com vzw.com -xo.com -» -VIU -viu.tvapi.viu.now.com^ewcdn[0-9]{2}\.nowe\.com$ viu.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net -H -ACFUN acfun.cn aixifan.com apilog-web.acfun.cn -ads - -PARLER -parler.com -/ - -THEINITIUMtheinitium.com  init.shop -6 -4CHAN 4cdn.org  4chan.org 4channel.org -> -UBUNTU -ubuntu.com -ubuntu.netubuntuforums.org - -FIREFOX firefox.com -- -LANTERNgetlantern.org -lantern.io -= -SIGNAL -signal.art -signal.orgsignalusers.org -€ - YUANFUDAO banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com -B - APPLOVIN-ADS applovin.com -ads -applvn.com -ads -I -DMM dmm.com  dmm.co.jpdmm-extension.com dmmapis.com -2 -REABBLE -reabble.cn -cn reabble.com - -TSQUARE -tsquare.tv -$ - FREECODECAMPfreecodecamp.org -ó -REAGROUPflatmates.com.auhackday.com.auhometrack.com.au housing.comhousingcdn.cominventorship.com.au ippstatic.com iproperty.comiproperty.com.myiproperty.com.sg -makaan.com move.com moveaws.com  myfun.comproperty.com.au proptiger.com rea-asia.com rea-group.com -rea.design -rea.global -rea.io rea.techrealcommercial.com.aurealestate.com.au realtor.com reastatic.net rumah123.comsmartexpos.comsmartline.com.auspacely.com.ausquarefoot.com.hkthinkofliving.com -ˆ -SINA  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -U - CLEARASIL clearasil.cn -cnclearasil.com.cn -cn clearasil.us -$ - HUANGHUAGANGhuanghuagang.org - -GRAVATAR gravatar.com - -ALI213 -ali213.net -' -HM -hm.com hm.com.cn -cn -8 -TARGET -target -target.comtargetimg1.com - -VGTIME -vgtime.com - - W3SCHOOLS w3schools.com -Ç -YAHOO -flickr flic.kr -flickr.com -flickr.netstaticflickr.com ads.yahoo.com -adsgemini.yahoo.com -ads ysm.yahoo.com -ads yahoo yahoo.ae yahoo.am yahoo.as yahoo.at yahoo.az yahoo.ba yahoo.be yahoo.bg yahoo.bi yahoo.bs yahoo.bt yahoo.by yahoo.ca  yahoo.cat yahoo.cd yahoo.cg yahoo.ch yahoo.cl yahoo.cmyahoo.cn -cn yahoo.co.ao yahoo.co.bw yahoo.co.ck yahoo.co.cr yahoo.co.id yahoo.co.il yahoo.co.in yahoo.co.jp yahoo.co.kr yahoo.co.mz yahoo.co.nz yahoo.co.th yahoo.co.tz yahoo.co.uk yahoo.co.uz yahoo.co.ve yahoo.co.vi yahoo.co.za  yahoo.com yahoo.com.af yahoo.com.ag yahoo.com.ai yahoo.com.ar yahoo.com.au yahoo.com.bd yahoo.com.bo yahoo.com.br yahoo.com.bz yahoo.com.cn -cn yahoo.com.co yahoo.com.do yahoo.com.ec yahoo.com.eg yahoo.com.es yahoo.com.fj yahoo.com.gi yahoo.com.gt yahoo.com.hk yahoo.com.kw yahoo.com.lb yahoo.com.ly yahoo.com.mt yahoo.com.mx yahoo.com.my yahoo.com.na yahoo.com.nf yahoo.com.om yahoo.com.pa yahoo.com.pe yahoo.com.ph yahoo.com.pk yahoo.com.pr yahoo.com.py yahoo.com.sa yahoo.com.sb yahoo.com.sg yahoo.com.sv yahoo.com.tj yahoo.com.tr yahoo.com.tw yahoo.com.ua yahoo.com.uy yahoo.com.vc yahoo.com.vn yahoo.cz yahoo.de yahoo.dj yahoo.dk yahoo.dm yahoo.ee yahoo.es yahoo.fi yahoo.fm yahoo.fr yahoo.ge yahoo.gg yahoo.gl yahoo.gm yahoo.gp yahoo.gr yahoo.gy yahoo.hk yahoo.hr yahoo.hu yahoo.ie yahoo.im yahoo.in yahoo.is yahoo.it yahoo.je yahoo.jo yahoo.la yahoo.lt yahoo.lu yahoo.lv yahoo.md yahoo.me yahoo.mk yahoo.mw yahoo.mx  yahoo.net yahoo.nl yahoo.no yahoo.nu yahoo.ph yahoo.pl yahoo.pn yahoo.ps yahoo.pt yahoo.ro yahoo.ru yahoo.rw yahoo.se yahoo.sg yahoo.sh yahoo.si yahoo.sk yahoo.sm yahoo.sn yahoo.so yahoo.sr yahoo.st yahoo.tg yahoo.tk yahoo.tl yahoo.tm yahoo.tn yahoo.vg yahoo.ws maktoob.com -myguide.hkyahoo-news.com.hk yahooapis.com yahoodns.netyahoofinance.comyahoohealth.comyahoomusic.comyahoosportsbook.com yho.com yimg.com yimg.jp  ymail.com -á - -AKAMAI ak1.net -aka-ai.com -aka-ai.net akacrypto.net akadeem.net -akadns.com akadns6.net -akaeai.com -akafms.net akahost.net -akaint.net akam.net -akamaa.com -akamah.com -akamak.com -akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com akamai.co.kr -akamai.com -akamai.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.net akamaihd.com akamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaized-staging.net akamaized.netakamaizercentral.com -akamci.com  akami.com  akami.net -akamii.com -akamqi.com akastream.com akastream.net -akatns.net iamakamai.com iamakamai.netsoasta-dswb.com -srtcdn.net -5 -SENSORSDATA-ADS"static.sensorsdata.cn -ads -^ -SWIFTappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cn -’ -AZURE azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.com -3 - -STREAMABLE embed-cdn.comstreamable.com -7 -VANCL  vancl.com vanclimg.com  vcimg.com -ÿÆ -APPLEiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -adscalendarserver.orgapple-cloudkit.com cups.orgdeveloper.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comfoundationdb.orgmacosforge.org macruby.com macruby.net macruby.orgapple-mapkit.complaygrounds-cdn.apple.com carekit.orgresearchandcare.orgresearchkit.cn -cnresearchkit.com.cn -cnresearchkit.hkresearchkit.netresearchkit.orgresearchkit.tvservicetalk.io -webkit.org webkitgtk.org wpewebkit.orgwebobjects.com-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com 2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com -aanaan.comabcheadphones.comabeatsbydrdre.com aeasyshop.com -airmay.com -ajtalk.com albeats.com annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com bandgirlz.com baxsound.com bbestmall.com -beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com  beats1.cc beats1.cn -cn  beats1.tv beats1.com.cn -cn beats123.com beats2.com.cn -cn beats4.cn -cn -beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.com beatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.com -beatsep.cn -cn beatsep.com beatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.net beatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang beatsneon.combeatsnzsale.com beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.com beatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.com beatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com -biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com bookonsky.net -bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com -cmhalq.com cnshopin.comcoolmonster.netcozydrdrebeats.com cqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.com drebyby.comdremonsterbeatsoutlets.comdreprobeats.com dreprofy.com -dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.com free-aa.com free-sns.com frishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net gobeatsye.comgobuyonlinestore.net goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.com highbolt.net highdefinitionbeatsbydre.com hipaa6020.com hipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com  hrsaz.com ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.com jkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.com lexuemei.comlovebeatsdr.com lovemarca.comluckyissue.com -lyzsxx.com mairbeats.com -makeeu.commallheadphone.commbeats-tech.commbheadphone.com -micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com -ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.com neborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com  rbsgr.comrepsneakermall.com repswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.com samebags.com sanvaras.com -scnshop.cc -shoers.com shoestop2.comshop-headphones.netshopbeatsdre.com shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.com soso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.com takegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com -theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com tradevip1.com tteshop.com ubnw.net -unstyle.us&"usa-beatsbydreheadphonesonsale.net  v-has.com vip-beats.comvipbeatsbydre.comvipheadphones.com vipshoes2.com  wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com%!beatselectronicsllc.tt.omtrdc.netapple-icloud.cn -cnappleicloud.cn -cnapplemx-icloud.comicloud-apple.cn -cnicloud-content.comicloud-isupport.com  icloud.ch -icloud.com icloud.com.cn -cn  icloud.de  icloud.ee  icloud.fi  icloud.fr  icloud.hu  icloud.ie  icloud.is  icloud.jp  icloud.lv icloud.net.cn -cn  icloud.om -icloud.org  icloud.pt  icloud.ro  icloud.se  icloud.si  icloud.sk  icloud.vn icloudads.neticloudapple.cn -cn icloudbox.neticloudbrowser.net icloude.comicloudhome.comicloudmail.neticloudmusic.net icloudnet.net icloudpay.net icloudo.com -icloudo.de icloudo.net icloudos.de icloudos.neticloudsecure.neticloudsetup.comios-icloud.com -me.com myicloud.net mylcloud.net wwwicloud.com!www-cdn.icloud.com.akadns.net!12diasdepresentesdeitunes.com12diasderegalosdeitunes.cl12diasderegalosdeitunes.co!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve12diasderegalosdeitunes.com"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.ve12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comapple-itunes.cn -cn itun.es itunbes.com ituneas.comitunes-apple.cn -cnitunes-radio.net  itunes.ca  itunes.co itunes.co.th -itunes.com  itunes.hk  itunes.mx -itunes.org -itunes.rio  itunes.usitunes12days.comitunesapple.cn -cnitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.cn -cnitunesradio.comitunesradio.com.cn -cnitunesradio.rioitunesradio.tvitunesradio.twitunesstore.co itunesu.com itunesu.net iutunes.com wwwitunes.comitunes-apple.com.akadns.netappleswift.com  swift.org -swiftui.cn -cnswiftui.com.cn -cn apple apple.ae apple.at apple.be apple.bg apple.bs apple.ca apple.ch apple.cl apple.cmapple.cn -cn apple.co apple.co.cr apple.co.hu apple.co.jp apple.co.kr apple.co.mz apple.co.nz apple.co.th apple.co.uk  apple.com apple.com.af apple.com.au apple.com.bo apple.com.br apple.com.cn -cn apple.com.co apple.com.de apple.com.do apple.com.gr apple.com.gy apple.com.jm apple.com.lk apple.com.mg apple.com.mx apple.com.my apple.com.pa apple.com.pe apple.com.pl apple.com.pr apple.com.pt apple.com.py apple.com.sg apple.com.sv apple.com.tr apple.com.tw apple.com.uy apple.cz apple.de apple.dk apple.ee apple.es apple.eu apple.fi apple.fr apple.hamburg apple.hn apple.hr apple.hu apple.ie apple.in apple.is apple.it apple.jo apple.jp apple.kr apple.lk apple.lt apple.lv apple.me apple.my  apple.net apple.net.gr apple.nl apple.no apple.pk apple.pl apple.pt apple.ro apple.rs apple.ru apple.sa apple.se apple.sg apple.si apple.sk apple.so apple.tt apple.tw apple.uk apple.usapple.xn--czr694bapple.xn--fiqs8s  apple.xyz aplestore.comapple-store.cn -cnapple-store.netapple-store.wang applestor.com applestore.bg applestore.cc applestore.ch applestore.cm applestore.cn -cnapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.comapplestore.com.auapplestore.com.bnapplestore.com.cn -cnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.tw applestore.de applestore.hk applestore.kr applestore.meapplestore.netapplestore.net.gr applestore.ph applestore.qa applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comapple-appstore.cn -cnappleappstore.cn -cnappleappstore.netappleappstore.tv  appsto.reappstore.co.id appstore.hk appstore.my appstore.phappstoreapple.cn -cn asto.retvappstore.netapple-imac.com appleimac.comimac-apple.comimac-applecomputer.com imac.co -imac.co.nz imac.com imac.eu imac.gr imac.one imac.rs imacapple.comimacapplecomputer.comebookforipad.com euroipad.comfindmyipad.com indiaipad.com -ipad.co.kr ipad.de  ipad.host  ipad.wang  ipad3.com -ipadair.cl -ipadair.cmipadair.com.bripadair.com.es -ipadair.fr -ipadair.hk -ipadair.ie -ipadair.jp -ipadair.twipadaustralia.com ipadmini.cmipadmini.com.lk ipadmini.lk ipadpro.buzz -ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com dl-iphone.comfundaiphone5s.com hebiphone.com hf-iphone.com -iphine.comiphone-8.com.cn -cn iphone-cd.com iphone-cn.com iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.com iphone-x.tv iphone-yh.com iphone-zh.com  iphone.cm -iphone.com iphone.com.au iphone.com.gr  iphone.es iphone.host iphone.net.gr  iphone.pt  iphone.rs  iphone.ru iphone.wang iphone4.comiphone4.com.br iphone4s.com iphone5.comiphone5casescovers.comiphone5s5case.comiphoneacessorios.com.briphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comiphoneclaro.com.briphonecollcase.com iphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang iphonerip.net iphonese.tviphoneunlockimei.com iphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.com ipod.ca ipod.ch ipod.cm ipod.co -ipod.co.nz -ipod.co.uk -ipod.co.za ipod.com ipod.com.au ipod.com.cn -cn ipod.com.fr ipod.com.hk ipod.com.sg ipod.com.tw ipod.de ipod.es ipod.eu ipod.fr ipod.gr ipod.hk ipod.is ipod.net ipod.no ipod.pk ipod.rs ipod.ru ipod.tw ipodcentre.nlipodcleaner.comipoditouch.com ipodnano.com ipodnano.netipodprices.com -ipodrip.caipodrocks.com.au  ipods.comipodshop.com.au ipodtouch.co ipodtouch.com -myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wang mac.wang -macbook.co -macbook.hk -macbook.tw macbook.wang macbookair.cn -cnmacbookair.co.krmacbookair.co.ukmacbookair.commacbookair.com.aumacbookair.com.cn -cnmacbookair.com.es macbookair.es macbookair.hk macbookair.kr macbookair.jpmacbookair.net macbookpro.comacbookpro.commacbookpro.com.aumacbookpro.net macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapple-watch.com.ru applewatch.hk applewatch.tv applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin applemusic.coapplemusic.comapplemusic.com.auapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.com musickit.netwwwapplemusic.comapple.comscoreresearch.com -apple.newsappleenews.comapplenews.berlinapplenews.hamburg applenews.tvapplenewsformat.com apple-pay.com apple-pay.rsapple-pay.wangapplepay.berlinapplepay.co.rsapplepay.com.twapplepay.hamburg applepay.hk applepay.info applepay.jp applepay.rs applepay.tvapplepaycash.cn -cnapplepaycash.com.cn -cnapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.cn -cnapplepaysupplies.com#applepaysupplies.com.cn -cnapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv -i-book.com -i-book.net ibook.co.nz  ibook.com ibook.eu  ibook.netibookpartner.comibooksauthor.com  iphoto.eu  iphoto.no  iphoto.se iphoto.wang  imovie.euimoviegallery.comimoviestage.comapplecare.berlin applecare.cc applecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com appleid-uk.usappleid.berlin appleid.comappleid.hamburg -appleid.hk ids-apple.com myappleid.com appletv.com -appletv.fr appletv.wang appletv4.cn -cnappletv4.com.cn -cnappletvapp.appleappleone.audio appleone.blog appleone.chatappleone.cloud appleone.clubappleone.community appleone.filmappleone.guide appleone.hostappleone.space appleone.techappleone.website -shazam.com1to1computing.com.au1to1conference.com.au 5lml.com -a0pple.net aapl.twairport.brussels airport.com -airport.euairsupportapp.com airtunes.com airtunes.info airtunes.netalchemysynth.com  ap0le.com aple.com  apole.com -app0le.com -appl-e.com appl.com -appl4e.com  appla.comapple-darwin.comapple-darwin.netapple-darwin.org apple-dns.cn -cn apple-dns.comapple-dns.com.cn -cn apple-dns.netapple-enews.comapple-expo.com apple-expo.eu apple-hk.comapple-ibooks.cn -cn apple-inc.netapple-livephotoskit.com apple-maps.cn -cnapple-online.com apple-usa.netappleafrica.comappleantilles.comappleaustralia.comappleaustralia.com.auappleaustralia.net.au applebk.netapplecarbon.com applecard.tvapplecentar.co.rsapplecentar.rsapplecenter.cn -cnapplecenter.com.cn -cnapplecentre.com.auapplecentre.infoappleclub.com.hk applecom.comapplecomputer-imac.comapplecomputer.cn -cnapplecomputer.co.inapplecomputer.co.nzapplecomputer.com applecomputer.com.cn -cnapplecomputer.com.hkapplecomputer.com.twapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoapplecomputers.co.nzapplecoronavirus.com appledns.cn -cnappledns.com.cn -cn appleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comapplehongkong.com.hkappleinclegal.comappleipodsettlement.comappleiservices.com applelink.comapplemagickeyboard.comapplemalaysia.com.myapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com -appleos.tvapplepencil.netapplepodcasts.comapplepremiumreseller.com.au applepremiumresellers.com.auapplereach.comapplereach.net apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoappleshop.co.uk applesiri.cn -cnapplesurveys.comappletaiwan.com appletips.net appleweb.net applexpo.net applezh.com  applf.com -applfe.com -applle.com  applw.comappmediagroup.com -appule.com  appye.com  apyle.com  beddit.tvbraeburncapital.com burstly.netburstlyrewards.com buyaapl.com buyaapl.net buyaple.com camelphat.comcamelspaceeffect.com -carbon.com catalina.hk cdn-apple.com  chomp.com -coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com -dot-mac.de  dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us -earpod.net ecgapp.com.cn -cn -ecgapp.netedu-research.org -emac.co.in emac.in  emagic.de -eworld.com faceid99.com faceid99.netfaceidglobal.com faceshift.cn -cn facetime.netfinalcutpro.comfind-apple.com firewire.cl firewire.eu geoport.com -homepod.cn -cn -hopstop.tv ichat.co.in idvd.eu  ikids.comilecture.co.nz ilife.eu ilife.gr -ilife.wang imessage.tv insidear.cn -cninsidemacintosh.comiosinthecar.comipa-iphone.net  ipple.com ischool.com itools.info  iwork.com iwork.se -iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com livephotos.cn -cnlivephotos.com.cn -cn livephotos.tvlojaiphone.com.br mac-mini.com mac.com -mac.com.au -mac.eu -mac.rs macappsto.re macboxset.com mach-os.com mach-os.net -machos.net macintosh.eumacintoshsoftware.com macmini.com macos.com.aumacossierra.com macosx.infomacosxlion.com macpazar.com macreach.com macreach.net mobileme.dkmr-apple.com.tw mzstatic.com -newton.com next.com overapple.com powerbook.eupullstring.netquatrowireless.com quicktime.cc quicktime.comquicktime.com.au quicktime.eu quicktime.net quicktime.tvreform-apple.comservices-apple.net siri.com spektral.cc texture.comthinkdifferent.us -touchid.tv touchid.wangtracking-location.comtruedepth3d.com tryrating.comwebobjects.co.uk webobjects.de webobjects.euwebobjects.net wuxiapple.com wwapple.netwww-sms-apple.com wwwapple.com wwwapple.net wwwlapple.comxn--czrs0t4phtr3a.cnxn--fiqs8sxootzz.cn xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e#xn--ohq11k7pl25iyo8a.cn -cn xn--ruq8a011kt6y.xn--hxt814eapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net."amp-api-search-edge.apps.apple.com -cn"amp-api.apps.apple.com -cn aod.itunes.apple.com -cn#api-edge.apps.apple.com -cn(apptrailers.itunes.apple.com -cn bag.itunes.apple.com -cn'bookkeeper.itunes.apple.com -cnbooks.apple.com -cn'client-api.itunes.apple.com -cn cma.itunes.apple.com -cn!communities.apple.com -cn(discussionschinese.apple.com -cnfides-pol.apple.com -cn(gspe11-2-cn-ssl.ls.apple.com -cn&gspe12-cn-ssl.ls.apple.com -cn&gspe85-cn-ssl.ls.apple.com -cn!init.itunes.apple.com -cn$iosapps.itunes.apple.com -cn"js-cdn.music.apple.com -cn km.support.apple.com -cnmaps.apple.com -cn$osxapps.itunes.apple.com -cnpd.itunes.apple.com -cn!play.itunes.apple.com -cn$se-edge.itunes.apple.com -cn se2.itunes.apple.com -cn#search.itunes.apple.com -cn1%sf-api-token-service.itunes.apple.com -cnsp.itunes.apple.com -cn&stocks-sparkline.apple.com -cn+streamingaudio.itunes.apple.com -cnsu.itunes.apple.com -cn!sync.itunes.apple.com -cn upp.itunes.apple.com -cn"weather-data.apple.com -cn#^a[1-5]\.mzstatic\.com$ -cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$ -cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$ -cn!^cl[1-5]\.apple\.com$ -cn+^is[1-5](-ssl)?\.mzstatic\.com$ -cn$^s[1-5]?\.mzstatic\.com$ -cna1.mzstatic.com -cna2.mzstatic.com -cna3.mzstatic.com -cna4.mzstatic.com -cna5.mzstatic.com -cn, adcdownload.apple.com.akadns.net -cn!adcdownload.apple.com -cnappldnld.apple.com -cn"appldnld.g.aaplimg.com -cnapps.apple.com -cnapps.mzstatic.com -cn$cdn-cn1.apple-mapkit.com -cn$cdn-cn2.apple-mapkit.com -cn$cdn-cn3.apple-mapkit.com -cn$cdn-cn4.apple-mapkit.com -cn cdn.apple-mapkit.com -cn!cdn1.apple-mapkit.com -cn!cdn2.apple-mapkit.com -cn!cdn3.apple-mapkit.com -cn!cdn4.apple-mapkit.com -cn!cds-cdn.v.aaplimg.com -cn$cds.apple.com.akadns.net -cn cds.apple.com -cn/#cl1-cdn.origin-apple.com.akadns.net -cn cl1.apple.com -cncl2-cn.apple.com -cn<0cl2.apple.com.edgekey.net.globalredir.akadns.net -cn cl2.apple.com -cn/#cl3-cdn.origin-apple.com.akadns.net -cn cl3.apple.com -cn/#cl4-cdn.origin-apple.com.akadns.net -cncl4-cn.apple.com -cn cl4.apple.com -cn/#cl5-cdn.origin-apple.com.akadns.net -cn cl5.apple.com -cn+clientflow.apple.com.akadns.net -cn clientflow.apple.com -cn."configuration.apple.com.akadns.net -cn#configuration.apple.com -cncstat.apple.com -cn."dd-cdn.origin-apple.com.akadns.net -cn(download.developer.apple.com -cngs-loc-cn.apple.com -cngs-loc.apple.com -cn%gsp10-ssl-cn.ls.apple.com -cn!gsp11-cn.ls.apple.com -cn!gsp12-cn.ls.apple.com -cn!gsp13-cn.ls.apple.com -cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net -cn, gsp4-cn.ls.apple.com.edgekey.net -cn gsp4-cn.ls.apple.com -cn gsp5-cn.ls.apple.com -cn%gsp85-cn-ssl.ls.apple.com -cn&gspe19-cn-ssl.ls.apple.com -cn-!gspe19-cn.ls-apple.com.akadns.net -cn"gspe19-cn.ls.apple.com -cn#gspe21-ssl.ls.apple.com -cngspe21.ls.apple.com -cn#gspe35-ssl.ls.apple.com -cniadsdk.apple.com -cn, icloud-cdn.icloud.com.akadns.net -cn icloud.cdn-apple.com -cn'images.apple.com.akadns.net -cn?3images.apple.com.edgekey.net.globalredir.akadns.net -cnimages.apple.com -cn3'init-p01md-lb.push-apple.com.akadns.net -cn init-p01md.apple.com -cn3'init-p01st-lb.push-apple.com.akadns.net -cn%init-p01st.push.apple.com -cn3'init-s01st-lb.push-apple.com.akadns.net -cn%init-s01st.push.apple.com -cn(iosapps.itunes.g.aaplimg.com -cniphone-ld.apple.com -cn is1-ssl.mzstatic.com -cnis1.mzstatic.com -cn is2-ssl.mzstatic.com -cnis2.mzstatic.com -cn is3-ssl.mzstatic.com -cnis3.mzstatic.com -cn is4-ssl.mzstatic.com -cnis4.mzstatic.com -cn is5-ssl.mzstatic.com -cnis5.mzstatic.com -cn'itunes-apple.com.akadns.net -cnitunes.apple.com -cn#itunesconnect.apple.com -cn)mesu-cdn.apple.com.akadns.net -cn+mesu-china.apple.com.akadns.net -cnmesu.apple.com -cnmusic.apple.com -cn(ocsp-lb.apple.com.akadns.net -cnocsp.apple.com -cnoscdn.apple.com -cn-!oscdn.origin-apple.com.akadns.net -cnpancake.apple.com -cn, pancake.cdn-apple.com.akadns.net -cnphobos.apple.com -cn1%prod-support.apple-support.akadns.net -cn#reserve-prime.apple.com -cns.mzstatic.com -cn4(stocks-sparkline-lb.apple.com.akadns.net -cn>2store.apple.com.edgekey.net.globalredir.akadns.net -cn'store.apple.com.edgekey.net -cnstore.apple.com -cn2&store.storeimages.apple.com.akadns.net -cn+store.storeimages.cdn-apple.com -cn2&support-china.apple-support.akadns.net -cnsupport.apple.com -cn."swcatalog-cdn.apple.com.akadns.net -cnswcatalog.apple.com -cnswcdn.apple.com -cnswcdn.g.aaplimg.com -cn'swdist.apple.com.akadns.net -cnswdist.apple.com -cn+swscan-cdn.apple.com.akadns.net -cnswscan.apple.com -cn1%updates-http.cdn-apple.com.akadns.net -cn&updates-http.cdn-apple.com -cnvalid.apple.com -cn-!valid.origin-apple.com.akadns.net -cn<0www.apple.com.edgekey.net.globalredir.akadns.net -cn%www.apple.com.edgekey.net -cn www.apple.com -cn -ä -PRIVATElan localdomain example invalid  localhosttest local  home.arpa ^[^.]+$router.asus.comlocalhost.sec.qq.comlocalhost.ptlogin2.qq.commsftconnecttest.com -9 -SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl -' -APA apa.orgpsyccareers.com - -WINDY  windy.com - -FIGMA  figma.com - - -KINDLE4RSSkindle4rss.com -d -REDDIT -reddit.comredditstatic.comredditmail.comredditmedia.com redd.it -7 - BUYMEACOFFEE buymeacoff.eebuymeacoffee.com -f -ROKU fandango.com mgo.commgo-images.com ravm.tv roku.com rokutime.com - -JIYUKOBOjiyu-kobo.co.jp -Þ - ALIBABA-ADS a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -ads - -HEYTEA -heytea.com -& -HUYA huya.com msstatic.com -= - JAVFINDER javfinder.sh findercdn.me o0-2.com -¸ -SINA-ADS 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -% - -CHINAPOWERchinapower.csis.org -_ -CATEGORY-WIKI-CNhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn -Œ -ESPN espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -' -ZEPLIN -zeplin.dev  zeplin.io -/ -ADGUARDadguard-vpn.com adguard.com - -FEEDLY -feedly.com - -QUALCOMMairgonetworks.comberkanawireless.comdragoniscoming.comgobianywhere.comhellosmartbook.com imod.comipleadership.org -iskoot.commeetsmartbook.compatenttruth.org pixtronix.comqctconnect.com -qprize.comqualcomm-email.com qualcomm.cnqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.co.krqualcomm.co.uk qualcomm.comqualcomm.com.brqualcomm.com.tw qualcomm.de qualcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com qualphone.com quicinc.com snapdragon.cnsnapdragonbooth.com -uplinq.com wipower.comwirelessreach.com -brewmp.comqualcomm.sc.omtrdc.net -L - -TEAMBITIONteambition.comteambition.netteambitionapis.com -œL -TLD-!CNgovmileduacadaeafagalamanaoaqaratauawaxazbabgbhbibjbmbnbobrbsbvbwbybzcacdcgclcmcrcucwcxcyczdedkdzecegehereseufifjfkfofrgagbgdgeghgiglgmgngrgsgtgugwgyhkhnhthuieiliniqirjejmjojpkekhkiknkpkrkwkykzlblclilklrlsltlulymamcmdmfmgmhmkmnmompmqmrmtmumwmxmymznancnenfngninlnonpnrnunzompapepfpgphplpnrerorurwsascsdsesgsisjskslsnsrssstsusvsxsysztctdtfthtjtktltmtntotptrtttwtzuaugukumusuyuzvavcvevgvivnvuwfytzazmzwaflmlbnbanflnra averybbbbcgcebcrsdnbdnpdunsdvagerni globalxice locus mckinsey olayangroup -olayan praxisapseek -vistaprint vistawtc xerox athletabananarepublic  bloomberg boots calvinklein cartier chloegap gucci -hermesiwcjlc  lancaster lipsyloft mango  montblanc mrporter -netaporter -nextdirectnextnike oldnavy omega panerai  patagonia -piaget  piperlimepolo redstone -swatchaarp -abbott -abbvie aetna alcon -anthembms -boehringer caremore -cialis dabur  freseniusjnj merck mutuelle -sanofiaeg -airbus -alstom -aramco -blanco bosch -bostik -chesapeakechk crown -doosan -dupontflirfls flsmidth  gecompany grainger hitachi  honeywellifm ipirangajio komatsukoneksb  kuokgroup leclerclidl linde lottemanmtr reliance rexrothril rockwoolrwesandvikcoromant sandvik sapphiresca -schaeffler schmidt schwarzgroup schwarz senersewsncf statoil total -vanish -walter -warman weberweir woodsidezara zippo agakhanakdn -ansons -bharti -extraspace genting glean ikano -imamat  ladbrokes -livestrongmaif -mattel shell transformersvanawme astriumcern -emerck  hisamitsu lilly lundbeck lupin merckmsdmsdmtpc -otsuka -pfizer stadateva toray weather auspost deutschepostdhl epost fedex -pitneyaaa -abarthadac  alfaromeoaudi bentleybmw bridgestone bugatti buick cadillaccase -caseih  chevrolet chevy chrysler -datsun dodge -dunlop ferrarifiat  firestonefordgmc goodyear honda hyundai infiniti iveco -jaguarjeepkia lamborghini -lancia  landrover lexus lincoln maseratimini -mitsubishi mopar -newholland -nissanramseatsrt -suzuki -tatamotors -toyotatvs uconnect -volkswagen volvoaigo android apple bestbuy brother canondell digikey fujitsu  fujixerox  goldpointibm nikon nokia olympus  panasonic philips pioneer samsung sharpsony toshiba  yodobashi  allfinanzallfinanzberaterallfinanzberatungallyamericanexpressamexampanz banamex barclaycard barclaysbbtbbvabnl -bnpparibasbofa bradesco -capitalone cashbackbonuscbacfa chasecimb citadelciti commbank deloitte discover everbank fidelity hdfcbankhdfchsbcitaujcbjll jpmorganchase jpmorgankfhkpmg lacaixa lasalle lixil lplfinanciallplnab nadex netbanknorthwesternmutualopen -pictetpncpohl  pramerica -prudentialprupwcsaxosbiscbscor shriram softbank  statebank temasek -transunion ubankubs vanguardvisa wolterskluwerafamilycompany  aquarellediyduck -finish glade  homedepot  homegoods mrmuscleoffraid rightathome  scjohnsonaig allstateamericanfamily amfam amicaaxa chartis esurance farmers  goodhands guardian guardianlife iselect metlifemma -mutual -nationwide -nissaynorthlandinsurance -onyourside progressive redumbrella  statefarm -swiftcover thehartfordtiaatravelersinsurance  travelers travelguardtrvvig beats blockbusterbway netflix playstation showtimetab williamhillxboxasda bloomingdales -george  homesense justforulego macys  marshallsobiqvc safeway samsclub shopyourway staples -targetthd tiffany -tjmaxxtjx -tkmaxxvons walmartabb  accentureaceraco -active -airtel -amazonandaolawsaxis azure chatr -chrome cisco comcast -connectorscscdclkdish -docomodtvdwg emerson epson ericsson etisalat  fairwindsfido -flickr frogans frontierftrgbizgeaggeegle gmailgmogmx godaddygoog -googlegoogreeguge hangouthkt hotmailhtc -hughesieee iinet infosysinfy intel -intuitjavajcpjmpjprs juniperkddi -kindle -konamikpn lanxess liaison -lockermeo  microsoftmihmiimint mitekmit -mobily -mozaicmtn multichoice naspersnec neustar nexusnico -nortonntt -officeollo -oracle -orangeovh patchpayupccwqtel quest  richardli ricoh -rogers -sakurasaposassessfrshaw skolkovo skydrive skype sling smart stcgroupstc symantectatatcitdk telecity -telefonica terra translations  ultrabook unicornuol verisignvivavivo windows xfinity -xperia yahoo yamaxun -yandex yellowpages youtube -zappos -chanel clinique garnier  kerastase -kiehls lamer lancome -loreal -matrix -maybelline -natura origins -redkensvr barefoot beknown cityeatscookingchannel -cuisinella delmonte edekafage ferrero foodnetworkfood gallo heinz -kindermcd  mcdonalds pamperedchef -rocher -wilmarxn--3oq18vl8pn36axn--55qx5d8y0buji4b870uxn--5su34j936bgsgxn--b4w605ferd xn--cckwcxetd -xn--cg4bkixn--dkwm73cwpn xn--flw351exn--fzys8d69uvgmxn--hxt035cmppuelxn--hxt035czzpfflxn--j6w470d71isscxn--jlq480n2rgxn--jlq61u9w7bxn--kcrx77d1x4axn--kcrx7bb75ajk3bxn--mgba3a3ejtxn--mgba7c0bbn0axn--mgbaakc7dvfxn--mgbb9fbpob xn--ngbe9e0a xn--pgb3ceoj xn--qcka1pmcxn--w4r85el8fhu5dnra xn--w4rs40l avianca caravan changiairport cipriani clubmed delta firmdale -hilton hyatt kerryhotelskerrylogisiticskerryproperties marriott orientexpress  shangrila tradershotelstui -viking -virgin -webjetablecbre chintai  frontdoor -lefrakabc africamagicartebbc  canalpluscbncbsdstv -eurovisionfox -gallup globogotv guardianmediahbohgtvimdbitv -kyknetmnet movistar mzansimagicnhk nowtvsbs sevensky spiegel starhub -supersport theguardian travelchannelweatherchannel bauhaus latrobe -monashrmit -Á - CATEGORY-PORN bongacams.com -bcicdn.com bcrncdn.com -btt804.com -btt904.com -bttzyw.com -bttzyw.net e-hentai.org ehgt.org ehtracker.org -ehwiki.org exhentai.orghentaiverse.org heydoga.com  heyzo.com cdnlab.live jable.tv -javbus.com javbus22.com javfinder.sh findercdn.me o0-2.com -javwide.tv javwide.comlivejasmin.com dditsadn.com dditscdn.com -metart.commetartnetwork.com metcams.comnaiadsystems.com  nsimg.net -phncdn.com phprcdn.com pornhub.compornhubpremium.com scoreland.comcdn77.scoreuniverse.com  uug22.com  uug23.com  uug25.com  uug26.com  uug27.com  uuk28.com  uun78.com  uun79.com  uun82.com  uun83.com  uun85.com  uun86.com  uun87.com  uun89.com  uun92.com  uun93.com  uun95.com  uun96.com  uun97.com  uun98.com  uun99.com  uux68.com xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com -ads xnxx.com xnxx-cdn.com xvideos.comxvideos-cdn.com youjizz.comyjcontentdelivery.com 0plkijj.vip  114av.xyz 16fhgdty.xyz 18novel.xyz -1jjdg2.vip -1jsa22.vip  1pondo.tv  51dh.site 520aa.tv 5278.cc -52hyse.com 54647.online 69story.com 69vj.com  721av.com -7mm.tv -85tube.com 91.51rmc.com -91porn.com 920share.com -a.91gay.me a.kslive.tv aavs.xyz  agzy1.com aibaobei.me aimei133.com airav.ccanimezilla.comasianpornmovies.com av01.tv  av1688.cc av6k.com avfox.cc  avgle.com -avinin.com -avmoo.cyou avn.com -avpanda.cc -avsee01.tv avseesee.com bangbros.com beeg.combesthentaitube.com brazzers.com -buzzav.com  caime.xyz calvappd.me cam4.comchaturbate.com cslpldyb.me  dkk37.comdownload.91porn005.medownload.i91av.org -dvh30n.vip eporner.comfanhaodian.comflirt4free.com follasian.com -gaypad.net  gouri.xyz  hanime.tv -hanime1.me  hegre.com hpjav.tv hqporner.com hsxhr.ccichineseporn.com  iijav.com  immxd.com isexlove.tw isexomega.tw jable.tvjapan-whores.comjapanesebeauties.net jav.guru jav01.cc -jav101.com  jav168.cc -jav321.com javcc.cc  javcc.com -javdoe.com javdove8.xyz  javfor.me javfull.net  javhd.com  javhd.pro javhd3x.com javhdfree.netjavlibrary.com javmost.com  javqd.com javynow.com  jgg18.xyz jiayoulu.com jinnaju.com jjdong7.com -johren.net kindgirls.com kissjav.com kphimsex.net  love7.xyz lp99.pw lsnzxzy1.com lubetube.com -lululu.one manyvids.com mdlf.xyz myavfun.commydirtyhobby.commyfreecams.com nekoxxx.com netflav.com nhentai.netohyeah1080.com -onejav.comosakamotion.netp3.csgfnmdb.com papalah.com  pigav.com  popjav.tv pornbest.org -pornhd.com porntea.com  press.vin -pyhapp.com -qingse.one  r18lu.comrealitykings.com redtube.com -rule34.xxx seqingx.com seselah.com sextop1.net -sexzy4.com -soirt4.funsouth-plus.net spankbang.com stripchat.com -sub147.com  swag.live t66y.comtbr.tangbr.net theav.cctheporndude.com -thisav.com thtmod1.com -tkb008.xyztokyomotion.net  tssp.best  tube8.comtubetubetube.com upjav.ccvaginacontest.com vgg8.com vjav.comwatchjavonline.com wuso.me  wzmyg.com  x-art.com x18r.com  x99av.com  xo104.com  xtube.com  youav.com youporn.com -. -SXL mysxl.cn -sxl.cn  sxlcdn.cn -i -SNAP -sc-cdn.net snap-dev.net snap.com snapads.com snapchat.com -snapkit.co - -CODE code.org -j -BAHAMUT gamer.com.twbahamut.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.net -ƒ - NETEASE-ADSanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads -9 -NIKKEI -nikkei.com  nikkei.jp nikkei.co.jp -Q - SOURCEFORGEsourceforge.comsourceforge.net -sf.net fsdn.com -$ -TAOMEE -61.com -taomee.com -' -HACPAI -hacpai.com  ld246.com -, -HITUN hitun.ioxn--90wwvt03e.com -æ - SWISSSIGN digital-id.ch digitalid.chmanaged-pki.chmanaged-pki.de pki-post.ch pki-posta.ch pki-poste.chroot-signing.chrootsigning.comssl-certificate.ch -swissid.ch swissign.com swissign.liswisssign-group.chswisssign-group.comswisssign-group.li swisssign.ch swisssign.com swisssign.li swisssign.net swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.com swisstsa.ch swisstsa.li trustdoc.ch trustsign.ch zert.ch -Ì - THEGUARDIAN theguardiandev-guardianapis.comdev-theguardian.com -gu-web.netguardianapis.comguardianapps.co.uk -guim.co.uktheguardian.comtheguardiandns.com -” -DINGTALK ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.to -B -HASKELL haskell.orghaskellstack.org stackage.org -×! - -MASTERCARD mastercard.ae mastercard.at mastercard.az mastercard.ba mastercard.be mastercard.bg mastercard.by mastercard.ca mastercard.ch mastercard.cl mastercard.cn -cnmastercard.co.idmastercard.co.ilmastercard.co.inmastercard.co.jpmastercard.co.kemastercard.co.krmastercard.co.nzmastercard.co.thmastercard.co.ukmastercard.co.vemastercard.co.zamastercard.commastercard.com.armastercard.com.aumastercard.com.bhmastercard.com.brmastercard.com.bzmastercard.com.cn -cnmastercard.com.comastercard.com.cymastercard.com.egmastercard.com.gemastercard.com.gtmastercard.com.hkmastercard.com.kwmastercard.com.lbmastercard.com.mxmastercard.com.mymastercard.com.ngmastercard.com.pemastercard.com.phmastercard.com.samastercard.com.sgmastercard.com.trmastercard.com.twmastercard.com.vemastercard.com.vn mastercard.cz mastercard.de mastercard.dk mastercard.es mastercard.eu mastercard.fi mastercard.fr mastercard.gr mastercard.hr mastercard.hu mastercard.iemastercard.inc mastercard.it mastercard.jo mastercard.ke mastercard.kz mastercard.lu mastercard.md mastercard.my mastercard.nl mastercard.no mastercard.om mastercard.pl mastercard.pt mastercard.qa mastercard.ro mastercard.rs mastercard.ru mastercard.se mastercard.si mastercard.sk mastercard.ua mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com idservice.incinclusivegrowthscore.com findacard.com mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.com paypass.netpieceofplastic.compredictivetechnologies.com priceless.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.cacashpassport.co.zacashpassport.comcashpassport.com.brcashpassport.netcorporatecashpassport.comicashpassport.com.mxintercamcashpassport.com.mx!multicurrencycashpassport.comshinhangmc.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.com -nab.com.aunabtravellercard.com.au 53world.com53worldsweeps.comlovethiscity.commastercardmoments.compahabicilemezsurprizler.com priceless.compriceless.com.cn -cn priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.cn -cnpricelessbeijing.com#pricelessbeijing.com.cn -cnpricelesshongkong.compricelesshonolulu.compricelesspick.compricelesssantiago.compricelesssydney.compricelesssurprises.compricelesstoronto.capricelesstv.com simplify.comsimplifycommerce.comcashpassportglobe.comgwktravelex.nl travelex.be travelex.bh travelex.catravelex.co.intravelex.co.jptravelex.co.nztravelex.co.uk travelex.comtravelex.com.autravelex.com.cn -cntravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.tr travelex.de travelex.fr travelex.it travelex.qatravelexae.comtravelexch.comtravelexmoneycard.combidvestbank.co.zaworldcurrencycard.co.zanab.demdex.net&"nationalaustraliaban.tt.omtrdc.net - -OSDN osdn.net -× -UMENG mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads -z -CERNcern ams02.space cern.ch cixp.netdotcernpilot.info  ippog.orglinearcollider.org -É -LG -lg.com lgappstv.com  lge.co.kr lge.comlgecareers.com -lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comlgelectronics.122.2o7.net -ÞU - MICROSOFT azure-dns.comazure-dns.info azure-dns.net azure-dns.orgazure-mobile.netazure-sphere.comazure-test.netazure.cn -cn  azure.com  azure.netazurecomcdn.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net azureedge.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.netchinacloudapi.cn -cnchinacloudapp.cn -cnchinacloudsites.cn -cn cosmosdb.info cosmosdb.net devopsms.com gotcosmos.commicrosofteca.commicrosoftiotcentral.comserverlesslibrary.nettryfunctions.comwindowsazure.cn -cnwindowsazure.comazure.microsoft.com"azuremarketplace.microsoft.combing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn npm.community  npmjs.com  npmjs.org atom.iodependabot.com -git.io github.blog -github.comgithub.community -github.dev  github.io githubapp.comgithubassets.comgithubhackathon.comgithubstatus.comgithubusercontent.com/+github-avatars.oss-cn-hongkong.aliyuncs.com!github-cloud.s3.amazonaws.comFBgithub-production-release-asset-[0-9a-za-z]{6}\.s3\.amazonaws\.comadaptivecards.ioapi-extractor.com -apisof.net appcenter.ms -blazor.netbotframework.comcodethemicrobit.comdevopsassessment.net dot.netgamesstack.comgraphengine.ioinsiderdevtour.com -jwt.ms microbit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.cn -cn#microsoftreactor.com.cn -cnmicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com  mmdnn.commono-project.com msdn.commsinnovationchallenge.commspairlift.commsropendata.com  nuget.org nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comreactorms.com.cn -cn -sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.co.ukvisualstudio.euvisualstudio.net vfsforgit.com vfsforgit.org vsassets.io xamarin.comdeveloper.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netmicrosoftnews.ccmicrosoftnews.cn -cnmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.org msn.commsnewskids.commsnewskids.netmsnewskids.org msnkids.com 1drv.com 1drv.mslivefilestore.com onedrive.coonedrive.co.uk onedrive.com onedrive.eu onedrive.net onedrive.orgonedrive.live.comstorage.live.com -beth.games bethesda.netbethesdagamestudios.com bethsoft.com doom.comelderscrolls.comcallersbane.com minecraft.netminecraftshop.com -mojang.comforzamotorsport.netforzaracingchampionship.com forzarc.comorithegame.comrenovacionxboxlive.comtellmewhygame.com xbox.co xbox.com xbox.eu xbox.org -xbox360.co xbox360.com -xbox360.eu xbox360.org -xboxab.comxboxgamepass.comxboxgamestudios.com xboxlive.cn -cn xboxlive.com -xboxone.co xboxone.com -xboxone.euxboxplayanywhere.comxboxstudios.com -xbx.lv  microsoft azure hotmail -office skype windowsxbox microsoft.az microsoft.be microsoft.by microsoft.ca microsoft.cat microsoft.ch microsoft.cl microsoft.com microsoft.cz microsoft.de microsoft.dk microsoft.ee microsoft.es microsoft.eu microsoft.fi microsoft.ge microsoft.hu microsoft.io microsoft.is microsoft.it microsoft.jp microsoft.lt microsoft.lu microsoft.lv microsoft.md microsoft.pl microsoft.pt microsoft.red microsoft.ro microsoft.rs microsoft.ru microsoft.se microsoft.si microsoft.tv microsoft.ua microsoft.uz microsoft.vnfemalefounderscomp.com -m12.vc -aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.net aria.ms asp.net aspnetcdn.com -binads.com bluehatil.combrazilpartneruniversity.com breakdown.mecentralvalidation.com -ch9.mscharticulator.com cloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com crmdynint.comcrossborderexpansion.com docs.com dynamics.com efproject.netazuredigitaltwin.comfasttrackreadysupport.comfluidpreview.comgameuxmasterguide.com -gears5.com gearspop.comgearstactics.com -gfx.ms -gigjam.com hololens.com -hotmail.co hotmail.com -hotmail.eu hotmail.net hotmail.orghummingbird.ms -ie8.co ie9.com ie10.com ie11.cominternetexplorer.cointernetexplorer.com imaginecup.pl -ingads.comintunewiki.comiotinactionevents.com -kidgrid.tvlatampartneruniversity.com live.com live.com.au live.eu live.netlivingyourambition.com makecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.com mepn.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft-smb.cn -cnmicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstore.com.hkmicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com  msads.net msauth.cn -cn -msauth.netmschallenge2018.com -msecnd.net -msedge.net  msft.info msft.net msftauth.cn -cn msftauth.netmsfteducation.ca msftnet.orgmsgamesresearch.com -msocdn.com -msocsp.com msturing.orgmsudalosti.commymicrosoft.comnextechafrica.net nxta.orgo365weve-dev.como365weve-ppe.com o365weve.com -office.com -office.net office365.com onenote.com onenote.net onestore.msopticsforthecloud.netoutingsapp.com outlook.com passport.net -pixapp.netpowerappscdn.netpowerautomate.com powerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com -pxt.ios-microsoft.com  s-msn.com sfbassets.com sfbassets.net -sfx.ms sharepoint.cn -cnsharepoint.comsharepointonline.com  skype.com  skype.netskypeassets.comskypeassets.net staffhub.mssuccesswithteams.com surface.com sway-cdn.com sway.comsysinternals.comtailwindtraders.com -techhub.ms tfsallin.nettrafficmanager.nettranslatetheweb.comunlocklimitlesslearning.com -userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.net vsallin.net -wbd.ms what-fan.netwindows-int.net windows.com windows.net -windows.nl windows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com -winhec.com -winhec.net -yammer.com(dl.delivery.mp.microsoft.com -cn&download.windowsupdate.com -cn'bg.v4.a.dl.ws.microsoft.com -cn(bg4.v4.a.dl.ws.microsoft.com -cn2&cdn.marketplaceimages.windowsphone.com -cn cn.windowssearch.com -cn#ctldl.windowsupdate.com -cn#developer.microsoft.com -cndocs.microsoft.com -cn"download.microsoft.com -cn/#download.visualstudio.microsoft.com -cnfs.microsoft.com -cn(msgr.dlservice.microsoft.com -cn, msgruser.dlservice.microsoft.com -cn#officecdn.microsoft.com -cn&qh.dlservice.microsoft.com -cnsdx.microsoft.com -cn/#silverlight.dlservice.microsoft.com -cn, slupdate.dlservice.microsoft.com -cn, storeedgefd.dsx.mp.microsoft.com -cn&wl.dlservice.microsoft.com -cn&wscont1.apps.microsoft.com -cn&wscont2.apps.microsoft.com -cnwww.microsoft.com -cn&xb.dlservice.microsoft.com -cn/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net -f -PHOENIX  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com - -TENCENT dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.com -rtx.com.cnservicewechat.com smtcdns.com smtcdns.net -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com wegame.com.cn -weiyun.com alloyteam.com imweb.io ivweb.io -" - FOUNDERTYPEfoundertype.com -¹» -GEOLOCATION-CN -42r.cn -5566ua.com aurorapush.cn -e0n.cn japps.cn jchat.io -jiguang.cn jmlk.co jpush.cn jpush.io jpushoa.com -jsurvey.cn  jvoice.cn -kc9.cn -n0q.cn pushcfg.com -s0n.cn mobmore.com  umeng.comumengcloud.com  umsns.com umtrack.com -uyunad.comwhalecloud.comalog.umeng.com -ads alog.umengcloud.com -ads -w.cnzz.com -ads bootcss.com -bootcdn.cnphpcomposer.com acadn.cn  acadn.com bbbcdns.com  dlgslb.cn -dlgslb.net  dwion.com fastcdn.comfastcdn.com.cn  flxdns.cn -flxdns.com globalcdn.cn mcadn.cn  tlgslb.cn -tlgslb.com -maoyun.commaoyuncloud.cnmaoyuncloud.com pkoplink.com frontwize.com qingcache.com qingcloud.com qingstor.com routewize.com -yunify.comstaticfile.org qbox.me  qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiniup.com  qnsdk.com  qnssl.com  ucloud.cn ufileos.com  aicdn.com upai.com upaiyun.com  upcdn.net  upyun.com  51cdn.com  8686c.com  cdn30.orgchinanetcenter.com  lxdns.com -lxdns.info  lxdns.org ourdvsss.com speedws.info speedws.org -wangsu.com -wscdns.com wscdns.info -wscdns.org yfcache.com -yfcalc.com  yfcdn.net yfcloud.com  yfdts.net  yfp2p.net -yfscdn.net yunfancdn.com -boc.cnbankofchina.combocaviation.com  boccfc.cn  bocgi.com bocgins.com  bochk.com bocichina.com bocigroup.com  bocim.combocservices.com.cnccb-life.com.cn ccb.com -ccbfund.cnccbfutures.comccbintl.com.hkccbleasing.com ccbseoul.comccbtrust.com.cn cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.comicbc icbc-ltd.com icbc-uk.com icbc-us.com -icbc.co.id icbc.com.cn icbc.com.mo icbc.com.pe icbc.com.sg icbcasia.com icbcbr.com.bricbclondon.com -icbcmy.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com icbcswiss.com icbccs.com.cn  95516.com unionpay.comunionpayintl.comunionpaysecure.com abchina.com bankcomm.combankofbeijing.com.cn bosc.cn -bsb.com.cn ccb.comcgbchina.com.cn -cib.com.cncitibank.com.cn cmbc.com.cn hsbc.com.cn -hxb.com.cn njcb.com.cn psbc.com spdb.com.cn  whccb.com -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn citic chinaamc.comcitic-prudential.com.cn citicbank.comciticcapital.com citiciam.com citicifh.comciticprufunds.com.cn citics.com.hk citicsf.com clsa.comcncbinternational.com -csc108.com csci.hk -ecitic.com1234567.com.cn 18.cn  18.com.cn  dfcfw.com eastmoney.comeastmoneyfutures.com emsec.hk guba.com.cn cebbank.com ceblease.com -eb-ind.com ebasset.com ebchina.comebchinaintl.com -ebf.com.cn  ebfcn.com ebfortune.com ebtrust.com ebscn-am.com  ebscn.comeverbright.com  secec.comsunlife-everbright.com -pingan.com pingan.com.cn pingan.com.hk yqb.com taikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com -58.com  58.com.cn 5858.com  58che.com 58xueche.com -anjuke.comanjukestatic.com chinahr.com -daojia.com diandao.org fang.com  sofun.com soufunimg.com  jxedt.com zhuancorp.comzhuanspirit.comzhuanzhuan.com c-ctrip.com colinker.com ctrip.cn ctrip.co.id ctrip.co.kr ctrip.co.th  ctrip.com ctrip.com.hk ctrip.my ctrip.sg ctripbiz.com ctripbuy.hk ctripteam.com doticloud.com easytrip.com hhtravel.comhhtravel.com.tw izuchebao.com  lvtds.com  shuntu.cn -skysea.com  suanya.cn -suanya.com -tieyou.com -toptown.cn toursbms.com trip.com tripcdn.com -vipdlt.com dangdang.com ddimg.cn -ele.me elemecdn.com eleme.cn  ganji.comganjistatic1.com3.cn  300hu.com -360buy.com 360buyimg.com -360top.com -7fresh.com baitiao.comblackdragon.com  caiyu.comchinabank.com.cn -dao123.comjcloud-cdn.comjcloud-live.comjcloud-oss.com -jcloud.comjcloudcache.com jcloudcs.com jclouddn.com jcloudec.com jcloudlb.comjcloudlive.com jcloudlv.com jcloudoss.com jcloudss.comjcloudstatic.comjcloudvideo.com  jclps.com -jd-app.com  jd-ex.com jd.cn jd.co.th -jd.com jd.hk jd.id jd.ru jdcache.com jdcloud.com jdcloudcs.comjdcloud-api.comjddapeigou.com jddebug.com jddglobal.com jdjinrong.com  jdpay.com jdpaydns.com jdx.com jdwl.comjingdongjinrong.com -jingxi.com -jkcsjd.com -joybuy.com  joybuy.eslinglonglife.com mayshijia.com minitiao.com  ocwms.com paidaojia.cn -paipai.comprestodb-china.com qianxun.comqingzhouip.com toplife.com -vg.com wangyin.com  wdfok.com yhd.com yihaodian.comyihaodianimg.com yiyaojd.com yizhitou.comads.union.jd.com -ads c-nfa.jd.com -adscps.360buy.com -ads -jzt.jd.com -ads stat.m.jd.com -ads img-x.jd.com -ads lianjia.com  ljcdn.com manmanbuy.com dianping.com -maoyan.com meituan.com meituan.net  mtyun.com  neixin.cn sankuai.com mogu.com mogucdn.com mogujie.com -pddpic.com pinduoduo.com yangkeduo.com  smzdm.com -zdmimg.com cnsuning.com -suning.comsuningcloud.comsuningestate.comsuningholdings.com 40017.cn -17u.cn 17u.net 17usoft.com 17usoft.net  elong.comelongstatic.com -ly.com  vancl.com vanclimg.com  vcimg.com -youzan.com yzcdn.cn youzanyun.com -ziroom.comziroomapartment.com 3dmgame.com 3304399.net 4399.com 4399api.com 4399dmw.com -4399er.com4399youpai.com 5054399.com img4399.com acfun.cn aixifan.com apilog-web.acfun.cn -ads -acplay.netdandanplay.com -ali213.net -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net biji.com -ddmogo.com -igetget.cn igetget.com luojilab.com  mogoo.com -sao.cn saolife.com dmzj.com  douyu.com douyu.tv douyucdn.cn douyucdn2.cn douyuscdn.com douyutv.com gamersky.com -gcores.com gitv.cn gitv.tv huya.com msstatic.com 71.am  iqiyi.com iqiyipic.com -pps.tv -ppsimg.com qiyi.com qiyipic.com -qy.net -71edge.coma.ckm.iqiyi.com -adsad.m.iqiyi.com -ads afp.iqiyi.com -adsc.uaa.iqiyi.com -ads cloudpush.iqiyi.com -ads"cm.passport.iqiyi.com -adscupid.iqiyi.com -ads#emoticon.sns.iqiyi.com -ads!gamecenter.iqiyi.com -ads!hotchat-im.iqiyi.com -adsifacelog.iqiyi.com -adsmbdlog.iqiyi.com -ads msg.71.am -adsmsg.video.qiyi.com -ads msg2.video.qiyi.com -ads#policy.video.iqiyi.com -adsyuedu.iqiyi.com -ads  jjwxc.net ku6.com -ku6cdn.com -ku6img.com kkmh.comkuaikanmanhua.com gifshow.com ksapisrv.com kuaishou.com -yximgs.com log-sdk.gifshow.com -adswlog.kuaishou.com -ads  kgimg.com  kugou.com -le.com lecloud.com -lemall.com letv.com letvcdn.com letvimg.com miaopai.com -mihoyo.com bh3.com  pplive.cn -pplive.com pptv.com qingting.fm  sfacg.com -61.com -taomee.com -tapimg.com -taptap.com  tgbus.com tiancity.comtiancitycdn.com u17.com u17i.com u17t.com -vgtime.com ximalaya.com  xmcdn.com -kumiao.com  youku.com  ykimg.com -mmstat.com soku.com -cibntv.net -duowan.com dwstatic.com -yy.com yystatic.com  zhanqi.tv -heytea.com chiphell.com -douban.com  douban.fm doubanio.com erji.net -hacpai.com  ld246.com -nga.cn 178.com -ngabbs.com ngacn.cc saraba1st.com  zhihu.com  zhimg.com  feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.com sf-saas.comsf-tech.com.cn sfcar.hk sffix.cn sfgy.org36dianping.com 36kr.com 36krcdn.com 36krcnd.com -caixin.com cctv.cn cctv.com cctvpic.com chinaepg.cn chinalive.com citv.net.cn cnms.net.cn cntv.cn cntv.com.cn -cctvlib.cncctvlibrary.cncctvlib.com.cncctvlibrary.com.cn -cctvpro.cncctvpro.com.cn  cntvwb.cn gjgbdszt.cngjgbdszt.com.cngjgbdszt.net.cn  ipanda.cn -ipanda.com ipanda.com.cn -ipanda.net livechina.cn livechina.comolympicchannelchina.cn tvcc.cn tvcc.com.cn%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn%!xn--fiq53l90et9fpncc7joo6apn8a.cn-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8s zggbdszt.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn chinanews.comchinanews.com.cn -cns.com.cn ecns.cn  dgtle.com geekpark.nethoopchina.com.cn hupu.com hupucdn.com  shihuo.cn coolbuy.com  ifanr.com ifanr.inifanrusercontent.com -ifanrx.com -minapp.com jiemian.comjiemian.com.cn -lancdn.comlandiannews.com  wsoso.com  ifeng.com ifengimg.comphoenixcenter.cn fengedu.comifengweekly.com 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com sohu.com -sohucs.com -itc.cn solidot.org  sspai.com tmtpost.com chaindd.com -72whys.com checkzeit.com -tivitv.com tigeek.net.cntmtsmartlife.comtmtsmartrun.com feng.com fengimg.com wfdata.club ynet.cn ynet.com ynet.com.cn aiganggu.comdanjuanfunds.com -imedao.comsnowballsecurities.com -xueqiu.com stcn.comcaijing.com.cn  hexun.com  cnfol.com cnfolimg.com zqrb.cn -nbd.com.cn cnstock.com 21jingji.com  yicai.com  cs.com.cn  ssajax.cn ssimg.cn stockstar.com -jrj.com.cn  jrjimg.cn -cls.cncailianpress.comwallstreetcn.com jianyuweb.com wallstcn.com 10jqka.com.cn thsi.cn -ths123.com -dzh.com.cn  gw.com.cn -yundzh.comhainanairlines.com hnacargo.com  hnair.com 10044.cn jbcz.tvjibencaozuo.comsinopec-usa.com sinopec.comsinopecgroup.comsinopecnews.com.cnsinopecsales.com -csdl.ac.cn  las.ac.cn  fuwai.com pkuh6.cn puh3.net.cnhospital.pku.edu.cnss.bjmu.edu.cn 115.com 3type.cn 4paradigm.com  51job.com 51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn -afdian.net afdiancdn.com agora.io -agoraio.cn agoralab.co -antutu.com bitauto.combitautoimg.com cheyisou.com  yiche.com  yccdn.com shimo.im  yuque.com chinaso.com -pg0.cn -chinaz.com -chinaz.net caiyunai.com caiyunapp.com coolapk.comcoolapkmarket.comcoolapkmarket.net c-t.workcowtransfer.com dida365.com geetest.com#geetest.datasink.sensorsdata.cn hellofont.cnhellowebfont.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.com hanyi.com.cnfontstar.com.cnfoundertype.com ipip.net jianshu.com -jianshu.io jinshuju.netjinshujucdn.com gotokeep.com keepcdn.com  lagou.com lgstatic.com baidupan.com -lanzou.com lanzous.com woozooo.com -liepin.com -lietou.comlietou-static.com mafengwo.cn mafengwo.com mafengwo.net  meitu.com meitudata.com moji.com mojichina.com  polyv.net videocc.net -renren.comrenren-inc.com vaptcha.com vaptcha.net wamawama.com -wiwide.com -sojump.com -wjx.cn wjx.com wjx.top zcmbc.com.cn zdns.cn zdns.net.cn zdns.org.cn zdnscloud.biz zdnscloud.cn zdnscloud.comzdnscloud.com.cnzdnscloud.info zdnscloud.netzdnscloud.net.cnzdnscloud.org.cnchinesemooc.org -cnmooc.orgicourse163.org icourses.cn mooc.cnopenlearning.com pmphmooc.commoocs.unipus.cnopencourse.pku.edu.cn study.163.com cnki.net  apabi.comcnthinkers.com  cqvip.comhuijistatic.com huijiwiki.com moegirl.orgmoegirl.org.cn cugbonline.cn  guokr.comwanfangdata.com.cn -wf.pub speiyou.com -xesimg.com xueersi.com banmaaike.comxiaoyuankousuan.com ybccode.com yuanfudao.com yuansouti.com yuantiku.com zhihuishu.com  coding.me -coding.net csdn.net -csdnimg.cn  deepin.cn -deepin.com  deepin.io -deepin.org  gitee.com gitee.iojinrishici.com  juejin.cn  juejin.im xitu.iop1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com oschina.net  pgyer.com -tracup.com frontjs.comruby-china.orgrubyconfchina.org mysxl.cn -sxl.cn  sxlcdn.cnsegmentfault.com  sifou.com -tipdim.orgxueyuanjun.com alibaba -alipay -taobao tmall a.alimama.cn -adsacjs.aliyun.com -adsadash.m.taobao.com -ads!adashbc.m.taobao.com -ads"adashbc.ut.taobao.com -ads"adash-c.ut.taobao.com -ads adashx.m.taobao.com -ads$adashx4ae.ut.taobao.com -ads#adashx4yt.m.taobao.com -ads#adashxgc.ut.taobao.com -adsadsh.m.taobao.com -adsafp.adchina.com -adsafp.alicdn.com -ads agoodm.m.taobao.com -ads#agoodm.wapa.taobao.com -ads alipaylog.com -adsamdc.alipay.com -adsamdc.m.taobao.com -ads api.wapa.taobao.com -ads#api.waptest.taobao.com -adsapoll.m.taobao.com -ads#appdownload.alicdn.com -adsatanx.alicdn.com -adsatanx2.alicdn.com -adscbu01.alicdn.com -adscdn0.mobmore.com -adsclick.aliyun.com -ads&click.mz.simba.taobao.com -adscm.ipinyou.com -ads cm.mlt01.com -ads!dsp.simba.taobao.com -adserr.taobao.com -adsex.mobmore.com -ads ex.puata.info -ads!fav.simba.taobao.com -ads$feedback.whalecloud.com -adsff.win.taobao.com -ads fm.p0y.cn -adsg.click.taobao.com -ads -g.tbcdn.cn -adsgma.alicdn.com -adsgtms01.alicdn.com -adsgtms02.alicdn.com -adsgtms03.alicdn.com -adsgtms04.alicdn.com -adshydra.alibaba.com -ads'hz.pre.tbusergw.taobao.net -ads#hz.tbusergw.taobao.net -ads i.ipinyou.com -adsinit.phpwind.com -ads!intl.wapa.taobao.com -ads$intl.waptest.taobao.com -ads"jxlog.istreamsche.com -adslog.umtrack.com -adsm.intl.taobao.com -adsm.simba.taobao.com -adsmatch.p4p.1688.com -ads%material.istreamsche.com -ads mlt01.com -ads&nbsdk-baichuan.alicdn.com -ads&nbsdk-baichuan.taobao.com -ads"osfota.cdn.aliyun.com -ads osupdate.aliyun.com -ads&osupdateservice.yunos.com -ads%pindao.huoban.taobao.com -adspush.wandoujia.com -adsre.m.taobao.com -ads re.taobao.com -ads&redirect.simba.taobao.com -adsrj.m.taobao.co -adsrj.m.taobao.com -adssdkinit.taobao.com -adsshow.re.taobao.com -adssimaba.taobao.com -adssimba.m.taobao.com -ads!srd.simba.taobao.com -adsstats.ipinyou.com -ads strip.taobaocdn.com -ads$tanxlog.istreamsche.com -adstejia.taobao.com -adstemai.taobao.com -ads!tns.simba.taobao.com -ads tongji.linezing.com -ads tvupgrade.yunos.com -adstyh.taobao.com -adsuserimg.qunar.com -adsw.m.taobao.com -adsyiliao.hupan.com -adsalibabacloud.co.inalibabacloud.comalibabacloud.com.aualibabacloud.com.hkalibabacloud.com.myalibabacloud.com.sgalibabacloud.com.tw alicloud.comalibabadns.com -alicdn.com alidayu.com -alidns.com alikunlun.comaliyun-inc.comaliyun-iot-share.com -aliyun.com aliyuncdn.com aliyuncs.com hichina.comica-alliance.org kunlunaq.com kunlunar.com kunlunca.com kunluncan.com kunlunea.com kunlungem.com kunlungr.com kunlunhuf.com kunlunle.com kunlunli.com kunlunno.com kunlunpi.com kunlunra.com kunlunsa.com kunlunsc.com kunlunsl.com kunlunso.com kunlunta.com kunlunvi.com kunlunwe.com mxhichina.com ddurl.to dingding.xin dingtalk.cn dingtalk.com dingtalk.netdingtalkapps.com laiwang.com lwurl.toteambition.comteambition.netteambitionapis.com 25pp.com  56che.com  95095.com 9game.cn -aliapp.orgalibaba-inc.com alibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.com alifanyi.comalihealth.com.cn alihealth.hk -aliimg.com -alikmd.com alimama.com alimebot.com -alimei.com alios.cn -alipay.comalipayobjects.com aliplus.comaliresearch.com alisoft.com alisports.com alitianji.comaliunicorn.com -aliway.com aliwork.com alixiaomi.comalizhaopin.com alyms.cn -asczwa.comasczxcefsv.com -asmlink.cn atatech.org -b2byao.com  bazai.com  bcvbw.com  cheng.xin cloudeagle.cn damai.cn dayu.com -dfkhgj.com doctoryou.ai doctoryou.cn dongting.com -dratio.com emas-poc.com -gongyi.xin ialicdn.com iconfont.cn -ics.design -jhgtgb.com -kanbox.com -lazada.comliangxinyao.com m-now.cn -maitix.com  mdeer.com mei.commiaostreet.com  mshare.cc nic.xinphilanthropy.xin phpwind.com phpwind.netqingtingtrip.com  rexpos.cn saee.org.cn shenjing.com  shuqi.comshuqireader.com sparenode.com  supet.com  ttpod.com wandoujia.comxinlingshou.cn yowhale.com yunos-inc.com  yunos.comyushanfang.com -zuodao.comaliexpress.com aliexpress.rualicloudccp.comaliyundrive.com sm.cn cainiao.comcainiao.com.cncainiao-inc.com freshhema.com hemamax.com -hemaos.com hemashare.cn shyhhema.com 1688.com etao.com juhuasuan.comlingshoujia.com -mashort.cn pailitao.com -taobao.com -taobao.org taobaocdn.comtaobizhong.comtaopiaopiao.com tb.cn tbcache.com tburl.in  tmall.com tmall.ru tmalltv.com tmjl.ai alitrip.com  feizhu.cn -feizhu.com -fliggy.com  fliggy.hk -iuynfg.com amap.com amapauto.com autonavi.com  gaode.com  xiami.com xiami.fm  xiami.net  b3log.org a.baidu.com -ads ad.duapps.com -ads ad.player.baidu.com -ads adm.baidu.com -adsadscdn.baidu.com -adsadx.xiaodutv.com -adsae.bdstatic.com -ads afd.baidu.com -ads als.baidu.com -ads&api.mobula.sdk.duapps.com -ads"api.tuisong.baidu.com -adsappc.baidu.com -adsb.bdstatic.com -adsbaichuan.baidu.com -adsbaidustatic.com -adsbaidutv.baidu.com -adsbanlv.baidu.com -ads bar.baidu.com -ads"bdimg.share.baidu.com -adsbdplus.baidu.com -ads bj.bcebos.com -adsbtlaunch.baidu.com -ads c.baidu.com -ads cb.baidu.com -adscbjs.baidu.com -adscjhq.baidu.com -adscleaner.baidu.com -ads click.bes.baidu.com -adsclick.hm.baidu.com -adsclick.qianqian.com -ads"cm.baichuan.baidu.com -ads cm.baidu.com -adscm.pos.baidu.com -ads cpro.baidu.cn -adscpro.baidu.com -ads!cpro.baidustatic.com -ads!cpro.tieba.baidu.com -ads"cpro.zhidao.baidu.com -adscpro2.baidu.com -ads"cpro2.baidustatic.com -ads crs.baidu.com -adsdatax.baidu.com -ads dd713.bj.bcebos.com -ads dl.client.baidu.com -adsdl.ops.baidu.com -adsdl1sw.baidu.com -adsdl2.bav.baidu.com -adsdlsw.baidu.com -adsdlsw.br.baidu.com -ads!dl-vip.bav.baidu.com -ads(dl-vip.pcfaster.baidu.co.th -ads#download.bav.baidu.com -ads"download.sd.baidu.com -adsdrmcmm.baidu.com -ads dup.baidustatic.com -ads dxp.baidu.com -ads dzl.baidu.com -ads e.baidu.com -adseclick.baidu.com -adsecma.bdimg.com -adsecmb.bdimg.com -adsecmc.bdimg.com -ads eiv.baidu.com -ads em.baidu.com -adsentry.baidu.com -ads ers.baidu.com -ads f10.baidu.com -ads#fc-feed.cdn.bcebos.com -adsfclick.baidu.com -adsfeed.baidu.com -adsfexclick.baidu.com -ads g.baidu.com -adsgimg.baidu.com -adsguanjia.baidu.com -ads hc.baidu.com -ads hm.baidu.com -adshmma.baidu.com -ads hpd.baidu.com -adsidm.bce.baidu.com -adsidm-su.baidu.com -adsiebar.baidu.com -adsikcode.baidu.com -adsimg.taotaosou.cn -adsimg01.taotaosou.cn -adsj.br.baidu.com -adskstj.baidu.com -ads log.music.baidu.com -ads m1.baidu.com -ads ma.baidu.com -adsmobads.baidu.com -ads"mobads-logs.baidu.com -adsmpro.baidu.com -adsmsite.baidu.com -adsneirong.baidu.com -adsnsclick.baidu.com -ads#nsclickvideo.baidu.com -adsopenrcv.baidu.com -ads$pc.videoclick.baidu.com -ads pos.baidu.com -adspups.bdimg.com -ads%push.zhanzhang.baidu.com -ads qianclick.baidu.com -adsrelease.baidu.com -adsres.mi.baidu.com -ads"rigel.baidustatic.com -ads#river.zhidao.baidu.com -ads rj.baidu.com -adsrplog.baidu.com -ads s.baidu.com -adss.cpro.baidu.com -ads!sa.tuisong.baidu.com -adssclick.baidu.com -adssestat.baidu.com -adsshadu.baidu.com -adsshare.baidu.com -ads"snippet.pos.baidu.com -adssobar.baidu.com -adssobartop.baidu.com -adsspcode.baidu.com -adsstat.v.baidu.com -ads su.bdimg.com -adssu.bdstatic.com -ads t10.baidu.com -ads t11.baidu.com -ads t12.baidu.com -ads tk.baidu.com -adstkweb.baidu.com -ads"tob-cms.bj.bcebos.com -adstongji.baidu.com -adstoolbar.baidu.com -adstracker.baidu.com -adstuijian.baidu.com -ads*uat1.bfsspadserver.8le8le.com -ads#ubmcmm.baidustatic.com -adsucstat.baidu.com -adsulic.baidu.com -ads ulog.imap.baidu.com -adsunion.baidu.com -ads!unionimage.baidu.com -adsutility.baidu.com -ads utk.baidu.com -ads videopush.baidu.com -adsvv84.bj.bcebos.com -adsw.gdown.baidu.com -ads w.x.baidu.com -adswangmeng.baidu.com -adsweishi.baidu.com -ads$wenku-cms.bj.bcebos.com -ads%wisepush.video.baidu.com -ads wm.baidu.com -adswn.pos.baidu.com -adsznsv.baidu.com -adszz.bdstatic.com -adszzy1.quyaoya.com -ads zuoyebang.cc zuoyebang.com -zybang.com baidu -91.com -aipage.com apollo.auto baidu.cn  baidu.com baidu.com.cn baidubce.combaiducontent.com baidupcs.combaidustatic.com -baifae.com baifubao.com -bcebos.com  bdimg.com bdstatic.com bdtjrcv.com  bdydns.cn -bdydns.com -bdydns.net chuanke.com  dlnel.com  dlnel.org -duapps.com -dwz.cn -hao123.com hao123img.com -hao222.com -haokan.com jomocdn.net jomodns.com -mipcdn.com  nuomi.com quyaoya.com smartapps.cn  tieba.com tiebaimg.com xianfae.com xiaodutv.com -bytecdn.cn bytedance.com bytedance.net bytedns.net byteimg.combyteoversea.com -douyin.com huaxiong.com ibytedtos.comjokecommunity.comneihanshequ.com -pstatp.com -snssdk.com toutiao.comtoutiaocdn.comtoutiaocloud.comtoutiaocloud.nettoutiaohao.comtoutiaohao.net toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.com -wukong.comwukongwenda.cnwukongwenda.com zijiecdn.com zijiecdn.net  zjcdn.com  baike.com -ixigua.comixiguavideo.com ixgvideo.com  365yg.com didi-food.comdidiaustralia.blogdidichuxing.comdidiglobal.comdidimobility.co.jpdidistatic.comxiaojukeji.com  dbank.com dbankcdn.com harmonyos.com hicloud.com hihonor.com honor.cn -huawei.comhuaweicloud.com  vmall.com vmallres.com cmcm.com cmcmcdn.com  liebao.cn duba.com duba.net ijinshan.comseasungames.com xishanju.com xoyo.com testplus.cn -wps.cn  51dzt.com  iciba.com  docer.com kdocs.cn papocket.com  wpspdf.cn kimg.cn kingsoft.com ksmobile.com -ks-cdn.com ks-cdn1.com  ksyun.com ksyuncdn.com ksyungslb.com flyme.cn meizu.cn  meizu.com  mzres.com 126.com 126.link 126.net 127.com 127.net 163.com163industry.com 163mail.com 163qiyukf.com -163yun.com 166.net -haowu.linkicourse163.org  kaola.com -lofter.com  nease.netnetease-inc.com netease.com -netease.im -qiyukf.com ydstatic.com yeah.net -youdao.comanalytics.163.com -ads crash.163.com -ads crashlytics.163.com -ads g.163.com -ads coloros.com finzfin.com -heytap.com heytapcs.comheytapdownload.comheytapimage.com -myoppo.com nearme.com.cn oppo.cn oppo.com  oppo.mobioppodigital.com  oppoer.meoppomobile.com oppopay.com opposhop.cn -realme.com realmebbs.comrealmemobile.com oneplus.com -oneplus.cn oneplus.net opstatics.comoneplusbbs.com h2os.com 75.team -75team.com baomitu.com -360.cn 360.com -360-jr.com 360chou.com360daikuan.com360huzhubao.com -360jie.com360jinrong.net -360kan.com 360kuai.com  360os.com 360panyun.cn 360safe.com 360shouji.com 360taojin.com360totalsecurity.com 360tpcdn.com360webcache.com anquanke.com  haoso.com -haosou.com haosou.com.cn -haosou.net i360mall.com ludashi.com nicaifu.com  nzwgs.com  qhimg.com qhimgs0.com qhimgs1.com qhimgs2.com qhimgs3.com qhimgs4.com qhimgs5.com qhimgs6.com  qhmsg.com  qhres.com qhstatic.com qhupdate.com -qihuapi.cn qihucdn.com  qihoo.com qikucdn.com -so.com sou.com urlqh.cnxiaoluyouxuan.comxiaoluzhidian.com xjietiao.com -youhua.com  yunpan.cn  97973.com -picself.cn sina.cn sina.com sina.com.cn sina.net sinaapp.com sinaedge.com -sinaimg.cn sinaimg.com  sinajs.cn -sinajs.comt.cn videoself.cn  wbimg.com wbimg.cn wcdn.cn weibo.cn  weibo.com weibo.com.cn weibocdn.com xhaiwai.com 2016.sina.cn -adsad.sina.com.cn -adsadbox.sina.com.cn -ads!adimages.sina.com.hk -ads!adimg.mobile.sina.cn -ads adimg.uve.weibo.com -ads!adm.leju.sina.com.cn -ads ads.sina.com -adsalitui.weibo.com -adsapi.apps.sina.cn -ads appgift.sinaapp.com -ads#appsupdate.sinaapp.com -ads atm.sina.com -adsbeacon.sina.com.cn -ads biz.weibo.com -adsc.biz.weibo.com -ads!c.wcpt.biz.weibo.com -ads%click.uve.mobile.sina.cn -ads click.uve.weibo.com -adscm.dmp.sina.cn -ads0#contentrecommend-out.mobile.sina.cn -ads$count.video.sina.com.cn -ads counter.sina.com.cn -adscre.dp.sina.cn -adscre-dp.sina.cn -adsd00.sina.com.cn -adsdcads.sina.com.cn -adsdl.kjava.sina.cn -ads dmp.sina.cn -adsdp.im.weibo.cn -ads game.weibo.cn -adsgame.weibo.com -ads"gw5.push.mcp.weibo.cn -ads"gw6.push.mcp.weibo.cn -ads"img.adbox.sina.com.cn -ads#img.amp.ad.sina.com.cn -ads"int.dpool.sina.com.cn -ads%interest.mix.sina.com.cn -ads)log.interest.mix.sina.com.cn -ads log.mix.sina.com.cn -ads log.sina.cn -ads!m.beacon.sina.com.cn -adsm.game.weibo.cn -ads!mg.games.sina.com.cn -ads!motu.p4p.sina.com.cn -adsnewspush.sinajs.cn -ads oascentral.sina.com -ads#oascentral.sina.com.hk -adsp4p.sina.com.cn -adspalmnews.sina.cn -adspay.mobile.sina.cn -adspfp.sina.com.cn -adspfpip.sina.com -ads!promote.biz.weibo.cn -ads r.dmp.sina.cn -adsrm.sina.com.cn -ads rs.sinajs.cn -adss.alitui.weibo.com -ads"s.img.mix.sina.com.cn -ads sapi.sina.cn -ads sax.sina.cn -adssax.sina.com.cn -adssaxn.sina.com.cn -adssaxs.sina.com.cn -ads sbeacon.sina.com.cn -ads"sdkapp.mobile.sina.cn -ads!sdkapp.uve.weibo.com -ads$sdkclick.mobile.sina.cn -ads slog.sina.cn -adsslog.sina.com.cn -ads'staticadm.leju.sina.com.cn -adstjs.sjs.sinajs.cn -ads"trends.mobile.sina.cn -ads"u1.img.mobile.sina.cn -ads&wapwbclick.mobile.sina.cn -ads!wbapp.mobile.sina.cn -ads wbapp.uve.weibo.com -ads#wbclick.mobile.sina.cn -ads$wbpctips.mobile.sina.cn -adswidget.weibo.com -ads woocall.sina.com.cn -adszc.biz.weibo.com -adszymo.mps.weibo.com -ads -go2map.com sogo.com  sogou.com sogoucdn.com dns.pub  dnsapi.cn  dnspod.cn -dnspod.com dnspod.com.cn -dnspod.net -dnspod.org  dnsv1.com  dnsv2.com  dnsv3.com  dnsv4.com  dnsv5.com doh.pub ad.qq.com -ads ad.qun.qq.com -ads!adfilter.imtt.qq.com -ads adping.qq.com -adsadpm.app.qq.com -adsadsclick.qq.com -adsadsfile.qq.com -adsadshmmsg.qq.com -adsadslvfile.qq.com -adsadslvseed.qq.com -ads%adsmind.apdcdn.tc.qq.com -adsadsqqclick.qq.com -adsadstestview.qq.com -adsadsview.qq.com -adsadsview2.qq.com -adsadv.app.qq.com -ads adver.qq.com -ads btrace.qq.com -adse.qq.com -adslog.tbs.qq.com -ads mpush.qq.com -ads mtrace.qq.com -ads push.qq.com -ads pgdt.gtimg.cn -ads -yuewen.com hongxiu.com lrts.me qdmm.com -qidian.com readnovel.com tingbook.com webnovel.com -xs8.cn xxsy.net -apcdns.net  cdn-go.cn cdntips.com foxmail.comfoxmail.com.cn gtimg.cn  gtimg.com gtimg.com.cn idqqimg.com imqq.com  myapp.com myqcloud.com -qcloud.com qcloudimg.com qlogo.cn qpic.cn -qq.com -qqmail.com  qzone.com -rtx.com.cnservicewechat.com smtcdns.com smtcdns.net -tencent.cn tencent.comtencent.com.cntencent.com.hktencent.net.cntencent-cloud.comtencentmusic.comtencentyun.com -tenpay.com -wechat.com -wegame.com wegame.com.cn -weiyun.com alloyteam.com imweb.io ivweb.io -mi.com -mi-img.com  mifile.cn miui.com -miwifi.com  xiaomi.cn -xiaomi.com -xiaomi.netxiaomiflash.comxiaomiyoupin.com -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com 10086.cn 139.comchinamobile.comchinamobileltd.com migucloud.com migu.cn -cmvideo.cn miguvideo.com andfx.cn  andfx.net -cmicrwx.cncmpassport.comfetion-portal.com fetionpic.com mmarket.com mmarket6.com -ctexcel.ca ctexcel.comctexcel.com.hk -ctexcel.fr -ctexcel.us -189.cnchinatelecom-h.comchinatelecom.com.cnchinatelecomglobal.com -chntel.com  10010.com 10010.com.cnchinaunicom.comchinaunicom.com.cnchinaunicom.com.hkchinaunicomglobal.commychinaunicom.com  wo.com.cn -j-test.comguoxuedashi.com guoxuemi.com mojidict.com jikipedia.com haidilao.com0123456789.com 0379home.com -055110.com  05sun.com 0759job.com  100bt.com 100offer.com  11467.com -114chn.com 114piaowu.com 114shouji.com -119you.com 123juzi.com 123juzi.net 123u.com 1637.com  16888.com 16rd.com  17173.com 178linux.com  17989.com  17cdn.com 17house.com  18183.com 188.com 1905.com  19yxw.com 1nongjing.com  1ting.com 1zhe.com 21cn.com 2265.com 2288.org 2345.com 258.com 263.net 289.com 2cto.com 3000.com -310win.com -315che.com 3234.com 32r.com 3322.org 3387.com 33lc.com 3454.com 3456.cc -35.com 3533.com 360aiyi.com -360doc.com  360jq.com 360zhyx.com -365azw.com -365dmp.com -37.com 3733.com 3839.com -39.net 3conline.com 3d66.com -3elife.net 3h3.com 3yx.com  40407.com 500.com 500d.me -50bang.org -51.com 51.la -510you.com 51credit.com  51cto.com 51eshop.com 51gaifang.com 51hejia.com51jingying.com 51meishu.com -51sole.com 51wendang.com  51yes.com 5253.com  52hxw.com -52miji.com 52pk.com 52z.com 53kf.com -55.com -56.com 5577.com  55bbs.com  58pic.com  5bite.com 5fun.com 5gzm.net 5khouse.com 5you.com 66wz.com 68h5.com -6rooms.com 714.com 7230.com -72byte.com  7down.com 7k7k.com  7moor.com 7po.com -7x24cc.com -7xdown.com  818ps.com  84399.com 885.com -900.la 917.com 91danji.com 91yunxiao.com 9553.com 962.net 9718.com  99166.com 998.com 999d.com 99danji.com 9ht.com -9xgame.com 9xu.com a9vg.com -aardio.com -adxvip.com -afzhan.com agrantsem.com  aiemy.com aiketour.com  aiops.com  aipai.comairchangan.com airguilin.com aisee.tv aiskycn.com aiyunxiao.com -aizhan.comalittle-tea.com -allyes.com anfensi.com -anquan.org -anruan.com -aotrip.net  aoyou.com apk3.com apk8.com appchina.com -appinn.com  arpun.com babytree.combabytreeimg.com baidufree.combaifendian.com  baihe.com baixing.com baixing.netbamenzhushou.combangongziyuan.com baofeng.combaoxianshichang.com bcy.net bearychat.com beihaidc.combeijing-lipin.com bengbeng.com  benmi.com  berui.combestopview.com biancheng.net bianews.com bibaodao.com bidchance.com biddingx.com bihu.com -bio360.net  bio4p.com bio-equip.combiodiscover.com bishijie.com bitecoin.com biyehome.net bjcathay.com bobo.com bojianger.com -bokecc.com  boosj.com btcfans.com btgtravel.com bthhotels.com  btime.comcabbagebox.com caijingwu.com -caiyun.com cang.comcankaoxiaoxi.comcardbaobao.com -carnoc.com  cdn20.com  cecdc.com cecport.com centanet.com cerambath.org -ch.com chachaba.com changba.com chashebao.comchazhengla.com -che168.comchina-chair.comchina-nengyuan.com  china.comchinacache.comchinacache.netchinachugui.comchinadongchu.com chinafph.comchinakaoyan.comchinalawedu.com chinapay.com chinapp.netchinapubmed.net chinasspp.comchinatranslation.net chinaunix.net chinauos.comchinaweiyu.comchinawutong.com chinazns.comchongdiantou.com -chouti.com chuangxin.com chuansong.mechuansongme.com -chushou.tv chuyu.me  city8.com cjol.com clouddn.com cloudxns.com cnanzhi.com -cnbeta.com cnbetacdn.com cnblogs.com -cnepub.com  cnlaw.net cnzz.com cocodiy.com code666.com -cofeed.com -cofool.com coindog.comcontentchina.com  cpppf.org  cr173.com  crsky.com  csbew.com -csmjzs.com csslcloud.net -ctfile.com ctiforum.com ctoutiao.com  ctsbw.com -cubead.com  cwxzx.com -cyagen.com  cybtc.com cyol.com cyts.com cztv.com cztvcloud.com dadajiasu.com dadighost.com daguzhe.com dajiabao.com  dajie.com dajieimg.com dalongyun.com dangbei.com danji100.com -danji6.com daocloud.io daovoice.iodayukaoshi.com dazijia.com -dcdkjx.com  dd373.com  ddooo.com dedecms.com develenv.com -dginfo.comdgphospital.comdianchacha.com diandian.comdiandianqi.comdianwannan.comdingxiang-inc.com -diopic.net diyiyou.com dj99.com  docin.com dockerone.com -dockone.io dogedoge.com -donews.com -dongao.comdongguantoday.com dopa.com -douxie.com -downcc.com downxia.com -downyi.com -dpfile.comdreams-travel.comdrivergenius.com -dui.ai duiopen.com duoduocdn.com duokanbox.com -duomai.com duoshuo.com  duote.com dxpmedia.com -dxycdn.com  dyhjw.com dzsc.com dzw3.com  dzwww.com easesale.com  easiu.com eastday.com eastsoo.com -eayyou.com  ebico.com  ebrun.com -ecitic.com ecjobhome.com -edu.cn  eduei.com eeyy.com eflycloud.com elecfans.com emarbox.com -emumax.com enterdesk.comeoeandroid.com excelhome.net expreview.com extfans.comf.cx  faloo.com famulei.com  fanli.comfangxiaoer.com fanxian.com fastapi.net -feihuo.com feiniaomy.comfengkongcloud.com fengniao.comfengxian110.com  fenxi.com -fhldns.com  fimmu.com finchina.com fixdown.com  fqjob.net freebuf.com fugetech.com fuwj.com fxxz.com fyxz.com game234.com gameabc.com gamemei.com -gaodun.comgaoshouyou.comgaoxiaojob.com -gdjdxy.comgdliontech.com gdrc.com geilicdn.comgenelinkout.com  getui.com -gezida.com gfan.com -giocdn.com globrand.com gm86.com gmallbio.com  gmz88.comgobasearcher.com gold678.com  golue.comgongxiangcj.com goosail.com  goufw.com gree.comgreenxiazai.com growingio.com  gtags.net  guabu.com guaiguai.comguanaitong.comguanhaobio.com gucheng.com  guigu.org guoxinmac.com  gupzs.com gushiwen.orgguzhangting.com -gwdang.comgxairlines.com -gxb.io gzwanju.com h5uc.com hack520.com hackhome.com haishun.com hanboshi.com handanjob.comhangjiayun.com haolietou.com  haote.comhaoyouyinxiang.com hefei.cc -heisha.net  henha.com henkuai.com herostart.com  hiido.com hitv.com hiyd.com hktheone.com hn-cbec.com -hnrcsc.com hntv.tv hnyuyuhui.com hollycrm.com homeinns.com homekoo.comhongsanban.com -houdao.comhouyuantuan.com hteacher.net huanqiu.comhuashengdaili.com  huatu.com  huize.com  hujia.org hujiang.com hunantv.comhuochepiao.com huocheso.com  huxiu.com hxfy888.com hxsd.com iask.com -ibaotu.com ibuychem.com icaidao.com ichangtou.com idongdong.com iflytek.com  igao7.com -iheima.com ijiandao.com -ikafan.com im2maker.com  im-cc.com -imedao.com imgo.tv  imooc.com indienova.cominfinitynewtab.com  infoq.cominfoqstatic.com -ip-cdn.com  ip138.com ipinyou.com iranshao.com  irs01.com ishumei.com  it165.net  it168.com  it610.com  iteye.com -itjuzi.com  itmop.com  iyiou.com iyunxiao.com -izuche.com -jandan.net jb51.com  jdair.net jia.com jiameng.com jianbihua.com jianzhi8.com jiaodong.net jiaoyimao.com jiasuhui.com jiasule.com jiathis.com jiayuan.com jiazhao.com jiemeng8.comjikexueyuan.com jinianbi.comjinrongren.net  jinse.com  jinti.comjiqizhixin.com jisuanke.com jisuxia.com jiuzhilan.com jj20.com jkbl.com jmstatic.com job5588.com -job910.com  jobjm.com jsbc.com -jsrdgg.com jstv.com  jsyks.com juefeng.com -julive.com  jumei.com  juwan.com  juxia.com  jyimg.com k366.com kaifubiao.com kaixin001.com kameng98.com -kanimg.com kankanews.com kantianqi.net kanzhun.com kaopu001.comkeboyunxiao.com  kejet.net kf5.com -kimiss.com kingdee.com kkzj.com -kongfz.com koolearn.com -kouclo.com -koudai.com koudai8.com kq7.com  ksord.com  kuaaa.com kuaidi100.com kuaihou.com kuaizhan.com  kuqin.com -kuyiso.com lady8844.com lanhuapp.com laomaotao.net laomaotao.org  lascn.net  lawxp.com leangoo.com leanote.com ledu.comleetcode-cn.com leikeji.com leiphone.com leiting.com leju.com leturich.org lianmishu.com -liantu.com lianzhuli.comliaoxuefeng.com liba.com libaclub.comlieyunwang.com lightonus.com -likuso.com lingkou.com linkvans.com  linsn.com linuxidc.com liulanqi.net liuxiaoer.com live800.com liweijia.com lixinger.com lkkbrand.com longhoo.net -longre.comlongtugame.com longzhu.com  lotpc.com -loupan.com -lu.com luckyair.net  lufax.com lufaxcdn.com lunwengo.net luyouqi.com -lvmama.comlvsexitong.com  lxway.com -magedu.com maisanqi.com -mamecn.com manhuatai.com manmankan.com -mapbar.com mayi.com -mayihr.com -mcbang.com  mdpda.com mechina.org -mediav.com meifang.com meika360.com meilishuo.commeimingteng.com -meiqia.commeishichina.com meishij.netmengtuoshi.wang mgtv.commiaobolive.com miaozhen.com -miercn.com mijisou.com mikecrm.comminhangshi.com miusi.co mjia.cc -mmbang.com mmbang.info -mofang.com mofazhu.com mogu.com mogucdn.com mogujie.com -mokahr.com moleecel.commoocollege.com mop.com msanjia.com -mscbsc.com mukewang.com -mumayi.com -muomou.com muzhiwan.com -mydown.com mydrivers.com myshow360.net myyx618.com myzaker.com naixuecha.com netbian.com -newasp.netnewbandeng.com  newyx.net nowcoder.com nowscore.com  nruan.com ntalker.com nvsheng.com  nzbdw.com oadz.com  oeeee.com  offcn.com officese.com -oicq88.com  okooo.com -ol-cdn.com -ol-img.com oldboyedu.com -oneapm.com onegreen.net -oneyac.comonlinedown.netonlinesjtu.com onlylady.com -opdown.com oray.com  ottcn.com -oupeng.com -p2peye.com p5w.netpaipaibang.com paopaoche.net pc6.com -pcbeta.com -pchome.net  pcpop.com  peccn.com pgzs.compharmacodia.com piaoliang.compingplusplus.com pingwest.com -pingxx.com pintu360.com  pipaw.com  pipaw.net pptbest.com -pubyun.com  qc188.com qcc.com qcds.com qd8.com qd-metro.com qh24.com qiangbus.com qianjia.com qianlima.com qianzhan.comqiaobutang.com qichacha.com -qie.tv qifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.com qiumibao.com qizuang.com  qqddc.comqqgexingqianming.com qqrizhi.comqqshuoshuo.com -qschou.com -qtmojo.com -qudong.com -qugame.com  qunar.com qunarzz.com qyer.com rfchost.comrockyenglish.com rong360.com rtbasia.com  ruan8.com -runoob.com rzrc114.com  saibo.com sanguosha.com -sanwen.net  scdng.com scoregg.com -sczsxx.com sdo.com sec-wiki.com -sencdn.com seniverse.comsenlinjimore.com -sgamer.com shanbay.com shang360.com -shangc.netshanghairc.com shangzhibo.tvshanshuihotel.com sharejs.com shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com  sheui.com shijiexia.com shixiseng.com shmetro.comshoujihuifu.comshouyoubus.com shrbank.comshuidichou.comshuidihuzhu.com shumensy.comshuoshuokong.com -shutcm.com -simei8.com simuwang.com sinesafe.com  sjwyx.com  skycn.com sllssrq.com -snimay.com  sobot.com sofreight.com softwhy.com -sojson.com -somode.com soso.com souqian.comsouthmoney.comsparkletour.comspringtour.com ssports.com starbaby.cc starbaby.com stockstar.com sun0769.com -sunrtb.com supermap.comsupermapcloud.com -sys321.com szfw.org szhk.com szzfgjj.com t1y5.com  taihe.comtaihuoniao.com tangeche.com tanx.com -tao123.com -taoche.com te5.com tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com -tianqi.com tietuku.com -tiexue.net timedoo.com tingyun.com titanar.com tjjt360.com  tmcdn.net -tobosu.com tom.com tongdun.net topthink.com touqikan.com travelsky.com trunktech.comtrustexporter.com trustutn.org  tudou.com tudouui.com tuer123.com tuicool.com -tuiwen.net  tujia.com  tuniu.com tutuapp.com  tuwan.com tuwanjun.com u.toolsubuntukylin.com  ucbug.com -uggame.com uoko.com urselect.comurumqi-air.com  useso.com uuu9.com uzzf.com  v5875.com value500.com vamaker.com vdolady.com veryhuo.com veryzhun.com  vic18.com videojj.com  vijos.org vip.com  vobao.com -vpgame.comwangyangyang.vipwannianli8.com wanplus.com wanwushuo.com wanyiwang.com  wanyx.com -wdjimg.com wdzj.com  weand.com webterren.com weicaifu.com weidian.comweilaicaijing.comweilaiyunxiao.com weiphone.net weixing.com weiyangx.comwelltrend-edu.com wenjuan.comwhlovehome.com wicresoft.com -win007.com win8.netwindows10zj.comwindows7en.com windowszj.com winwin7.com wishdown.com  wmzhe.com wnhuifu.com wodingche.com  wolai.com  womai.com wondercv.com wonnder.com -wooyun.org worktile.comwoyaogexing.com  woyoo.com  wqiis.com wrating.com -wscdns.com  wtown.com  wumii.com -wuming.comwuximediaglobal.com  wywyx.com xafc.com  xbiao.com  xdwan.com -xfdown.com -xhscdn.comxiachufang.comxiaobaixitong.comxiaoe-tech.com xiaogouh5.comxiaohongshu.com  xiaoka.tv xiaokaxiu.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com  xiayx.com xiazaiba.com xingjiesj.com xinhuanet.comxinrenxinshi.com xinshipu.comxingtan001.com xitong8.com xitu.com xiu8.com -xiucai.com xiziwang.net xmhouse.com  xnpic.com  xpgod.com -xsa239.comxuanchuanyi.com  xue51.com xuekanba.com xuexicha.com xundupdf.com  xycdn.com xywy.com -xzking.com yahui.cc -yaolan.com  yaoyl.com  yaozh.com -ycgame.com -yeepay.com -yeshen.com  yesky.com yh31.com  yigao.com yigoonet.com yihedoors.comyikaochacha.com yikexue.comyingjia360.comyinhang123.net yinxiang.com yinyuetai.comyinzhaowang.com -yiqifa.com -yiqifa.org yisu.com yitaifang.com  yiwan.com yixi.tv yizhibo.com  yjbys.com ynhr.com -yocajr.com -youboy.com youjiao.com youke.co youlian.fun youshang.com youxiake.com youxihezi.net youxila.com youxiniao.com youxigt.com  youzu.com yoyojie.com  yoyou.com  ypppt.com -yslyhr.com  ysten.com -yuewen.com  yunaq.com yunba.io yundaex.com yundasys.com -yundun.com yunqishi.net yunshipei.com yunxiao.com yunzhijia.com  yupoo.com  yuzua.com  yxbao.com -yxdown.com -yytcdn.com -zampda.net zampdsp.com zastatic.com -zbjimg.com zczj.com -zdfans.com zgjm.org -zgjsks.com  zglxw.com  zgzcw.com zhanbuba.comzhangyoubao.com zhanzhang.net zhaodanji.com zhaokao.net zhaopin.com zhcw.com -zhenai.com  zhibo8.cc  zhidx.com zhifang.com -zhipin.com zhiziyun.com zhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.com zhubajie.com zhugeapi.net zhugeio.com  zimuzu.io zixiaomao.com zixuntop.com  zjstv.com zmengzhu.com zongheng.com -zpb365.com -zrblog.net zsxq.com  zuche.com zuchecdn.com zuhaowan.com zuidaima.com zuowen8.comzuowenwang.net jindidata.comtianyancha.comzhuanxiandai.com -fm3838.comlarsonlimited.com runsheng.com vzuu.com -zoom3g.com -zoomyou.cn chaoxing.com chaoxing.cc -N -SEASUNseasungames.com xishanju.com xoyo.com testplus.cn -A -ACERacer-group.com acer.com acer.com.cn -cn -Ú - - BLOOMBERG  bloomberg bbgevent.com bbhub.io -bbthat.com bgov.com bloomberg.cnbloomberg.co.jpbloomberg.co.kr bloomberg.combloomberg.com.br bloomberg.fm bloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com blpevents.comblpprofessional.com bmia.org bnef.combusinessweek.combusinessweekmag.com bwbx.io citylab.com gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.com tictoc.video - -PINCONG pincong.rocks -7 -SCP scp-wiki.net  scpdb.org scpwiki.com -4 - ARCHLINUX archlinux.orgarchlinuxarm.org -¸ -AIRWICK -airwick.at -airwick.be -airwick.ca -airwick.ch -airwick.cl airwick.co.in airwick.co.nz airwick.co.uk airwick.co.za airwick.comairwick.com.auairwick.com.brairwick.com.cn -cnairwick.com.mxairwick.com.tr -airwick.cz -airwick.de -airwick.dk -airwick.es -airwick.fi -airwick.fr -airwick.hr -airwick.hu -airwick.ie -airwick.it -airwick.jp airwick.net -airwick.nl -airwick.no -airwick.pl -airwick.pt -airwick.ro -airwick.ru -airwick.se -airwick.si -airwick.sk -airwick.tv -airwick.usairwickarabia.com vipoo.es -A -MEIZU flyme.cn meizu.cn  meizu.com  mzres.com -( -TAPTAP -tapimg.com -taptap.com -S - UNITY-ADS!unityads.unity3d.com -ads#unityads.unitychina.cn -ads -% - -ADJUST-ADS -adjust.com -ads - -XHAMSTER xhamster.comxhamsterlive.com  xhcdn.comwidgets.stripst.com#collector.xhamster.com -ads -z -CMB cignacmb.comcmb-leasing.com cmbchina.com cmbi.com.hkcmbwinglungbank.com cmfchina.com -^ - APPLE-ADSiadsdk.apple.com -ads iad.apple.com -ads qwapi.com -ads -ç - FACEBOOK-DEVaccountkit.comatscaleconference.com botorch.org -buck.build buckbuild.comcomponentkit.org draftjs.org -f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.com fasttext.cc fbf8.com fbinfer.com fblitho.com fbredex.com -fbrell.com flow.dev flow.org flowtype.org frescolib.org hacklang.org hhvm.commakeitopen.com mcrouter.net mcrouter.orgmessengerdevelopers.com -ogp.meopengraphprotocol.comopengraphprotocol.org  parse.com pyrobot.org  react.com reactjs.com reactjs.org recoiljs.org rocksdb.com rocksdb.net rocksdb.orgyogalayout.comdevelopers.facebook.com -† -GOLANG go-lang.com go-lang.net go-lang.org -go.dev  godoc.org -golang.com -golang.net -golang.org -k -IKEAikea.cn -cn ikea.com ikea.net  ingka.com  ingka.devingkacentres.com -Q -NEWSMAXandysparis.com newsmax.com -newsmax.in newsmaxtv.com -ä -SMARTONEbarkadahansasmartone.comhealthreach.hkhkcircleapp.comhomephoneplus.com ip73.coms-cashonmobile.com s-rewards.hksahabatsetiasmartone.com smartone.comsmartoneholdings.comsmartonerobotics.comsmartonesolutions.com.hksmartonesolutions.hk valuegb.comwise-research.com -? -BOOTCSS bootcss.com -bootcdn.cnphpcomposer.com -" -KODI kodi.tv  kodi.wiki -& -SMZDM  smzdm.com -zdmimg.com -c -COMODO -comodo.com comodoca.com comodoca2.com comodoca3.com comodoca4.com - -WWE wwe.com wwe9.com -ª -DISNEYabc-studios.com abc.com edgedatg.com espn.com espn.net espncdn.com -espnqa.com watchespn.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.net -marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.com ngeo.comadventuresbydisney.com -babble.com babyzone.com -dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.net  disney.be  disney.bg  disney.ca disney.co.il disney.co.th disney.co.uk disney.co.za -disney.com disney.com.au disney.com.br  disney.cz  disney.de  disney.dk  disney.es  disney.fi  disney.fr  disney.gr  disney.hu  disney.id  disney.in  disney.io  disney.it  disney.my  disney.nl  disney.no  disney.ph  disney.pl  disney.pt  disney.ro  disney.se  disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comdisneymagicmoments.co.ildisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frdisneymagicmoments.gen.trdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pl disneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com disneynow.comdisneypeoplesurveys.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneysubscription.comdisneyturkiye.com.trdisneytvajobs.comdisneyworld-go.com -dssott.comgo-disneyworldgo.com -go.com  mickey.tvmoviesanywhere.complaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.com starwars.com#starwarsgalacticstarcruiser.comstreamingdisney.netthestationbymaker.comthisispolaris.comwatchdisneyfe.com - -XUNLEI -sandai.netthunderurl.com -xunlei.com  00cdn.com  88cdn.com  p2cdn.comthundercdn.com xycloud.com  xycdn.com - - SHARETHIS sharethis.com -, -DUYAOSS duyaoss.com duyaossr.com -+ -MYFONTS myfonts.com myfonts.net -& -CHINASO chinaso.com -pg0.cn -7 -AMD amd.comamdfanstore.com -radeon.com -< -ANACONDA anaconda.com anaconda.org conda.io -( -OPENCOLLECTIVEopencollective.com -Ü -WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.net whatsapp.cc whatsapp.com whatsapp.info whatsapp.net whatsapp.org whatsapp.tvwhatsappbrand.com -6 -75TEAM 75.team -75team.com baomitu.com -Ì -CATEGORY-SECURITIES-CN -sse.com.cn sseinfo.com szse.cn cninfo.com.cn ajzq.com avicsec.com  ccnew.com cczq.com cczq.net cfsc.com.cn cfzq.com cgws.comchinalions.comchinastock.com.cn cicc.com -ciccwm.com cindasc.com cjsc.com cnhbstock.com cnht.com.cn csco.com.cn csfounder.com  ctsec.com daton.com.cn  dfham.com dfzq.com.cn dgzq.com.cn dtsbc.com.cn dwjq.com.cn dxzq.net easec.com.cnessence.com.cn ewww.com.cn fcsc.cnfzfinancing.com  gf.com.cn ghsl.cn ghzq.com.cn gjzq.com.cn gkzq.com.cn glsc.com.cn grzq.com gsgh.cn gszq.com gtja.com gtja.com  guodu.com guosen.com.cn gyzq.com.cn hazq.com hczq.com hfzq.com.cn -hlzqgs.comhongtastock.com hrsec.com.cn hsbcqh.com.cn htsc.com.cn  htsec.comhuajingsec.com huajinsc.cn huayingsc.com hx168.com.cn hxzq.cn i618.com.cn  iztzq.com jhzq.com.cnjpmorganchina.com jyzq.cn  jzsec.com kysec.cn lczq.com lhzq.comlongone.com.cnmorganstanleyhuaxin.com mszq.com nesc.cn njzq.com.cnnomuraoi-sec.com -shgsec.com -shhxzq.com shzq.com stocke.com.cn -swhysc.com swsc.com.cn tebon.com.cn tfzq.com  tpyzq.com vanho.cn west95582.com wkzq.com.cn wlzq.cn wxzq.com xcsc.com xsdzq.cn xyzq.com.cn ydsc.com.cn ykzq.com ytzq.com zdzq.com.cn zszq.com -ztfsec.com -zts.com.cn -99fund.com -abc-ca.com avicfund.cn  bdfund.cn -bobbns.com boscam.com.cn -bosera.com ccfund.com.cn cfund108.comchanganfunds.comchinanature.com.cncib-fund.com.cncryuantafund.com -ctfund.com dbfund.com.cn efunds.com.cn fadfunds.comforesightfund.com founderff.com -fsfund.com -ftfund.comfullgoal.com.cn furamc.com.cngalaxyasset.com gefund.com.cngffunds.com.cn  gfund.com gowinamc.com -hffunds.cn hftfund.comhongdefund.com -hsfund.com huaan.com.cn -igwfmc.com  jsfund.cn  jtamc.com mfcteda.commsjyfund.com.cn -nffund.com  ocfund.cnorient-fund.com phfund.com.cnpostfund.com.cn -py-axa.com  swsmu.comtaipingfund.com.cn thfund.com.cntongtaiamc.com ubssdic.com xf-fund.com xqfunds.com  ydamc.com yhfund.com.cn -zhfund.com -zofund.com -5ifund.com -fund123.cn -howbuy.com lufunds.com  zlfund.cn -2 -KU6 ku6.com -ku6cdn.com -ku6img.com - -WIKIHOW wikihow.com -ç -BINGbing bing.com bing.com.cn -cn bing.net bingads.combingagencyawards.combingapistatistics.combingsandbox.combingvisualsearch.com bingworld.combluehatnights.com -dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.com cn.bing.com -cn cn.bing.net -cn ditu.live.com -cnbj1.api.bing.com -cnemoi-cncdn.bing.com -cn - -GCORES -gcores.com -O -PUBMATIC pubmatic.compubmatic.co.jpads.pubmatic.com -ads -# -EDX edx.org edx-cdn.org -- - PUBMATIC-ADSads.pubmatic.com -ads -™ -BILIBILI -acg.tv acgvideo.com -b23.tv biliapi.com biliapi.net bilibili.combilibiligame.net biligame.com biligame.net bilivideo.com bilivideo.cn  hdslb.com im9.com -mincdn.com$ upos-hz-mirrorakam.akamaized.net -1 - LIBERAPAY liberapay.com liberapay.org -, -PAOFUYUN paofu.cloud paofuyun.me -’ -RUANMEI 6655.com cooldock.com -ithome.com lapin365.com ruanmei.com -saayaa.com win7china.com win8china.com - -IINA iina.io - -CNKI cnki.net -3 -ENTRUST entrust.netentrustdatacard.com -? -GEETEST geetest.com#geetest.datasink.sensorsdata.cn -, -JAVAjava java.com java.net -w -JWPLAYER -jwpcdn.comjwplatform.com jwplayer.com -jwpltx.com -jwpsrv.comlongtailvideo.com -@ -REUTERS reuters.com -reuters.tvreutersmedia.net -. -U17 u17.com u17i.com u17t.com -ý -CISCO webex.ca webex.co.in webex.co.it webex.co.jp webex.co.kr webex.co.nz webex.co.uk  webex.com webex.com.au webex.com.br webex.com.cn -cn webex.com.hk webex.com.mx webex.de webex.es webex.fr ciscoacademynetriders.comcciernslabs.comcciesecuritylabs.comccievoicelabs.com  ccna5.netcisco-returns.comcisco-warrantyfinder.comcisco.cn -cn  cisco.com cisco.com.cn -cn -cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.com ciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com ciscospark.caciscospark.com ciscospark.jpciscotaccc.com ciscotr.com ciscoturk.netciscovideo.comciscowebseminars.com cloudlock.com cloupia.com cloupia.netconnect-in-canada.comcoreoptics.net cs.co -devm2m.com dnaspaces.io flipshare.comgpstheseries.com inlethd.cominternetofeverything.com ioe.com kscisco.com m2m.com -mcisco.commediafiles-cisco.com metacloud.com mindmeld.commultiplydiversity.commyciscobenefits.com  mysdn.com -mysdn.info  mysdn.net netacad.com netacad.netnetwork-auth.cn -cnobservable.net obsrvbl.com parstream.com parstream.net parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.com tandberg.com -versly.comvideochampion.com virtuata.comwballiance.com!whyiwantciscotelepresence.com wifi-mx.comyoutubecisco.comapp-dynamics.comappdynamics.co.ukappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org -mearki.com meraki-go.com  meraki.hk merakigo.com -tail-f.com  tailf.comcisco.evergage.comciscolivehls-i.akamaihd.net \ No newline at end of file +) +LINGUEE linguee.com  deepl.com \ No newline at end of file From 102e32957a5a96ef208c602f546935d9f6b69bc1 Mon Sep 17 00:00:00 2001 From: rurirei <72071920+rurirei@users.noreply.github.com> Date: Fri, 2 Apr 2021 18:41:17 +0800 Subject: [PATCH 47/60] feat: export (const.)core.v2rayKey (#831) * comment on. * rename to V2rayKeyValue --- context.go | 5 +++-- functions.go | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/context.go b/context.go index 84cd2396b..dd19b436f 100644 --- a/context.go +++ b/context.go @@ -9,11 +9,12 @@ import ( // V2rayKey is the key type of Instance in Context, exported for test. type V2rayKey int -const v2rayKey V2rayKey = 1 +// V2rayKeyValue is the key value of Instance in Context, exported for test. +const V2rayKeyValue V2rayKey = 1 // FromContext returns an Instance from the given context, or nil if the context doesn't contain one. func FromContext(ctx context.Context) *Instance { - if s, ok := ctx.Value(v2rayKey).(*Instance); ok { + if s, ok := ctx.Value(V2rayKeyValue).(*Instance); ok { return s } return nil diff --git a/functions.go b/functions.go index d08091d8e..178e5dcbe 100644 --- a/functions.go +++ b/functions.go @@ -16,7 +16,7 @@ import ( func CreateObject(v *Instance, config interface{}) (interface{}, error) { var ctx context.Context if v != nil { - ctx = context.WithValue(v.ctx, v2rayKey, v) + ctx = context.WithValue(v.ctx, V2rayKeyValue, v) } return common.CreateObject(ctx, config) } From e31bfe02f0490f65a4c1a39a4b45ce56349a8033 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 2 Apr 2021 12:12:27 +0100 Subject: [PATCH 48/60] Revert "feat: export (const.)core.v2rayKey (#831)" This reverts commit 102e3295 --- context.go | 5 ++--- functions.go | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/context.go b/context.go index dd19b436f..84cd2396b 100644 --- a/context.go +++ b/context.go @@ -9,12 +9,11 @@ import ( // V2rayKey is the key type of Instance in Context, exported for test. type V2rayKey int -// V2rayKeyValue is the key value of Instance in Context, exported for test. -const V2rayKeyValue V2rayKey = 1 +const v2rayKey V2rayKey = 1 // FromContext returns an Instance from the given context, or nil if the context doesn't contain one. func FromContext(ctx context.Context) *Instance { - if s, ok := ctx.Value(V2rayKeyValue).(*Instance); ok { + if s, ok := ctx.Value(v2rayKey).(*Instance); ok { return s } return nil diff --git a/functions.go b/functions.go index 178e5dcbe..d08091d8e 100644 --- a/functions.go +++ b/functions.go @@ -16,7 +16,7 @@ import ( func CreateObject(v *Instance, config interface{}) (interface{}, error) { var ctx context.Context if v != nil { - ctx = context.WithValue(v.ctx, V2rayKeyValue, v) + ctx = context.WithValue(v.ctx, v2rayKey, v) } return common.CreateObject(ctx, config) } From fc73774e4a132b5e6690595706fedec54f0240ee Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 2 Apr 2021 12:16:09 +0100 Subject: [PATCH 49/60] Fix Dial function crash instance when there is no instance context in the ctx --- functions.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/functions.go b/functions.go index d08091d8e..972fff39e 100644 --- a/functions.go +++ b/functions.go @@ -51,6 +51,11 @@ func Dial(ctx context.Context, v *Instance, dest net.Destination) (net.Conn, err if dispatcher == nil { return nil, newError("routing.Dispatcher is not registered in V2Ray core") } + + if ctx.Value(v2rayKey) == nil { + ctx = context.WithValue(ctx, v2rayKey, v) + } + r, err := dispatcher.(routing.Dispatcher).Dispatch(ctx, dest) if err != nil { return nil, err From 3476a0e1d1c503636ff63ed7dfb37f0a9c1322f2 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 2 Apr 2021 12:24:03 +0100 Subject: [PATCH 50/60] Update bundled browserforwarder firmware --- common/platform/securedload/embedded.go | 2 +- release/extra/browserforwarder/index.js | 39576 +--------------------- 2 files changed, 50 insertions(+), 39528 deletions(-) diff --git a/common/platform/securedload/embedded.go b/common/platform/securedload/embedded.go index 0340cf79a..bc4e997da 100644 --- a/common/platform/securedload/embedded.go +++ b/common/platform/securedload/embedded.go @@ -4,6 +4,6 @@ const allowedHashes = `SHA256 (!#project==v2fly) = fffffffffffffffffffffffffffff SHA256 (!#version==embedded) = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff SHA256 (subscriptions/subscriptionsDefinition.v2flyTemplate) = 3f165dba7de0d7c506fbdff3275ea64b76f307df435316a3ea0914ee957793ab SHA256 (browserforwarder/index.html) = 34f2c573724256421ade769bda18eeac85172bf0aaed00d7b90e41e843a2caef -SHA256 (browserforwarder/index.js) = 7de6de0bb7a1c8838f20fcba6bd9b02e1199d116b053836ad622184588d9a37e +SHA256 (browserforwarder/index.js) = fbc533343c9ea292b7e7a1b6ecc56c8b54a81bc48e4b939dba76e355b5a5eb15 ` diff --git a/release/extra/browserforwarder/index.js b/release/extra/browserforwarder/index.js index 46e41ea4a..9db5fe91e 100644 --- a/release/extra/browserforwarder/index.js +++ b/release/extra/browserforwarder/index.js @@ -1,39533 +1,55 @@ "use strict"; (function() { -Error.stackTraceLimit = Infinity; - -var $global, $module; -if (typeof window !== "undefined") { /* web page */ - $global = window; -} else if (typeof self !== "undefined") { /* web worker */ - $global = self; -} else if (typeof global !== "undefined") { /* Node.js */ - $global = global; - $global.require = require; -} else { /* others (e.g. Nashorn) */ - $global = this; -} - -if ($global === undefined || $global.Array === undefined) { - throw new Error("no global object found"); -} -if (typeof module !== "undefined") { - $module = module; -} - -var $packages = {}, $idCounter = 0; -var $keys = function(m) { return m ? Object.keys(m) : []; }; -var $flushConsole = function() {}; -var $throwRuntimeError; /* set by package "runtime" */ -var $throwNilPointerError = function() { $throwRuntimeError("invalid memory address or nil pointer dereference"); }; -var $call = function(fn, rcvr, args) { return fn.apply(rcvr, args); }; -var $makeFunc = function(fn) { return function() { return $externalize(fn(this, new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments, []))), $emptyInterface); }; }; -var $unused = function(v) {}; - -var $mapArray = function(array, f) { - var newArray = new array.constructor(array.length); - for (var i = 0; i < array.length; i++) { - newArray[i] = f(array[i]); - } - return newArray; -}; - -var $methodVal = function(recv, name) { - var vals = recv.$methodVals || {}; - recv.$methodVals = vals; /* noop for primitives */ - var f = vals[name]; - if (f !== undefined) { - return f; - } - var method = recv[name]; - f = function() { - $stackDepthOffset--; - try { - return method.apply(recv, arguments); - } finally { - $stackDepthOffset++; - } - }; - vals[name] = f; - return f; -}; - -var $methodExpr = function(typ, name) { - var method = typ.prototype[name]; - if (method.$expr === undefined) { - method.$expr = function() { - $stackDepthOffset--; - try { - if (typ.wrapped) { - arguments[0] = new typ(arguments[0]); - } - return Function.call.apply(method, arguments); - } finally { - $stackDepthOffset++; - } - }; - } - return method.$expr; -}; - -var $ifaceMethodExprs = {}; -var $ifaceMethodExpr = function(name) { - var expr = $ifaceMethodExprs["$" + name]; - if (expr === undefined) { - expr = $ifaceMethodExprs["$" + name] = function() { - $stackDepthOffset--; - try { - return Function.call.apply(arguments[0][name], arguments); - } finally { - $stackDepthOffset++; - } - }; - } - return expr; -}; - -var $subslice = function(slice, low, high, max) { - if (high === undefined) { - high = slice.$length; - } - if (max === undefined) { - max = slice.$capacity; - } - if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) { - $throwRuntimeError("slice bounds out of range"); - } - if (slice === slice.constructor.nil) { - return slice; - } - var s = new slice.constructor(slice.$array); - s.$offset = slice.$offset + low; - s.$length = high - low; - s.$capacity = max - low; - return s; -}; - -var $substring = function(str, low, high) { - if (low < 0 || high < low || high > str.length) { - $throwRuntimeError("slice bounds out of range"); - } - return str.substring(low, high); -}; - -var $sliceToArray = function(slice) { - if (slice.$array.constructor !== Array) { - return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length); - } - return slice.$array.slice(slice.$offset, slice.$offset + slice.$length); -}; - -var $decodeRune = function(str, pos) { - var c0 = str.charCodeAt(pos); - - if (c0 < 0x80) { - return [c0, 1]; - } - - if (c0 !== c0 || c0 < 0xC0) { - return [0xFFFD, 1]; - } - - var c1 = str.charCodeAt(pos + 1); - if (c1 !== c1 || c1 < 0x80 || 0xC0 <= c1) { - return [0xFFFD, 1]; - } - - if (c0 < 0xE0) { - var r = (c0 & 0x1F) << 6 | (c1 & 0x3F); - if (r <= 0x7F) { - return [0xFFFD, 1]; - } - return [r, 2]; - } - - var c2 = str.charCodeAt(pos + 2); - if (c2 !== c2 || c2 < 0x80 || 0xC0 <= c2) { - return [0xFFFD, 1]; - } - - if (c0 < 0xF0) { - var r = (c0 & 0x0F) << 12 | (c1 & 0x3F) << 6 | (c2 & 0x3F); - if (r <= 0x7FF) { - return [0xFFFD, 1]; - } - if (0xD800 <= r && r <= 0xDFFF) { - return [0xFFFD, 1]; - } - return [r, 3]; - } - - var c3 = str.charCodeAt(pos + 3); - if (c3 !== c3 || c3 < 0x80 || 0xC0 <= c3) { - return [0xFFFD, 1]; - } - - if (c0 < 0xF8) { - var r = (c0 & 0x07) << 18 | (c1 & 0x3F) << 12 | (c2 & 0x3F) << 6 | (c3 & 0x3F); - if (r <= 0xFFFF || 0x10FFFF < r) { - return [0xFFFD, 1]; - } - return [r, 4]; - } - - return [0xFFFD, 1]; -}; - -var $encodeRune = function(r) { - if (r < 0 || r > 0x10FFFF || (0xD800 <= r && r <= 0xDFFF)) { - r = 0xFFFD; - } - if (r <= 0x7F) { - return String.fromCharCode(r); - } - if (r <= 0x7FF) { - return String.fromCharCode(0xC0 | r >> 6, 0x80 | (r & 0x3F)); - } - if (r <= 0xFFFF) { - return String.fromCharCode(0xE0 | r >> 12, 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F)); - } - return String.fromCharCode(0xF0 | r >> 18, 0x80 | (r >> 12 & 0x3F), 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F)); -}; - -var $stringToBytes = function(str) { - var array = new Uint8Array(str.length); - for (var i = 0; i < str.length; i++) { - array[i] = str.charCodeAt(i); - } - return array; -}; - -var $bytesToString = function(slice) { - if (slice.$length === 0) { - return ""; - } - var str = ""; - for (var i = 0; i < slice.$length; i += 10000) { - str += String.fromCharCode.apply(undefined, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 10000))); - } - return str; -}; - -var $stringToRunes = function(str) { - var array = new Int32Array(str.length); - var rune, j = 0; - for (var i = 0; i < str.length; i += rune[1], j++) { - rune = $decodeRune(str, i); - array[j] = rune[0]; - } - return array.subarray(0, j); -}; - -var $runesToString = function(slice) { - if (slice.$length === 0) { - return ""; - } - var str = ""; - for (var i = 0; i < slice.$length; i++) { - str += $encodeRune(slice.$array[slice.$offset + i]); - } - return str; -}; - -var $copyString = function(dst, src) { - var n = Math.min(src.length, dst.$length); - for (var i = 0; i < n; i++) { - dst.$array[dst.$offset + i] = src.charCodeAt(i); - } - return n; -}; - -var $copySlice = function(dst, src) { - var n = Math.min(src.$length, dst.$length); - $copyArray(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem); - return n; -}; - -var $copyArray = function(dst, src, dstOffset, srcOffset, n, elem) { - if (n === 0 || (dst === src && dstOffset === srcOffset)) { - return; - } - - if (src.subarray) { - dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset); - return; - } - - switch (elem.kind) { - case $kindArray: - case $kindStruct: - if (dst === src && dstOffset > srcOffset) { - for (var i = n - 1; i >= 0; i--) { - elem.copy(dst[dstOffset + i], src[srcOffset + i]); - } - return; - } - for (var i = 0; i < n; i++) { - elem.copy(dst[dstOffset + i], src[srcOffset + i]); - } - return; - } - - if (dst === src && dstOffset > srcOffset) { - for (var i = n - 1; i >= 0; i--) { - dst[dstOffset + i] = src[srcOffset + i]; - } - return; - } - for (var i = 0; i < n; i++) { - dst[dstOffset + i] = src[srcOffset + i]; - } -}; - -var $clone = function(src, type) { - var clone = type.zero(); - type.copy(clone, src); - return clone; -}; - -var $pointerOfStructConversion = function(obj, type) { - if(obj.$proxies === undefined) { - obj.$proxies = {}; - obj.$proxies[obj.constructor.string] = obj; - } - var proxy = obj.$proxies[type.string]; - if (proxy === undefined) { - var properties = {}; - for (var i = 0; i < type.elem.fields.length; i++) { - (function(fieldProp) { - properties[fieldProp] = { - get: function() { return obj[fieldProp]; }, - set: function(value) { obj[fieldProp] = value; } - }; - })(type.elem.fields[i].prop); - } - proxy = Object.create(type.prototype, properties); - proxy.$val = proxy; - obj.$proxies[type.string] = proxy; - proxy.$proxies = obj.$proxies; - } - return proxy; -}; - -var $append = function(slice) { - return $internalAppend(slice, arguments, 1, arguments.length - 1); -}; - -var $appendSlice = function(slice, toAppend) { - if (toAppend.constructor === String) { - var bytes = $stringToBytes(toAppend); - return $internalAppend(slice, bytes, 0, bytes.length); - } - return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length); -}; - -var $internalAppend = function(slice, array, offset, length) { - if (length === 0) { - return slice; - } - - var newArray = slice.$array; - var newOffset = slice.$offset; - var newLength = slice.$length + length; - var newCapacity = slice.$capacity; - - if (newLength > newCapacity) { - newOffset = 0; - newCapacity = Math.max(newLength, slice.$capacity < 1024 ? slice.$capacity * 2 : Math.floor(slice.$capacity * 5 / 4)); - - if (slice.$array.constructor === Array) { - newArray = slice.$array.slice(slice.$offset, slice.$offset + slice.$length); - newArray.length = newCapacity; - var zero = slice.constructor.elem.zero; - for (var i = slice.$length; i < newCapacity; i++) { - newArray[i] = zero(); - } - } else { - newArray = new slice.$array.constructor(newCapacity); - newArray.set(slice.$array.subarray(slice.$offset, slice.$offset + slice.$length)); - } - } - - $copyArray(newArray, array, newOffset + slice.$length, offset, length, slice.constructor.elem); - - var newSlice = new slice.constructor(newArray); - newSlice.$offset = newOffset; - newSlice.$length = newLength; - newSlice.$capacity = newCapacity; - return newSlice; -}; - -var $equal = function(a, b, type) { - if (type === $jsObjectPtr) { - return a === b; - } - switch (type.kind) { - case $kindComplex64: - case $kindComplex128: - return a.$real === b.$real && a.$imag === b.$imag; - case $kindInt64: - case $kindUint64: - return a.$high === b.$high && a.$low === b.$low; - case $kindArray: - if (a.length !== b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (!$equal(a[i], b[i], type.elem)) { - return false; - } - } - return true; - case $kindStruct: - for (var i = 0; i < type.fields.length; i++) { - var f = type.fields[i]; - if (!$equal(a[f.prop], b[f.prop], f.typ)) { - return false; - } - } - return true; - case $kindInterface: - return $interfaceIsEqual(a, b); - default: - return a === b; - } -}; - -var $interfaceIsEqual = function(a, b) { - if (a === $ifaceNil || b === $ifaceNil) { - return a === b; - } - if (a.constructor !== b.constructor) { - return false; - } - if (a.constructor === $jsObjectPtr) { - return a.object === b.object; - } - if (!a.constructor.comparable) { - $throwRuntimeError("comparing uncomparable type " + a.constructor.string); - } - return $equal(a.$val, b.$val, a.constructor); -}; - -var $min = Math.min; -var $mod = function(x, y) { return x % y; }; -var $parseInt = parseInt; -var $parseFloat = function(f) { - if (f !== undefined && f !== null && f.constructor === Number) { - return f; - } - return parseFloat(f); -}; - -var $froundBuf = new Float32Array(1); -var $fround = Math.fround || function(f) { - $froundBuf[0] = f; - return $froundBuf[0]; -}; - -var $imul = Math.imul || function(a, b) { - var ah = (a >>> 16) & 0xffff; - var al = a & 0xffff; - var bh = (b >>> 16) & 0xffff; - var bl = b & 0xffff; - return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) >> 0); -}; - -var $floatKey = function(f) { - if (f !== f) { - $idCounter++; - return "NaN$" + $idCounter; - } - return String(f); -}; - -var $flatten64 = function(x) { - return x.$high * 4294967296 + x.$low; -}; - -var $shiftLeft64 = function(x, y) { - if (y === 0) { - return x; - } - if (y < 32) { - return new x.constructor(x.$high << y | x.$low >>> (32 - y), (x.$low << y) >>> 0); - } - if (y < 64) { - return new x.constructor(x.$low << (y - 32), 0); - } - return new x.constructor(0, 0); -}; - -var $shiftRightInt64 = function(x, y) { - if (y === 0) { - return x; - } - if (y < 32) { - return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0); - } - if (y < 64) { - return new x.constructor(x.$high >> 31, (x.$high >> (y - 32)) >>> 0); - } - if (x.$high < 0) { - return new x.constructor(-1, 4294967295); - } - return new x.constructor(0, 0); -}; - -var $shiftRightUint64 = function(x, y) { - if (y === 0) { - return x; - } - if (y < 32) { - return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0); - } - if (y < 64) { - return new x.constructor(0, x.$high >>> (y - 32)); - } - return new x.constructor(0, 0); -}; - -var $mul64 = function(x, y) { - var high = 0, low = 0; - if ((y.$low & 1) !== 0) { - high = x.$high; - low = x.$low; - } - for (var i = 1; i < 32; i++) { - if ((y.$low & 1<>> (32 - i); - low += (x.$low << i) >>> 0; - } - } - for (var i = 0; i < 32; i++) { - if ((y.$high & 1< yHigh) || (xHigh === yHigh && xLow > yLow))) { - yHigh = (yHigh << 1 | yLow >>> 31) >>> 0; - yLow = (yLow << 1) >>> 0; - n++; - } - for (var i = 0; i <= n; i++) { - high = high << 1 | low >>> 31; - low = (low << 1) >>> 0; - if ((xHigh > yHigh) || (xHigh === yHigh && xLow >= yLow)) { - xHigh = xHigh - yHigh; - xLow = xLow - yLow; - if (xLow < 0) { - xHigh--; - xLow += 4294967296; - } - low++; - if (low === 4294967296) { - high++; - low = 0; - } - } - yLow = (yLow >>> 1 | yHigh << (32 - 1)) >>> 0; - yHigh = yHigh >>> 1; - } - - if (returnRemainder) { - return new x.constructor(xHigh * rs, xLow * rs); - } - return new x.constructor(high * s, low * s); -}; - -var $divComplex = function(n, d) { - var ninf = n.$real === Infinity || n.$real === -Infinity || n.$imag === Infinity || n.$imag === -Infinity; - var dinf = d.$real === Infinity || d.$real === -Infinity || d.$imag === Infinity || d.$imag === -Infinity; - var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag); - var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag); - if(nnan || dnan) { - return new n.constructor(NaN, NaN); - } - if (ninf && !dinf) { - return new n.constructor(Infinity, Infinity); - } - if (!ninf && dinf) { - return new n.constructor(0, 0); - } - if (d.$real === 0 && d.$imag === 0) { - if (n.$real === 0 && n.$imag === 0) { - return new n.constructor(NaN, NaN); - } - return new n.constructor(Infinity, Infinity); - } - var a = Math.abs(d.$real); - var b = Math.abs(d.$imag); - if (a <= b) { - var ratio = d.$real / d.$imag; - var denom = d.$real * ratio + d.$imag; - return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom); - } - var ratio = d.$imag / d.$real; - var denom = d.$imag * ratio + d.$real; - return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom); -}; - -var $kindBool = 1; -var $kindInt = 2; -var $kindInt8 = 3; -var $kindInt16 = 4; -var $kindInt32 = 5; -var $kindInt64 = 6; -var $kindUint = 7; -var $kindUint8 = 8; -var $kindUint16 = 9; -var $kindUint32 = 10; -var $kindUint64 = 11; -var $kindUintptr = 12; -var $kindFloat32 = 13; -var $kindFloat64 = 14; -var $kindComplex64 = 15; -var $kindComplex128 = 16; -var $kindArray = 17; -var $kindChan = 18; -var $kindFunc = 19; -var $kindInterface = 20; -var $kindMap = 21; -var $kindPtr = 22; -var $kindSlice = 23; -var $kindString = 24; -var $kindStruct = 25; -var $kindUnsafePointer = 26; - -var $methodSynthesizers = []; -var $addMethodSynthesizer = function(f) { - if ($methodSynthesizers === null) { - f(); - return; - } - $methodSynthesizers.push(f); -}; -var $synthesizeMethods = function() { - $methodSynthesizers.forEach(function(f) { f(); }); - $methodSynthesizers = null; -}; - -var $ifaceKeyFor = function(x) { - if (x === $ifaceNil) { - return 'nil'; - } - var c = x.constructor; - return c.string + '$' + c.keyFor(x.$val); -}; - -var $identity = function(x) { return x; }; - -var $typeIDCounter = 0; - -var $idKey = function(x) { - if (x.$id === undefined) { - $idCounter++; - x.$id = $idCounter; - } - return String(x.$id); -}; - -var $newType = function(size, kind, string, named, pkg, exported, constructor) { - var typ; - switch(kind) { - case $kindBool: - case $kindInt: - case $kindInt8: - case $kindInt16: - case $kindInt32: - case $kindUint: - case $kindUint8: - case $kindUint16: - case $kindUint32: - case $kindUintptr: - case $kindUnsafePointer: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.keyFor = $identity; - break; - - case $kindString: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.keyFor = function(x) { return "$" + x; }; - break; - - case $kindFloat32: - case $kindFloat64: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.keyFor = function(x) { return $floatKey(x); }; - break; - - case $kindInt64: - typ = function(high, low) { - this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >> 0; - this.$low = low >>> 0; - this.$val = this; - }; - typ.keyFor = function(x) { return x.$high + "$" + x.$low; }; - break; - - case $kindUint64: - typ = function(high, low) { - this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >>> 0; - this.$low = low >>> 0; - this.$val = this; - }; - typ.keyFor = function(x) { return x.$high + "$" + x.$low; }; - break; - - case $kindComplex64: - typ = function(real, imag) { - this.$real = $fround(real); - this.$imag = $fround(imag); - this.$val = this; - }; - typ.keyFor = function(x) { return x.$real + "$" + x.$imag; }; - break; - - case $kindComplex128: - typ = function(real, imag) { - this.$real = real; - this.$imag = imag; - this.$val = this; - }; - typ.keyFor = function(x) { return x.$real + "$" + x.$imag; }; - break; - - case $kindArray: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.ptr = $newType(4, $kindPtr, "*" + string, false, "", false, function(array) { - this.$get = function() { return array; }; - this.$set = function(v) { typ.copy(this, v); }; - this.$val = array; - }); - typ.init = function(elem, len) { - typ.elem = elem; - typ.len = len; - typ.comparable = elem.comparable; - typ.keyFor = function(x) { - return Array.prototype.join.call($mapArray(x, function(e) { - return String(elem.keyFor(e)).replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); - }), "$"); - }; - typ.copy = function(dst, src) { - $copyArray(dst, src, 0, 0, src.length, elem); - }; - typ.ptr.init(typ); - Object.defineProperty(typ.ptr.nil, "nilCheck", { get: $throwNilPointerError }); - }; - break; - - case $kindChan: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.keyFor = $idKey; - typ.init = function(elem, sendOnly, recvOnly) { - typ.elem = elem; - typ.sendOnly = sendOnly; - typ.recvOnly = recvOnly; - }; - break; - - case $kindFunc: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.init = function(params, results, variadic) { - typ.params = params; - typ.results = results; - typ.variadic = variadic; - typ.comparable = false; - }; - break; - - case $kindInterface: - typ = { implementedBy: {}, missingMethodFor: {} }; - typ.keyFor = $ifaceKeyFor; - typ.init = function(methods) { - typ.methods = methods; - methods.forEach(function(m) { - $ifaceNil[m.prop] = $throwNilPointerError; - }); - }; - break; - - case $kindMap: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.init = function(key, elem) { - typ.key = key; - typ.elem = elem; - typ.comparable = false; - }; - break; - - case $kindPtr: - typ = constructor || function(getter, setter, target) { - this.$get = getter; - this.$set = setter; - this.$target = target; - this.$val = this; - }; - typ.keyFor = $idKey; - typ.init = function(elem) { - typ.elem = elem; - typ.wrapped = (elem.kind === $kindArray); - typ.nil = new typ($throwNilPointerError, $throwNilPointerError); - }; - break; - - case $kindSlice: - typ = function(array) { - if (array.constructor !== typ.nativeArray) { - array = new typ.nativeArray(array); - } - this.$array = array; - this.$offset = 0; - this.$length = array.length; - this.$capacity = array.length; - this.$val = this; - }; - typ.init = function(elem) { - typ.elem = elem; - typ.comparable = false; - typ.nativeArray = $nativeArray(elem.kind); - typ.nil = new typ([]); - }; - break; - - case $kindStruct: - typ = function(v) { this.$val = v; }; - typ.wrapped = true; - typ.ptr = $newType(4, $kindPtr, "*" + string, false, pkg, exported, constructor); - typ.ptr.elem = typ; - typ.ptr.prototype.$get = function() { return this; }; - typ.ptr.prototype.$set = function(v) { typ.copy(this, v); }; - typ.init = function(pkgPath, fields) { - typ.pkgPath = pkgPath; - typ.fields = fields; - fields.forEach(function(f) { - if (!f.typ.comparable) { - typ.comparable = false; - } - }); - typ.keyFor = function(x) { - var val = x.$val; - return $mapArray(fields, function(f) { - return String(f.typ.keyFor(val[f.prop])).replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); - }).join("$"); - }; - typ.copy = function(dst, src) { - for (var i = 0; i < fields.length; i++) { - var f = fields[i]; - switch (f.typ.kind) { - case $kindArray: - case $kindStruct: - f.typ.copy(dst[f.prop], src[f.prop]); - continue; - default: - dst[f.prop] = src[f.prop]; - continue; - } - } - }; - /* nil value */ - var properties = {}; - fields.forEach(function(f) { - properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError }; - }); - typ.ptr.nil = Object.create(constructor.prototype, properties); - typ.ptr.nil.$val = typ.ptr.nil; - /* methods for embedded fields */ - $addMethodSynthesizer(function() { - var synthesizeMethod = function(target, m, f) { - if (target.prototype[m.prop] !== undefined) { return; } - target.prototype[m.prop] = function() { - var v = this.$val[f.prop]; - if (f.typ === $jsObjectPtr) { - v = new $jsObjectPtr(v); - } - if (v.$val === undefined) { - v = new f.typ(v); - } - return v[m.prop].apply(v, arguments); - }; - }; - fields.forEach(function(f) { - if (f.embedded) { - $methodSet(f.typ).forEach(function(m) { - synthesizeMethod(typ, m, f); - synthesizeMethod(typ.ptr, m, f); - }); - $methodSet($ptrType(f.typ)).forEach(function(m) { - synthesizeMethod(typ.ptr, m, f); - }); - } - }); - }); - }; - break; - - default: - $panic(new $String("invalid kind: " + kind)); - } - - switch (kind) { - case $kindBool: - case $kindMap: - typ.zero = function() { return false; }; - break; - - case $kindInt: - case $kindInt8: - case $kindInt16: - case $kindInt32: - case $kindUint: - case $kindUint8 : - case $kindUint16: - case $kindUint32: - case $kindUintptr: - case $kindUnsafePointer: - case $kindFloat32: - case $kindFloat64: - typ.zero = function() { return 0; }; - break; - - case $kindString: - typ.zero = function() { return ""; }; - break; - - case $kindInt64: - case $kindUint64: - case $kindComplex64: - case $kindComplex128: - var zero = new typ(0, 0); - typ.zero = function() { return zero; }; - break; - - case $kindPtr: - case $kindSlice: - typ.zero = function() { return typ.nil; }; - break; - - case $kindChan: - typ.zero = function() { return $chanNil; }; - break; - - case $kindFunc: - typ.zero = function() { return $throwNilPointerError; }; - break; - - case $kindInterface: - typ.zero = function() { return $ifaceNil; }; - break; - - case $kindArray: - typ.zero = function() { - var arrayClass = $nativeArray(typ.elem.kind); - if (arrayClass !== Array) { - return new arrayClass(typ.len); - } - var array = new Array(typ.len); - for (var i = 0; i < typ.len; i++) { - array[i] = typ.elem.zero(); - } - return array; - }; - break; - - case $kindStruct: - typ.zero = function() { return new typ.ptr(); }; - break; - - default: - $panic(new $String("invalid kind: " + kind)); - } - - typ.id = $typeIDCounter; - $typeIDCounter++; - typ.size = size; - typ.kind = kind; - typ.string = string; - typ.named = named; - typ.pkg = pkg; - typ.exported = exported; - typ.methods = []; - typ.methodSetCache = null; - typ.comparable = true; - return typ; -}; - -var $methodSet = function(typ) { - if (typ.methodSetCache !== null) { - return typ.methodSetCache; - } - var base = {}; - - var isPtr = (typ.kind === $kindPtr); - if (isPtr && typ.elem.kind === $kindInterface) { - typ.methodSetCache = []; - return []; - } - - var current = [{typ: isPtr ? typ.elem : typ, indirect: isPtr}]; - - var seen = {}; - - while (current.length > 0) { - var next = []; - var mset = []; - - current.forEach(function(e) { - if (seen[e.typ.string]) { - return; - } - seen[e.typ.string] = true; - - if (e.typ.named) { - mset = mset.concat(e.typ.methods); - if (e.indirect) { - mset = mset.concat($ptrType(e.typ).methods); - } - } - - switch (e.typ.kind) { - case $kindStruct: - e.typ.fields.forEach(function(f) { - if (f.embedded) { - var fTyp = f.typ; - var fIsPtr = (fTyp.kind === $kindPtr); - next.push({typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr}); - } - }); - break; - - case $kindInterface: - mset = mset.concat(e.typ.methods); - break; - } - }); - - mset.forEach(function(m) { - if (base[m.name] === undefined) { - base[m.name] = m; - } - }); - - current = next; - } - - typ.methodSetCache = []; - Object.keys(base).sort().forEach(function(name) { - typ.methodSetCache.push(base[name]); - }); - return typ.methodSetCache; -}; - -var $Bool = $newType( 1, $kindBool, "bool", true, "", false, null); -var $Int = $newType( 4, $kindInt, "int", true, "", false, null); -var $Int8 = $newType( 1, $kindInt8, "int8", true, "", false, null); -var $Int16 = $newType( 2, $kindInt16, "int16", true, "", false, null); -var $Int32 = $newType( 4, $kindInt32, "int32", true, "", false, null); -var $Int64 = $newType( 8, $kindInt64, "int64", true, "", false, null); -var $Uint = $newType( 4, $kindUint, "uint", true, "", false, null); -var $Uint8 = $newType( 1, $kindUint8, "uint8", true, "", false, null); -var $Uint16 = $newType( 2, $kindUint16, "uint16", true, "", false, null); -var $Uint32 = $newType( 4, $kindUint32, "uint32", true, "", false, null); -var $Uint64 = $newType( 8, $kindUint64, "uint64", true, "", false, null); -var $Uintptr = $newType( 4, $kindUintptr, "uintptr", true, "", false, null); -var $Float32 = $newType( 4, $kindFloat32, "float32", true, "", false, null); -var $Float64 = $newType( 8, $kindFloat64, "float64", true, "", false, null); -var $Complex64 = $newType( 8, $kindComplex64, "complex64", true, "", false, null); -var $Complex128 = $newType(16, $kindComplex128, "complex128", true, "", false, null); -var $String = $newType( 8, $kindString, "string", true, "", false, null); -var $UnsafePointer = $newType( 4, $kindUnsafePointer, "unsafe.Pointer", true, "", false, null); - -var $nativeArray = function(elemKind) { - switch (elemKind) { - case $kindInt: - return Int32Array; - case $kindInt8: - return Int8Array; - case $kindInt16: - return Int16Array; - case $kindInt32: - return Int32Array; - case $kindUint: - return Uint32Array; - case $kindUint8: - return Uint8Array; - case $kindUint16: - return Uint16Array; - case $kindUint32: - return Uint32Array; - case $kindUintptr: - return Uint32Array; - case $kindFloat32: - return Float32Array; - case $kindFloat64: - return Float64Array; - default: - return Array; - } -}; -var $toNativeArray = function(elemKind, array) { - var nativeArray = $nativeArray(elemKind); - if (nativeArray === Array) { - return array; - } - return new nativeArray(array); -}; -var $arrayTypes = {}; -var $arrayType = function(elem, len) { - var typeKey = elem.id + "$" + len; - var typ = $arrayTypes[typeKey]; - if (typ === undefined) { - typ = $newType(12, $kindArray, "[" + len + "]" + elem.string, false, "", false, null); - $arrayTypes[typeKey] = typ; - typ.init(elem, len); - } - return typ; -}; - -var $chanType = function(elem, sendOnly, recvOnly) { - var string = (recvOnly ? "<-" : "") + "chan" + (sendOnly ? "<- " : " ") + elem.string; - var field = sendOnly ? "SendChan" : (recvOnly ? "RecvChan" : "Chan"); - var typ = elem[field]; - if (typ === undefined) { - typ = $newType(4, $kindChan, string, false, "", false, null); - elem[field] = typ; - typ.init(elem, sendOnly, recvOnly); - } - return typ; -}; -var $Chan = function(elem, capacity) { - if (capacity < 0 || capacity > 2147483647) { - $throwRuntimeError("makechan: size out of range"); - } - this.$elem = elem; - this.$capacity = capacity; - this.$buffer = []; - this.$sendQueue = []; - this.$recvQueue = []; - this.$closed = false; -}; -var $chanNil = new $Chan(null, 0); -$chanNil.$sendQueue = $chanNil.$recvQueue = { length: 0, push: function() {}, shift: function() { return undefined; }, indexOf: function() { return -1; } }; - -var $funcTypes = {}; -var $funcType = function(params, results, variadic) { - var typeKey = $mapArray(params, function(p) { return p.id; }).join(",") + "$" + $mapArray(results, function(r) { return r.id; }).join(",") + "$" + variadic; - var typ = $funcTypes[typeKey]; - if (typ === undefined) { - var paramTypes = $mapArray(params, function(p) { return p.string; }); - if (variadic) { - paramTypes[paramTypes.length - 1] = "..." + paramTypes[paramTypes.length - 1].substr(2); - } - var string = "func(" + paramTypes.join(", ") + ")"; - if (results.length === 1) { - string += " " + results[0].string; - } else if (results.length > 1) { - string += " (" + $mapArray(results, function(r) { return r.string; }).join(", ") + ")"; - } - typ = $newType(4, $kindFunc, string, false, "", false, null); - $funcTypes[typeKey] = typ; - typ.init(params, results, variadic); - } - return typ; -}; - -var $interfaceTypes = {}; -var $interfaceType = function(methods) { - var typeKey = $mapArray(methods, function(m) { return m.pkg + "," + m.name + "," + m.typ.id; }).join("$"); - var typ = $interfaceTypes[typeKey]; - if (typ === undefined) { - var string = "interface {}"; - if (methods.length !== 0) { - string = "interface { " + $mapArray(methods, function(m) { - return (m.pkg !== "" ? m.pkg + "." : "") + m.name + m.typ.string.substr(4); - }).join("; ") + " }"; - } - typ = $newType(8, $kindInterface, string, false, "", false, null); - $interfaceTypes[typeKey] = typ; - typ.init(methods); - } - return typ; -}; -var $emptyInterface = $interfaceType([]); -var $ifaceNil = {}; -var $error = $newType(8, $kindInterface, "error", true, "", false, null); -$error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]); - -var $mapTypes = {}; -var $mapType = function(key, elem) { - var typeKey = key.id + "$" + elem.id; - var typ = $mapTypes[typeKey]; - if (typ === undefined) { - typ = $newType(4, $kindMap, "map[" + key.string + "]" + elem.string, false, "", false, null); - $mapTypes[typeKey] = typ; - typ.init(key, elem); - } - return typ; -}; -var $makeMap = function(keyForFunc, entries) { - var m = {}; - for (var i = 0; i < entries.length; i++) { - var e = entries[i]; - m[keyForFunc(e.k)] = e; - } - return m; -}; - -var $ptrType = function(elem) { - var typ = elem.ptr; - if (typ === undefined) { - typ = $newType(4, $kindPtr, "*" + elem.string, false, "", elem.exported, null); - elem.ptr = typ; - typ.init(elem); - } - return typ; -}; - -var $newDataPointer = function(data, constructor) { - if (constructor.elem.kind === $kindStruct) { - return data; - } - return new constructor(function() { return data; }, function(v) { data = v; }); -}; - -var $indexPtr = function(array, index, constructor) { - array.$ptr = array.$ptr || {}; - return array.$ptr[index] || (array.$ptr[index] = new constructor(function() { return array[index]; }, function(v) { array[index] = v; })); -}; - -var $sliceType = function(elem) { - var typ = elem.slice; - if (typ === undefined) { - typ = $newType(12, $kindSlice, "[]" + elem.string, false, "", false, null); - elem.slice = typ; - typ.init(elem); - } - return typ; -}; -var $makeSlice = function(typ, length, capacity) { - capacity = capacity || length; - if (length < 0 || length > 2147483647) { - $throwRuntimeError("makeslice: len out of range"); - } - if (capacity < 0 || capacity < length || capacity > 2147483647) { - $throwRuntimeError("makeslice: cap out of range"); - } - var array = new typ.nativeArray(capacity); - if (typ.nativeArray === Array) { - for (var i = 0; i < capacity; i++) { - array[i] = typ.elem.zero(); - } - } - var slice = new typ(array); - slice.$length = length; - return slice; -}; - -var $structTypes = {}; -var $structType = function(pkgPath, fields) { - var typeKey = $mapArray(fields, function(f) { return f.name + "," + f.typ.id + "," + f.tag; }).join("$"); - var typ = $structTypes[typeKey]; - if (typ === undefined) { - var string = "struct { " + $mapArray(fields, function(f) { - return f.name + " " + f.typ.string + (f.tag !== "" ? (" \"" + f.tag.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\"") : ""); - }).join("; ") + " }"; - if (fields.length === 0) { - string = "struct {}"; - } - typ = $newType(0, $kindStruct, string, false, "", false, function() { - this.$val = this; - for (var i = 0; i < fields.length; i++) { - var f = fields[i]; - var arg = arguments[i]; - this[f.prop] = arg !== undefined ? arg : f.typ.zero(); - } - }); - $structTypes[typeKey] = typ; - typ.init(pkgPath, fields); - } - return typ; -}; - -var $assertType = function(value, type, returnTuple) { - var isInterface = (type.kind === $kindInterface), ok, missingMethod = ""; - if (value === $ifaceNil) { - ok = false; - } else if (!isInterface) { - ok = value.constructor === type; - } else { - var valueTypeString = value.constructor.string; - ok = type.implementedBy[valueTypeString]; - if (ok === undefined) { - ok = true; - var valueMethodSet = $methodSet(value.constructor); - var interfaceMethods = type.methods; - for (var i = 0; i < interfaceMethods.length; i++) { - var tm = interfaceMethods[i]; - var found = false; - for (var j = 0; j < valueMethodSet.length; j++) { - var vm = valueMethodSet[j]; - if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) { - found = true; - break; - } - } - if (!found) { - ok = false; - type.missingMethodFor[valueTypeString] = tm.name; - break; - } - } - type.implementedBy[valueTypeString] = ok; - } - if (!ok) { - missingMethod = type.missingMethodFor[valueTypeString]; - } - } - - if (!ok) { - if (returnTuple) { - return [type.zero(), false]; - } - $panic(new $packages["runtime"].TypeAssertionError.ptr( - $packages["runtime"]._type.ptr.nil, - (value === $ifaceNil ? $packages["runtime"]._type.ptr.nil : new $packages["runtime"]._type.ptr(value.constructor.string)), - new $packages["runtime"]._type.ptr(type.string), - missingMethod)); - } - - if (!isInterface) { - value = value.$val; - } - if (type === $jsObjectPtr) { - value = value.object; - } - return returnTuple ? [value, true] : value; -}; - -var $stackDepthOffset = 0; -var $getStackDepth = function() { - var err = new Error(); - if (err.stack === undefined) { - return undefined; - } - return $stackDepthOffset + err.stack.split("\n").length; -}; - -var $panicStackDepth = null, $panicValue; -var $callDeferred = function(deferred, jsErr, fromPanic) { - if (!fromPanic && deferred !== null && deferred.index >= $curGoroutine.deferStack.length) { - throw jsErr; - } - if (jsErr !== null) { - var newErr = null; - try { - $curGoroutine.deferStack.push(deferred); - $panic(new $jsErrorPtr(jsErr)); - } catch (err) { - newErr = err; - } - $curGoroutine.deferStack.pop(); - $callDeferred(deferred, newErr); - return; - } - if ($curGoroutine.asleep) { - return; - } - - $stackDepthOffset--; - var outerPanicStackDepth = $panicStackDepth; - var outerPanicValue = $panicValue; - - var localPanicValue = $curGoroutine.panicStack.pop(); - if (localPanicValue !== undefined) { - $panicStackDepth = $getStackDepth(); - $panicValue = localPanicValue; - } - - try { - while (true) { - if (deferred === null) { - deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1]; - if (deferred === undefined) { - /* The panic reached the top of the stack. Clear it and throw it as a JavaScript error. */ - $panicStackDepth = null; - if (localPanicValue.Object instanceof Error) { - throw localPanicValue.Object; - } - var msg; - if (localPanicValue.constructor === $String) { - msg = localPanicValue.$val; - } else if (localPanicValue.Error !== undefined) { - msg = localPanicValue.Error(); - } else if (localPanicValue.String !== undefined) { - msg = localPanicValue.String(); - } else { - msg = localPanicValue; - } - throw new Error(msg); - } - } - var call = deferred.pop(); - if (call === undefined) { - $curGoroutine.deferStack.pop(); - if (localPanicValue !== undefined) { - deferred = null; - continue; - } - return; - } - var r = call[0].apply(call[2], call[1]); - if (r && r.$blk !== undefined) { - deferred.push([r.$blk, [], r]); - if (fromPanic) { - throw null; - } - return; - } - - if (localPanicValue !== undefined && $panicStackDepth === null) { - throw null; /* error was recovered */ - } - } - } finally { - if (localPanicValue !== undefined) { - if ($panicStackDepth !== null) { - $curGoroutine.panicStack.push(localPanicValue); - } - $panicStackDepth = outerPanicStackDepth; - $panicValue = outerPanicValue; - } - $stackDepthOffset++; - } -}; - -var $panic = function(value) { - $curGoroutine.panicStack.push(value); - $callDeferred(null, null, true); -}; -var $recover = function() { - if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) { - return $ifaceNil; - } - $panicStackDepth = null; - return $panicValue; -}; -var $throw = function(err) { throw err; }; - -var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] }; -var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true; -var $mainFinished = false; -var $go = function(fun, args) { - $totalGoroutines++; - $awakeGoroutines++; - var $goroutine = function() { - try { - $curGoroutine = $goroutine; - var r = fun.apply(undefined, args); - if (r && r.$blk !== undefined) { - fun = function() { return r.$blk(); }; - args = []; - return; - } - $goroutine.exit = true; - } catch (err) { - if (!$goroutine.exit) { - throw err; - } - } finally { - $curGoroutine = $noGoroutine; - if ($goroutine.exit) { /* also set by runtime.Goexit() */ - $totalGoroutines--; - $goroutine.asleep = true; - } - if ($goroutine.asleep) { - $awakeGoroutines--; - if (!$mainFinished && $awakeGoroutines === 0 && $checkForDeadlock) { - console.error("fatal error: all goroutines are asleep - deadlock!"); - if ($global.process !== undefined) { - $global.process.exit(2); - } - } - } - } - }; - $goroutine.asleep = false; - $goroutine.exit = false; - $goroutine.deferStack = []; - $goroutine.panicStack = []; - $schedule($goroutine); -}; - -var $scheduled = []; -var $runScheduled = function() { - try { - var r; - while ((r = $scheduled.shift()) !== undefined) { - r(); - } - } finally { - if ($scheduled.length > 0) { - setTimeout($runScheduled, 0); - } - } -}; - -var $schedule = function(goroutine) { - if (goroutine.asleep) { - goroutine.asleep = false; - $awakeGoroutines++; - } - $scheduled.push(goroutine); - if ($curGoroutine === $noGoroutine) { - $runScheduled(); - } -}; - -var $setTimeout = function(f, t) { - $awakeGoroutines++; - return setTimeout(function() { - $awakeGoroutines--; - f(); - }, t); -}; - -var $block = function() { - if ($curGoroutine === $noGoroutine) { - $throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine"); - } - $curGoroutine.asleep = true; -}; - -var $send = function(chan, value) { - if (chan.$closed) { - $throwRuntimeError("send on closed channel"); - } - var queuedRecv = chan.$recvQueue.shift(); - if (queuedRecv !== undefined) { - queuedRecv([value, true]); - return; - } - if (chan.$buffer.length < chan.$capacity) { - chan.$buffer.push(value); - return; - } - - var thisGoroutine = $curGoroutine; - var closedDuringSend; - chan.$sendQueue.push(function(closed) { - closedDuringSend = closed; - $schedule(thisGoroutine); - return value; - }); - $block(); - return { - $blk: function() { - if (closedDuringSend) { - $throwRuntimeError("send on closed channel"); - } - } - }; -}; -var $recv = function(chan) { - var queuedSend = chan.$sendQueue.shift(); - if (queuedSend !== undefined) { - chan.$buffer.push(queuedSend(false)); - } - var bufferedValue = chan.$buffer.shift(); - if (bufferedValue !== undefined) { - return [bufferedValue, true]; - } - if (chan.$closed) { - return [chan.$elem.zero(), false]; - } - - var thisGoroutine = $curGoroutine; - var f = { $blk: function() { return this.value; } }; - var queueEntry = function(v) { - f.value = v; - $schedule(thisGoroutine); - }; - chan.$recvQueue.push(queueEntry); - $block(); - return f; -}; -var $close = function(chan) { - if (chan.$closed) { - $throwRuntimeError("close of closed channel"); - } - chan.$closed = true; - while (true) { - var queuedSend = chan.$sendQueue.shift(); - if (queuedSend === undefined) { - break; - } - queuedSend(true); /* will panic */ - } - while (true) { - var queuedRecv = chan.$recvQueue.shift(); - if (queuedRecv === undefined) { - break; - } - queuedRecv([chan.$elem.zero(), false]); - } -}; -var $select = function(comms) { - var ready = []; - var selection = -1; - for (var i = 0; i < comms.length; i++) { - var comm = comms[i]; - var chan = comm[0]; - switch (comm.length) { - case 0: /* default */ - selection = i; - break; - case 1: /* recv */ - if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) { - ready.push(i); - } - break; - case 2: /* send */ - if (chan.$closed) { - $throwRuntimeError("send on closed channel"); - } - if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) { - ready.push(i); - } - break; - } - } - - if (ready.length !== 0) { - selection = ready[Math.floor(Math.random() * ready.length)]; - } - if (selection !== -1) { - var comm = comms[selection]; - switch (comm.length) { - case 0: /* default */ - return [selection]; - case 1: /* recv */ - return [selection, $recv(comm[0])]; - case 2: /* send */ - $send(comm[0], comm[1]); - return [selection]; - } - } - - var entries = []; - var thisGoroutine = $curGoroutine; - var f = { $blk: function() { return this.selection; } }; - var removeFromQueues = function() { - for (var i = 0; i < entries.length; i++) { - var entry = entries[i]; - var queue = entry[0]; - var index = queue.indexOf(entry[1]); - if (index !== -1) { - queue.splice(index, 1); - } - } - }; - for (var i = 0; i < comms.length; i++) { - (function(i) { - var comm = comms[i]; - switch (comm.length) { - case 1: /* recv */ - var queueEntry = function(value) { - f.selection = [i, value]; - removeFromQueues(); - $schedule(thisGoroutine); - }; - entries.push([comm[0].$recvQueue, queueEntry]); - comm[0].$recvQueue.push(queueEntry); - break; - case 2: /* send */ - var queueEntry = function() { - if (comm[0].$closed) { - $throwRuntimeError("send on closed channel"); - } - f.selection = [i]; - removeFromQueues(); - $schedule(thisGoroutine); - return comm[1]; - }; - entries.push([comm[0].$sendQueue, queueEntry]); - comm[0].$sendQueue.push(queueEntry); - break; - } - })(i); - } - $block(); - return f; -}; - -var $jsObjectPtr, $jsErrorPtr; - -var $needsExternalization = function(t) { - switch (t.kind) { - case $kindBool: - case $kindInt: - case $kindInt8: - case $kindInt16: - case $kindInt32: - case $kindUint: - case $kindUint8: - case $kindUint16: - case $kindUint32: - case $kindUintptr: - case $kindFloat32: - case $kindFloat64: - return false; - default: - return t !== $jsObjectPtr; - } -}; - -var $externalize = function(v, t) { - if (t === $jsObjectPtr) { - return v; - } - switch (t.kind) { - case $kindBool: - case $kindInt: - case $kindInt8: - case $kindInt16: - case $kindInt32: - case $kindUint: - case $kindUint8: - case $kindUint16: - case $kindUint32: - case $kindUintptr: - case $kindFloat32: - case $kindFloat64: - return v; - case $kindInt64: - case $kindUint64: - return $flatten64(v); - case $kindArray: - if ($needsExternalization(t.elem)) { - return $mapArray(v, function(e) { return $externalize(e, t.elem); }); - } - return v; - case $kindFunc: - return $externalizeFunction(v, t, false); - case $kindInterface: - if (v === $ifaceNil) { - return null; - } - if (v.constructor === $jsObjectPtr) { - return v.$val.object; - } - return $externalize(v.$val, v.constructor); - case $kindMap: - var m = {}; - var keys = $keys(v); - for (var i = 0; i < keys.length; i++) { - var entry = v[keys[i]]; - m[$externalize(entry.k, t.key)] = $externalize(entry.v, t.elem); - } - return m; - case $kindPtr: - if (v === t.nil) { - return null; - } - return $externalize(v.$get(), t.elem); - case $kindSlice: - if ($needsExternalization(t.elem)) { - return $mapArray($sliceToArray(v), function(e) { return $externalize(e, t.elem); }); - } - return $sliceToArray(v); - case $kindString: - if ($isASCII(v)) { - return v; - } - var s = "", r; - for (var i = 0; i < v.length; i += r[1]) { - r = $decodeRune(v, i); - var c = r[0]; - if (c > 0xFFFF) { - var h = Math.floor((c - 0x10000) / 0x400) + 0xD800; - var l = (c - 0x10000) % 0x400 + 0xDC00; - s += String.fromCharCode(h, l); - continue; - } - s += String.fromCharCode(c); - } - return s; - case $kindStruct: - var timePkg = $packages["time"]; - if (timePkg !== undefined && v.constructor === timePkg.Time.ptr) { - var milli = $div64(v.UnixNano(), new $Int64(0, 1000000)); - return new Date($flatten64(milli)); - } - - var noJsObject = {}; - var searchJsObject = function(v, t) { - if (t === $jsObjectPtr) { - return v; - } - switch (t.kind) { - case $kindPtr: - if (v === t.nil) { - return noJsObject; - } - return searchJsObject(v.$get(), t.elem); - case $kindStruct: - var f = t.fields[0]; - return searchJsObject(v[f.prop], f.typ); - case $kindInterface: - return searchJsObject(v.$val, v.constructor); - default: - return noJsObject; - } - }; - var o = searchJsObject(v, t); - if (o !== noJsObject) { - return o; - } - - o = {}; - for (var i = 0; i < t.fields.length; i++) { - var f = t.fields[i]; - if (!f.exported) { - continue; - } - o[f.name] = $externalize(v[f.prop], f.typ); - } - return o; - } - $throwRuntimeError("cannot externalize " + t.string); -}; - -var $externalizeFunction = function(v, t, passThis) { - if (v === $throwNilPointerError) { - return null; - } - if (v.$externalizeWrapper === undefined) { - $checkForDeadlock = false; - v.$externalizeWrapper = function() { - var args = []; - for (var i = 0; i < t.params.length; i++) { - if (t.variadic && i === t.params.length - 1) { - var vt = t.params[i].elem, varargs = []; - for (var j = i; j < arguments.length; j++) { - varargs.push($internalize(arguments[j], vt)); - } - args.push(new (t.params[i])(varargs)); - break; - } - args.push($internalize(arguments[i], t.params[i])); - } - var result = v.apply(passThis ? this : undefined, args); - switch (t.results.length) { - case 0: - return; - case 1: - return $externalize(result, t.results[0]); - default: - for (var i = 0; i < t.results.length; i++) { - result[i] = $externalize(result[i], t.results[i]); - } - return result; - } - }; - } - return v.$externalizeWrapper; -}; - -var $internalize = function(v, t, recv) { - if (t === $jsObjectPtr) { - return v; - } - if (t === $jsObjectPtr.elem) { - $throwRuntimeError("cannot internalize js.Object, use *js.Object instead"); - } - if (v && v.__internal_object__ !== undefined) { - return $assertType(v.__internal_object__, t, false); - } - var timePkg = $packages["time"]; - if (timePkg !== undefined && t === timePkg.Time) { - if (!(v !== null && v !== undefined && v.constructor === Date)) { - $throwRuntimeError("cannot internalize time.Time from " + typeof v + ", must be Date"); - } - return timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000)); - } - switch (t.kind) { - case $kindBool: - return !!v; - case $kindInt: - return parseInt(v); - case $kindInt8: - return parseInt(v) << 24 >> 24; - case $kindInt16: - return parseInt(v) << 16 >> 16; - case $kindInt32: - return parseInt(v) >> 0; - case $kindUint: - return parseInt(v); - case $kindUint8: - return parseInt(v) << 24 >>> 24; - case $kindUint16: - return parseInt(v) << 16 >>> 16; - case $kindUint32: - case $kindUintptr: - return parseInt(v) >>> 0; - case $kindInt64: - case $kindUint64: - return new t(0, v); - case $kindFloat32: - case $kindFloat64: - return parseFloat(v); - case $kindArray: - if (v.length !== t.len) { - $throwRuntimeError("got array with wrong size from JavaScript native"); - } - return $mapArray(v, function(e) { return $internalize(e, t.elem); }); - case $kindFunc: - return function() { - var args = []; - for (var i = 0; i < t.params.length; i++) { - if (t.variadic && i === t.params.length - 1) { - var vt = t.params[i].elem, varargs = arguments[i]; - for (var j = 0; j < varargs.$length; j++) { - args.push($externalize(varargs.$array[varargs.$offset + j], vt)); - } - break; - } - args.push($externalize(arguments[i], t.params[i])); - } - var result = v.apply(recv, args); - switch (t.results.length) { - case 0: - return; - case 1: - return $internalize(result, t.results[0]); - default: - for (var i = 0; i < t.results.length; i++) { - result[i] = $internalize(result[i], t.results[i]); - } - return result; - } - }; - case $kindInterface: - if (t.methods.length !== 0) { - $throwRuntimeError("cannot internalize " + t.string); - } - if (v === null) { - return $ifaceNil; - } - if (v === undefined) { - return new $jsObjectPtr(undefined); - } - switch (v.constructor) { - case Int8Array: - return new ($sliceType($Int8))(v); - case Int16Array: - return new ($sliceType($Int16))(v); - case Int32Array: - return new ($sliceType($Int))(v); - case Uint8Array: - return new ($sliceType($Uint8))(v); - case Uint16Array: - return new ($sliceType($Uint16))(v); - case Uint32Array: - return new ($sliceType($Uint))(v); - case Float32Array: - return new ($sliceType($Float32))(v); - case Float64Array: - return new ($sliceType($Float64))(v); - case Array: - return $internalize(v, $sliceType($emptyInterface)); - case Boolean: - return new $Bool(!!v); - case Date: - if (timePkg === undefined) { - /* time package is not present, internalize as &js.Object{Date} so it can be externalized into original Date. */ - return new $jsObjectPtr(v); - } - return new timePkg.Time($internalize(v, timePkg.Time)); - case Function: - var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true); - return new funcType($internalize(v, funcType)); - case Number: - return new $Float64(parseFloat(v)); - case String: - return new $String($internalize(v, $String)); - default: - if ($global.Node && v instanceof $global.Node) { - return new $jsObjectPtr(v); - } - var mapType = $mapType($String, $emptyInterface); - return new mapType($internalize(v, mapType)); - } - case $kindMap: - var m = {}; - var keys = $keys(v); - for (var i = 0; i < keys.length; i++) { - var k = $internalize(keys[i], t.key); - m[t.key.keyFor(k)] = { k: k, v: $internalize(v[keys[i]], t.elem) }; - } - return m; - case $kindPtr: - if (t.elem.kind === $kindStruct) { - return $internalize(v, t.elem); - } - case $kindSlice: - return new t($mapArray(v, function(e) { return $internalize(e, t.elem); })); - case $kindString: - v = String(v); - if ($isASCII(v)) { - return v; - } - var s = ""; - var i = 0; - while (i < v.length) { - var h = v.charCodeAt(i); - if (0xD800 <= h && h <= 0xDBFF) { - var l = v.charCodeAt(i + 1); - var c = (h - 0xD800) * 0x400 + l - 0xDC00 + 0x10000; - s += $encodeRune(c); - i += 2; - continue; - } - s += $encodeRune(h); - i++; - } - return s; - case $kindStruct: - var noJsObject = {}; - var searchJsObject = function(t) { - if (t === $jsObjectPtr) { - return v; - } - if (t === $jsObjectPtr.elem) { - $throwRuntimeError("cannot internalize js.Object, use *js.Object instead"); - } - switch (t.kind) { - case $kindPtr: - return searchJsObject(t.elem); - case $kindStruct: - var f = t.fields[0]; - var o = searchJsObject(f.typ); - if (o !== noJsObject) { - var n = new t.ptr(); - n[f.prop] = o; - return n; - } - return noJsObject; - default: - return noJsObject; - } - }; - var o = searchJsObject(t); - if (o !== noJsObject) { - return o; - } - } - $throwRuntimeError("cannot internalize " + t.string); -}; - -/* $isASCII reports whether string s contains only ASCII characters. */ -var $isASCII = function(s) { - for (var i = 0; i < s.length; i++) { - if (s.charCodeAt(i) >= 128) { - return false; - } - } - return true; -}; - -$packages["github.com/gopherjs/gopherjs/js"] = (function() { - var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, MakeFunc, init; - Object = $pkg.Object = $newType(0, $kindStruct, "js.Object", true, "github.com/gopherjs/gopherjs/js", true, function(object_) { - this.$val = this; - if (arguments.length === 0) { - this.object = null; - return; - } - this.object = object_; - }); - Error = $pkg.Error = $newType(0, $kindStruct, "js.Error", true, "github.com/gopherjs/gopherjs/js", true, function(Object_) { - this.$val = this; - if (arguments.length === 0) { - this.Object = null; - return; - } - this.Object = Object_; - }); - sliceType = $sliceType($emptyInterface); - ptrType = $ptrType(Object); - ptrType$1 = $ptrType(Error); - Object.ptr.prototype.Get = function(key) { - var key, o; - o = this; - return o.object[$externalize(key, $String)]; - }; - Object.prototype.Get = function(key) { return this.$val.Get(key); }; - Object.ptr.prototype.Set = function(key, value) { - var key, o, value; - o = this; - o.object[$externalize(key, $String)] = $externalize(value, $emptyInterface); - }; - Object.prototype.Set = function(key, value) { return this.$val.Set(key, value); }; - Object.ptr.prototype.Delete = function(key) { - var key, o; - o = this; - delete o.object[$externalize(key, $String)]; - }; - Object.prototype.Delete = function(key) { return this.$val.Delete(key); }; - Object.ptr.prototype.Length = function() { - var o; - o = this; - return $parseInt(o.object.length); - }; - Object.prototype.Length = function() { return this.$val.Length(); }; - Object.ptr.prototype.Index = function(i) { - var i, o; - o = this; - return o.object[i]; - }; - Object.prototype.Index = function(i) { return this.$val.Index(i); }; - Object.ptr.prototype.SetIndex = function(i, value) { - var i, o, value; - o = this; - o.object[i] = $externalize(value, $emptyInterface); - }; - Object.prototype.SetIndex = function(i, value) { return this.$val.SetIndex(i, value); }; - Object.ptr.prototype.Call = function(name, args) { - var args, name, o, obj; - o = this; - return (obj = o.object, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType))); - }; - Object.prototype.Call = function(name, args) { return this.$val.Call(name, args); }; - Object.ptr.prototype.Invoke = function(args) { - var args, o; - o = this; - return o.object.apply(undefined, $externalize(args, sliceType)); - }; - Object.prototype.Invoke = function(args) { return this.$val.Invoke(args); }; - Object.ptr.prototype.New = function(args) { - var args, o; - o = this; - return new ($global.Function.prototype.bind.apply(o.object, [undefined].concat($externalize(args, sliceType)))); - }; - Object.prototype.New = function(args) { return this.$val.New(args); }; - Object.ptr.prototype.Bool = function() { - var o; - o = this; - return !!(o.object); - }; - Object.prototype.Bool = function() { return this.$val.Bool(); }; - Object.ptr.prototype.String = function() { - var o; - o = this; - return $internalize(o.object, $String); - }; - Object.prototype.String = function() { return this.$val.String(); }; - Object.ptr.prototype.Int = function() { - var o; - o = this; - return $parseInt(o.object) >> 0; - }; - Object.prototype.Int = function() { return this.$val.Int(); }; - Object.ptr.prototype.Int64 = function() { - var o; - o = this; - return $internalize(o.object, $Int64); - }; - Object.prototype.Int64 = function() { return this.$val.Int64(); }; - Object.ptr.prototype.Uint64 = function() { - var o; - o = this; - return $internalize(o.object, $Uint64); - }; - Object.prototype.Uint64 = function() { return this.$val.Uint64(); }; - Object.ptr.prototype.Float = function() { - var o; - o = this; - return $parseFloat(o.object); - }; - Object.prototype.Float = function() { return this.$val.Float(); }; - Object.ptr.prototype.Interface = function() { - var o; - o = this; - return $internalize(o.object, $emptyInterface); - }; - Object.prototype.Interface = function() { return this.$val.Interface(); }; - Object.ptr.prototype.Unsafe = function() { - var o; - o = this; - return o.object; - }; - Object.prototype.Unsafe = function() { return this.$val.Unsafe(); }; - Error.ptr.prototype.Error = function() { - var err; - err = this; - return "JavaScript error: " + $internalize(err.Object.message, $String); - }; - Error.prototype.Error = function() { return this.$val.Error(); }; - Error.ptr.prototype.Stack = function() { - var err; - err = this; - return $internalize(err.Object.stack, $String); - }; - Error.prototype.Stack = function() { return this.$val.Stack(); }; - MakeFunc = function(fn) { - var fn; - return $makeFunc(fn); - }; - $pkg.MakeFunc = MakeFunc; - init = function() { - var e; - e = new Error.ptr(null); - $unused(e); - }; - ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $emptyInterface], [], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [ptrType], false)}, {prop: "SetIndex", name: "SetIndex", pkg: "", typ: $funcType([$Int, $emptyInterface], [], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType], [ptrType], true)}, {prop: "Invoke", name: "Invoke", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "New", name: "New", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Unsafe", name: "Unsafe", pkg: "", typ: $funcType([], [$Uintptr], false)}]; - ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Stack", name: "Stack", pkg: "", typ: $funcType([], [$String], false)}]; - Object.init("github.com/gopherjs/gopherjs/js", [{prop: "object", name: "object", embedded: false, exported: false, typ: ptrType, tag: ""}]); - Error.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/cpu"] = (function() { - var $pkg = {}, $init; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/bytealg"] = (function() { - var $pkg = {}, $init, cpu, Equal, Index, Cutover, IndexByteString; - cpu = $packages["internal/cpu"]; - Equal = function(a, b) { - var _i, _ref, a, b, c, i; - if (!((a.$length === b.$length))) { - return false; - } - _ref = a; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { - return false; - } - _i++; - } - return true; - }; - $pkg.Equal = Equal; - Index = function(a, b) { - var a, b; - $panic(new $String("unimplemented")); - }; - $pkg.Index = Index; - Cutover = function(n) { - var n; - $panic(new $String("unimplemented")); - }; - $pkg.Cutover = Cutover; - IndexByteString = function(s, c) { - var c, i, s; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (s.charCodeAt(i) === c) { - return i; - } - i = i + (1) >> 0; - } - return -1; - }; - $pkg.IndexByteString = IndexByteString; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = cpu.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.MaxLen = 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["runtime/internal/sys"] = (function() { - var $pkg = {}, $init; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["runtime"] = (function() { - var $pkg = {}, $init, js, bytealg, sys, _type, TypeAssertionError, errorString, ptrType, ptrType$4, init, GOROOT, Caller, Goexit, SetFinalizer, KeepAlive, throw$1; - js = $packages["github.com/gopherjs/gopherjs/js"]; - bytealg = $packages["internal/bytealg"]; - sys = $packages["runtime/internal/sys"]; - _type = $pkg._type = $newType(0, $kindStruct, "runtime._type", true, "runtime", false, function(str_) { - this.$val = this; - if (arguments.length === 0) { - this.str = ""; - return; - } - this.str = str_; - }); - TypeAssertionError = $pkg.TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", true, "runtime", true, function(_interface_, concrete_, asserted_, missingMethod_) { - this.$val = this; - if (arguments.length === 0) { - this._interface = ptrType.nil; - this.concrete = ptrType.nil; - this.asserted = ptrType.nil; - this.missingMethod = ""; - return; - } - this._interface = _interface_; - this.concrete = concrete_; - this.asserted = asserted_; - this.missingMethod = missingMethod_; - }); - errorString = $pkg.errorString = $newType(8, $kindString, "runtime.errorString", true, "runtime", false, null); - ptrType = $ptrType(_type); - ptrType$4 = $ptrType(TypeAssertionError); - _type.ptr.prototype.string = function() { - var t; - t = this; - return t.str; - }; - _type.prototype.string = function() { return this.$val.string(); }; - _type.ptr.prototype.pkgpath = function() { - var t; - t = this; - return ""; - }; - _type.prototype.pkgpath = function() { return this.$val.pkgpath(); }; - init = function() { - var e, jsPkg; - jsPkg = $packages[$externalize("github.com/gopherjs/gopherjs/js", $String)]; - $jsObjectPtr = jsPkg.Object.ptr; - $jsErrorPtr = jsPkg.Error.ptr; - $throwRuntimeError = throw$1; - e = $ifaceNil; - e = new TypeAssertionError.ptr(ptrType.nil, ptrType.nil, ptrType.nil, ""); - $unused(e); - }; - GOROOT = function() { - var process, v, v$1; - process = $global.process; - if (process === undefined) { - return "/"; - } - v = process.env.GOPHERJS_GOROOT; - if (!(v === undefined)) { - return $internalize(v, $String); - } else { - v$1 = process.env.GOROOT; - if (!(v$1 === undefined)) { - return $internalize(v$1, $String); - } - } - return "/usr/local/go"; - }; - $pkg.GOROOT = GOROOT; - Caller = function(skip) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, file, info, line, ok, parts, pc, skip; - pc = 0; - file = ""; - line = 0; - ok = false; - info = new ($global.Error)().stack.split($externalize("\n", $String))[(skip + 2 >> 0)]; - if (info === undefined) { - _tmp = 0; - _tmp$1 = ""; - _tmp$2 = 0; - _tmp$3 = false; - pc = _tmp; - file = _tmp$1; - line = _tmp$2; - ok = _tmp$3; - return [pc, file, line, ok]; - } - parts = info.substring(($parseInt(info.indexOf($externalize("(", $String))) >> 0) + 1 >> 0, $parseInt(info.indexOf($externalize(")", $String))) >> 0).split($externalize(":", $String)); - _tmp$4 = 0; - _tmp$5 = $internalize(parts[0], $String); - _tmp$6 = $parseInt(parts[1]) >> 0; - _tmp$7 = true; - pc = _tmp$4; - file = _tmp$5; - line = _tmp$6; - ok = _tmp$7; - return [pc, file, line, ok]; - }; - $pkg.Caller = Caller; - Goexit = function() { - $curGoroutine.exit = $externalize(true, $Bool); - $throw(null); - }; - $pkg.Goexit = Goexit; - SetFinalizer = function(x, f) { - var f, x; - }; - $pkg.SetFinalizer = SetFinalizer; - KeepAlive = function(param) { - var param; - }; - $pkg.KeepAlive = KeepAlive; - throw$1 = function(s) { - var s; - $panic(new errorString((s))); - }; - TypeAssertionError.ptr.prototype.RuntimeError = function() { - }; - TypeAssertionError.prototype.RuntimeError = function() { return this.$val.RuntimeError(); }; - TypeAssertionError.ptr.prototype.Error = function() { - var as, cs, e, inter, msg; - e = this; - inter = "interface"; - if (!(e._interface === ptrType.nil)) { - inter = e._interface.string(); - } - as = e.asserted.string(); - if (e.concrete === ptrType.nil) { - return "interface conversion: " + inter + " is nil, not " + as; - } - cs = e.concrete.string(); - if (e.missingMethod === "") { - msg = "interface conversion: " + inter + " is " + cs + ", not " + as; - if (cs === as) { - if (!(e.concrete.pkgpath() === e.asserted.pkgpath())) { - msg = msg + (" (types from different packages)"); - } else { - msg = msg + (" (types from different scopes)"); - } - } - return msg; - } - return "interface conversion: " + cs + " is not " + as + ": missing method " + e.missingMethod; - }; - TypeAssertionError.prototype.Error = function() { return this.$val.Error(); }; - errorString.prototype.RuntimeError = function() { - var e; - e = this.$val; - }; - $ptrType(errorString).prototype.RuntimeError = function() { return new errorString(this.$get()).RuntimeError(); }; - errorString.prototype.Error = function() { - var e; - e = this.$val; - return "runtime error: " + (e); - }; - $ptrType(errorString).prototype.Error = function() { return new errorString(this.$get()).Error(); }; - ptrType.methods = [{prop: "string", name: "string", pkg: "runtime", typ: $funcType([], [$String], false)}, {prop: "pkgpath", name: "pkgpath", pkg: "runtime", typ: $funcType([], [$String], false)}]; - ptrType$4.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - errorString.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - _type.init("runtime", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); - TypeAssertionError.init("runtime", [{prop: "_interface", name: "_interface", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "concrete", name: "concrete", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "asserted", name: "asserted", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "missingMethod", name: "missingMethod", embedded: false, exported: false, typ: $String, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sys.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["errors"] = (function() { - var $pkg = {}, $init, errorString, ptrType, New; - errorString = $pkg.errorString = $newType(0, $kindStruct, "errors.errorString", true, "errors", false, function(s_) { - this.$val = this; - if (arguments.length === 0) { - this.s = ""; - return; - } - this.s = s_; - }); - ptrType = $ptrType(errorString); - New = function(text) { - var text; - return new errorString.ptr(text); - }; - $pkg.New = New; - errorString.ptr.prototype.Error = function() { - var e; - e = this; - return e.s; - }; - errorString.prototype.Error = function() { return this.$val.Error(); }; - ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - errorString.init("errors", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["math/bits"] = (function() { - var $pkg = {}, $init, deBruijn32tab, deBruijn64tab, len8tab, LeadingZeros64, TrailingZeros, TrailingZeros32, TrailingZeros64, Len64; - LeadingZeros64 = function(x) { - var x; - return 64 - Len64(x) >> 0; - }; - $pkg.LeadingZeros64 = LeadingZeros64; - TrailingZeros = function(x) { - var x; - if (true) { - return TrailingZeros32(((x >>> 0))); - } - return TrailingZeros64((new $Uint64(0, x))); - }; - $pkg.TrailingZeros = TrailingZeros; - TrailingZeros32 = function(x) { - var x, x$1; - if (x === 0) { - return 32; - } - return (((x$1 = ($imul((((x & (-x >>> 0)) >>> 0)), 125613361) >>> 0) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn32tab[x$1])) >> 0)); - }; - $pkg.TrailingZeros32 = TrailingZeros32; - TrailingZeros64 = function(x) { - var x, x$1, x$2; - if ((x.$high === 0 && x.$low === 0)) { - return 64; - } - return (((x$1 = $shiftRightUint64($mul64(((x$2 = new $Uint64(-x.$high, -x.$low), new $Uint64(x.$high & x$2.$high, (x.$low & x$2.$low) >>> 0))), new $Uint64(66559345, 3033172745)), 58), (($flatten64(x$1) < 0 || $flatten64(x$1) >= deBruijn64tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn64tab[$flatten64(x$1)])) >> 0)); - }; - $pkg.TrailingZeros64 = TrailingZeros64; - Len64 = function(x) { - var n, x; - n = 0; - if ((x.$high > 1 || (x.$high === 1 && x.$low >= 0))) { - x = $shiftRightUint64(x, (32)); - n = 32; - } - if ((x.$high > 0 || (x.$high === 0 && x.$low >= 65536))) { - x = $shiftRightUint64(x, (16)); - n = n + (16) >> 0; - } - if ((x.$high > 0 || (x.$high === 0 && x.$low >= 256))) { - x = $shiftRightUint64(x, (8)); - n = n + (8) >> 0; - } - n = n + (((($flatten64(x) < 0 || $flatten64(x) >= len8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : len8tab[$flatten64(x)]) >> 0)) >> 0; - return n; - }; - $pkg.Len64 = Len64; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - deBruijn32tab = $toNativeArray($kindUint8, [0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9]); - deBruijn64tab = $toNativeArray($kindUint8, [0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4, 62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5, 63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11, 54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6]); - len8tab = $toNativeArray($kindUint8, [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["math"] = (function() { - var $pkg = {}, $init, js, bits, arrayType, arrayType$1, arrayType$2, structType, math, zero, nan, buf, Exp, Log, init, Float32bits, Float32frombits, Float64bits, Float64frombits; - js = $packages["github.com/gopherjs/gopherjs/js"]; - bits = $packages["math/bits"]; - arrayType = $arrayType($Uint32, 2); - arrayType$1 = $arrayType($Float32, 2); - arrayType$2 = $arrayType($Float64, 1); - structType = $structType("math", [{prop: "uint32array", name: "uint32array", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", embedded: false, exported: false, typ: arrayType$2, tag: ""}]); - Exp = function(x) { - var x; - return $parseFloat(math.exp(x)); - }; - $pkg.Exp = Exp; - Log = function(x) { - var x; - if (!((x === x))) { - return nan; - } - return $parseFloat(math.log(x)); - }; - $pkg.Log = Log; - init = function() { - var ab; - ab = new ($global.ArrayBuffer)(8); - buf.uint32array = new ($global.Uint32Array)(ab); - buf.float32array = new ($global.Float32Array)(ab); - buf.float64array = new ($global.Float64Array)(ab); - }; - Float32bits = function(f) { - var f; - buf.float32array[0] = f; - return buf.uint32array[0]; - }; - $pkg.Float32bits = Float32bits; - Float32frombits = function(b) { - var b; - buf.uint32array[0] = b; - return buf.float32array[0]; - }; - $pkg.Float32frombits = Float32frombits; - Float64bits = function(f) { - var f, x, x$1; - buf.float64array[0] = f; - return (x = $shiftLeft64((new $Uint64(0, buf.uint32array[1])), 32), x$1 = (new $Uint64(0, buf.uint32array[0])), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); - }; - $pkg.Float64bits = Float64bits; - Float64frombits = function(b) { - var b; - buf.uint32array[0] = ((b.$low >>> 0)); - buf.uint32array[1] = (($shiftRightUint64(b, 32).$low >>> 0)); - return buf.float64array[0]; - }; - $pkg.Float64frombits = Float64frombits; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bits.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - buf = new structType.ptr(arrayType.zero(), arrayType$1.zero(), arrayType$2.zero()); - math = $global.Math; - zero = 0; - nan = 0 / zero; - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["unicode/utf8"] = (function() { - var $pkg = {}, $init, acceptRange, first, acceptRanges, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, RuneCount, RuneCountInString, RuneStart, ValidString, ValidRune; - acceptRange = $pkg.acceptRange = $newType(0, $kindStruct, "utf8.acceptRange", true, "unicode/utf8", false, function(lo_, hi_) { - this.$val = this; - if (arguments.length === 0) { - this.lo = 0; - this.hi = 0; - return; - } - this.lo = lo_; - this.hi = hi_; - }); - DecodeRune = function(p) { - var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, b1, b2, b3, mask, n, p, p0, r, size, sz, x, x$1; - r = 0; - size = 0; - n = p.$length; - if (n < 1) { - _tmp = 65533; - _tmp$1 = 0; - r = _tmp; - size = _tmp$1; - return [r, size]; - } - p0 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]); - x = ((p0 < 0 || p0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[p0]); - if (x >= 240) { - mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0; - _tmp$2 = (((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >> 0)) & ~mask) >> 0) | (65533 & mask); - _tmp$3 = 1; - r = _tmp$2; - size = _tmp$3; - return [r, size]; - } - sz = (x & 7) >>> 0; - accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); - if (n < ((sz >> 0))) { - _tmp$4 = 65533; - _tmp$5 = 1; - r = _tmp$4; - size = _tmp$5; - return [r, size]; - } - b1 = (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]); - if (b1 < accept.lo || accept.hi < b1) { - _tmp$6 = 65533; - _tmp$7 = 1; - r = _tmp$6; - size = _tmp$7; - return [r, size]; - } - if (sz === 2) { - _tmp$8 = (((((p0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((b1 & 63) >>> 0) >> 0)); - _tmp$9 = 2; - r = _tmp$8; - size = _tmp$9; - return [r, size]; - } - b2 = (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]); - if (b2 < 128 || 191 < b2) { - _tmp$10 = 65533; - _tmp$11 = 1; - r = _tmp$10; - size = _tmp$11; - return [r, size]; - } - if (sz === 3) { - _tmp$12 = ((((((p0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b2 & 63) >>> 0) >> 0)); - _tmp$13 = 3; - r = _tmp$12; - size = _tmp$13; - return [r, size]; - } - b3 = (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]); - if (b3 < 128 || 191 < b3) { - _tmp$14 = 65533; - _tmp$15 = 1; - r = _tmp$14; - size = _tmp$15; - return [r, size]; - } - _tmp$16 = (((((((p0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((b2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b3 & 63) >>> 0) >> 0)); - _tmp$17 = 4; - r = _tmp$16; - size = _tmp$17; - return [r, size]; - }; - $pkg.DecodeRune = DecodeRune; - DecodeRuneInString = function(s) { - var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, mask, n, r, s, s0, s1, s2, s3, size, sz, x, x$1; - r = 0; - size = 0; - n = s.length; - if (n < 1) { - _tmp = 65533; - _tmp$1 = 0; - r = _tmp; - size = _tmp$1; - return [r, size]; - } - s0 = s.charCodeAt(0); - x = ((s0 < 0 || s0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[s0]); - if (x >= 240) { - mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0; - _tmp$2 = ((((s.charCodeAt(0) >> 0)) & ~mask) >> 0) | (65533 & mask); - _tmp$3 = 1; - r = _tmp$2; - size = _tmp$3; - return [r, size]; - } - sz = (x & 7) >>> 0; - accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); - if (n < ((sz >> 0))) { - _tmp$4 = 65533; - _tmp$5 = 1; - r = _tmp$4; - size = _tmp$5; - return [r, size]; - } - s1 = s.charCodeAt(1); - if (s1 < accept.lo || accept.hi < s1) { - _tmp$6 = 65533; - _tmp$7 = 1; - r = _tmp$6; - size = _tmp$7; - return [r, size]; - } - if (sz === 2) { - _tmp$8 = (((((s0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((s1 & 63) >>> 0) >> 0)); - _tmp$9 = 2; - r = _tmp$8; - size = _tmp$9; - return [r, size]; - } - s2 = s.charCodeAt(2); - if (s2 < 128 || 191 < s2) { - _tmp$10 = 65533; - _tmp$11 = 1; - r = _tmp$10; - size = _tmp$11; - return [r, size]; - } - if (sz === 3) { - _tmp$12 = ((((((s0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s2 & 63) >>> 0) >> 0)); - _tmp$13 = 3; - r = _tmp$12; - size = _tmp$13; - return [r, size]; - } - s3 = s.charCodeAt(3); - if (s3 < 128 || 191 < s3) { - _tmp$14 = 65533; - _tmp$15 = 1; - r = _tmp$14; - size = _tmp$15; - return [r, size]; - } - _tmp$16 = (((((((s0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((s2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s3 & 63) >>> 0) >> 0)); - _tmp$17 = 4; - r = _tmp$16; - size = _tmp$17; - return [r, size]; - }; - $pkg.DecodeRuneInString = DecodeRuneInString; - DecodeLastRune = function(p) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, p, r, size, start; - r = 0; - size = 0; - end = p.$length; - if (end === 0) { - _tmp = 65533; - _tmp$1 = 0; - r = _tmp; - size = _tmp$1; - return [r, size]; - } - start = end - 1 >> 0; - r = ((((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]) >> 0)); - if (r < 128) { - _tmp$2 = r; - _tmp$3 = 1; - r = _tmp$2; - size = _tmp$3; - return [r, size]; - } - lim = end - 4 >> 0; - if (lim < 0) { - lim = 0; - } - start = start - (1) >> 0; - while (true) { - if (!(start >= lim)) { break; } - if (RuneStart(((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]))) { - break; - } - start = start - (1) >> 0; - } - if (start < 0) { - start = 0; - } - _tuple = DecodeRune($subslice(p, start, end)); - r = _tuple[0]; - size = _tuple[1]; - if (!(((start + size >> 0) === end))) { - _tmp$4 = 65533; - _tmp$5 = 1; - r = _tmp$4; - size = _tmp$5; - return [r, size]; - } - _tmp$6 = r; - _tmp$7 = size; - r = _tmp$6; - size = _tmp$7; - return [r, size]; - }; - $pkg.DecodeLastRune = DecodeLastRune; - DecodeLastRuneInString = function(s) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, r, s, size, start; - r = 0; - size = 0; - end = s.length; - if (end === 0) { - _tmp = 65533; - _tmp$1 = 0; - r = _tmp; - size = _tmp$1; - return [r, size]; - } - start = end - 1 >> 0; - r = ((s.charCodeAt(start) >> 0)); - if (r < 128) { - _tmp$2 = r; - _tmp$3 = 1; - r = _tmp$2; - size = _tmp$3; - return [r, size]; - } - lim = end - 4 >> 0; - if (lim < 0) { - lim = 0; - } - start = start - (1) >> 0; - while (true) { - if (!(start >= lim)) { break; } - if (RuneStart(s.charCodeAt(start))) { - break; - } - start = start - (1) >> 0; - } - if (start < 0) { - start = 0; - } - _tuple = DecodeRuneInString($substring(s, start, end)); - r = _tuple[0]; - size = _tuple[1]; - if (!(((start + size >> 0) === end))) { - _tmp$4 = 65533; - _tmp$5 = 1; - r = _tmp$4; - size = _tmp$5; - return [r, size]; - } - _tmp$6 = r; - _tmp$7 = size; - r = _tmp$6; - size = _tmp$7; - return [r, size]; - }; - $pkg.DecodeLastRuneInString = DecodeLastRuneInString; - RuneLen = function(r) { - var r; - if (r < 0) { - return -1; - } else if (r <= 127) { - return 1; - } else if (r <= 2047) { - return 2; - } else if (55296 <= r && r <= 57343) { - return -1; - } else if (r <= 65535) { - return 3; - } else if (r <= 1114111) { - return 4; - } - return -1; - }; - $pkg.RuneLen = RuneLen; - EncodeRune = function(p, r) { - var i, p, r; - i = ((r >>> 0)); - if (i <= 127) { - (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((r << 24 >>> 24))); - return 1; - } else if (i <= 2047) { - $unused((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1])); - (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0)); - (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - return 2; - } else if ((i > 1114111) || (55296 <= i && i <= 57343)) { - r = 65533; - $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); - (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); - (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - return 3; - } else if (i <= 65535) { - $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); - (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); - (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - return 3; - } else { - $unused((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3])); - (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0)); - (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); - return 4; - } - }; - $pkg.EncodeRune = EncodeRune; - RuneCount = function(p) { - var accept, c, c$1, c$2, c$3, i, n, np, p, size, x, x$1, x$2, x$3, x$4; - np = p.$length; - n = 0; - i = 0; - while (true) { - if (!(i < np)) { break; } - n = n + (1) >> 0; - c = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); - if (c < 128) { - i = i + (1) >> 0; - continue; - } - x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]); - if (x === 241) { - i = i + (1) >> 0; - continue; - } - size = ((((x & 7) >>> 0) >> 0)); - if ((i + size >> 0) > np) { - i = i + (1) >> 0; - continue; - } - accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); - c$1 = (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])); - if (c$1 < accept.lo || accept.hi < c$1) { - size = 1; - } else if (size === 2) { - } else { - c$2 = (x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3])); - if (c$2 < 128 || 191 < c$2) { - size = 1; - } else if (size === 3) { - } else { - c$3 = (x$4 = i + 3 >> 0, ((x$4 < 0 || x$4 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$4])); - if (c$3 < 128 || 191 < c$3) { - size = 1; - } - } - } - i = i + (size) >> 0; - } - return n; - }; - $pkg.RuneCount = RuneCount; - RuneCountInString = function(s) { - var accept, c, c$1, c$2, c$3, i, n, ns, s, size, x, x$1; - n = 0; - ns = s.length; - i = 0; - while (true) { - if (!(i < ns)) { break; } - c = s.charCodeAt(i); - if (c < 128) { - i = i + (1) >> 0; - n = n + (1) >> 0; - continue; - } - x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]); - if (x === 241) { - i = i + (1) >> 0; - n = n + (1) >> 0; - continue; - } - size = ((((x & 7) >>> 0) >> 0)); - if ((i + size >> 0) > ns) { - i = i + (1) >> 0; - n = n + (1) >> 0; - continue; - } - accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); - c$1 = s.charCodeAt((i + 1 >> 0)); - if (c$1 < accept.lo || accept.hi < c$1) { - size = 1; - } else if (size === 2) { - } else { - c$2 = s.charCodeAt((i + 2 >> 0)); - if (c$2 < 128 || 191 < c$2) { - size = 1; - } else if (size === 3) { - } else { - c$3 = s.charCodeAt((i + 3 >> 0)); - if (c$3 < 128 || 191 < c$3) { - size = 1; - } - } - } - i = i + (size) >> 0; - n = n + (1) >> 0; - } - n = n; - return n; - }; - $pkg.RuneCountInString = RuneCountInString; - RuneStart = function(b) { - var b; - return !((((b & 192) >>> 0) === 128)); - }; - $pkg.RuneStart = RuneStart; - ValidString = function(s) { - var accept, c, c$1, c$2, i, n, s, si, size, x, x$1; - n = s.length; - i = 0; - while (true) { - if (!(i < n)) { break; } - si = s.charCodeAt(i); - if (si < 128) { - i = i + (1) >> 0; - continue; - } - x = ((si < 0 || si >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[si]); - if (x === 241) { - return false; - } - size = ((((x & 7) >>> 0) >> 0)); - if ((i + size >> 0) > n) { - return false; - } - accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); - c = s.charCodeAt((i + 1 >> 0)); - if (c < accept.lo || accept.hi < c) { - return false; - } else if (size === 2) { - } else { - c$1 = s.charCodeAt((i + 2 >> 0)); - if (c$1 < 128 || 191 < c$1) { - return false; - } else if (size === 3) { - } else { - c$2 = s.charCodeAt((i + 3 >> 0)); - if (c$2 < 128 || 191 < c$2) { - return false; - } - } - } - i = i + (size) >> 0; - } - return true; - }; - $pkg.ValidString = ValidString; - ValidRune = function(r) { - var r; - if (0 <= r && r < 55296) { - return true; - } else if (57343 < r && r <= 1114111) { - return true; - } - return false; - }; - $pkg.ValidRune = ValidRune; - acceptRange.init("unicode/utf8", [{prop: "lo", name: "lo", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", embedded: false, exported: false, typ: $Uint8, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - first = $toNativeArray($kindUint8, [240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 35, 3, 3, 52, 4, 4, 4, 68, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241]); - acceptRanges = $toNativeArray($kindStruct, [new acceptRange.ptr(128, 191), new acceptRange.ptr(160, 191), new acceptRange.ptr(128, 159), new acceptRange.ptr(144, 191), new acceptRange.ptr(128, 143)]); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["strconv"] = (function() { - var $pkg = {}, $init, errors, bytealg, math, bits, utf8, NumError, decimal, leftCheat, extFloat, floatInfo, decimalSlice, sliceType$3, sliceType$4, sliceType$5, arrayType, sliceType$6, ptrType, arrayType$1, arrayType$2, ptrType$1, arrayType$3, arrayType$4, ptrType$2, ptrType$3, ptrType$4, optimize, leftcheats, smallPowersOfTen, powersOfTen, uint64pow10, float32info, float32info$24ptr, float64info, float64info$24ptr, isPrint16, isNotPrint16, isPrint32, isNotPrint32, isGraphic, syntaxError, rangeError, baseError, bitSizeError, ParseUint, ParseInt, Atoi, digitZero, trim, rightShift, prefixIsLessThan, leftShift, shouldRoundUp, frexp10Many, adjustLastDigitFixed, adjustLastDigit, AppendFloat, genericFtoa, bigFtoa, formatDigits, roundShortest, fmtE, fmtF, fmtB, min, max, FormatUint, FormatInt, Itoa, small, formatBits, isPowerOfTwo, quoteWith, appendQuotedWith, appendQuotedRuneWith, appendEscapedRune, Quote, AppendQuote, QuoteToASCII, AppendQuoteToASCII, AppendQuoteRune, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, contains, bsearch16, bsearch32, IsPrint, isInGraphicList; - errors = $packages["errors"]; - bytealg = $packages["internal/bytealg"]; - math = $packages["math"]; - bits = $packages["math/bits"]; - utf8 = $packages["unicode/utf8"]; - NumError = $pkg.NumError = $newType(0, $kindStruct, "strconv.NumError", true, "strconv", true, function(Func_, Num_, Err_) { - this.$val = this; - if (arguments.length === 0) { - this.Func = ""; - this.Num = ""; - this.Err = $ifaceNil; - return; - } - this.Func = Func_; - this.Num = Num_; - this.Err = Err_; - }); - decimal = $pkg.decimal = $newType(0, $kindStruct, "strconv.decimal", true, "strconv", false, function(d_, nd_, dp_, neg_, trunc_) { - this.$val = this; - if (arguments.length === 0) { - this.d = arrayType.zero(); - this.nd = 0; - this.dp = 0; - this.neg = false; - this.trunc = false; - return; - } - this.d = d_; - this.nd = nd_; - this.dp = dp_; - this.neg = neg_; - this.trunc = trunc_; - }); - leftCheat = $pkg.leftCheat = $newType(0, $kindStruct, "strconv.leftCheat", true, "strconv", false, function(delta_, cutoff_) { - this.$val = this; - if (arguments.length === 0) { - this.delta = 0; - this.cutoff = ""; - return; - } - this.delta = delta_; - this.cutoff = cutoff_; - }); - extFloat = $pkg.extFloat = $newType(0, $kindStruct, "strconv.extFloat", true, "strconv", false, function(mant_, exp_, neg_) { - this.$val = this; - if (arguments.length === 0) { - this.mant = new $Uint64(0, 0); - this.exp = 0; - this.neg = false; - return; - } - this.mant = mant_; - this.exp = exp_; - this.neg = neg_; - }); - floatInfo = $pkg.floatInfo = $newType(0, $kindStruct, "strconv.floatInfo", true, "strconv", false, function(mantbits_, expbits_, bias_) { - this.$val = this; - if (arguments.length === 0) { - this.mantbits = 0; - this.expbits = 0; - this.bias = 0; - return; - } - this.mantbits = mantbits_; - this.expbits = expbits_; - this.bias = bias_; - }); - decimalSlice = $pkg.decimalSlice = $newType(0, $kindStruct, "strconv.decimalSlice", true, "strconv", false, function(d_, nd_, dp_, neg_) { - this.$val = this; - if (arguments.length === 0) { - this.d = sliceType$6.nil; - this.nd = 0; - this.dp = 0; - this.neg = false; - return; - } - this.d = d_; - this.nd = nd_; - this.dp = dp_; - this.neg = neg_; - }); - sliceType$3 = $sliceType(leftCheat); - sliceType$4 = $sliceType($Uint16); - sliceType$5 = $sliceType($Uint32); - arrayType = $arrayType($Uint8, 800); - sliceType$6 = $sliceType($Uint8); - ptrType = $ptrType(NumError); - arrayType$1 = $arrayType($Uint8, 24); - arrayType$2 = $arrayType($Uint8, 32); - ptrType$1 = $ptrType(floatInfo); - arrayType$3 = $arrayType($Uint8, 65); - arrayType$4 = $arrayType($Uint8, 4); - ptrType$2 = $ptrType(decimal); - ptrType$3 = $ptrType(decimalSlice); - ptrType$4 = $ptrType(extFloat); - NumError.ptr.prototype.Error = function() { - var _r, e, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: NumError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; - }; - NumError.prototype.Error = function() { return this.$val.Error(); }; - syntaxError = function(fn, str) { - var fn, str; - return new NumError.ptr(fn, str, $pkg.ErrSyntax); - }; - rangeError = function(fn, str) { - var fn, str; - return new NumError.ptr(fn, str, $pkg.ErrRange); - }; - baseError = function(fn, str, base) { - var base, fn, str; - return new NumError.ptr(fn, str, errors.New("invalid base " + Itoa(base))); - }; - bitSizeError = function(fn, str, bitSize) { - var bitSize, fn, str; - return new NumError.ptr(fn, str, errors.New("invalid bit size " + Itoa(bitSize))); - }; - ParseUint = function(s, base, bitSize) { - var _1, _i, _ref, base, bitSize, c, cutoff, d, maxVal, n, n1, s, s0, x, x$1, x$2; - if (s.length === 0) { - return [new $Uint64(0, 0), syntaxError("ParseUint", s)]; - } - s0 = s; - if (2 <= base && base <= 36) { - } else if ((base === 0)) { - if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { - if (s.length < 3) { - return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; - } - base = 16; - s = $substring(s, 2); - } else if ((s.charCodeAt(0) === 48)) { - base = 8; - s = $substring(s, 1); - } else { - base = 10; - } - } else { - return [new $Uint64(0, 0), baseError("ParseUint", s0, base)]; - } - if (bitSize === 0) { - bitSize = 32; - } else if (bitSize < 0 || bitSize > 64) { - return [new $Uint64(0, 0), bitSizeError("ParseUint", s0, bitSize)]; - } - cutoff = new $Uint64(0, 0); - _1 = base; - if (_1 === (10)) { - cutoff = new $Uint64(429496729, 2576980378); - } else if (_1 === (16)) { - cutoff = new $Uint64(268435456, 0); - } else { - cutoff = (x = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x.$high + 0, x.$low + 1)); - } - maxVal = (x$1 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$1.$high - 0, x$1.$low - 1)); - n = new $Uint64(0, 0); - _ref = (new sliceType$6($stringToBytes(s))); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - d = 0; - if (48 <= c && c <= 57) { - d = c - 48 << 24 >>> 24; - } else if (97 <= c && c <= 122) { - d = (c - 97 << 24 >>> 24) + 10 << 24 >>> 24; - } else if (65 <= c && c <= 90) { - d = (c - 65 << 24 >>> 24) + 10 << 24 >>> 24; - } else { - return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; - } - if (d >= ((base << 24 >>> 24))) { - return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; - } - if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { - return [maxVal, rangeError("ParseUint", s0)]; - } - n = $mul64(n, ((new $Uint64(0, base)))); - n1 = (x$2 = (new $Uint64(0, d)), new $Uint64(n.$high + x$2.$high, n.$low + x$2.$low)); - if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { - return [maxVal, rangeError("ParseUint", s0)]; - } - n = n1; - _i++; - } - return [n, $ifaceNil]; - }; - $pkg.ParseUint = ParseUint; - ParseInt = function(s, base, bitSize) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, base, bitSize, cutoff, err, i, n, neg, s, s0, un, x, x$1; - i = new $Int64(0, 0); - err = $ifaceNil; - if (s.length === 0) { - _tmp = new $Int64(0, 0); - _tmp$1 = syntaxError("ParseInt", s); - i = _tmp; - err = _tmp$1; - return [i, err]; - } - s0 = s; - neg = false; - if (s.charCodeAt(0) === 43) { - s = $substring(s, 1); - } else if (s.charCodeAt(0) === 45) { - neg = true; - s = $substring(s, 1); - } - un = new $Uint64(0, 0); - _tuple = ParseUint(s, base, bitSize); - un = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual($assertType(err, ptrType).Err, $pkg.ErrRange))) { - $assertType(err, ptrType).Func = "ParseInt"; - $assertType(err, ptrType).Num = s0; - _tmp$2 = new $Int64(0, 0); - _tmp$3 = err; - i = _tmp$2; - err = _tmp$3; - return [i, err]; - } - if (bitSize === 0) { - bitSize = 32; - } - cutoff = ($shiftLeft64(new $Uint64(0, 1), (((bitSize - 1 >> 0) >>> 0)))); - if (!neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low >= cutoff.$low))) { - _tmp$4 = ((x = new $Uint64(cutoff.$high - 0, cutoff.$low - 1), new $Int64(x.$high, x.$low))); - _tmp$5 = rangeError("ParseInt", s0); - i = _tmp$4; - err = _tmp$5; - return [i, err]; - } - if (neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low > cutoff.$low))) { - _tmp$6 = (x$1 = (new $Int64(cutoff.$high, cutoff.$low)), new $Int64(-x$1.$high, -x$1.$low)); - _tmp$7 = rangeError("ParseInt", s0); - i = _tmp$6; - err = _tmp$7; - return [i, err]; - } - n = (new $Int64(un.$high, un.$low)); - if (neg) { - n = new $Int64(-n.$high, -n.$low); - } - _tmp$8 = n; - _tmp$9 = $ifaceNil; - i = _tmp$8; - err = _tmp$9; - return [i, err]; - }; - $pkg.ParseInt = ParseInt; - Atoi = function(s) { - var _i, _ref, _tuple, _tuple$1, ch, err, i64, n, nerr, ok, s, s0, sLen; - sLen = s.length; - if (true && (0 < sLen && sLen < 10) || false && (0 < sLen && sLen < 19)) { - s0 = s; - if ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43)) { - s = $substring(s, 1); - if (s.length < 1) { - return [0, new NumError.ptr("Atoi", s0, $pkg.ErrSyntax)]; - } - } - n = 0; - _ref = (new sliceType$6($stringToBytes(s))); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - ch = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - ch = ch - (48) << 24 >>> 24; - if (ch > 9) { - return [0, new NumError.ptr("Atoi", s0, $pkg.ErrSyntax)]; - } - n = ($imul(n, 10)) + ((ch >> 0)) >> 0; - _i++; - } - if (s0.charCodeAt(0) === 45) { - n = -n; - } - return [n, $ifaceNil]; - } - _tuple = ParseInt(s, 10, 0); - i64 = _tuple[0]; - err = _tuple[1]; - _tuple$1 = $assertType(err, ptrType, true); - nerr = _tuple$1[0]; - ok = _tuple$1[1]; - if (ok) { - nerr.Func = "Atoi"; - } - return [(((i64.$low + ((i64.$high >> 31) * 4294967296)) >> 0)), err]; - }; - $pkg.Atoi = Atoi; - decimal.ptr.prototype.String = function() { - var a, buf, n, w; - a = this; - n = 10 + a.nd >> 0; - if (a.dp > 0) { - n = n + (a.dp) >> 0; - } - if (a.dp < 0) { - n = n + (-a.dp) >> 0; - } - buf = $makeSlice(sliceType$6, n); - w = 0; - if ((a.nd === 0)) { - return "0"; - } else if (a.dp <= 0) { - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48); - w = w + (1) >> 0; - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); - w = w + (1) >> 0; - w = w + (digitZero($subslice(buf, w, (w + -a.dp >> 0)))) >> 0; - w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0; - } else if (a.dp < a.nd) { - w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.dp))) >> 0; - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); - w = w + (1) >> 0; - w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), a.dp, a.nd))) >> 0; - } else { - w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0; - w = w + (digitZero($subslice(buf, w, ((w + a.dp >> 0) - a.nd >> 0)))) >> 0; - } - return ($bytesToString($subslice(buf, 0, w))); - }; - decimal.prototype.String = function() { return this.$val.String(); }; - digitZero = function(dst) { - var _i, _ref, dst, i; - _ref = dst; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - ((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 48); - _i++; - } - return dst.$length; - }; - trim = function(a) { - var a, x, x$1; - while (true) { - if (!(a.nd > 0 && ((x = a.d, x$1 = a.nd - 1 >> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) === 48))) { break; } - a.nd = a.nd - (1) >> 0; - } - if (a.nd === 0) { - a.dp = 0; - } - }; - decimal.ptr.prototype.Assign = function(v) { - var a, buf, n, v, v1, x, x$1, x$2; - a = this; - buf = arrayType$1.zero(); - n = 0; - while (true) { - if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } - v1 = $div64(v, new $Uint64(0, 10), false); - v = (x = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x.$high, v.$low - x.$low)); - ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24))); - n = n + (1) >> 0; - v = v1; - } - a.nd = 0; - n = n - (1) >> 0; - while (true) { - if (!(n >= 0)) { break; } - (x$1 = a.d, x$2 = a.nd, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n]))); - a.nd = a.nd + (1) >> 0; - n = n - (1) >> 0; - } - a.dp = a.nd; - trim(a); - }; - decimal.prototype.Assign = function(v) { return this.$val.Assign(v); }; - rightShift = function(a, k) { - var a, c, c$1, dig, dig$1, k, mask, n, r, w, x, x$1, x$2, x$3, y, y$1, y$2, y$3, y$4; - r = 0; - w = 0; - n = 0; - while (true) { - if (!(((y = k, y < 32 ? (n >>> y) : 0) >>> 0) === 0)) { break; } - if (r >= a.nd) { - if (n === 0) { - a.nd = 0; - return; - } - while (true) { - if (!(((y$1 = k, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; } - n = n * 10 >>> 0; - r = r + (1) >> 0; - } - break; - } - c = (((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)); - n = ((n * 10 >>> 0) + c >>> 0) - 48 >>> 0; - r = r + (1) >> 0; - } - a.dp = a.dp - ((r - 1 >> 0)) >> 0; - mask = (((y$2 = k, y$2 < 32 ? (1 << y$2) : 0) >>> 0)) - 1 >>> 0; - while (true) { - if (!(r < a.nd)) { break; } - c$1 = (((x$1 = a.d, ((r < 0 || r >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[r])) >>> 0)); - dig = (y$3 = k, y$3 < 32 ? (n >>> y$3) : 0) >>> 0; - n = (n & (mask)) >>> 0; - (x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((dig + 48 >>> 0) << 24 >>> 24)))); - w = w + (1) >> 0; - n = ((n * 10 >>> 0) + c$1 >>> 0) - 48 >>> 0; - r = r + (1) >> 0; - } - while (true) { - if (!(n > 0)) { break; } - dig$1 = (y$4 = k, y$4 < 32 ? (n >>> y$4) : 0) >>> 0; - n = (n & (mask)) >>> 0; - if (w < 800) { - (x$3 = a.d, ((w < 0 || w >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[w] = (((dig$1 + 48 >>> 0) << 24 >>> 24)))); - w = w + (1) >> 0; - } else if (dig$1 > 0) { - a.trunc = true; - } - n = n * 10 >>> 0; - } - a.nd = w; - trim(a); - }; - prefixIsLessThan = function(b, s) { - var b, i, s; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (i >= b.$length) { - return true; - } - if (!((((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) === s.charCodeAt(i)))) { - return ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) < s.charCodeAt(i); - } - i = i + (1) >> 0; - } - return false; - }; - leftShift = function(a, k) { - var _q, _q$1, a, delta, k, n, quo, quo$1, r, rem, rem$1, w, x, x$1, x$2, y; - delta = ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).delta; - if (prefixIsLessThan($subslice(new sliceType$6(a.d), 0, a.nd), ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).cutoff)) { - delta = delta - (1) >> 0; - } - r = a.nd; - w = a.nd + delta >> 0; - n = 0; - r = r - (1) >> 0; - while (true) { - if (!(r >= 0)) { break; } - n = n + (((y = k, y < 32 ? ((((((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)) - 48 >>> 0)) << y) : 0) >>> 0)) >>> 0; - quo = (_q = n / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - rem = n - (10 * quo >>> 0) >>> 0; - w = w - (1) >> 0; - if (w < 800) { - (x$1 = a.d, ((w < 0 || w >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[w] = (((rem + 48 >>> 0) << 24 >>> 24)))); - } else if (!((rem === 0))) { - a.trunc = true; - } - n = quo; - r = r - (1) >> 0; - } - while (true) { - if (!(n > 0)) { break; } - quo$1 = (_q$1 = n / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); - rem$1 = n - (10 * quo$1 >>> 0) >>> 0; - w = w - (1) >> 0; - if (w < 800) { - (x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((rem$1 + 48 >>> 0) << 24 >>> 24)))); - } else if (!((rem$1 === 0))) { - a.trunc = true; - } - n = quo$1; - } - a.nd = a.nd + (delta) >> 0; - if (a.nd >= 800) { - a.nd = 800; - } - a.dp = a.dp + (delta) >> 0; - trim(a); - }; - decimal.ptr.prototype.Shift = function(k) { - var a, k; - a = this; - if ((a.nd === 0)) { - } else if (k > 0) { - while (true) { - if (!(k > 28)) { break; } - leftShift(a, 28); - k = k - (28) >> 0; - } - leftShift(a, ((k >>> 0))); - } else if (k < 0) { - while (true) { - if (!(k < -28)) { break; } - rightShift(a, 28); - k = k + (28) >> 0; - } - rightShift(a, ((-k >>> 0))); - } - }; - decimal.prototype.Shift = function(k) { return this.$val.Shift(k); }; - shouldRoundUp = function(a, nd) { - var _r, a, nd, x, x$1, x$2, x$3; - if (nd < 0 || nd >= a.nd) { - return false; - } - if (((x = a.d, ((nd < 0 || nd >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[nd])) === 53) && ((nd + 1 >> 0) === a.nd)) { - if (a.trunc) { - return true; - } - return nd > 0 && !(((_r = (((x$1 = a.d, x$2 = nd - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])) - 48 << 24 >>> 24)) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0)); - } - return (x$3 = a.d, ((nd < 0 || nd >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[nd])) >= 53; - }; - decimal.ptr.prototype.Round = function(nd) { - var a, nd; - a = this; - if (nd < 0 || nd >= a.nd) { - return; - } - if (shouldRoundUp(a, nd)) { - a.RoundUp(nd); - } else { - a.RoundDown(nd); - } - }; - decimal.prototype.Round = function(nd) { return this.$val.Round(nd); }; - decimal.ptr.prototype.RoundDown = function(nd) { - var a, nd; - a = this; - if (nd < 0 || nd >= a.nd) { - return; - } - a.nd = nd; - trim(a); - }; - decimal.prototype.RoundDown = function(nd) { return this.$val.RoundDown(nd); }; - decimal.ptr.prototype.RoundUp = function(nd) { - var a, c, i, nd, x, x$1, x$2; - a = this; - if (nd < 0 || nd >= a.nd) { - return; - } - i = nd - 1 >> 0; - while (true) { - if (!(i >= 0)) { break; } - c = (x = a.d, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])); - if (c < 57) { - (x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = ((x$1 = a.d, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) + (1) << 24 >>> 24))); - a.nd = i + 1 >> 0; - return; - } - i = i - (1) >> 0; - } - a.d[0] = 49; - a.nd = 1; - a.dp = a.dp + (1) >> 0; - }; - decimal.prototype.RoundUp = function(nd) { return this.$val.RoundUp(nd); }; - decimal.ptr.prototype.RoundedInteger = function() { - var a, i, n, x, x$1, x$2, x$3; - a = this; - if (a.dp > 20) { - return new $Uint64(4294967295, 4294967295); - } - i = 0; - n = new $Uint64(0, 0); - i = 0; - while (true) { - if (!(i < a.dp && i < a.nd)) { break; } - n = (x = $mul64(n, new $Uint64(0, 10)), x$1 = (new $Uint64(0, ((x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) - 48 << 24 >>> 24))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); - i = i + (1) >> 0; - } - while (true) { - if (!(i < a.dp)) { break; } - n = $mul64(n, (new $Uint64(0, 10))); - i = i + (1) >> 0; - } - if (shouldRoundUp(a, a.dp)) { - n = (x$3 = new $Uint64(0, 1), new $Uint64(n.$high + x$3.$high, n.$low + x$3.$low)); - } - return n; - }; - decimal.prototype.RoundedInteger = function() { return this.$val.RoundedInteger(); }; - extFloat.ptr.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { - var _tmp, _tmp$1, exp, expBiased, f, flt, lower, mant, neg, upper, x, x$1, x$2, x$3, x$4; - lower = new extFloat.ptr(new $Uint64(0, 0), 0, false); - upper = new extFloat.ptr(new $Uint64(0, 0), 0, false); - f = this; - f.mant = mant; - f.exp = exp - ((flt.mantbits >> 0)) >> 0; - f.neg = neg; - if (f.exp <= 0 && (x = $shiftLeft64(($shiftRightUint64(mant, ((-f.exp >>> 0)))), ((-f.exp >>> 0))), (mant.$high === x.$high && mant.$low === x.$low))) { - f.mant = $shiftRightUint64(f.mant, (((-f.exp >>> 0)))); - f.exp = 0; - _tmp = $clone(f, extFloat); - _tmp$1 = $clone(f, extFloat); - extFloat.copy(lower, _tmp); - extFloat.copy(upper, _tmp$1); - return [lower, upper]; - } - expBiased = exp - flt.bias >> 0; - extFloat.copy(upper, new extFloat.ptr((x$1 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$1.$high + 0, x$1.$low + 1)), f.exp - 1 >> 0, f.neg)); - if (!((x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) || (expBiased === 1)) { - extFloat.copy(lower, new extFloat.ptr((x$3 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$3.$high - 0, x$3.$low - 1)), f.exp - 1 >> 0, f.neg)); - } else { - extFloat.copy(lower, new extFloat.ptr((x$4 = $mul64(new $Uint64(0, 4), f.mant), new $Uint64(x$4.$high - 0, x$4.$low - 1)), f.exp - 2 >> 0, f.neg)); - } - return [lower, upper]; - }; - extFloat.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { return this.$val.AssignComputeBounds(mant, exp, neg, flt); }; - extFloat.ptr.prototype.Normalize = function() { - var f, shift, x; - f = this; - if ((x = f.mant, (x.$high === 0 && x.$low === 0))) { - return 0; - } - shift = bits.LeadingZeros64(f.mant); - f.mant = $shiftLeft64(f.mant, (((shift >>> 0)))); - f.exp = f.exp - (shift) >> 0; - return ((shift >>> 0)); - }; - extFloat.prototype.Normalize = function() { return this.$val.Normalize(); }; - extFloat.ptr.prototype.Multiply = function(g) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, cross1, cross2, f, fhi, flo, g, ghi, glo, rem, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - f = this; - _tmp = $shiftRightUint64(f.mant, 32); - _tmp$1 = (new $Uint64(0, ((f.mant.$low >>> 0)))); - fhi = _tmp; - flo = _tmp$1; - _tmp$2 = $shiftRightUint64(g.mant, 32); - _tmp$3 = (new $Uint64(0, ((g.mant.$low >>> 0)))); - ghi = _tmp$2; - glo = _tmp$3; - cross1 = $mul64(fhi, glo); - cross2 = $mul64(flo, ghi); - f.mant = (x = (x$1 = $mul64(fhi, ghi), x$2 = $shiftRightUint64(cross1, 32), new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)), x$3 = $shiftRightUint64(cross2, 32), new $Uint64(x.$high + x$3.$high, x.$low + x$3.$low)); - rem = (x$4 = (x$5 = (new $Uint64(0, ((cross1.$low >>> 0)))), x$6 = (new $Uint64(0, ((cross2.$low >>> 0)))), new $Uint64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), x$7 = $shiftRightUint64(($mul64(flo, glo)), 32), new $Uint64(x$4.$high + x$7.$high, x$4.$low + x$7.$low)); - rem = (x$8 = new $Uint64(0, 2147483648), new $Uint64(rem.$high + x$8.$high, rem.$low + x$8.$low)); - f.mant = (x$9 = f.mant, x$10 = ($shiftRightUint64(rem, 32)), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low)); - f.exp = (f.exp + g.exp >> 0) + 64 >> 0; - }; - extFloat.prototype.Multiply = function(g) { return this.$val.Multiply(g); }; - extFloat.ptr.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { - var _q, _r, adjExp, denormalExp, errors$1, exp10, extrabits, f, flt, halfway, i, mant_extra, mantissa, neg, ok, shift, trunc, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y; - ok = false; - f = this; - errors$1 = 0; - if (trunc) { - errors$1 = errors$1 + (4) >> 0; - } - f.mant = mantissa; - f.exp = 0; - f.neg = neg; - i = (_q = ((exp10 - -348 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - if (exp10 < -348 || i >= 87) { - ok = false; - return ok; - } - adjExp = (_r = ((exp10 - -348 >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); - if (adjExp < 19 && (x = (x$1 = 19 - adjExp >> 0, ((x$1 < 0 || x$1 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$1])), (mantissa.$high < x.$high || (mantissa.$high === x.$high && mantissa.$low < x.$low)))) { - f.mant = $mul64(f.mant, (((adjExp < 0 || adjExp >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[adjExp]))); - f.Normalize(); - } else { - f.Normalize(); - f.Multiply($clone(((adjExp < 0 || adjExp >= smallPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : smallPowersOfTen[adjExp]), extFloat)); - errors$1 = errors$1 + (4) >> 0; - } - f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); - if (errors$1 > 0) { - errors$1 = errors$1 + (1) >> 0; - } - errors$1 = errors$1 + (4) >> 0; - shift = f.Normalize(); - errors$1 = (y = (shift), y < 32 ? (errors$1 << y) : 0) >> 0; - denormalExp = flt.bias - 63 >> 0; - extrabits = 0; - if (f.exp <= denormalExp) { - extrabits = ((63 - flt.mantbits >>> 0) + 1 >>> 0) + (((denormalExp - f.exp >> 0) >>> 0)) >>> 0; - } else { - extrabits = 63 - flt.mantbits >>> 0; - } - halfway = $shiftLeft64(new $Uint64(0, 1), ((extrabits - 1 >>> 0))); - mant_extra = (x$2 = f.mant, x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), extrabits), new $Uint64(x$4.$high - 0, x$4.$low - 1)), new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)); - if ((x$5 = (x$6 = (new $Int64(halfway.$high, halfway.$low)), x$7 = (new $Int64(0, errors$1)), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low)), x$8 = (new $Int64(mant_extra.$high, mant_extra.$low)), (x$5.$high < x$8.$high || (x$5.$high === x$8.$high && x$5.$low < x$8.$low))) && (x$9 = (new $Int64(mant_extra.$high, mant_extra.$low)), x$10 = (x$11 = (new $Int64(halfway.$high, halfway.$low)), x$12 = (new $Int64(0, errors$1)), new $Int64(x$11.$high + x$12.$high, x$11.$low + x$12.$low)), (x$9.$high < x$10.$high || (x$9.$high === x$10.$high && x$9.$low < x$10.$low)))) { - ok = false; - return ok; - } - ok = true; - return ok; - }; - extFloat.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { return this.$val.AssignDecimal(mantissa, exp10, neg, trunc, flt); }; - extFloat.ptr.prototype.frexp10 = function() { - var _q, _q$1, _tmp, _tmp$1, approxExp10, exp, exp10, f, i, index; - exp10 = 0; - index = 0; - f = this; - approxExp10 = (_q = ($imul(((-46 - f.exp >> 0)), 28)) / 93, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - i = (_q$1 = ((approxExp10 - -348 >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); - Loop: - while (true) { - exp = (f.exp + ((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]).exp >> 0) + 64 >> 0; - if (exp < -60) { - i = i + (1) >> 0; - } else if (exp > -32) { - i = i - (1) >> 0; - } else { - break Loop; - } - } - f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); - _tmp = -((-348 + ($imul(i, 8)) >> 0)); - _tmp$1 = i; - exp10 = _tmp; - index = _tmp$1; - return [exp10, index]; - }; - extFloat.prototype.frexp10 = function() { return this.$val.frexp10(); }; - frexp10Many = function(a, b, c) { - var _tuple, a, b, c, exp10, i; - exp10 = 0; - _tuple = c.frexp10(); - exp10 = _tuple[0]; - i = _tuple[1]; - a.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); - b.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat)); - return exp10; - }; - extFloat.ptr.prototype.FixedDecimal = function(d, n) { - var $CE$B5, _q, _q$1, _tmp, _tmp$1, _tuple, buf, d, digit, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, n, nd, needed, ok, pos, pow, pow10, rest, shift, v, v1, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - f = this; - if ((x = f.mant, (x.$high === 0 && x.$low === 0))) { - d.nd = 0; - d.dp = 0; - d.neg = f.neg; - return true; - } - if (n === 0) { - $panic(new $String("strconv: internal error: extFloat.FixedDecimal called with n == 0")); - } - f.Normalize(); - _tuple = f.frexp10(); - exp10 = _tuple[0]; - shift = ((-f.exp >>> 0)); - integer = (($shiftRightUint64(f.mant, shift).$low >>> 0)); - fraction = (x$1 = f.mant, x$2 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); - $CE$B5 = new $Uint64(0, 1); - needed = n; - integerDigits = 0; - pow10 = new $Uint64(0, 1); - _tmp = 0; - _tmp$1 = new $Uint64(0, 1); - i = _tmp; - pow = _tmp$1; - while (true) { - if (!(i < 20)) { break; } - if ((x$3 = (new $Uint64(0, integer)), (pow.$high > x$3.$high || (pow.$high === x$3.$high && pow.$low > x$3.$low)))) { - integerDigits = i; - break; - } - pow = $mul64(pow, (new $Uint64(0, 10))); - i = i + (1) >> 0; - } - rest = integer; - if (integerDigits > needed) { - pow10 = (x$4 = integerDigits - needed >> 0, ((x$4 < 0 || x$4 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$4])); - integer = (_q = integer / (((pow10.$low >>> 0))), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - rest = rest - (($imul(integer, ((pow10.$low >>> 0))) >>> 0)) >>> 0; - } else { - rest = 0; - } - buf = arrayType$2.zero(); - pos = 32; - v = integer; - while (true) { - if (!(v > 0)) { break; } - v1 = (_q$1 = v / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); - v = v - (($imul(10, v1) >>> 0)) >>> 0; - pos = pos - (1) >> 0; - ((pos < 0 || pos >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[pos] = (((v + 48 >>> 0) << 24 >>> 24))); - v = v1; - } - i$1 = pos; - while (true) { - if (!(i$1 < 32)) { break; } - (x$5 = d.d, x$6 = i$1 - pos >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6] = ((i$1 < 0 || i$1 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i$1]))); - i$1 = i$1 + (1) >> 0; - } - nd = 32 - pos >> 0; - d.nd = nd; - d.dp = integerDigits + exp10 >> 0; - needed = needed - (nd) >> 0; - if (needed > 0) { - if (!((rest === 0)) || !((pow10.$high === 0 && pow10.$low === 1))) { - $panic(new $String("strconv: internal error, rest != 0 but needed > 0")); - } - while (true) { - if (!(needed > 0)) { break; } - fraction = $mul64(fraction, (new $Uint64(0, 10))); - $CE$B5 = $mul64($CE$B5, (new $Uint64(0, 10))); - if ((x$7 = $mul64(new $Uint64(0, 2), $CE$B5), x$8 = $shiftLeft64(new $Uint64(0, 1), shift), (x$7.$high > x$8.$high || (x$7.$high === x$8.$high && x$7.$low > x$8.$low)))) { - return false; - } - digit = $shiftRightUint64(fraction, shift); - (x$9 = d.d, ((nd < 0 || nd >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + nd] = ((new $Uint64(digit.$high + 0, digit.$low + 48).$low << 24 >>> 24)))); - fraction = (x$10 = $shiftLeft64(digit, shift), new $Uint64(fraction.$high - x$10.$high, fraction.$low - x$10.$low)); - nd = nd + (1) >> 0; - needed = needed - (1) >> 0; - } - d.nd = nd; - } - ok = adjustLastDigitFixed(d, (x$11 = $shiftLeft64((new $Uint64(0, rest)), shift), new $Uint64(x$11.$high | fraction.$high, (x$11.$low | fraction.$low) >>> 0)), pow10, shift, $CE$B5); - if (!ok) { - return false; - } - i$2 = d.nd - 1 >> 0; - while (true) { - if (!(i$2 >= 0)) { break; } - if (!(((x$12 = d.d, ((i$2 < 0 || i$2 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + i$2])) === 48))) { - d.nd = i$2 + 1 >> 0; - break; - } - i$2 = i$2 - (1) >> 0; - } - return true; - }; - extFloat.prototype.FixedDecimal = function(d, n) { return this.$val.FixedDecimal(d, n); }; - adjustLastDigitFixed = function(d, num, den, shift, $CE$B5) { - var $CE$B5, d, den, i, num, shift, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - if ((x = $shiftLeft64(den, shift), (num.$high > x.$high || (num.$high === x.$high && num.$low > x.$low)))) { - $panic(new $String("strconv: num > den< x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { - $panic(new $String("strconv: \xCE\xB5 > (den< x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) { - i = d.nd - 1 >> 0; - while (true) { - if (!(i >= 0)) { break; } - if ((x$7 = d.d, ((i < 0 || i >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + i])) === 57) { - d.nd = d.nd - (1) >> 0; - } else { - break; - } - i = i - (1) >> 0; - } - if (i < 0) { - (x$8 = d.d, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0] = 49)); - d.nd = 1; - d.dp = d.dp + (1) >> 0; - } else { - (x$10 = d.d, ((i < 0 || i >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + i] = ((x$9 = d.d, ((i < 0 || i >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i])) + (1) << 24 >>> 24))); - } - return true; - } - return false; - }; - extFloat.ptr.prototype.ShortestDecimal = function(d, lower, upper) { - var _q, _tmp, _tmp$1, _tmp$2, _tmp$3, allowance, buf, currentDiff, d, digit, digit$1, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, lower, multiplier, n, nd, pow, pow$1, shift, targetDiff, upper, v, v1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - f = this; - if ((x = f.mant, (x.$high === 0 && x.$low === 0))) { - d.nd = 0; - d.dp = 0; - d.neg = f.neg; - return true; - } - if ((f.exp === 0) && $equal(lower, f, extFloat) && $equal(lower, upper, extFloat)) { - buf = arrayType$1.zero(); - n = 23; - v = f.mant; - while (true) { - if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } - v1 = $div64(v, new $Uint64(0, 10), false); - v = (x$1 = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x$1.$high, v.$low - x$1.$low)); - ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24))); - n = n - (1) >> 0; - v = v1; - } - nd = (24 - n >> 0) - 1 >> 0; - i = 0; - while (true) { - if (!(i < nd)) { break; } - (x$3 = d.d, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i] = (x$2 = (n + 1 >> 0) + i >> 0, ((x$2 < 0 || x$2 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x$2])))); - i = i + (1) >> 0; - } - _tmp = nd; - _tmp$1 = nd; - d.nd = _tmp; - d.dp = _tmp$1; - while (true) { - if (!(d.nd > 0 && ((x$4 = d.d, x$5 = d.nd - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) === 48))) { break; } - d.nd = d.nd - (1) >> 0; - } - if (d.nd === 0) { - d.dp = 0; - } - d.neg = f.neg; - return true; - } - upper.Normalize(); - if (f.exp > upper.exp) { - f.mant = $shiftLeft64(f.mant, ((((f.exp - upper.exp >> 0) >>> 0)))); - f.exp = upper.exp; - } - if (lower.exp > upper.exp) { - lower.mant = $shiftLeft64(lower.mant, ((((lower.exp - upper.exp >> 0) >>> 0)))); - lower.exp = upper.exp; - } - exp10 = frexp10Many(lower, f, upper); - upper.mant = (x$6 = upper.mant, x$7 = new $Uint64(0, 1), new $Uint64(x$6.$high + x$7.$high, x$6.$low + x$7.$low)); - lower.mant = (x$8 = lower.mant, x$9 = new $Uint64(0, 1), new $Uint64(x$8.$high - x$9.$high, x$8.$low - x$9.$low)); - shift = ((-upper.exp >>> 0)); - integer = (($shiftRightUint64(upper.mant, shift).$low >>> 0)); - fraction = (x$10 = upper.mant, x$11 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$10.$high - x$11.$high, x$10.$low - x$11.$low)); - allowance = (x$12 = upper.mant, x$13 = lower.mant, new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low)); - targetDiff = (x$14 = upper.mant, x$15 = f.mant, new $Uint64(x$14.$high - x$15.$high, x$14.$low - x$15.$low)); - integerDigits = 0; - _tmp$2 = 0; - _tmp$3 = new $Uint64(0, 1); - i$1 = _tmp$2; - pow = _tmp$3; - while (true) { - if (!(i$1 < 20)) { break; } - if ((x$16 = (new $Uint64(0, integer)), (pow.$high > x$16.$high || (pow.$high === x$16.$high && pow.$low > x$16.$low)))) { - integerDigits = i$1; - break; - } - pow = $mul64(pow, (new $Uint64(0, 10))); - i$1 = i$1 + (1) >> 0; - } - i$2 = 0; - while (true) { - if (!(i$2 < integerDigits)) { break; } - pow$1 = (x$17 = (integerDigits - i$2 >> 0) - 1 >> 0, ((x$17 < 0 || x$17 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$17])); - digit = (_q = integer / ((pow$1.$low >>> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - (x$18 = d.d, ((i$2 < 0 || i$2 >= x$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + i$2] = (((digit + 48 >>> 0) << 24 >>> 24)))); - integer = integer - (($imul(digit, ((pow$1.$low >>> 0))) >>> 0)) >>> 0; - currentDiff = (x$19 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$19.$high + fraction.$high, x$19.$low + fraction.$low)); - if ((currentDiff.$high < allowance.$high || (currentDiff.$high === allowance.$high && currentDiff.$low < allowance.$low))) { - d.nd = i$2 + 1 >> 0; - d.dp = integerDigits + exp10 >> 0; - d.neg = f.neg; - return adjustLastDigit(d, currentDiff, targetDiff, allowance, $shiftLeft64(pow$1, shift), new $Uint64(0, 2)); - } - i$2 = i$2 + (1) >> 0; - } - d.nd = integerDigits; - d.dp = d.nd + exp10 >> 0; - d.neg = f.neg; - digit$1 = 0; - multiplier = new $Uint64(0, 1); - while (true) { - fraction = $mul64(fraction, (new $Uint64(0, 10))); - multiplier = $mul64(multiplier, (new $Uint64(0, 10))); - digit$1 = (($shiftRightUint64(fraction, shift).$low >> 0)); - (x$20 = d.d, x$21 = d.nd, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21] = (((digit$1 + 48 >> 0) << 24 >>> 24)))); - d.nd = d.nd + (1) >> 0; - fraction = (x$22 = $shiftLeft64((new $Uint64(0, digit$1)), shift), new $Uint64(fraction.$high - x$22.$high, fraction.$low - x$22.$low)); - if ((x$23 = $mul64(allowance, multiplier), (fraction.$high < x$23.$high || (fraction.$high === x$23.$high && fraction.$low < x$23.$low)))) { - return adjustLastDigit(d, fraction, $mul64(targetDiff, multiplier), $mul64(allowance, multiplier), $shiftLeft64(new $Uint64(0, 1), shift), $mul64(multiplier, new $Uint64(0, 2))); - } - } - }; - extFloat.prototype.ShortestDecimal = function(d, lower, upper) { return this.$val.ShortestDecimal(d, lower, upper); }; - adjustLastDigit = function(d, currentDiff, targetDiff, maxDiff, ulpDecimal, ulpBinary) { - var _index, currentDiff, d, maxDiff, targetDiff, ulpBinary, ulpDecimal, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - if ((x = $mul64(new $Uint64(0, 2), ulpBinary), (ulpDecimal.$high < x.$high || (ulpDecimal.$high === x.$high && ulpDecimal.$low < x.$low)))) { - return false; - } - while (true) { - if (!((x$1 = (x$2 = (x$3 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(currentDiff.$high + x$3.$high, currentDiff.$low + x$3.$low)), new $Uint64(x$2.$high + ulpBinary.$high, x$2.$low + ulpBinary.$low)), (x$1.$high < targetDiff.$high || (x$1.$high === targetDiff.$high && x$1.$low < targetDiff.$low))))) { break; } - _index = d.nd - 1 >> 0; - (x$5 = d.d, ((_index < 0 || _index >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index] = ((x$4 = d.d, ((_index < 0 || _index >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + _index])) - (1) << 24 >>> 24))); - currentDiff = (x$6 = ulpDecimal, new $Uint64(currentDiff.$high + x$6.$high, currentDiff.$low + x$6.$low)); - } - if ((x$7 = new $Uint64(currentDiff.$high + ulpDecimal.$high, currentDiff.$low + ulpDecimal.$low), x$8 = (x$9 = (x$10 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(targetDiff.$high + x$10.$high, targetDiff.$low + x$10.$low)), new $Uint64(x$9.$high + ulpBinary.$high, x$9.$low + ulpBinary.$low)), (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low <= x$8.$low)))) { - return false; - } - if ((currentDiff.$high < ulpBinary.$high || (currentDiff.$high === ulpBinary.$high && currentDiff.$low < ulpBinary.$low)) || (x$11 = new $Uint64(maxDiff.$high - ulpBinary.$high, maxDiff.$low - ulpBinary.$low), (currentDiff.$high > x$11.$high || (currentDiff.$high === x$11.$high && currentDiff.$low > x$11.$low)))) { - return false; - } - if ((d.nd === 1) && ((x$12 = d.d, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0])) === 48)) { - d.nd = 0; - d.dp = 0; - } - return true; - }; - AppendFloat = function(dst, f, fmt, prec, bitSize) { - var bitSize, dst, f, fmt, prec; - return genericFtoa(dst, f, fmt, prec, bitSize); - }; - $pkg.AppendFloat = AppendFloat; - genericFtoa = function(dst, val, fmt, prec, bitSize) { - var _1, _2, _3, _4, _tuple, bitSize, bits$1, buf, buf$1, digits, digs, dst, exp, f, f$1, flt, fmt, lower, mant, neg, ok, prec, s, shortest, upper, val, x, x$1, x$2, x$3, y, y$1; - bits$1 = new $Uint64(0, 0); - flt = ptrType$1.nil; - _1 = bitSize; - if (_1 === (32)) { - bits$1 = (new $Uint64(0, math.Float32bits(($fround(val))))); - flt = float32info; - } else if (_1 === (64)) { - bits$1 = math.Float64bits(val); - flt = float64info; - } else { - $panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize")); - } - neg = !((x = $shiftRightUint64(bits$1, ((flt.expbits + flt.mantbits >>> 0))), (x.$high === 0 && x.$low === 0))); - exp = (($shiftRightUint64(bits$1, flt.mantbits).$low >> 0)) & ((((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)); - mant = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$2.$high - 0, x$2.$low - 1)), new $Uint64(bits$1.$high & x$1.$high, (bits$1.$low & x$1.$low) >>> 0)); - _2 = exp; - if (_2 === ((((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0))) { - s = ""; - if (!((mant.$high === 0 && mant.$low === 0))) { - s = "NaN"; - } else if (neg) { - s = "-Inf"; - } else { - s = "+Inf"; - } - return $appendSlice(dst, s); - } else if (_2 === (0)) { - exp = exp + (1) >> 0; - } else { - mant = (x$3 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high | x$3.$high, (mant.$low | x$3.$low) >>> 0)); - } - exp = exp + (flt.bias) >> 0; - if (fmt === 98) { - return fmtB(dst, neg, mant, exp, flt); - } - if (!optimize) { - return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); - } - digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false); - ok = false; - shortest = prec < 0; - if (shortest) { - f = new extFloat.ptr(new $Uint64(0, 0), 0, false); - _tuple = f.AssignComputeBounds(mant, exp, neg, flt); - lower = $clone(_tuple[0], extFloat); - upper = $clone(_tuple[1], extFloat); - buf = arrayType$2.zero(); - digs.d = new sliceType$6(buf); - ok = f.ShortestDecimal(digs, lower, upper); - if (!ok) { - return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); - } - _3 = fmt; - if ((_3 === (101)) || (_3 === (69))) { - prec = max(digs.nd - 1 >> 0, 0); - } else if (_3 === (102)) { - prec = max(digs.nd - digs.dp >> 0, 0); - } else if ((_3 === (103)) || (_3 === (71))) { - prec = digs.nd; - } - } else if (!((fmt === 102))) { - digits = prec; - _4 = fmt; - if ((_4 === (101)) || (_4 === (69))) { - digits = digits + (1) >> 0; - } else if ((_4 === (103)) || (_4 === (71))) { - if (prec === 0) { - prec = 1; - } - digits = prec; - } - if (digits <= 15) { - buf$1 = arrayType$1.zero(); - digs.d = new sliceType$6(buf$1); - f$1 = new extFloat.ptr(mant, exp - ((flt.mantbits >> 0)) >> 0, neg); - ok = f$1.FixedDecimal(digs, digits); - } - } - if (!ok) { - return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); - } - return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt); - }; - bigFtoa = function(dst, prec, fmt, neg, mant, exp, flt) { - var _1, _2, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest; - d = new decimal.ptr(arrayType.zero(), 0, 0, false, false); - d.Assign(mant); - d.Shift(exp - ((flt.mantbits >> 0)) >> 0); - digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false); - shortest = prec < 0; - if (shortest) { - roundShortest(d, mant, exp, flt); - decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false)); - _1 = fmt; - if ((_1 === (101)) || (_1 === (69))) { - prec = digs.nd - 1 >> 0; - } else if (_1 === (102)) { - prec = max(digs.nd - digs.dp >> 0, 0); - } else if ((_1 === (103)) || (_1 === (71))) { - prec = digs.nd; - } - } else { - _2 = fmt; - if ((_2 === (101)) || (_2 === (69))) { - d.Round(prec + 1 >> 0); - } else if (_2 === (102)) { - d.Round(d.dp + prec >> 0); - } else if ((_2 === (103)) || (_2 === (71))) { - if (prec === 0) { - prec = 1; - } - d.Round(prec); - } - decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false)); - } - return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt); - }; - formatDigits = function(dst, shortest, neg, digs, prec, fmt) { - var _1, digs, dst, eprec, exp, fmt, neg, prec, shortest; - _1 = fmt; - if ((_1 === (101)) || (_1 === (69))) { - return fmtE(dst, neg, $clone(digs, decimalSlice), prec, fmt); - } else if (_1 === (102)) { - return fmtF(dst, neg, $clone(digs, decimalSlice), prec); - } else if ((_1 === (103)) || (_1 === (71))) { - eprec = prec; - if (eprec > digs.nd && digs.nd >= digs.dp) { - eprec = digs.nd; - } - if (shortest) { - eprec = 6; - } - exp = digs.dp - 1 >> 0; - if (exp < -4 || exp >= eprec) { - if (prec > digs.nd) { - prec = digs.nd; - } - return fmtE(dst, neg, $clone(digs, decimalSlice), prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24); - } - if (prec > digs.dp) { - prec = digs.nd; - } - return fmtF(dst, neg, $clone(digs, decimalSlice), max(prec - digs.dp >> 0, 0)); - } - return $append(dst, 37, fmt); - }; - roundShortest = function(d, mant, exp, flt) { - var d, exp, explo, flt, i, inclusive, l, lower, m, mant, mantlo, minexp, okdown, okup, u, upper, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; - if ((mant.$high === 0 && mant.$low === 0)) { - d.nd = 0; - return; - } - minexp = flt.bias + 1 >> 0; - if (exp > minexp && ($imul(332, ((d.dp - d.nd >> 0)))) >= ($imul(100, ((exp - ((flt.mantbits >> 0)) >> 0))))) { - return; - } - upper = new decimal.ptr(arrayType.zero(), 0, 0, false, false); - upper.Assign((x = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x.$high + 0, x.$low + 1))); - upper.Shift((exp - ((flt.mantbits >> 0)) >> 0) - 1 >> 0); - mantlo = new $Uint64(0, 0); - explo = 0; - if ((x$1 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high > x$1.$high || (mant.$high === x$1.$high && mant.$low > x$1.$low))) || (exp === minexp)) { - mantlo = new $Uint64(mant.$high - 0, mant.$low - 1); - explo = exp; - } else { - mantlo = (x$2 = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x$2.$high - 0, x$2.$low - 1)); - explo = exp - 1 >> 0; - } - lower = new decimal.ptr(arrayType.zero(), 0, 0, false, false); - lower.Assign((x$3 = $mul64(mantlo, new $Uint64(0, 2)), new $Uint64(x$3.$high + 0, x$3.$low + 1))); - lower.Shift((explo - ((flt.mantbits >> 0)) >> 0) - 1 >> 0); - inclusive = (x$4 = $div64(mant, new $Uint64(0, 2), true), (x$4.$high === 0 && x$4.$low === 0)); - i = 0; - while (true) { - if (!(i < d.nd)) { break; } - l = 48; - if (i < lower.nd) { - l = (x$5 = lower.d, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i])); - } - m = (x$6 = d.d, ((i < 0 || i >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i])); - u = 48; - if (i < upper.nd) { - u = (x$7 = upper.d, ((i < 0 || i >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[i])); - } - okdown = !((l === m)) || inclusive && ((i + 1 >> 0) === lower.nd); - okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.nd); - if (okdown && okup) { - d.Round(i + 1 >> 0); - return; - } else if (okdown) { - d.RoundDown(i + 1 >> 0); - return; - } else if (okup) { - d.RoundUp(i + 1 >> 0); - return; - } - i = i + (1) >> 0; - } - }; - fmtE = function(dst, neg, d, prec, fmt) { - var _q, _q$1, _q$2, _r, _r$1, _r$2, ch, d, dst, exp, fmt, i, m, neg, prec, x; - if (neg) { - dst = $append(dst, 45); - } - ch = 48; - if (!((d.nd === 0))) { - ch = (x = d.d, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - } - dst = $append(dst, ch); - if (prec > 0) { - dst = $append(dst, 46); - i = 1; - m = min(d.nd, prec + 1 >> 0); - if (i < m) { - dst = $appendSlice(dst, $subslice(d.d, i, m)); - i = m; - } - while (true) { - if (!(i <= prec)) { break; } - dst = $append(dst, 48); - i = i + (1) >> 0; - } - } - dst = $append(dst, fmt); - exp = d.dp - 1 >> 0; - if (d.nd === 0) { - exp = 0; - } - if (exp < 0) { - ch = 45; - exp = -exp; - } else { - ch = 43; - } - dst = $append(dst, ch); - if (exp < 10) { - dst = $append(dst, 48, ((exp << 24 >>> 24)) + 48 << 24 >>> 24); - } else if (exp < 100) { - dst = $append(dst, (((_q = exp / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); - } else { - dst = $append(dst, (((_q$1 = exp / 100, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (_r$1 = (((_q$2 = exp / 10, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24, (((_r$2 = exp % 10, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); - } - return dst; - }; - fmtF = function(dst, neg, d, prec) { - var ch, d, dst, i, j, m, neg, prec, x; - if (neg) { - dst = $append(dst, 45); - } - if (d.dp > 0) { - m = min(d.nd, d.dp); - dst = $appendSlice(dst, $subslice(d.d, 0, m)); - while (true) { - if (!(m < d.dp)) { break; } - dst = $append(dst, 48); - m = m + (1) >> 0; - } - } else { - dst = $append(dst, 48); - } - if (prec > 0) { - dst = $append(dst, 46); - i = 0; - while (true) { - if (!(i < prec)) { break; } - ch = 48; - j = d.dp + i >> 0; - if (0 <= j && j < d.nd) { - ch = (x = d.d, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); - } - dst = $append(dst, ch); - i = i + (1) >> 0; - } - } - return dst; - }; - fmtB = function(dst, neg, mant, exp, flt) { - var _tuple, _tuple$1, dst, exp, flt, mant, neg; - if (neg) { - dst = $append(dst, 45); - } - _tuple = formatBits(dst, mant, 10, false, true); - dst = _tuple[0]; - dst = $append(dst, 112); - exp = exp - (((flt.mantbits >> 0))) >> 0; - if (exp >= 0) { - dst = $append(dst, 43); - } - _tuple$1 = formatBits(dst, (new $Uint64(0, exp)), 10, exp < 0, true); - dst = _tuple$1[0]; - return dst; - }; - min = function(a, b) { - var a, b; - if (a < b) { - return a; - } - return b; - }; - max = function(a, b) { - var a, b; - if (a > b) { - return a; - } - return b; - }; - FormatUint = function(i, base) { - var _tuple, base, i, s; - if (true && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { - return small(((i.$low >> 0))); - } - _tuple = formatBits(sliceType$6.nil, i, base, false, false); - s = _tuple[1]; - return s; - }; - $pkg.FormatUint = FormatUint; - FormatInt = function(i, base) { - var _tuple, base, i, s; - if (true && (0 < i.$high || (0 === i.$high && 0 <= i.$low)) && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { - return small((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0))); - } - _tuple = formatBits(sliceType$6.nil, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), false); - s = _tuple[1]; - return s; - }; - $pkg.FormatInt = FormatInt; - Itoa = function(i) { - var i; - return FormatInt((new $Int64(0, i)), 10); - }; - $pkg.Itoa = Itoa; - small = function(i) { - var i; - if (i < 10) { - return $substring("0123456789abcdefghijklmnopqrstuvwxyz", i, (i + 1 >> 0)); - } - return $substring("00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899", ($imul(i, 2)), (($imul(i, 2)) + 2 >> 0)); - }; - formatBits = function(dst, u, base, neg, append_) { - var _q, _q$1, _r, _r$1, a, append_, b, b$1, base, d, dst, i, is, is$1, is$2, j, m, neg, q, q$1, s, shift, u, us, us$1, x, x$1, x$2, x$3, x$4, x$5; - d = sliceType$6.nil; - s = ""; - if (base < 2 || base > 36) { - $panic(new $String("strconv: illegal AppendInt/FormatInt base")); - } - a = arrayType$3.zero(); - i = 65; - if (neg) { - u = new $Uint64(-u.$high, -u.$low); - } - if (base === 10) { - if (true) { - while (true) { - if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 1000000000)))) { break; } - q = $div64(u, new $Uint64(0, 1000000000), false); - us = (((x = $mul64(q, new $Uint64(0, 1000000000)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0)); - j = 4; - while (true) { - if (!(j > 0)) { break; } - is = (_r = us % 100, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) * 2 >>> 0; - us = (_q = us / (100), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - i = i - (2) >> 0; - (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$1] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 1 >>> 0)))); - (x$2 = i + 0 >> 0, ((x$2 < 0 || x$2 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$2] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 0 >>> 0)))); - j = j - (1) >> 0; - } - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(((us * 2 >>> 0) + 1 >>> 0))); - u = q; - } - } - us$1 = ((u.$low >>> 0)); - while (true) { - if (!(us$1 >= 100)) { break; } - is$1 = (_r$1 = us$1 % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) * 2 >>> 0; - us$1 = (_q$1 = us$1 / (100), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); - i = i - (2) >> 0; - (x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$3] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 1 >>> 0)))); - (x$4 = i + 0 >> 0, ((x$4 < 0 || x$4 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$4] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 0 >>> 0)))); - } - is$2 = us$1 * 2 >>> 0; - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$2 + 1 >>> 0))); - if (us$1 >= 10) { - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(is$2)); - } - } else if (isPowerOfTwo(base)) { - shift = (((bits.TrailingZeros(((base >>> 0))) >>> 0)) & 7) >>> 0; - b = (new $Uint64(0, base)); - m = ((base >>> 0)) - 1 >>> 0; - while (true) { - if (!((u.$high > b.$high || (u.$high === b.$high && u.$low >= b.$low)))) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((((u.$low >>> 0)) & m) >>> 0))); - u = $shiftRightUint64(u, (shift)); - } - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0)))); - } else { - b$1 = (new $Uint64(0, base)); - while (true) { - if (!((u.$high > b$1.$high || (u.$high === b$1.$high && u.$low >= b$1.$low)))) { break; } - i = i - (1) >> 0; - q$1 = $div64(u, b$1, false); - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((x$5 = $mul64(q$1, b$1), new $Uint64(u.$high - x$5.$high, u.$low - x$5.$low)).$low >>> 0)))); - u = q$1; - } - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0)))); - } - if (neg) { - i = i - (1) >> 0; - ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = 45); - } - if (append_) { - d = $appendSlice(dst, $subslice(new sliceType$6(a), i)); - return [d, s]; - } - s = ($bytesToString($subslice(new sliceType$6(a), i))); - return [d, s]; - }; - isPowerOfTwo = function(x) { - var x; - return (x & ((x - 1 >> 0))) === 0; - }; - quoteWith = function(s, quote, ASCIIonly, graphicOnly) { - var ASCIIonly, _q, graphicOnly, quote, s; - return ($bytesToString(appendQuotedWith($makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), s, quote, ASCIIonly, graphicOnly))); - }; - appendQuotedWith = function(buf, s, quote, ASCIIonly, graphicOnly) { - var ASCIIonly, _tuple, buf, graphicOnly, quote, r, s, width; - buf = $append(buf, quote); - width = 0; - while (true) { - if (!(s.length > 0)) { break; } - r = ((s.charCodeAt(0) >> 0)); - width = 1; - if (r >= 128) { - _tuple = utf8.DecodeRuneInString(s); - r = _tuple[0]; - width = _tuple[1]; - } - if ((width === 1) && (r === 65533)) { - buf = $appendSlice(buf, "\\x"); - buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24))); - buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0))); - s = $substring(s, width); - continue; - } - buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly); - s = $substring(s, width); - } - buf = $append(buf, quote); - return buf; - }; - appendQuotedRuneWith = function(buf, r, quote, ASCIIonly, graphicOnly) { - var ASCIIonly, buf, graphicOnly, quote, r; - buf = $append(buf, quote); - if (!utf8.ValidRune(r)) { - r = 65533; - } - buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly); - buf = $append(buf, quote); - return buf; - }; - appendEscapedRune = function(buf, r, quote, ASCIIonly, graphicOnly) { - var ASCIIonly, _1, buf, graphicOnly, n, quote, r, runeTmp, s, s$1; - runeTmp = arrayType$4.zero(); - if ((r === ((quote >> 0))) || (r === 92)) { - buf = $append(buf, 92); - buf = $append(buf, ((r << 24 >>> 24))); - return buf; - } - if (ASCIIonly) { - if (r < 128 && IsPrint(r)) { - buf = $append(buf, ((r << 24 >>> 24))); - return buf; - } - } else if (IsPrint(r) || graphicOnly && isInGraphicList(r)) { - n = utf8.EncodeRune(new sliceType$6(runeTmp), r); - buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n)); - return buf; - } - _1 = r; - if (_1 === (7)) { - buf = $appendSlice(buf, "\\a"); - } else if (_1 === (8)) { - buf = $appendSlice(buf, "\\b"); - } else if (_1 === (12)) { - buf = $appendSlice(buf, "\\f"); - } else if (_1 === (10)) { - buf = $appendSlice(buf, "\\n"); - } else if (_1 === (13)) { - buf = $appendSlice(buf, "\\r"); - } else if (_1 === (9)) { - buf = $appendSlice(buf, "\\t"); - } else if (_1 === (11)) { - buf = $appendSlice(buf, "\\v"); - } else { - if (r < 32) { - buf = $appendSlice(buf, "\\x"); - buf = $append(buf, "0123456789abcdef".charCodeAt((((r << 24 >>> 24)) >>> 4 << 24 >>> 24))); - buf = $append(buf, "0123456789abcdef".charCodeAt(((((r << 24 >>> 24)) & 15) >>> 0))); - } else if (r > 1114111) { - r = 65533; - buf = $appendSlice(buf, "\\u"); - s = 12; - while (true) { - if (!(s >= 0)) { break; } - buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15))); - s = s - (4) >> 0; - } - } else if (r < 65536) { - buf = $appendSlice(buf, "\\u"); - s = 12; - while (true) { - if (!(s >= 0)) { break; } - buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15))); - s = s - (4) >> 0; - } - } else { - buf = $appendSlice(buf, "\\U"); - s$1 = 28; - while (true) { - if (!(s$1 >= 0)) { break; } - buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s$1 >>> 0)), 31)) >> 0) & 15))); - s$1 = s$1 - (4) >> 0; - } - } - } - return buf; - }; - Quote = function(s) { - var s; - return quoteWith(s, 34, false, false); - }; - $pkg.Quote = Quote; - AppendQuote = function(dst, s) { - var dst, s; - return appendQuotedWith(dst, s, 34, false, false); - }; - $pkg.AppendQuote = AppendQuote; - QuoteToASCII = function(s) { - var s; - return quoteWith(s, 34, true, false); - }; - $pkg.QuoteToASCII = QuoteToASCII; - AppendQuoteToASCII = function(dst, s) { - var dst, s; - return appendQuotedWith(dst, s, 34, true, false); - }; - $pkg.AppendQuoteToASCII = AppendQuoteToASCII; - AppendQuoteRune = function(dst, r) { - var dst, r; - return appendQuotedRuneWith(dst, r, 39, false, false); - }; - $pkg.AppendQuoteRune = AppendQuoteRune; - AppendQuoteRuneToASCII = function(dst, r) { - var dst, r; - return appendQuotedRuneWith(dst, r, 39, true, false); - }; - $pkg.AppendQuoteRuneToASCII = AppendQuoteRuneToASCII; - CanBackquote = function(s) { - var _tuple, r, s, wid; - while (true) { - if (!(s.length > 0)) { break; } - _tuple = utf8.DecodeRuneInString(s); - r = _tuple[0]; - wid = _tuple[1]; - s = $substring(s, wid); - if (wid > 1) { - if (r === 65279) { - return false; - } - continue; - } - if (r === 65533) { - return false; - } - if ((r < 32 && !((r === 9))) || (r === 96) || (r === 127)) { - return false; - } - } - return true; - }; - $pkg.CanBackquote = CanBackquote; - unhex = function(b) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, c, ok, v; - v = 0; - ok = false; - c = ((b >> 0)); - if (48 <= c && c <= 57) { - _tmp = c - 48 >> 0; - _tmp$1 = true; - v = _tmp; - ok = _tmp$1; - return [v, ok]; - } else if (97 <= c && c <= 102) { - _tmp$2 = (c - 97 >> 0) + 10 >> 0; - _tmp$3 = true; - v = _tmp$2; - ok = _tmp$3; - return [v, ok]; - } else if (65 <= c && c <= 70) { - _tmp$4 = (c - 65 >> 0) + 10 >> 0; - _tmp$5 = true; - v = _tmp$4; - ok = _tmp$5; - return [v, ok]; - } - return [v, ok]; - }; - UnquoteChar = function(s, quote) { - var _1, _2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, c, c$1, err, j, j$1, multibyte, n, ok, quote, r, s, size, tail, v, v$1, value, x, x$1; - value = 0; - multibyte = false; - tail = ""; - err = $ifaceNil; - if (s.length === 0) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - c = s.charCodeAt(0); - if ((c === quote) && ((quote === 39) || (quote === 34))) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } else if (c >= 128) { - _tuple = utf8.DecodeRuneInString(s); - r = _tuple[0]; - size = _tuple[1]; - _tmp = r; - _tmp$1 = true; - _tmp$2 = $substring(s, size); - _tmp$3 = $ifaceNil; - value = _tmp; - multibyte = _tmp$1; - tail = _tmp$2; - err = _tmp$3; - return [value, multibyte, tail, err]; - } else if (!((c === 92))) { - _tmp$4 = ((s.charCodeAt(0) >> 0)); - _tmp$5 = false; - _tmp$6 = $substring(s, 1); - _tmp$7 = $ifaceNil; - value = _tmp$4; - multibyte = _tmp$5; - tail = _tmp$6; - err = _tmp$7; - return [value, multibyte, tail, err]; - } - if (s.length <= 1) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - c$1 = s.charCodeAt(1); - s = $substring(s, 2); - switch (0) { default: - _1 = c$1; - if (_1 === (97)) { - value = 7; - } else if (_1 === (98)) { - value = 8; - } else if (_1 === (102)) { - value = 12; - } else if (_1 === (110)) { - value = 10; - } else if (_1 === (114)) { - value = 13; - } else if (_1 === (116)) { - value = 9; - } else if (_1 === (118)) { - value = 11; - } else if ((_1 === (120)) || (_1 === (117)) || (_1 === (85))) { - n = 0; - _2 = c$1; - if (_2 === (120)) { - n = 2; - } else if (_2 === (117)) { - n = 4; - } else if (_2 === (85)) { - n = 8; - } - v = 0; - if (s.length < n) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - j = 0; - while (true) { - if (!(j < n)) { break; } - _tuple$1 = unhex(s.charCodeAt(j)); - x = _tuple$1[0]; - ok = _tuple$1[1]; - if (!ok) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - v = (v << 4 >> 0) | x; - j = j + (1) >> 0; - } - s = $substring(s, n); - if (c$1 === 120) { - value = v; - break; - } - if (v > 1114111) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - value = v; - multibyte = true; - } else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { - v$1 = ((c$1 >> 0)) - 48 >> 0; - if (s.length < 2) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - j$1 = 0; - while (true) { - if (!(j$1 < 2)) { break; } - x$1 = ((s.charCodeAt(j$1) >> 0)) - 48 >> 0; - if (x$1 < 0 || x$1 > 7) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - v$1 = ((v$1 << 3 >> 0)) | x$1; - j$1 = j$1 + (1) >> 0; - } - s = $substring(s, 2); - if (v$1 > 255) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - value = v$1; - } else if (_1 === (92)) { - value = 92; - } else if ((_1 === (39)) || (_1 === (34))) { - if (!((c$1 === quote))) { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - value = ((c$1 >> 0)); - } else { - err = $pkg.ErrSyntax; - return [value, multibyte, tail, err]; - } - } - tail = s; - return [value, multibyte, tail, err]; - }; - $pkg.UnquoteChar = UnquoteChar; - Unquote = function(s) { - var _1, _q, _tuple, _tuple$1, buf, buf$1, c, err, i, multibyte, n, n$1, quote, r, runeTmp, s, size, ss; - n = s.length; - if (n < 2) { - return ["", $pkg.ErrSyntax]; - } - quote = s.charCodeAt(0); - if (!((quote === s.charCodeAt((n - 1 >> 0))))) { - return ["", $pkg.ErrSyntax]; - } - s = $substring(s, 1, (n - 1 >> 0)); - if (quote === 96) { - if (contains(s, 96)) { - return ["", $pkg.ErrSyntax]; - } - if (contains(s, 13)) { - buf = $makeSlice(sliceType$6, 0, (s.length - 1 >> 0)); - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (!((s.charCodeAt(i) === 13))) { - buf = $append(buf, s.charCodeAt(i)); - } - i = i + (1) >> 0; - } - return [($bytesToString(buf)), $ifaceNil]; - } - return [s, $ifaceNil]; - } - if (!((quote === 34)) && !((quote === 39))) { - return ["", $pkg.ErrSyntax]; - } - if (contains(s, 10)) { - return ["", $pkg.ErrSyntax]; - } - if (!contains(s, 92) && !contains(s, quote)) { - _1 = quote; - if (_1 === (34)) { - if (utf8.ValidString(s)) { - return [s, $ifaceNil]; - } - } else if (_1 === (39)) { - _tuple = utf8.DecodeRuneInString(s); - r = _tuple[0]; - size = _tuple[1]; - if ((size === s.length) && (!((r === 65533)) || !((size === 1)))) { - return [s, $ifaceNil]; - } - } - } - runeTmp = arrayType$4.zero(); - buf$1 = $makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); - while (true) { - if (!(s.length > 0)) { break; } - _tuple$1 = UnquoteChar(s, quote); - c = _tuple$1[0]; - multibyte = _tuple$1[1]; - ss = _tuple$1[2]; - err = _tuple$1[3]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return ["", err]; - } - s = ss; - if (c < 128 || !multibyte) { - buf$1 = $append(buf$1, ((c << 24 >>> 24))); - } else { - n$1 = utf8.EncodeRune(new sliceType$6(runeTmp), c); - buf$1 = $appendSlice(buf$1, $subslice(new sliceType$6(runeTmp), 0, n$1)); - } - if ((quote === 39) && !((s.length === 0))) { - return ["", $pkg.ErrSyntax]; - } - } - return [($bytesToString(buf$1)), $ifaceNil]; - }; - $pkg.Unquote = Unquote; - contains = function(s, c) { - var c, s; - return !((bytealg.IndexByteString(s, c) === -1)); - }; - bsearch16 = function(a, x) { - var _q, _tmp, _tmp$1, a, h, i, j, x; - _tmp = 0; - _tmp$1 = a.$length; - i = _tmp; - j = _tmp$1; - while (true) { - if (!(i < j)) { break; } - h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) { - i = h + 1 >> 0; - } else { - j = h; - } - } - return i; - }; - bsearch32 = function(a, x) { - var _q, _tmp, _tmp$1, a, h, i, j, x; - _tmp = 0; - _tmp$1 = a.$length; - i = _tmp; - j = _tmp$1; - while (true) { - if (!(i < j)) { break; } - h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) { - i = h + 1 >> 0; - } else { - j = h; - } - } - return i; - }; - IsPrint = function(r) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, i, i$1, isNotPrint, isNotPrint$1, isPrint, isPrint$1, j, j$1, r, rr, rr$1, x, x$1, x$2, x$3; - if (r <= 255) { - if (32 <= r && r <= 126) { - return true; - } - if (161 <= r && r <= 255) { - return !((r === 173)); - } - return false; - } - if (0 <= r && r < 65536) { - _tmp = ((r << 16 >>> 16)); - _tmp$1 = isPrint16; - _tmp$2 = isNotPrint16; - rr = _tmp; - isPrint = _tmp$1; - isNotPrint = _tmp$2; - i = bsearch16(isPrint, rr); - if (i >= isPrint.$length || rr < (x = (i & ~1) >> 0, ((x < 0 || x >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x])) || (x$1 = i | 1, ((x$1 < 0 || x$1 >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x$1])) < rr) { - return false; - } - j = bsearch16(isNotPrint, rr); - return j >= isNotPrint.$length || !((((j < 0 || j >= isNotPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint.$array[isNotPrint.$offset + j]) === rr)); - } - _tmp$3 = ((r >>> 0)); - _tmp$4 = isPrint32; - _tmp$5 = isNotPrint32; - rr$1 = _tmp$3; - isPrint$1 = _tmp$4; - isNotPrint$1 = _tmp$5; - i$1 = bsearch32(isPrint$1, rr$1); - if (i$1 >= isPrint$1.$length || rr$1 < (x$2 = (i$1 & ~1) >> 0, ((x$2 < 0 || x$2 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$2])) || (x$3 = i$1 | 1, ((x$3 < 0 || x$3 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$3])) < rr$1) { - return false; - } - if (r >= 131072) { - return true; - } - r = r - (65536) >> 0; - j$1 = bsearch16(isNotPrint$1, ((r << 16 >>> 16))); - return j$1 >= isNotPrint$1.$length || !((((j$1 < 0 || j$1 >= isNotPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint$1.$array[isNotPrint$1.$offset + j$1]) === ((r << 16 >>> 16)))); - }; - $pkg.IsPrint = IsPrint; - isInGraphicList = function(r) { - var i, r, rr; - if (r > 65535) { - return false; - } - rr = ((r << 16 >>> 16)); - i = bsearch16(isGraphic, rr); - return i < isGraphic.$length && (rr === ((i < 0 || i >= isGraphic.$length) ? ($throwRuntimeError("index out of range"), undefined) : isGraphic.$array[isGraphic.$offset + i])); - }; - ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$2.methods = [{prop: "set", name: "set", pkg: "strconv", typ: $funcType([$String], [$Bool], false)}, {prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Assign", name: "Assign", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "Shift", name: "Shift", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundDown", name: "RoundDown", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundUp", name: "RoundUp", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundedInteger", name: "RoundedInteger", pkg: "", typ: $funcType([], [$Uint64], false)}]; - ptrType$4.methods = [{prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "AssignComputeBounds", name: "AssignComputeBounds", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, ptrType$1], [extFloat, extFloat], false)}, {prop: "Normalize", name: "Normalize", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Multiply", name: "Multiply", pkg: "", typ: $funcType([extFloat], [], false)}, {prop: "AssignDecimal", name: "AssignDecimal", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, $Bool, ptrType$1], [$Bool], false)}, {prop: "frexp10", name: "frexp10", pkg: "strconv", typ: $funcType([], [$Int, $Int], false)}, {prop: "FixedDecimal", name: "FixedDecimal", pkg: "", typ: $funcType([ptrType$3, $Int], [$Bool], false)}, {prop: "ShortestDecimal", name: "ShortestDecimal", pkg: "", typ: $funcType([ptrType$3, ptrType$4, ptrType$4], [$Bool], false)}]; - NumError.init("", [{prop: "Func", name: "Func", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Num", name: "Num", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); - decimal.init("strconv", [{prop: "d", name: "d", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "nd", name: "nd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", embedded: false, exported: false, typ: $Bool, tag: ""}]); - leftCheat.init("strconv", [{prop: "delta", name: "delta", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", embedded: false, exported: false, typ: $String, tag: ""}]); - extFloat.init("strconv", [{prop: "mant", name: "mant", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "exp", name: "exp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}]); - floatInfo.init("strconv", [{prop: "mantbits", name: "mantbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "bias", name: "bias", embedded: false, exported: false, typ: $Int, tag: ""}]); - decimalSlice.init("strconv", [{prop: "d", name: "d", embedded: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bits.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - optimize = true; - $pkg.ErrRange = errors.New("value out of range"); - $pkg.ErrSyntax = errors.New("invalid syntax"); - leftcheats = new sliceType$3([new leftCheat.ptr(0, ""), new leftCheat.ptr(1, "5"), new leftCheat.ptr(1, "25"), new leftCheat.ptr(1, "125"), new leftCheat.ptr(2, "625"), new leftCheat.ptr(2, "3125"), new leftCheat.ptr(2, "15625"), new leftCheat.ptr(3, "78125"), new leftCheat.ptr(3, "390625"), new leftCheat.ptr(3, "1953125"), new leftCheat.ptr(4, "9765625"), new leftCheat.ptr(4, "48828125"), new leftCheat.ptr(4, "244140625"), new leftCheat.ptr(4, "1220703125"), new leftCheat.ptr(5, "6103515625"), new leftCheat.ptr(5, "30517578125"), new leftCheat.ptr(5, "152587890625"), new leftCheat.ptr(6, "762939453125"), new leftCheat.ptr(6, "3814697265625"), new leftCheat.ptr(6, "19073486328125"), new leftCheat.ptr(7, "95367431640625"), new leftCheat.ptr(7, "476837158203125"), new leftCheat.ptr(7, "2384185791015625"), new leftCheat.ptr(7, "11920928955078125"), new leftCheat.ptr(8, "59604644775390625"), new leftCheat.ptr(8, "298023223876953125"), new leftCheat.ptr(8, "1490116119384765625"), new leftCheat.ptr(9, "7450580596923828125"), new leftCheat.ptr(9, "37252902984619140625"), new leftCheat.ptr(9, "186264514923095703125"), new leftCheat.ptr(10, "931322574615478515625"), new leftCheat.ptr(10, "4656612873077392578125"), new leftCheat.ptr(10, "23283064365386962890625"), new leftCheat.ptr(10, "116415321826934814453125"), new leftCheat.ptr(11, "582076609134674072265625"), new leftCheat.ptr(11, "2910383045673370361328125"), new leftCheat.ptr(11, "14551915228366851806640625"), new leftCheat.ptr(12, "72759576141834259033203125"), new leftCheat.ptr(12, "363797880709171295166015625"), new leftCheat.ptr(12, "1818989403545856475830078125"), new leftCheat.ptr(13, "9094947017729282379150390625"), new leftCheat.ptr(13, "45474735088646411895751953125"), new leftCheat.ptr(13, "227373675443232059478759765625"), new leftCheat.ptr(13, "1136868377216160297393798828125"), new leftCheat.ptr(14, "5684341886080801486968994140625"), new leftCheat.ptr(14, "28421709430404007434844970703125"), new leftCheat.ptr(14, "142108547152020037174224853515625"), new leftCheat.ptr(15, "710542735760100185871124267578125"), new leftCheat.ptr(15, "3552713678800500929355621337890625"), new leftCheat.ptr(15, "17763568394002504646778106689453125"), new leftCheat.ptr(16, "88817841970012523233890533447265625"), new leftCheat.ptr(16, "444089209850062616169452667236328125"), new leftCheat.ptr(16, "2220446049250313080847263336181640625"), new leftCheat.ptr(16, "11102230246251565404236316680908203125"), new leftCheat.ptr(17, "55511151231257827021181583404541015625"), new leftCheat.ptr(17, "277555756156289135105907917022705078125"), new leftCheat.ptr(17, "1387778780781445675529539585113525390625"), new leftCheat.ptr(18, "6938893903907228377647697925567626953125"), new leftCheat.ptr(18, "34694469519536141888238489627838134765625"), new leftCheat.ptr(18, "173472347597680709441192448139190673828125"), new leftCheat.ptr(19, "867361737988403547205962240695953369140625")]); - smallPowersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(2147483648, 0), -63, false), new extFloat.ptr(new $Uint64(2684354560, 0), -60, false), new extFloat.ptr(new $Uint64(3355443200, 0), -57, false), new extFloat.ptr(new $Uint64(4194304000, 0), -54, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3276800000, 0), -47, false), new extFloat.ptr(new $Uint64(4096000000, 0), -44, false), new extFloat.ptr(new $Uint64(2560000000, 0), -40, false)]); - powersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(4203730336, 136053384), -1220, false), new extFloat.ptr(new $Uint64(3132023167, 2722021238), -1193, false), new extFloat.ptr(new $Uint64(2333539104, 810921078), -1166, false), new extFloat.ptr(new $Uint64(3477244234, 1573795306), -1140, false), new extFloat.ptr(new $Uint64(2590748842, 1432697645), -1113, false), new extFloat.ptr(new $Uint64(3860516611, 1025131999), -1087, false), new extFloat.ptr(new $Uint64(2876309015, 3348809418), -1060, false), new extFloat.ptr(new $Uint64(4286034428, 3200048207), -1034, false), new extFloat.ptr(new $Uint64(3193344495, 1097586188), -1007, false), new extFloat.ptr(new $Uint64(2379227053, 2424306748), -980, false), new extFloat.ptr(new $Uint64(3545324584, 827693699), -954, false), new extFloat.ptr(new $Uint64(2641472655, 2913388981), -927, false), new extFloat.ptr(new $Uint64(3936100983, 602835915), -901, false), new extFloat.ptr(new $Uint64(2932623761, 1081627501), -874, false), new extFloat.ptr(new $Uint64(2184974969, 1572261463), -847, false), new extFloat.ptr(new $Uint64(3255866422, 1308317239), -821, false), new extFloat.ptr(new $Uint64(2425809519, 944281679), -794, false), new extFloat.ptr(new $Uint64(3614737867, 629291719), -768, false), new extFloat.ptr(new $Uint64(2693189581, 2545915892), -741, false), new extFloat.ptr(new $Uint64(4013165208, 388672741), -715, false), new extFloat.ptr(new $Uint64(2990041083, 708162190), -688, false), new extFloat.ptr(new $Uint64(2227754207, 3536207675), -661, false), new extFloat.ptr(new $Uint64(3319612455, 450088378), -635, false), new extFloat.ptr(new $Uint64(2473304014, 3139815830), -608, false), new extFloat.ptr(new $Uint64(3685510180, 2103616900), -582, false), new extFloat.ptr(new $Uint64(2745919064, 224385782), -555, false), new extFloat.ptr(new $Uint64(4091738259, 3737383206), -529, false), new extFloat.ptr(new $Uint64(3048582568, 2868871352), -502, false), new extFloat.ptr(new $Uint64(2271371013, 1820084875), -475, false), new extFloat.ptr(new $Uint64(3384606560, 885076051), -449, false), new extFloat.ptr(new $Uint64(2521728396, 2444895829), -422, false), new extFloat.ptr(new $Uint64(3757668132, 1881767613), -396, false), new extFloat.ptr(new $Uint64(2799680927, 3102062735), -369, false), new extFloat.ptr(new $Uint64(4171849679, 2289335700), -343, false), new extFloat.ptr(new $Uint64(3108270227, 2410191823), -316, false), new extFloat.ptr(new $Uint64(2315841784, 3205436779), -289, false), new extFloat.ptr(new $Uint64(3450873173, 1697722806), -263, false), new extFloat.ptr(new $Uint64(2571100870, 3497754540), -236, false), new extFloat.ptr(new $Uint64(3831238852, 707476230), -210, false), new extFloat.ptr(new $Uint64(2854495385, 1769181907), -183, false), new extFloat.ptr(new $Uint64(4253529586, 2197867022), -157, false), new extFloat.ptr(new $Uint64(3169126500, 2450594539), -130, false), new extFloat.ptr(new $Uint64(2361183241, 1867548876), -103, false), new extFloat.ptr(new $Uint64(3518437208, 3793315116), -77, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3906250000, 0), -24, false), new extFloat.ptr(new $Uint64(2910383045, 2892103680), 3, false), new extFloat.ptr(new $Uint64(2168404344, 4170451332), 30, false), new extFloat.ptr(new $Uint64(3231174267, 3372684723), 56, false), new extFloat.ptr(new $Uint64(2407412430, 2078956656), 83, false), new extFloat.ptr(new $Uint64(3587324068, 2884206696), 109, false), new extFloat.ptr(new $Uint64(2672764710, 395977285), 136, false), new extFloat.ptr(new $Uint64(3982729777, 3569679143), 162, false), new extFloat.ptr(new $Uint64(2967364920, 2361961896), 189, false), new extFloat.ptr(new $Uint64(2210859150, 447440347), 216, false), new extFloat.ptr(new $Uint64(3294436857, 1114709402), 242, false), new extFloat.ptr(new $Uint64(2454546732, 2786846552), 269, false), new extFloat.ptr(new $Uint64(3657559652, 443583978), 295, false), new extFloat.ptr(new $Uint64(2725094297, 2599384906), 322, false), new extFloat.ptr(new $Uint64(4060706939, 3028118405), 348, false), new extFloat.ptr(new $Uint64(3025462433, 2044532855), 375, false), new extFloat.ptr(new $Uint64(2254145170, 1536935362), 402, false), new extFloat.ptr(new $Uint64(3358938053, 3365297469), 428, false), new extFloat.ptr(new $Uint64(2502603868, 4204241075), 455, false), new extFloat.ptr(new $Uint64(3729170365, 2577424355), 481, false), new extFloat.ptr(new $Uint64(2778448436, 3677981733), 508, false), new extFloat.ptr(new $Uint64(4140210802, 2744688476), 534, false), new extFloat.ptr(new $Uint64(3084697427, 1424604878), 561, false), new extFloat.ptr(new $Uint64(2298278679, 4062331362), 588, false), new extFloat.ptr(new $Uint64(3424702107, 3546052773), 614, false), new extFloat.ptr(new $Uint64(2551601907, 2065781727), 641, false), new extFloat.ptr(new $Uint64(3802183132, 2535403578), 667, false), new extFloat.ptr(new $Uint64(2832847187, 1558426518), 694, false), new extFloat.ptr(new $Uint64(4221271257, 2762425404), 720, false), new extFloat.ptr(new $Uint64(3145092172, 2812560400), 747, false), new extFloat.ptr(new $Uint64(2343276271, 3057687578), 774, false), new extFloat.ptr(new $Uint64(3491753744, 2790753324), 800, false), new extFloat.ptr(new $Uint64(2601559269, 3918606633), 827, false), new extFloat.ptr(new $Uint64(3876625403, 2711358621), 853, false), new extFloat.ptr(new $Uint64(2888311001, 1648096297), 880, false), new extFloat.ptr(new $Uint64(2151959390, 2057817989), 907, false), new extFloat.ptr(new $Uint64(3206669376, 61660461), 933, false), new extFloat.ptr(new $Uint64(2389154863, 1581580175), 960, false), new extFloat.ptr(new $Uint64(3560118173, 2626467905), 986, false), new extFloat.ptr(new $Uint64(2652494738, 3034782633), 1013, false), new extFloat.ptr(new $Uint64(3952525166, 3135207385), 1039, false), new extFloat.ptr(new $Uint64(2944860731, 2616258155), 1066, false)]); - uint64pow10 = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 10), new $Uint64(0, 100), new $Uint64(0, 1000), new $Uint64(0, 10000), new $Uint64(0, 100000), new $Uint64(0, 1000000), new $Uint64(0, 10000000), new $Uint64(0, 100000000), new $Uint64(0, 1000000000), new $Uint64(2, 1410065408), new $Uint64(23, 1215752192), new $Uint64(232, 3567587328), new $Uint64(2328, 1316134912), new $Uint64(23283, 276447232), new $Uint64(232830, 2764472320), new $Uint64(2328306, 1874919424), new $Uint64(23283064, 1569325056), new $Uint64(232830643, 2808348672), new $Uint64(2328306436, 2313682944)]); - float32info = new floatInfo.ptr(23, 8, -127); - float64info = new floatInfo.ptr(52, 11, -1023); - isPrint16 = new sliceType$4([32, 126, 161, 887, 890, 895, 900, 1366, 1369, 1418, 1421, 1479, 1488, 1514, 1520, 1524, 1542, 1563, 1566, 1805, 1808, 1866, 1869, 1969, 1984, 2042, 2048, 2093, 2096, 2139, 2142, 2154, 2208, 2237, 2260, 2444, 2447, 2448, 2451, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2531, 2534, 2557, 2561, 2570, 2575, 2576, 2579, 2617, 2620, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2654, 2662, 2677, 2689, 2745, 2748, 2765, 2768, 2768, 2784, 2787, 2790, 2801, 2809, 2828, 2831, 2832, 2835, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2915, 2918, 2935, 2946, 2954, 2958, 2965, 2969, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3021, 3024, 3024, 3031, 3031, 3046, 3066, 3072, 3129, 3133, 3149, 3157, 3162, 3168, 3171, 3174, 3183, 3192, 3257, 3260, 3277, 3285, 3286, 3294, 3299, 3302, 3314, 3328, 3407, 3412, 3427, 3430, 3455, 3458, 3478, 3482, 3517, 3520, 3526, 3530, 3530, 3535, 3551, 3558, 3567, 3570, 3572, 3585, 3642, 3647, 3675, 3713, 3716, 3719, 3722, 3725, 3725, 3732, 3751, 3754, 3773, 3776, 3789, 3792, 3801, 3804, 3807, 3840, 3948, 3953, 4058, 4096, 4295, 4301, 4301, 4304, 4685, 4688, 4701, 4704, 4749, 4752, 4789, 4792, 4805, 4808, 4885, 4888, 4954, 4957, 4988, 4992, 5017, 5024, 5109, 5112, 5117, 5120, 5788, 5792, 5880, 5888, 5908, 5920, 5942, 5952, 5971, 5984, 6003, 6016, 6109, 6112, 6121, 6128, 6137, 6144, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6443, 6448, 6459, 6464, 6464, 6468, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6622, 6683, 6686, 6780, 6783, 6793, 6800, 6809, 6816, 6829, 6832, 6846, 6912, 6987, 6992, 7036, 7040, 7155, 7164, 7223, 7227, 7241, 7245, 7304, 7360, 7367, 7376, 7417, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8383, 8400, 8432, 8448, 8587, 8592, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11160, 11193, 11197, 11218, 11244, 11247, 11264, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11849, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12590, 12593, 12730, 12736, 12771, 12784, 19893, 19904, 40938, 40960, 42124, 42128, 42182, 42192, 42539, 42560, 42743, 42752, 42935, 42999, 43051, 43056, 43065, 43072, 43127, 43136, 43205, 43214, 43225, 43232, 43261, 43264, 43347, 43359, 43388, 43392, 43481, 43486, 43574, 43584, 43597, 43600, 43609, 43612, 43714, 43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43877, 43888, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64449, 64467, 64831, 64848, 64911, 64914, 64967, 65008, 65021, 65024, 65049, 65056, 65131, 65136, 65276, 65281, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65518, 65532, 65533]); - isNotPrint16 = new sliceType$4([173, 907, 909, 930, 1328, 1376, 1416, 1424, 1757, 2111, 2143, 2229, 2274, 2436, 2473, 2481, 2526, 2564, 2601, 2609, 2612, 2615, 2621, 2653, 2692, 2702, 2706, 2729, 2737, 2740, 2758, 2762, 2816, 2820, 2857, 2865, 2868, 2910, 2948, 2961, 2971, 2973, 3017, 3076, 3085, 3089, 3113, 3141, 3145, 3159, 3204, 3213, 3217, 3241, 3252, 3269, 3273, 3295, 3312, 3332, 3341, 3345, 3397, 3401, 3460, 3506, 3516, 3541, 3543, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3770, 3781, 3783, 3912, 3992, 4029, 4045, 4294, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, 4881, 5760, 5901, 5997, 6001, 6431, 6751, 7674, 8024, 8026, 8028, 8030, 8117, 8133, 8156, 8181, 8335, 11209, 11311, 11359, 11558, 11687, 11695, 11703, 11711, 11719, 11727, 11735, 11743, 11930, 12352, 12687, 12831, 13055, 42927, 43470, 43519, 43815, 43823, 64311, 64317, 64319, 64322, 64325, 65107, 65127, 65141, 65511]); - isPrint32 = new sliceType$5([65536, 65613, 65616, 65629, 65664, 65786, 65792, 65794, 65799, 65843, 65847, 65947, 65952, 65952, 66000, 66045, 66176, 66204, 66208, 66256, 66272, 66299, 66304, 66339, 66349, 66378, 66384, 66426, 66432, 66499, 66504, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66927, 66927, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67640, 67644, 67644, 67647, 67742, 67751, 67759, 67808, 67829, 67835, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68028, 68047, 68050, 68102, 68108, 68147, 68152, 68154, 68159, 68167, 68176, 68184, 68192, 68255, 68288, 68326, 68331, 68342, 68352, 68405, 68409, 68437, 68440, 68466, 68472, 68497, 68505, 68508, 68521, 68527, 68608, 68680, 68736, 68786, 68800, 68850, 68858, 68863, 69216, 69246, 69632, 69709, 69714, 69743, 69759, 69825, 69840, 69864, 69872, 69881, 69888, 69955, 69968, 70006, 70016, 70093, 70096, 70132, 70144, 70206, 70272, 70313, 70320, 70378, 70384, 70393, 70400, 70412, 70415, 70416, 70419, 70457, 70460, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70749, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71133, 71168, 71236, 71248, 71257, 71264, 71276, 71296, 71351, 71360, 71369, 71424, 71449, 71453, 71467, 71472, 71487, 71840, 71922, 71935, 71935, 72192, 72263, 72272, 72323, 72326, 72354, 72384, 72440, 72704, 72773, 72784, 72812, 72816, 72847, 72850, 72886, 72960, 73014, 73018, 73031, 73040, 73049, 73728, 74649, 74752, 74868, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92777, 92782, 92783, 92880, 92909, 92912, 92917, 92928, 92997, 93008, 93047, 93053, 93071, 93952, 94020, 94032, 94078, 94095, 94111, 94176, 94177, 94208, 100332, 100352, 101106, 110592, 110878, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119272, 119296, 119365, 119552, 119638, 119648, 119665, 119808, 119967, 119970, 119970, 119973, 119974, 119977, 120074, 120077, 120134, 120138, 120485, 120488, 120779, 120782, 121483, 121499, 121519, 122880, 122904, 122907, 122922, 124928, 125124, 125127, 125142, 125184, 125258, 125264, 125273, 125278, 125279, 126464, 126500, 126503, 126523, 126530, 126530, 126535, 126548, 126551, 126564, 126567, 126619, 126625, 126651, 126704, 126705, 126976, 127019, 127024, 127123, 127136, 127150, 127153, 127221, 127232, 127244, 127248, 127339, 127344, 127404, 127462, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 128724, 128736, 128748, 128752, 128760, 128768, 128883, 128896, 128980, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 129280, 129291, 129296, 129356, 129360, 129387, 129408, 129431, 129472, 129472, 129488, 129510, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 917760, 917999]); - isNotPrint32 = new sliceType$4([12, 39, 59, 62, 399, 926, 2057, 2102, 2134, 2291, 2564, 2580, 2584, 4285, 4405, 4576, 4626, 4743, 4745, 4750, 4766, 4868, 4905, 4913, 4916, 5210, 5212, 6813, 7177, 7223, 7336, 7431, 7434, 7483, 7486, 9327, 27231, 27482, 27490, 54357, 54429, 54445, 54458, 54460, 54468, 54534, 54549, 54557, 54586, 54591, 54597, 54609, 55968, 57351, 57378, 57381, 60932, 60960, 60963, 60968, 60979, 60984, 60986, 61000, 61002, 61004, 61008, 61011, 61016, 61018, 61020, 61022, 61024, 61027, 61035, 61043, 61048, 61053, 61055, 61066, 61092, 61098, 61632, 61648, 61743, 63807]); - isGraphic = new sliceType$4([160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288]); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/race"] = (function() { - var $pkg = {}, $init, Acquire, Release, ReleaseMerge, Disable, Enable, ReadRange, WriteRange; - Acquire = function(addr) { - var addr; - }; - $pkg.Acquire = Acquire; - Release = function(addr) { - var addr; - }; - $pkg.Release = Release; - ReleaseMerge = function(addr) { - var addr; - }; - $pkg.ReleaseMerge = ReleaseMerge; - Disable = function() { - }; - $pkg.Disable = Disable; - Enable = function() { - }; - $pkg.Enable = Enable; - ReadRange = function(addr, len) { - var addr, len; - }; - $pkg.ReadRange = ReadRange; - WriteRange = function(addr, len) { - var addr, len; - }; - $pkg.WriteRange = WriteRange; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["sync/atomic"] = (function() { - var $pkg = {}, $init, js, Value, ptrType, CompareAndSwapInt32, CompareAndSwapUint64, AddInt32, AddUint32, LoadInt32, LoadUint32, LoadUint64, StoreInt32, StoreUint32; - js = $packages["github.com/gopherjs/gopherjs/js"]; - Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) { - this.$val = this; - if (arguments.length === 0) { - this.v = $ifaceNil; - return; - } - this.v = v_; - }); - ptrType = $ptrType(Value); - CompareAndSwapInt32 = function(addr, old, new$1) { - var addr, new$1, old; - if (addr.$get() === old) { - addr.$set(new$1); - return true; - } - return false; - }; - $pkg.CompareAndSwapInt32 = CompareAndSwapInt32; - CompareAndSwapUint64 = function(addr, old, new$1) { - var addr, new$1, old, x; - if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) { - addr.$set(new$1); - return true; - } - return false; - }; - $pkg.CompareAndSwapUint64 = CompareAndSwapUint64; - AddInt32 = function(addr, delta) { - var addr, delta, new$1; - new$1 = addr.$get() + delta >> 0; - addr.$set(new$1); - return new$1; - }; - $pkg.AddInt32 = AddInt32; - AddUint32 = function(addr, delta) { - var addr, delta, new$1; - new$1 = addr.$get() + delta >>> 0; - addr.$set(new$1); - return new$1; - }; - $pkg.AddUint32 = AddUint32; - LoadInt32 = function(addr) { - var addr; - return addr.$get(); - }; - $pkg.LoadInt32 = LoadInt32; - LoadUint32 = function(addr) { - var addr; - return addr.$get(); - }; - $pkg.LoadUint32 = LoadUint32; - LoadUint64 = function(addr) { - var addr; - return addr.$get(); - }; - $pkg.LoadUint64 = LoadUint64; - StoreInt32 = function(addr, val) { - var addr, val; - addr.$set(val); - }; - $pkg.StoreInt32 = StoreInt32; - StoreUint32 = function(addr, val) { - var addr, val; - addr.$set(val); - }; - $pkg.StoreUint32 = StoreUint32; - Value.ptr.prototype.Load = function() { - var v, x; - x = $ifaceNil; - v = this; - x = v.v; - return x; - }; - Value.prototype.Load = function() { return this.$val.Load(); }; - Value.ptr.prototype.Store = function(x) { - var v, x; - v = this; - if ($interfaceIsEqual(x, $ifaceNil)) { - $panic(new $String("sync/atomic: store of nil value into Value")); - } - if (!($interfaceIsEqual(v.v, $ifaceNil)) && !(x.constructor === v.v.constructor)) { - $panic(new $String("sync/atomic: store of inconsistently typed value into Value")); - } - v.v = x; - }; - Value.prototype.Store = function(x) { return this.$val.Store(x); }; - ptrType.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}]; - Value.init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["sync"] = (function() { - var $pkg = {}, $init, js, race, runtime, atomic, Pool, Mutex, Locker, Once, poolLocalInternal, poolLocal, notifyList, RWMutex, rlocker, ptrType, sliceType, ptrType$1, chanType, sliceType$1, ptrType$6, ptrType$7, sliceType$4, ptrType$8, ptrType$9, funcType, ptrType$16, funcType$2, ptrType$17, arrayType$2, semWaiters, semAwoken, expunged, allPools, runtime_registerPoolCleanup, runtime_SemacquireMutex, runtime_Semrelease, runtime_notifyListCheck, runtime_canSpin, runtime_nanotime, throw$1, poolCleanup, init, indexLocal, init$1, runtime_doSpin; - js = $packages["github.com/gopherjs/gopherjs/js"]; - race = $packages["internal/race"]; - runtime = $packages["runtime"]; - atomic = $packages["sync/atomic"]; - Pool = $pkg.Pool = $newType(0, $kindStruct, "sync.Pool", true, "sync", true, function(local_, localSize_, store_, New_) { - this.$val = this; - if (arguments.length === 0) { - this.local = 0; - this.localSize = 0; - this.store = sliceType$4.nil; - this.New = $throwNilPointerError; - return; - } - this.local = local_; - this.localSize = localSize_; - this.store = store_; - this.New = New_; - }); - Mutex = $pkg.Mutex = $newType(0, $kindStruct, "sync.Mutex", true, "sync", true, function(state_, sema_) { - this.$val = this; - if (arguments.length === 0) { - this.state = 0; - this.sema = 0; - return; - } - this.state = state_; - this.sema = sema_; - }); - Locker = $pkg.Locker = $newType(8, $kindInterface, "sync.Locker", true, "sync", true, null); - Once = $pkg.Once = $newType(0, $kindStruct, "sync.Once", true, "sync", true, function(m_, done_) { - this.$val = this; - if (arguments.length === 0) { - this.m = new Mutex.ptr(0, 0); - this.done = 0; - return; - } - this.m = m_; - this.done = done_; - }); - poolLocalInternal = $pkg.poolLocalInternal = $newType(0, $kindStruct, "sync.poolLocalInternal", true, "sync", false, function(private$0_, shared_, Mutex_) { - this.$val = this; - if (arguments.length === 0) { - this.private$0 = $ifaceNil; - this.shared = sliceType$4.nil; - this.Mutex = new Mutex.ptr(0, 0); - return; - } - this.private$0 = private$0_; - this.shared = shared_; - this.Mutex = Mutex_; - }); - poolLocal = $pkg.poolLocal = $newType(0, $kindStruct, "sync.poolLocal", true, "sync", false, function(poolLocalInternal_, pad_) { - this.$val = this; - if (arguments.length === 0) { - this.poolLocalInternal = new poolLocalInternal.ptr($ifaceNil, sliceType$4.nil, new Mutex.ptr(0, 0)); - this.pad = arrayType$2.zero(); - return; - } - this.poolLocalInternal = poolLocalInternal_; - this.pad = pad_; - }); - notifyList = $pkg.notifyList = $newType(0, $kindStruct, "sync.notifyList", true, "sync", false, function(wait_, notify_, lock_, head_, tail_) { - this.$val = this; - if (arguments.length === 0) { - this.wait = 0; - this.notify = 0; - this.lock = 0; - this.head = 0; - this.tail = 0; - return; - } - this.wait = wait_; - this.notify = notify_; - this.lock = lock_; - this.head = head_; - this.tail = tail_; - }); - RWMutex = $pkg.RWMutex = $newType(0, $kindStruct, "sync.RWMutex", true, "sync", true, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { - this.$val = this; - if (arguments.length === 0) { - this.w = new Mutex.ptr(0, 0); - this.writerSem = 0; - this.readerSem = 0; - this.readerCount = 0; - this.readerWait = 0; - return; - } - this.w = w_; - this.writerSem = writerSem_; - this.readerSem = readerSem_; - this.readerCount = readerCount_; - this.readerWait = readerWait_; - }); - rlocker = $pkg.rlocker = $newType(0, $kindStruct, "sync.rlocker", true, "sync", false, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { - this.$val = this; - if (arguments.length === 0) { - this.w = new Mutex.ptr(0, 0); - this.writerSem = 0; - this.readerSem = 0; - this.readerCount = 0; - this.readerWait = 0; - return; - } - this.w = w_; - this.writerSem = writerSem_; - this.readerSem = readerSem_; - this.readerCount = readerCount_; - this.readerWait = readerWait_; - }); - ptrType = $ptrType(Pool); - sliceType = $sliceType(ptrType); - ptrType$1 = $ptrType($Uint32); - chanType = $chanType($Bool, false, false); - sliceType$1 = $sliceType(chanType); - ptrType$6 = $ptrType($Int32); - ptrType$7 = $ptrType(poolLocal); - sliceType$4 = $sliceType($emptyInterface); - ptrType$8 = $ptrType(rlocker); - ptrType$9 = $ptrType(RWMutex); - funcType = $funcType([], [$emptyInterface], false); - ptrType$16 = $ptrType(Mutex); - funcType$2 = $funcType([], [], false); - ptrType$17 = $ptrType(Once); - arrayType$2 = $arrayType($Uint8, 100); - Pool.ptr.prototype.Get = function() { - var _r, p, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - /* */ if (p.store.$length === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (p.store.$length === 0) { */ case 1: - /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!(p.New === $throwNilPointerError)) { */ case 3: - _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 4: - $s = -1; return $ifaceNil; - /* } */ case 2: - x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); - $s = -1; return x$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - Pool.prototype.Get = function() { return this.$val.Get(); }; - Pool.ptr.prototype.Put = function(x) { - var p, x; - p = this; - if ($interfaceIsEqual(x, $ifaceNil)) { - return; - } - p.store = $append(p.store, x); - }; - Pool.prototype.Put = function(x) { return this.$val.Put(x); }; - runtime_registerPoolCleanup = function(cleanup) { - var cleanup; - }; - runtime_SemacquireMutex = function(s, lifo) { - var _entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _key$1, _key$2, _r, ch, lifo, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _r = $f._r; ch = $f.ch; lifo = $f.lifo; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ if (((s.$get() - (_entry = semAwoken[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (((s.$get() - (_entry = semAwoken[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { */ case 1: - ch = new $Chan($Bool, 0); - if (lifo) { - _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: $appendSlice(new sliceType$1([ch]), (_entry$1 = semWaiters[ptrType$1.keyFor(s)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil)) }; - } else { - _key$1 = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$2 = semWaiters[ptrType$1.keyFor(s)], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), ch) }; - } - _r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r[0]; - _key$2 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$2)] = { k: _key$2, v: (_entry$3 = semAwoken[ptrType$1.keyFor(s)], _entry$3 !== undefined ? _entry$3.v : 0) - (1) >>> 0 }; - if ((_entry$4 = semAwoken[ptrType$1.keyFor(s)], _entry$4 !== undefined ? _entry$4.v : 0) === 0) { - delete semAwoken[ptrType$1.keyFor(s)]; - } - /* } */ case 2: - s.$set(s.$get() - (1) >>> 0); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_SemacquireMutex }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._r = _r; $f.ch = ch; $f.lifo = lifo; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - runtime_Semrelease = function(s, handoff) { - var _entry, _entry$1, _key, _key$1, ch, handoff, s, w, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _key$1 = $f._key$1; ch = $f.ch; handoff = $f.handoff; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s.$set(s.$get() + (1) >>> 0); - w = (_entry = semWaiters[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : sliceType$1.nil); - if (w.$length === 0) { - $s = -1; return; - } - ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]); - w = $subslice(w, 1); - _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: w }; - if (w.$length === 0) { - delete semWaiters[ptrType$1.keyFor(s)]; - } - _key$1 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$1)] = { k: _key$1, v: (_entry$1 = semAwoken[ptrType$1.keyFor(s)], _entry$1 !== undefined ? _entry$1.v : 0) + (1) >>> 0 }; - $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._key$1 = _key$1; $f.ch = ch; $f.handoff = handoff; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; - }; - runtime_notifyListCheck = function(size) { - var size; - }; - runtime_canSpin = function(i) { - var i; - return false; - }; - runtime_nanotime = function() { - return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000)); - }; - throw$1 = function(s) { - var s; - $throwRuntimeError($externalize(s, $String)); - }; - Mutex.ptr.prototype.Lock = function() { - var awoke, delta, iter, m, new$1, old, queueLifo, starving, waitStartTime, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; awoke = $f.awoke; delta = $f.delta; iter = $f.iter; m = $f.m; new$1 = $f.new$1; old = $f.old; queueLifo = $f.queueLifo; starving = $f.starving; waitStartTime = $f.waitStartTime; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - m = this; - if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) { - if (false) { - race.Acquire((m)); - } - $s = -1; return; - } - waitStartTime = new $Int64(0, 0); - starving = false; - awoke = false; - iter = 0; - old = m.state; - /* while (true) { */ case 1: - /* */ if (((old & 5) === 1) && runtime_canSpin(iter)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (((old & 5) === 1) && runtime_canSpin(iter)) { */ case 3: - if (!awoke && ((old & 2) === 0) && !(((old >> 3 >> 0) === 0)) && atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, old | 2)) { - awoke = true; - } - runtime_doSpin(); - iter = iter + (1) >> 0; - old = m.state; - /* continue; */ $s = 1; continue; - /* } */ case 4: - new$1 = old; - if ((old & 4) === 0) { - new$1 = new$1 | (1); - } - if (!(((old & 5) === 0))) { - new$1 = new$1 + (8) >> 0; - } - if (starving && !(((old & 1) === 0))) { - new$1 = new$1 | (4); - } - if (awoke) { - if ((new$1 & 2) === 0) { - throw$1("sync: inconsistent mutex state"); - } - new$1 = (new$1 & ~(2)) >> 0; - } - /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 5: - if ((old & 5) === 0) { - /* break; */ $s = 2; continue; - } - queueLifo = !((waitStartTime.$high === 0 && waitStartTime.$low === 0)); - if ((waitStartTime.$high === 0 && waitStartTime.$low === 0)) { - waitStartTime = runtime_nanotime(); - } - $r = runtime_SemacquireMutex((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), queueLifo); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - starving = starving || (x = (x$1 = runtime_nanotime(), new $Int64(x$1.$high - waitStartTime.$high, x$1.$low - waitStartTime.$low)), (x.$high > 0 || (x.$high === 0 && x.$low > 1000000))); - old = m.state; - if (!(((old & 4) === 0))) { - if (!(((old & 3) === 0)) || ((old >> 3 >> 0) === 0)) { - throw$1("sync: inconsistent mutex state"); - } - delta = -7; - if (!starving || ((old >> 3 >> 0) === 1)) { - delta = delta - (4) >> 0; - } - atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), delta); - /* break; */ $s = 2; continue; - } - awoke = true; - iter = 0; - $s = 7; continue; - /* } else { */ case 6: - old = m.state; - /* } */ case 7: - /* } */ $s = 1; continue; case 2: - if (false) { - race.Acquire((m)); - } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Lock }; } $f.awoke = awoke; $f.delta = delta; $f.iter = iter; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.queueLifo = queueLifo; $f.starving = starving; $f.waitStartTime = waitStartTime; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Mutex.prototype.Lock = function() { return this.$val.Lock(); }; - Mutex.ptr.prototype.Unlock = function() { - var m, new$1, old, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - m = this; - if (false) { - $unused(m.state); - race.Release((m)); - } - new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1); - if ((((new$1 + 1 >> 0)) & 1) === 0) { - throw$1("sync: unlock of unlocked mutex"); - } - /* */ if ((new$1 & 4) === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((new$1 & 4) === 0) { */ case 1: - old = new$1; - /* while (true) { */ case 4: - if (((old >> 3 >> 0) === 0) || !(((old & 7) === 0))) { - $s = -1; return; - } - new$1 = ((old - 8 >> 0)) | 2; - /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 6: - $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), false); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 7: - old = m.state; - /* } */ $s = 4; continue; case 5: - $s = 3; continue; - /* } else { */ case 2: - $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), true); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 3: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Unlock }; } $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f; - }; - Mutex.prototype.Unlock = function() { return this.$val.Unlock(); }; - Once.ptr.prototype.Do = function(f) { - var f, o, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - o = this; - if (atomic.LoadUint32((o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 1) { - $s = -1; return; - } - $r = o.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(o.m, "Unlock"), []]); - /* */ if (o.done === 0) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (o.done === 0) { */ case 2: - $deferred.push([atomic.StoreUint32, [(o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o))), 1]]); - $r = f(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 3: - $s = -1; return; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Once.prototype.Do = function(f) { return this.$val.Do(f); }; - poolCleanup = function() { - var _i, _i$1, _ref, _ref$1, i, i$1, j, l, p, x; - _ref = allPools; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - ((i < 0 || i >= allPools.$length) ? ($throwRuntimeError("index out of range"), undefined) : allPools.$array[allPools.$offset + i] = ptrType.nil); - i$1 = 0; - while (true) { - if (!(i$1 < ((p.localSize >> 0)))) { break; } - l = indexLocal(p.local, i$1); - l.poolLocalInternal.private$0 = $ifaceNil; - _ref$1 = l.poolLocalInternal.shared; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - j = _i$1; - (x = l.poolLocalInternal.shared, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j] = $ifaceNil)); - _i$1++; - } - l.poolLocalInternal.shared = sliceType$4.nil; - i$1 = i$1 + (1) >> 0; - } - p.local = 0; - p.localSize = 0; - _i++; - } - allPools = new sliceType([]); - }; - init = function() { - runtime_registerPoolCleanup(poolCleanup); - }; - indexLocal = function(l, i) { - var i, l, lp; - lp = (((l) + ($imul(((i >>> 0)), 128) >>> 0) >>> 0)); - return ($pointerOfStructConversion(lp, ptrType$7)); - }; - init$1 = function() { - var n; - n = new notifyList.ptr(0, 0, 0, 0, 0); - runtime_notifyListCheck(20); - }; - runtime_doSpin = function() { - $throwRuntimeError("native function not implemented: sync.runtime_doSpin"); - }; - RWMutex.ptr.prototype.RLock = function() { - var rw, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - rw = this; - if (false) { - $unused(rw.w.state); - race.Disable(); - } - /* */ if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { */ case 1: - $r = runtime_SemacquireMutex((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - if (false) { - race.Enable(); - race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); - } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RLock }; } $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; - }; - RWMutex.prototype.RLock = function() { return this.$val.RLock(); }; - RWMutex.ptr.prototype.RUnlock = function() { - var r, rw, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - rw = this; - if (false) { - $unused(rw.w.state); - race.ReleaseMerge(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); - race.Disable(); - } - r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1); - /* */ if (r < 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (r < 0) { */ case 1: - if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) { - race.Enable(); - throw$1("sync: RUnlock of unlocked RWMutex"); - } - /* */ if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { */ case 3: - $r = runtime_Semrelease((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 4: - /* } */ case 2: - if (false) { - race.Enable(); - } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RUnlock }; } $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; - }; - RWMutex.prototype.RUnlock = function() { return this.$val.RUnlock(); }; - RWMutex.ptr.prototype.Lock = function() { - var r, rw, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - rw = this; - if (false) { - $unused(rw.w.state); - race.Disable(); - } - $r = rw.w.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1073741824) + 1073741824 >> 0; - /* */ if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { */ case 2: - $r = runtime_SemacquireMutex((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 3: - if (false) { - race.Enable(); - race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); - race.Acquire(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); - } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Lock }; } $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; - }; - RWMutex.prototype.Lock = function() { return this.$val.Lock(); }; - RWMutex.ptr.prototype.Unlock = function() { - var i, r, rw, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; i = $f.i; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - rw = this; - if (false) { - $unused(rw.w.state); - race.Release(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); - race.Disable(); - } - r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1073741824); - if (r >= 1073741824) { - race.Enable(); - throw$1("sync: Unlock of unlocked RWMutex"); - } - i = 0; - /* while (true) { */ case 1: - /* if (!(i < ((r >> 0)))) { break; } */ if(!(i < ((r >> 0)))) { $s = 2; continue; } - $r = runtime_Semrelease((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - $r = rw.w.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (false) { - race.Enable(); - } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Unlock }; } $f.i = i; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f; - }; - RWMutex.prototype.Unlock = function() { return this.$val.Unlock(); }; - RWMutex.ptr.prototype.RLocker = function() { - var rw; - rw = this; - return ($pointerOfStructConversion(rw, ptrType$8)); - }; - RWMutex.prototype.RLocker = function() { return this.$val.RLocker(); }; - rlocker.ptr.prototype.Lock = function() { - var r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - $r = ($pointerOfStructConversion(r, ptrType$9)).RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Lock }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - rlocker.prototype.Lock = function() { return this.$val.Lock(); }; - rlocker.ptr.prototype.Unlock = function() { - var r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - $r = ($pointerOfStructConversion(r, ptrType$9)).RUnlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Unlock }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - rlocker.prototype.Unlock = function() { return this.$val.Unlock(); }; - ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "getSlow", name: "getSlow", pkg: "sync", typ: $funcType([], [$emptyInterface], false)}, {prop: "pin", name: "pin", pkg: "sync", typ: $funcType([], [ptrType$7], false)}, {prop: "pinSlow", name: "pinSlow", pkg: "sync", typ: $funcType([], [ptrType$7], false)}]; - ptrType$16.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; - ptrType$17.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$2], [], false)}]; - ptrType$9.methods = [{prop: "RLock", name: "RLock", pkg: "", typ: $funcType([], [], false)}, {prop: "RUnlock", name: "RUnlock", pkg: "", typ: $funcType([], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "RLocker", name: "RLocker", pkg: "", typ: $funcType([], [Locker], false)}]; - ptrType$8.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; - Pool.init("sync", [{prop: "local", name: "local", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "localSize", name: "localSize", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "store", name: "store", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: funcType, tag: ""}]); - Mutex.init("sync", [{prop: "state", name: "state", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "sema", name: "sema", embedded: false, exported: false, typ: $Uint32, tag: ""}]); - Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]); - Once.init("sync", [{prop: "m", name: "m", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: $Uint32, tag: ""}]); - poolLocalInternal.init("sync", [{prop: "private$0", name: "private", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "shared", name: "shared", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: Mutex, tag: ""}]); - poolLocal.init("sync", [{prop: "poolLocalInternal", name: "poolLocalInternal", embedded: true, exported: false, typ: poolLocalInternal, tag: ""}, {prop: "pad", name: "pad", embedded: false, exported: false, typ: arrayType$2, tag: ""}]); - notifyList.init("sync", [{prop: "wait", name: "wait", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "notify", name: "notify", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lock", name: "lock", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "head", name: "head", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}]); - RWMutex.init("sync", [{prop: "w", name: "w", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", embedded: false, exported: false, typ: $Int32, tag: ""}]); - rlocker.init("sync", [{prop: "w", name: "w", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", embedded: false, exported: false, typ: $Int32, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - allPools = sliceType.nil; - semWaiters = {}; - semAwoken = {}; - expunged = (new Uint8Array(8)); - init(); - init$1(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["unicode"] = (function() { - var $pkg = {}, $init, RangeTable, Range16, Range32, CaseRange, d, foldPair, arrayType, sliceType, sliceType$1, ptrType, sliceType$2, sliceType$3, sliceType$4, _C, _Cc, _Cf, _Co, _Cs, _L, _Ll, _Lm, _Lo, _Lt, _Lu, _M, _Mc, _Me, _Mn, _N, _Nd, _Nl, _No, _P, _Pc, _Pd, _Pe, _Pf, _Pi, _Po, _Ps, _S, _Sc, _Sk, _Sm, _So, _Z, _Zl, _Zp, _Zs, _Adlam, _Ahom, _Anatolian_Hieroglyphs, _Arabic, _Armenian, _Avestan, _Balinese, _Bamum, _Bassa_Vah, _Batak, _Bengali, _Bhaiksuki, _Bopomofo, _Brahmi, _Braille, _Buginese, _Buhid, _Canadian_Aboriginal, _Carian, _Caucasian_Albanian, _Chakma, _Cham, _Cherokee, _Common, _Coptic, _Cuneiform, _Cypriot, _Cyrillic, _Deseret, _Devanagari, _Duployan, _Egyptian_Hieroglyphs, _Elbasan, _Ethiopic, _Georgian, _Glagolitic, _Gothic, _Grantha, _Greek, _Gujarati, _Gurmukhi, _Han, _Hangul, _Hanunoo, _Hatran, _Hebrew, _Hiragana, _Imperial_Aramaic, _Inherited, _Inscriptional_Pahlavi, _Inscriptional_Parthian, _Javanese, _Kaithi, _Kannada, _Katakana, _Kayah_Li, _Kharoshthi, _Khmer, _Khojki, _Khudawadi, _Lao, _Latin, _Lepcha, _Limbu, _Linear_A, _Linear_B, _Lisu, _Lycian, _Lydian, _Mahajani, _Malayalam, _Mandaic, _Manichaean, _Marchen, _Masaram_Gondi, _Meetei_Mayek, _Mende_Kikakui, _Meroitic_Cursive, _Meroitic_Hieroglyphs, _Miao, _Modi, _Mongolian, _Mro, _Multani, _Myanmar, _Nabataean, _New_Tai_Lue, _Newa, _Nko, _Nushu, _Ogham, _Ol_Chiki, _Old_Hungarian, _Old_Italic, _Old_North_Arabian, _Old_Permic, _Old_Persian, _Old_South_Arabian, _Old_Turkic, _Oriya, _Osage, _Osmanya, _Pahawh_Hmong, _Palmyrene, _Pau_Cin_Hau, _Phags_Pa, _Phoenician, _Psalter_Pahlavi, _Rejang, _Runic, _Samaritan, _Saurashtra, _Sharada, _Shavian, _Siddham, _SignWriting, _Sinhala, _Sora_Sompeng, _Soyombo, _Sundanese, _Syloti_Nagri, _Syriac, _Tagalog, _Tagbanwa, _Tai_Le, _Tai_Tham, _Tai_Viet, _Takri, _Tamil, _Tangut, _Telugu, _Thaana, _Thai, _Tibetan, _Tifinagh, _Tirhuta, _Ugaritic, _Vai, _Warang_Citi, _Yi, _Zanabazar_Square, _CaseRanges, properties, asciiFold, caseOrbit, foldL, foldLl, foldLt, foldLu, foldM, foldMn, foldCommon, foldGreek, foldInherited, to, IsDigit, IsPrint, In, IsLetter, is16, is32, Is, isExcludingLatin, To, ToUpper, ToLower, SimpleFold; - RangeTable = $pkg.RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", true, "unicode", true, function(R16_, R32_, LatinOffset_) { - this.$val = this; - if (arguments.length === 0) { - this.R16 = sliceType.nil; - this.R32 = sliceType$1.nil; - this.LatinOffset = 0; - return; - } - this.R16 = R16_; - this.R32 = R32_; - this.LatinOffset = LatinOffset_; - }); - Range16 = $pkg.Range16 = $newType(0, $kindStruct, "unicode.Range16", true, "unicode", true, function(Lo_, Hi_, Stride_) { - this.$val = this; - if (arguments.length === 0) { - this.Lo = 0; - this.Hi = 0; - this.Stride = 0; - return; - } - this.Lo = Lo_; - this.Hi = Hi_; - this.Stride = Stride_; - }); - Range32 = $pkg.Range32 = $newType(0, $kindStruct, "unicode.Range32", true, "unicode", true, function(Lo_, Hi_, Stride_) { - this.$val = this; - if (arguments.length === 0) { - this.Lo = 0; - this.Hi = 0; - this.Stride = 0; - return; - } - this.Lo = Lo_; - this.Hi = Hi_; - this.Stride = Stride_; - }); - CaseRange = $pkg.CaseRange = $newType(0, $kindStruct, "unicode.CaseRange", true, "unicode", true, function(Lo_, Hi_, Delta_) { - this.$val = this; - if (arguments.length === 0) { - this.Lo = 0; - this.Hi = 0; - this.Delta = arrayType.zero(); - return; - } - this.Lo = Lo_; - this.Hi = Hi_; - this.Delta = Delta_; - }); - d = $pkg.d = $newType(12, $kindArray, "unicode.d", true, "unicode", false, null); - foldPair = $pkg.foldPair = $newType(0, $kindStruct, "unicode.foldPair", true, "unicode", false, function(From_, To_) { - this.$val = this; - if (arguments.length === 0) { - this.From = 0; - this.To = 0; - return; - } - this.From = From_; - this.To = To_; - }); - arrayType = $arrayType($Int32, 3); - sliceType = $sliceType(Range16); - sliceType$1 = $sliceType(Range32); - ptrType = $ptrType(RangeTable); - sliceType$2 = $sliceType(ptrType); - sliceType$3 = $sliceType(CaseRange); - sliceType$4 = $sliceType(foldPair); - to = function(_case, r, caseRange) { - var _case, _q, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, caseRange, cr, delta, foundMapping, hi, lo, m, mappedRune, r, x; - mappedRune = 0; - foundMapping = false; - if (_case < 0 || 3 <= _case) { - _tmp = 65533; - _tmp$1 = false; - mappedRune = _tmp; - foundMapping = _tmp$1; - return [mappedRune, foundMapping]; - } - lo = 0; - hi = caseRange.$length; - while (true) { - if (!(lo < hi)) { break; } - m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - cr = ((m < 0 || m >= caseRange.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseRange.$array[caseRange.$offset + m]); - if (((cr.Lo >> 0)) <= r && r <= ((cr.Hi >> 0))) { - delta = ((x = cr.Delta, ((_case < 0 || _case >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_case]))); - if (delta > 1114111) { - _tmp$2 = ((cr.Lo >> 0)) + ((((((r - ((cr.Lo >> 0)) >> 0)) & ~1) >> 0) | (((_case & 1) >> 0)))) >> 0; - _tmp$3 = true; - mappedRune = _tmp$2; - foundMapping = _tmp$3; - return [mappedRune, foundMapping]; - } - _tmp$4 = r + delta >> 0; - _tmp$5 = true; - mappedRune = _tmp$4; - foundMapping = _tmp$5; - return [mappedRune, foundMapping]; - } - if (r < ((cr.Lo >> 0))) { - hi = m; - } else { - lo = m + 1 >> 0; - } - } - _tmp$6 = r; - _tmp$7 = false; - mappedRune = _tmp$6; - foundMapping = _tmp$7; - return [mappedRune, foundMapping]; - }; - IsDigit = function(r) { - var r; - if (r <= 255) { - return 48 <= r && r <= 57; - } - return isExcludingLatin($pkg.Digit, r); - }; - $pkg.IsDigit = IsDigit; - IsPrint = function(r) { - var r, x; - if (((r >>> 0)) <= 255) { - return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 128) >>> 0) === 0)); - } - return In(r, $pkg.PrintRanges); - }; - $pkg.IsPrint = IsPrint; - In = function(r, ranges) { - var _i, _ref, inside, r, ranges; - _ref = ranges; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - inside = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (Is(inside, r)) { - return true; - } - _i++; - } - return false; - }; - $pkg.In = In; - IsLetter = function(r) { - var r, x; - if (((r >>> 0)) <= 255) { - return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 96) >>> 0) === 0)); - } - return isExcludingLatin($pkg.Letter, r); - }; - $pkg.IsLetter = IsLetter; - is16 = function(ranges, r) { - var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges; - if (ranges.$length <= 18 || r <= 255) { - _ref = ranges; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]); - if (r < range_.Lo) { - return false; - } - if (r <= range_.Hi) { - return (range_.Stride === 1) || ((_r = ((r - range_.Lo << 16 >>> 16)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0); - } - _i++; - } - return false; - } - lo = 0; - hi = ranges.$length; - while (true) { - if (!(lo < hi)) { break; } - m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - range_$1 = ((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]); - if (range_$1.Lo <= r && r <= range_$1.Hi) { - return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo << 16 >>> 16)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0); - } - if (r < range_$1.Lo) { - hi = m; - } else { - lo = m + 1 >> 0; - } - } - return false; - }; - is32 = function(ranges, r) { - var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges; - if (ranges.$length <= 18) { - _ref = ranges; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]); - if (r < range_.Lo) { - return false; - } - if (r <= range_.Hi) { - return (range_.Stride === 1) || ((_r = ((r - range_.Lo >>> 0)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0); - } - _i++; - } - return false; - } - lo = 0; - hi = ranges.$length; - while (true) { - if (!(lo < hi)) { break; } - m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - range_$1 = $clone(((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]), Range32); - if (range_$1.Lo <= r && r <= range_$1.Hi) { - return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo >>> 0)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0); - } - if (r < range_$1.Lo) { - hi = m; - } else { - lo = m + 1 >> 0; - } - } - return false; - }; - Is = function(rangeTab, r) { - var r, r16, r32, rangeTab, x; - r16 = rangeTab.R16; - if (r16.$length > 0 && r <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >> 0))) { - return is16(r16, ((r << 16 >>> 16))); - } - r32 = rangeTab.R32; - if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) { - return is32(r32, ((r >>> 0))); - } - return false; - }; - $pkg.Is = Is; - isExcludingLatin = function(rangeTab, r) { - var off, r, r16, r32, rangeTab, x; - r16 = rangeTab.R16; - off = rangeTab.LatinOffset; - if (r16.$length > off && r <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >> 0))) { - return is16($subslice(r16, off), ((r << 16 >>> 16))); - } - r32 = rangeTab.R32; - if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) { - return is32(r32, ((r >>> 0))); - } - return false; - }; - To = function(_case, r) { - var _case, _tuple, r; - _tuple = to(_case, r, $pkg.CaseRanges); - r = _tuple[0]; - return r; - }; - $pkg.To = To; - ToUpper = function(r) { - var r; - if (r <= 127) { - if (97 <= r && r <= 122) { - r = r - (32) >> 0; - } - return r; - } - return To(0, r); - }; - $pkg.ToUpper = ToUpper; - ToLower = function(r) { - var r; - if (r <= 127) { - if (65 <= r && r <= 90) { - r = r + (32) >> 0; - } - return r; - } - return To(1, r); - }; - $pkg.ToLower = ToLower; - SimpleFold = function(r) { - var _q, hi, l, lo, m, r; - if (r < 0 || r > 1114111) { - return r; - } - if (((r >> 0)) < 128) { - return ((((r < 0 || r >= asciiFold.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiFold[r]) >> 0)); - } - lo = 0; - hi = caseOrbit.$length; - while (true) { - if (!(lo < hi)) { break; } - m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - if (((((m < 0 || m >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + m]).From >> 0)) < r) { - lo = m + 1 >> 0; - } else { - hi = m; - } - } - if (lo < caseOrbit.$length && (((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0)) === r)) { - return ((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).To >> 0)); - } - l = ToLower(r); - if (!((l === r))) { - return l; - } - return ToUpper(r); - }; - $pkg.SimpleFold = SimpleFold; - RangeTable.init("", [{prop: "R16", name: "R16", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "R32", name: "R32", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", embedded: false, exported: true, typ: $Int, tag: ""}]); - Range16.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", embedded: false, exported: true, typ: $Uint16, tag: ""}]); - Range32.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - CaseRange.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", embedded: false, exported: true, typ: d, tag: ""}]); - d.init($Int32, 3); - foldPair.init("", [{prop: "From", name: "From", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "To", name: "To", embedded: false, exported: true, typ: $Uint16, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _C = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 31, 1), new Range16.ptr(127, 159, 1), new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 2274, 467), new Range16.ptr(6158, 8203, 2045), new Range16.ptr(8204, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(55296, 63743, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1), new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 2); - _Cc = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 31, 1), new Range16.ptr(127, 159, 1)]), sliceType$1.nil, 2); - _Cf = new RangeTable.ptr(new sliceType([new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 2274, 467), new Range16.ptr(6158, 8203, 2045), new Range16.ptr(8204, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1)]), 0); - _Co = new RangeTable.ptr(new sliceType([new Range16.ptr(57344, 63743, 1)]), new sliceType$1([new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 0); - _Cs = new RangeTable.ptr(new sliceType([new Range16.ptr(55296, 57343, 1)]), sliceType$1.nil, 0); - _L = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 181, 11), new Range16.ptr(186, 192, 6), new Range16.ptr(193, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(880, 884, 1), new Range16.ptr(886, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 929, 1), new Range16.ptr(931, 1013, 1), new Range16.ptr(1015, 1153, 1), new Range16.ptr(1162, 1327, 1), new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1377, 8), new Range16.ptr(1378, 1415, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1765, 16), new Range16.ptr(1766, 1774, 8), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2048, 6), new Range16.ptr(2049, 2069, 1), new Range16.ptr(2074, 2084, 10), new Range16.ptr(2088, 2112, 24), new Range16.ptr(2113, 2136, 1), new Range16.ptr(2144, 2154, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2417, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2556, 2565, 9), new Range16.ptr(2566, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2809, 2821, 12), new Range16.ptr(2822, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3162, 1), new Range16.ptr(3168, 3169, 1), new Range16.ptr(3200, 3205, 5), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3412, 3414, 1), new Range16.ptr(3423, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3654, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3782, 3804, 22), new Range16.ptr(3805, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4256, 18), new Range16.ptr(4257, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5024, 5109, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6103, 6108, 5), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6276, 1), new Range16.ptr(6279, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6823, 6917, 94), new Range16.ptr(6918, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7293, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(7424, 7615, 1), new Range16.ptr(7680, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8032, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8124, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8140, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8160, 8172, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8188, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8458, 8467, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8495, 8505, 1), new Range16.ptr(8508, 8511, 1), new Range16.ptr(8517, 8521, 1), new Range16.ptr(8526, 8579, 53), new Range16.ptr(8580, 11264, 2684), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11360, 11492, 1), new Range16.ptr(11499, 11502, 1), new Range16.ptr(11506, 11507, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11648, 17), new Range16.ptr(11649, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(11823, 12293, 470), new Range16.ptr(12294, 12337, 43), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12348, 1), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1), new Range16.ptr(12449, 12538, 1), new Range16.ptr(12540, 12543, 1), new Range16.ptr(12549, 12590, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(40960, 42124, 1), new Range16.ptr(42192, 42237, 1), new Range16.ptr(42240, 42508, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42560, 42606, 1), new Range16.ptr(42623, 42653, 1), new Range16.ptr(42656, 42725, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42786, 42888, 1), new Range16.ptr(42891, 42926, 1), new Range16.ptr(42928, 42935, 1), new Range16.ptr(42999, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43261, 2), new Range16.ptr(43274, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43471, 43488, 17), new Range16.ptr(43489, 43492, 1), new Range16.ptr(43494, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43741, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43764, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43877, 1), new Range16.ptr(43888, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1), new Range16.ptr(65382, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66349, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66560, 66717, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70108, 2), new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70282, 2), new Range32.ptr(70283, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70312, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70480, 19), new Range32.ptr(70493, 70497, 1), new Range32.ptr(70656, 70708, 1), new Range32.ptr(70727, 70730, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71128, 71131, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71424, 71449, 1), new Range32.ptr(71840, 71903, 1), new Range32.ptr(71935, 72192, 257), new Range32.ptr(72203, 72242, 1), new Range32.ptr(72250, 72272, 22), new Range32.ptr(72284, 72323, 1), new Range32.ptr(72326, 72329, 1), new Range32.ptr(72384, 72440, 1), new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72750, 1), new Range32.ptr(72768, 72818, 50), new Range32.ptr(72819, 72847, 1), new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73008, 1), new Range32.ptr(73030, 73728, 698), new Range32.ptr(73729, 74649, 1), new Range32.ptr(74880, 75075, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(82944, 83526, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(92992, 92995, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94099, 67), new Range32.ptr(94100, 94111, 1), new Range32.ptr(94176, 94177, 1), new Range32.ptr(94208, 100332, 1), new Range32.ptr(100352, 101106, 1), new Range32.ptr(110592, 110878, 1), new Range32.ptr(110960, 111355, 1), new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120570, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120628, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120686, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120744, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120779, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(125184, 125251, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 6); - _Ll = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 311, 2), new Range16.ptr(312, 328, 2), new Range16.ptr(329, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(397, 402, 5), new Range16.ptr(405, 409, 4), new Range16.ptr(410, 411, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 426, 2), new Range16.ptr(427, 429, 2), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(442, 445, 3), new Range16.ptr(446, 447, 1), new Range16.ptr(454, 460, 3), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(496, 499, 3), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 563, 2), new Range16.ptr(564, 569, 1), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 659, 1), new Range16.ptr(661, 687, 1), new Range16.ptr(881, 883, 2), new Range16.ptr(887, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(912, 940, 28), new Range16.ptr(941, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1020, 1072, 52), new Range16.ptr(1073, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1415, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7424, 7467, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7578, 1), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7830, 7837, 1), new Range16.ptr(7839, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8112, 8116, 1), new Range16.ptr(8118, 8119, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8135, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8151, 1), new Range16.ptr(8160, 8167, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8183, 1), new Range16.ptr(8458, 8462, 4), new Range16.ptr(8463, 8467, 4), new Range16.ptr(8495, 8505, 5), new Range16.ptr(8508, 8509, 1), new Range16.ptr(8518, 8521, 1), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11377, 11379, 2), new Range16.ptr(11380, 11382, 2), new Range16.ptr(11383, 11387, 1), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11492, 11500, 8), new Range16.ptr(11502, 11507, 5), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42800, 42801, 1), new Range16.ptr(42803, 42865, 2), new Range16.ptr(42866, 42872, 1), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42894, 2), new Range16.ptr(42897, 42899, 2), new Range16.ptr(42900, 42901, 1), new Range16.ptr(42903, 42921, 2), new Range16.ptr(42933, 42935, 2), new Range16.ptr(43002, 43824, 822), new Range16.ptr(43825, 43866, 1), new Range16.ptr(43872, 43877, 1), new Range16.ptr(43888, 43967, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(71872, 71903, 1), new Range32.ptr(119834, 119859, 1), new Range32.ptr(119886, 119892, 1), new Range32.ptr(119894, 119911, 1), new Range32.ptr(119938, 119963, 1), new Range32.ptr(119990, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120015, 1), new Range32.ptr(120042, 120067, 1), new Range32.ptr(120094, 120119, 1), new Range32.ptr(120146, 120171, 1), new Range32.ptr(120198, 120223, 1), new Range32.ptr(120250, 120275, 1), new Range32.ptr(120302, 120327, 1), new Range32.ptr(120354, 120379, 1), new Range32.ptr(120406, 120431, 1), new Range32.ptr(120458, 120485, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120545, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120603, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120661, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120719, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120777, 1), new Range32.ptr(120779, 125218, 4439), new Range32.ptr(125219, 125251, 1)]), 4); - _Lm = new RangeTable.ptr(new sliceType([new Range16.ptr(688, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(884, 890, 6), new Range16.ptr(1369, 1600, 231), new Range16.ptr(1765, 1766, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2074, 32), new Range16.ptr(2084, 2088, 4), new Range16.ptr(2417, 3654, 1237), new Range16.ptr(3782, 4348, 566), new Range16.ptr(6103, 6211, 108), new Range16.ptr(6823, 7288, 465), new Range16.ptr(7289, 7293, 1), new Range16.ptr(7468, 7530, 1), new Range16.ptr(7544, 7579, 35), new Range16.ptr(7580, 7615, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(11388, 11389, 1), new Range16.ptr(11631, 11823, 192), new Range16.ptr(12293, 12337, 44), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12445, 98), new Range16.ptr(12446, 12540, 94), new Range16.ptr(12541, 12542, 1), new Range16.ptr(40981, 42232, 1251), new Range16.ptr(42233, 42237, 1), new Range16.ptr(42508, 42623, 115), new Range16.ptr(42652, 42653, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42864, 42888, 24), new Range16.ptr(43000, 43001, 1), new Range16.ptr(43471, 43494, 23), new Range16.ptr(43632, 43741, 109), new Range16.ptr(43763, 43764, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(65392, 65438, 46), new Range16.ptr(65439, 65439, 1)]), new sliceType$1([new Range32.ptr(92992, 92992, 1), new Range32.ptr(92993, 92995, 1), new Range32.ptr(94099, 94111, 1), new Range32.ptr(94176, 94177, 1)]), 0); - _Lo = new RangeTable.ptr(new sliceType([new Range16.ptr(170, 186, 16), new Range16.ptr(443, 448, 5), new Range16.ptr(449, 451, 1), new Range16.ptr(660, 1488, 828), new Range16.ptr(1489, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1774, 25), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2048, 2069, 1), new Range16.ptr(2112, 2136, 1), new Range16.ptr(2144, 2154, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2418, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2556, 2565, 9), new Range16.ptr(2566, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2809, 2821, 12), new Range16.ptr(2822, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3162, 1), new Range16.ptr(3168, 3169, 1), new Range16.ptr(3200, 3205, 5), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3412, 3414, 1), new Range16.ptr(3423, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3653, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3804, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4304, 66), new Range16.ptr(4305, 4346, 1), new Range16.ptr(4349, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6108, 6176, 68), new Range16.ptr(6177, 6210, 1), new Range16.ptr(6212, 6263, 1), new Range16.ptr(6272, 6276, 1), new Range16.ptr(6279, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6917, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7287, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(8501, 8504, 1), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11648, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(12294, 12348, 54), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12447, 12449, 2), new Range16.ptr(12450, 12538, 1), new Range16.ptr(12543, 12549, 6), new Range16.ptr(12550, 12590, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(40960, 40980, 1), new Range16.ptr(40982, 42124, 1), new Range16.ptr(42192, 42231, 1), new Range16.ptr(42240, 42507, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42606, 42656, 50), new Range16.ptr(42657, 42725, 1), new Range16.ptr(42895, 42999, 104), new Range16.ptr(43003, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43261, 2), new Range16.ptr(43274, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43488, 43492, 1), new Range16.ptr(43495, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43631, 1), new Range16.ptr(43633, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43740, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43777, 15), new Range16.ptr(43778, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43968, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1), new Range16.ptr(65440, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66349, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66640, 66717, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70108, 2), new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70282, 2), new Range32.ptr(70283, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70312, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70480, 19), new Range32.ptr(70493, 70497, 1), new Range32.ptr(70656, 70708, 1), new Range32.ptr(70727, 70730, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71128, 71131, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71424, 71449, 1), new Range32.ptr(71935, 72192, 257), new Range32.ptr(72203, 72242, 1), new Range32.ptr(72250, 72272, 22), new Range32.ptr(72284, 72323, 1), new Range32.ptr(72326, 72329, 1), new Range32.ptr(72384, 72440, 1), new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72750, 1), new Range32.ptr(72768, 72818, 50), new Range32.ptr(72819, 72847, 1), new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73008, 1), new Range32.ptr(73030, 73728, 698), new Range32.ptr(73729, 74649, 1), new Range32.ptr(74880, 75075, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(82944, 83526, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94208, 176), new Range32.ptr(94209, 100332, 1), new Range32.ptr(100352, 101106, 1), new Range32.ptr(110592, 110878, 1), new Range32.ptr(110960, 111355, 1), new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 1); - _Lt = new RangeTable.ptr(new sliceType([new Range16.ptr(453, 459, 3), new Range16.ptr(498, 8072, 7574), new Range16.ptr(8073, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8124, 8140, 16), new Range16.ptr(8188, 8188, 1)]), sliceType$1.nil, 0); - _Lu = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 461, 3), new Range16.ptr(463, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 500, 3), new Range16.ptr(502, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(880, 882, 2), new Range16.ptr(886, 895, 9), new Range16.ptr(902, 904, 2), new Range16.ptr(905, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 978, 3), new Range16.ptr(979, 980, 1), new Range16.ptr(984, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(5024, 5109, 1), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8120, 8123, 1), new Range16.ptr(8136, 8139, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8187, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8459, 8461, 1), new Range16.ptr(8464, 8466, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8496, 8499, 1), new Range16.ptr(8510, 8511, 1), new Range16.ptr(8517, 8579, 62), new Range16.ptr(11264, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42926, 1), new Range16.ptr(42928, 42932, 1), new Range16.ptr(42934, 65313, 22379), new Range16.ptr(65314, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(71840, 71871, 1), new Range32.ptr(119808, 119833, 1), new Range32.ptr(119860, 119885, 1), new Range32.ptr(119912, 119937, 1), new Range32.ptr(119964, 119966, 2), new Range32.ptr(119967, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119989, 1), new Range32.ptr(120016, 120041, 1), new Range32.ptr(120068, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120120, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120172, 120197, 1), new Range32.ptr(120224, 120249, 1), new Range32.ptr(120276, 120301, 1), new Range32.ptr(120328, 120353, 1), new Range32.ptr(120380, 120405, 1), new Range32.ptr(120432, 120457, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120546, 120570, 1), new Range32.ptr(120604, 120628, 1), new Range32.ptr(120662, 120686, 1), new Range32.ptr(120720, 120744, 1), new Range32.ptr(120778, 125184, 4406), new Range32.ptr(125185, 125217, 1)]), 3); - _M = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1161, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2260, 2273, 1), new Range16.ptr(2275, 2307, 1), new Range16.ptr(2362, 2364, 1), new Range16.ptr(2366, 2383, 1), new Range16.ptr(2385, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2435, 1), new Range16.ptr(2492, 2494, 2), new Range16.ptr(2495, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2509, 1), new Range16.ptr(2519, 2530, 11), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2563, 1), new Range16.ptr(2620, 2622, 2), new Range16.ptr(2623, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2691, 1), new Range16.ptr(2748, 2750, 2), new Range16.ptr(2751, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2786, 2787, 1), new Range16.ptr(2810, 2815, 1), new Range16.ptr(2817, 2819, 1), new Range16.ptr(2876, 2878, 2), new Range16.ptr(2879, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3006, 60), new Range16.ptr(3007, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3031, 3072, 41), new Range16.ptr(3073, 3075, 1), new Range16.ptr(3134, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3203, 1), new Range16.ptr(3260, 3262, 2), new Range16.ptr(3263, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3328, 3331, 1), new Range16.ptr(3387, 3388, 1), new Range16.ptr(3390, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3405, 1), new Range16.ptr(3415, 3426, 11), new Range16.ptr(3427, 3458, 31), new Range16.ptr(3459, 3530, 71), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3544, 2), new Range16.ptr(3545, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3633, 3636, 3), new Range16.ptr(3637, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3953, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4139, 101), new Range16.ptr(4140, 4158, 1), new Range16.ptr(4182, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4194, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4237, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4253, 1), new Range16.ptr(4957, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6277, 6278, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6679, 6683, 1), new Range16.ptr(6741, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6846, 1), new Range16.ptr(6912, 6916, 1), new Range16.ptr(6964, 6980, 1), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7042, 1), new Range16.ptr(7073, 7085, 1), new Range16.ptr(7142, 7155, 1), new Range16.ptr(7204, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7400, 1), new Range16.ptr(7405, 7410, 5), new Range16.ptr(7411, 7412, 1), new Range16.ptr(7415, 7417, 1), new Range16.ptr(7616, 7673, 1), new Range16.ptr(7675, 7679, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12335, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42610, 1), new Range16.ptr(42612, 42621, 1), new Range16.ptr(42654, 42655, 1), new Range16.ptr(42736, 42737, 1), new Range16.ptr(43010, 43014, 4), new Range16.ptr(43019, 43043, 24), new Range16.ptr(43044, 43047, 1), new Range16.ptr(43136, 43137, 1), new Range16.ptr(43188, 43205, 1), new Range16.ptr(43232, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43347, 1), new Range16.ptr(43392, 43395, 1), new Range16.ptr(43443, 43456, 1), new Range16.ptr(43493, 43561, 68), new Range16.ptr(43562, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43644, 43645, 1), new Range16.ptr(43696, 43698, 2), new Range16.ptr(43699, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43755, 42), new Range16.ptr(43756, 43759, 1), new Range16.ptr(43765, 43766, 1), new Range16.ptr(44003, 44010, 1), new Range16.ptr(44012, 44013, 1), new Range16.ptr(64286, 65024, 738), new Range16.ptr(65025, 65039, 1), new Range16.ptr(65056, 65071, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69632, 1306), new Range32.ptr(69633, 69634, 1), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69762, 1), new Range32.ptr(69808, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70018, 1), new Range32.ptr(70067, 70080, 1), new Range32.ptr(70090, 70092, 1), new Range32.ptr(70188, 70199, 1), new Range32.ptr(70206, 70367, 161), new Range32.ptr(70368, 70378, 1), new Range32.ptr(70400, 70403, 1), new Range32.ptr(70460, 70462, 2), new Range32.ptr(70463, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70502, 3), new Range32.ptr(70503, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70709, 70726, 1), new Range32.ptr(70832, 70851, 1), new Range32.ptr(71087, 71093, 1), new Range32.ptr(71096, 71104, 1), new Range32.ptr(71132, 71133, 1), new Range32.ptr(71216, 71232, 1), new Range32.ptr(71339, 71351, 1), new Range32.ptr(71453, 71467, 1), new Range32.ptr(72193, 72202, 1), new Range32.ptr(72243, 72249, 1), new Range32.ptr(72251, 72254, 1), new Range32.ptr(72263, 72273, 10), new Range32.ptr(72274, 72283, 1), new Range32.ptr(72330, 72345, 1), new Range32.ptr(72751, 72758, 1), new Range32.ptr(72760, 72767, 1), new Range32.ptr(72850, 72871, 1), new Range32.ptr(72873, 72886, 1), new Range32.ptr(73009, 73014, 1), new Range32.ptr(73018, 73020, 2), new Range32.ptr(73021, 73023, 2), new Range32.ptr(73024, 73029, 1), new Range32.ptr(73031, 92912, 19881), new Range32.ptr(92913, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94033, 94078, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119141, 119145, 1), new Range32.ptr(119149, 119154, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(121344, 121398, 1), new Range32.ptr(121403, 121452, 1), new Range32.ptr(121461, 121476, 15), new Range32.ptr(121499, 121503, 1), new Range32.ptr(121505, 121519, 1), new Range32.ptr(122880, 122886, 1), new Range32.ptr(122888, 122904, 1), new Range32.ptr(122907, 122913, 1), new Range32.ptr(122915, 122916, 1), new Range32.ptr(122918, 122922, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(125252, 125258, 1), new Range32.ptr(917760, 917999, 1)]), 0); - _Mc = new RangeTable.ptr(new sliceType([new Range16.ptr(2307, 2363, 56), new Range16.ptr(2366, 2368, 1), new Range16.ptr(2377, 2380, 1), new Range16.ptr(2382, 2383, 1), new Range16.ptr(2434, 2435, 1), new Range16.ptr(2494, 2496, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2508, 1), new Range16.ptr(2519, 2563, 44), new Range16.ptr(2622, 2624, 1), new Range16.ptr(2691, 2750, 59), new Range16.ptr(2751, 2752, 1), new Range16.ptr(2761, 2763, 2), new Range16.ptr(2764, 2818, 54), new Range16.ptr(2819, 2878, 59), new Range16.ptr(2880, 2887, 7), new Range16.ptr(2888, 2891, 3), new Range16.ptr(2892, 2903, 11), new Range16.ptr(3006, 3007, 1), new Range16.ptr(3009, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3020, 1), new Range16.ptr(3031, 3073, 42), new Range16.ptr(3074, 3075, 1), new Range16.ptr(3137, 3140, 1), new Range16.ptr(3202, 3203, 1), new Range16.ptr(3262, 3264, 2), new Range16.ptr(3265, 3268, 1), new Range16.ptr(3271, 3272, 1), new Range16.ptr(3274, 3275, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3330, 3331, 1), new Range16.ptr(3390, 3392, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3404, 1), new Range16.ptr(3415, 3458, 43), new Range16.ptr(3459, 3535, 76), new Range16.ptr(3536, 3537, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3967, 4139, 172), new Range16.ptr(4140, 4145, 5), new Range16.ptr(4152, 4155, 3), new Range16.ptr(4156, 4182, 26), new Range16.ptr(4183, 4194, 11), new Range16.ptr(4195, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4227, 4228, 1), new Range16.ptr(4231, 4236, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4252, 1), new Range16.ptr(6070, 6078, 8), new Range16.ptr(6079, 6085, 1), new Range16.ptr(6087, 6088, 1), new Range16.ptr(6435, 6438, 1), new Range16.ptr(6441, 6443, 1), new Range16.ptr(6448, 6449, 1), new Range16.ptr(6451, 6456, 1), new Range16.ptr(6681, 6682, 1), new Range16.ptr(6741, 6743, 2), new Range16.ptr(6753, 6755, 2), new Range16.ptr(6756, 6765, 9), new Range16.ptr(6766, 6770, 1), new Range16.ptr(6916, 6965, 49), new Range16.ptr(6971, 6973, 2), new Range16.ptr(6974, 6977, 1), new Range16.ptr(6979, 6980, 1), new Range16.ptr(7042, 7073, 31), new Range16.ptr(7078, 7079, 1), new Range16.ptr(7082, 7143, 61), new Range16.ptr(7146, 7148, 1), new Range16.ptr(7150, 7154, 4), new Range16.ptr(7155, 7204, 49), new Range16.ptr(7205, 7211, 1), new Range16.ptr(7220, 7221, 1), new Range16.ptr(7393, 7410, 17), new Range16.ptr(7411, 7415, 4), new Range16.ptr(12334, 12335, 1), new Range16.ptr(43043, 43044, 1), new Range16.ptr(43047, 43136, 89), new Range16.ptr(43137, 43188, 51), new Range16.ptr(43189, 43203, 1), new Range16.ptr(43346, 43347, 1), new Range16.ptr(43395, 43444, 49), new Range16.ptr(43445, 43450, 5), new Range16.ptr(43451, 43453, 2), new Range16.ptr(43454, 43456, 1), new Range16.ptr(43567, 43568, 1), new Range16.ptr(43571, 43572, 1), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43645, 43755, 110), new Range16.ptr(43758, 43759, 1), new Range16.ptr(43765, 44003, 238), new Range16.ptr(44004, 44006, 2), new Range16.ptr(44007, 44009, 2), new Range16.ptr(44010, 44012, 2)]), new sliceType$1([new Range32.ptr(69632, 69634, 2), new Range32.ptr(69762, 69808, 46), new Range32.ptr(69809, 69810, 1), new Range32.ptr(69815, 69816, 1), new Range32.ptr(69932, 70018, 86), new Range32.ptr(70067, 70069, 1), new Range32.ptr(70079, 70080, 1), new Range32.ptr(70188, 70190, 1), new Range32.ptr(70194, 70195, 1), new Range32.ptr(70197, 70368, 171), new Range32.ptr(70369, 70370, 1), new Range32.ptr(70402, 70403, 1), new Range32.ptr(70462, 70463, 1), new Range32.ptr(70465, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70709, 210), new Range32.ptr(70710, 70711, 1), new Range32.ptr(70720, 70721, 1), new Range32.ptr(70725, 70832, 107), new Range32.ptr(70833, 70834, 1), new Range32.ptr(70841, 70843, 2), new Range32.ptr(70844, 70846, 1), new Range32.ptr(70849, 71087, 238), new Range32.ptr(71088, 71089, 1), new Range32.ptr(71096, 71099, 1), new Range32.ptr(71102, 71216, 114), new Range32.ptr(71217, 71218, 1), new Range32.ptr(71227, 71228, 1), new Range32.ptr(71230, 71340, 110), new Range32.ptr(71342, 71343, 1), new Range32.ptr(71350, 71456, 106), new Range32.ptr(71457, 71462, 5), new Range32.ptr(72199, 72200, 1), new Range32.ptr(72249, 72279, 30), new Range32.ptr(72280, 72343, 63), new Range32.ptr(72751, 72766, 15), new Range32.ptr(72873, 72881, 8), new Range32.ptr(72884, 94033, 21149), new Range32.ptr(94034, 94078, 1), new Range32.ptr(119141, 119142, 1), new Range32.ptr(119149, 119154, 1)]), 0); - _Me = new RangeTable.ptr(new sliceType([new Range16.ptr(1160, 1161, 1), new Range16.ptr(6846, 8413, 1567), new Range16.ptr(8414, 8416, 1), new Range16.ptr(8418, 8420, 1), new Range16.ptr(42608, 42610, 1)]), sliceType$1.nil, 0); - _Mn = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1159, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2260, 2273, 1), new Range16.ptr(2275, 2306, 1), new Range16.ptr(2362, 2364, 2), new Range16.ptr(2369, 2376, 1), new Range16.ptr(2381, 2385, 4), new Range16.ptr(2386, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2492, 59), new Range16.ptr(2497, 2500, 1), new Range16.ptr(2509, 2530, 21), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2620, 58), new Range16.ptr(2625, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2690, 1), new Range16.ptr(2748, 2753, 5), new Range16.ptr(2754, 2757, 1), new Range16.ptr(2759, 2760, 1), new Range16.ptr(2765, 2786, 21), new Range16.ptr(2787, 2810, 23), new Range16.ptr(2811, 2815, 1), new Range16.ptr(2817, 2876, 59), new Range16.ptr(2879, 2881, 2), new Range16.ptr(2882, 2884, 1), new Range16.ptr(2893, 2902, 9), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3008, 62), new Range16.ptr(3021, 3072, 51), new Range16.ptr(3134, 3136, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3260, 59), new Range16.ptr(3263, 3270, 7), new Range16.ptr(3276, 3277, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3328, 3329, 1), new Range16.ptr(3387, 3388, 1), new Range16.ptr(3393, 3396, 1), new Range16.ptr(3405, 3426, 21), new Range16.ptr(3427, 3530, 103), new Range16.ptr(3538, 3540, 1), new Range16.ptr(3542, 3633, 91), new Range16.ptr(3636, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3953, 3966, 1), new Range16.ptr(3968, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4141, 103), new Range16.ptr(4142, 4144, 1), new Range16.ptr(4146, 4151, 1), new Range16.ptr(4153, 4154, 1), new Range16.ptr(4157, 4158, 1), new Range16.ptr(4184, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4229, 3), new Range16.ptr(4230, 4237, 7), new Range16.ptr(4253, 4957, 704), new Range16.ptr(4958, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6069, 1), new Range16.ptr(6071, 6077, 1), new Range16.ptr(6086, 6089, 3), new Range16.ptr(6090, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6277, 6278, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6434, 1), new Range16.ptr(6439, 6440, 1), new Range16.ptr(6450, 6457, 7), new Range16.ptr(6458, 6459, 1), new Range16.ptr(6679, 6680, 1), new Range16.ptr(6683, 6742, 59), new Range16.ptr(6744, 6750, 1), new Range16.ptr(6752, 6754, 2), new Range16.ptr(6757, 6764, 1), new Range16.ptr(6771, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6845, 1), new Range16.ptr(6912, 6915, 1), new Range16.ptr(6964, 6966, 2), new Range16.ptr(6967, 6970, 1), new Range16.ptr(6972, 6978, 6), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7041, 1), new Range16.ptr(7074, 7077, 1), new Range16.ptr(7080, 7081, 1), new Range16.ptr(7083, 7085, 1), new Range16.ptr(7142, 7144, 2), new Range16.ptr(7145, 7149, 4), new Range16.ptr(7151, 7153, 1), new Range16.ptr(7212, 7219, 1), new Range16.ptr(7222, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7412, 7), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7673, 1), new Range16.ptr(7675, 7679, 1), new Range16.ptr(8400, 8412, 1), new Range16.ptr(8417, 8421, 4), new Range16.ptr(8422, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42612, 5), new Range16.ptr(42613, 42621, 1), new Range16.ptr(42654, 42655, 1), new Range16.ptr(42736, 42737, 1), new Range16.ptr(43010, 43014, 4), new Range16.ptr(43019, 43045, 26), new Range16.ptr(43046, 43204, 158), new Range16.ptr(43205, 43232, 27), new Range16.ptr(43233, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43345, 1), new Range16.ptr(43392, 43394, 1), new Range16.ptr(43443, 43446, 3), new Range16.ptr(43447, 43449, 1), new Range16.ptr(43452, 43493, 41), new Range16.ptr(43561, 43566, 1), new Range16.ptr(43569, 43570, 1), new Range16.ptr(43573, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43644, 43696, 52), new Range16.ptr(43698, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43756, 43), new Range16.ptr(43757, 43766, 9), new Range16.ptr(44005, 44008, 3), new Range16.ptr(44013, 64286, 20273), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65071, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69633, 1307), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69761, 1), new Range32.ptr(69811, 69814, 1), new Range32.ptr(69817, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69931, 1), new Range32.ptr(69933, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70070, 53), new Range32.ptr(70071, 70078, 1), new Range32.ptr(70090, 70092, 1), new Range32.ptr(70191, 70193, 1), new Range32.ptr(70196, 70198, 2), new Range32.ptr(70199, 70206, 7), new Range32.ptr(70367, 70371, 4), new Range32.ptr(70372, 70378, 1), new Range32.ptr(70400, 70401, 1), new Range32.ptr(70460, 70464, 4), new Range32.ptr(70502, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70712, 70719, 1), new Range32.ptr(70722, 70724, 1), new Range32.ptr(70726, 70835, 109), new Range32.ptr(70836, 70840, 1), new Range32.ptr(70842, 70847, 5), new Range32.ptr(70848, 70850, 2), new Range32.ptr(70851, 71090, 239), new Range32.ptr(71091, 71093, 1), new Range32.ptr(71100, 71101, 1), new Range32.ptr(71103, 71104, 1), new Range32.ptr(71132, 71133, 1), new Range32.ptr(71219, 71226, 1), new Range32.ptr(71229, 71231, 2), new Range32.ptr(71232, 71339, 107), new Range32.ptr(71341, 71344, 3), new Range32.ptr(71345, 71349, 1), new Range32.ptr(71351, 71453, 102), new Range32.ptr(71454, 71455, 1), new Range32.ptr(71458, 71461, 1), new Range32.ptr(71463, 71467, 1), new Range32.ptr(72193, 72198, 1), new Range32.ptr(72201, 72202, 1), new Range32.ptr(72243, 72248, 1), new Range32.ptr(72251, 72254, 1), new Range32.ptr(72263, 72273, 10), new Range32.ptr(72274, 72278, 1), new Range32.ptr(72281, 72283, 1), new Range32.ptr(72330, 72342, 1), new Range32.ptr(72344, 72345, 1), new Range32.ptr(72752, 72758, 1), new Range32.ptr(72760, 72765, 1), new Range32.ptr(72767, 72850, 83), new Range32.ptr(72851, 72871, 1), new Range32.ptr(72874, 72880, 1), new Range32.ptr(72882, 72883, 1), new Range32.ptr(72885, 72886, 1), new Range32.ptr(73009, 73014, 1), new Range32.ptr(73018, 73020, 2), new Range32.ptr(73021, 73023, 2), new Range32.ptr(73024, 73029, 1), new Range32.ptr(73031, 92912, 19881), new Range32.ptr(92913, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(121344, 121398, 1), new Range32.ptr(121403, 121452, 1), new Range32.ptr(121461, 121476, 15), new Range32.ptr(121499, 121503, 1), new Range32.ptr(121505, 121519, 1), new Range32.ptr(122880, 122886, 1), new Range32.ptr(122888, 122904, 1), new Range32.ptr(122907, 122913, 1), new Range32.ptr(122915, 122916, 1), new Range32.ptr(122918, 122922, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(125252, 125258, 1), new Range32.ptr(917760, 917999, 1)]), 0); - _N = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3046, 3058, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3416, 3422, 1), new Range16.ptr(3430, 3448, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3891, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(5870, 5872, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(8304, 8308, 4), new Range16.ptr(8309, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8578, 1), new Range16.ptr(8581, 8585, 1), new Range16.ptr(9312, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12295, 778), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(12690, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(42726, 42735, 1), new Range16.ptr(43056, 43061, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65856, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(66720, 66729, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67835, 67839, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68028, 68029, 1), new Range32.ptr(68032, 68047, 1), new Range32.ptr(68050, 68095, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(68858, 68863, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70736, 70745, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71472, 71483, 1), new Range32.ptr(71904, 71922, 1), new Range32.ptr(72784, 72812, 1), new Range32.ptr(73040, 73049, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(125264, 125273, 1), new Range32.ptr(127232, 127244, 1)]), 4); - _Nd = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(3046, 3055, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3430, 3439, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3881, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6617, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(66720, 66729, 1), new Range32.ptr(69734, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70736, 70745, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71472, 71481, 1), new Range32.ptr(71904, 71913, 1), new Range32.ptr(72784, 72793, 1), new Range32.ptr(73040, 73049, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125264, 125273, 1)]), 1); - _Nl = new RangeTable.ptr(new sliceType([new Range16.ptr(5870, 5872, 1), new Range16.ptr(8544, 8578, 1), new Range16.ptr(8581, 8584, 1), new Range16.ptr(12295, 12321, 26), new Range16.ptr(12322, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(42726, 42735, 1)]), new sliceType$1([new Range32.ptr(65856, 65908, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(74752, 74862, 1)]), 0); - _No = new RangeTable.ptr(new sliceType([new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3056, 3058, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3416, 3422, 1), new Range16.ptr(3440, 3448, 1), new Range16.ptr(3882, 3891, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6618, 8304, 1686), new Range16.ptr(8308, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8543, 1), new Range16.ptr(8585, 9312, 727), new Range16.ptr(9313, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12690, 1173), new Range16.ptr(12691, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(43056, 43061, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65909, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67835, 67839, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68028, 68029, 1), new Range32.ptr(68032, 68047, 1), new Range32.ptr(68050, 68095, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(68858, 68863, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69733, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(71482, 71483, 1), new Range32.ptr(71914, 71922, 1), new Range32.ptr(72794, 72812, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(127232, 127244, 1)]), 3); - _P = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 42, 1), new Range16.ptr(44, 47, 1), new Range16.ptr(58, 59, 1), new Range16.ptr(63, 64, 1), new Range16.ptr(91, 93, 1), new Range16.ptr(95, 123, 28), new Range16.ptr(125, 161, 36), new Range16.ptr(167, 171, 4), new Range16.ptr(182, 183, 1), new Range16.ptr(187, 191, 4), new Range16.ptr(894, 903, 9), new Range16.ptr(1370, 1375, 1), new Range16.ptr(1417, 1418, 1), new Range16.ptr(1470, 1472, 2), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2557, 2800, 243), new Range16.ptr(3572, 3663, 91), new Range16.ptr(3674, 3675, 1), new Range16.ptr(3844, 3858, 1), new Range16.ptr(3860, 3898, 38), new Range16.ptr(3899, 3901, 1), new Range16.ptr(3973, 4048, 75), new Range16.ptr(4049, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5120, 5741, 621), new Range16.ptr(5742, 5787, 45), new Range16.ptr(5788, 5867, 79), new Range16.ptr(5868, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8208, 829), new Range16.ptr(8209, 8231, 1), new Range16.ptr(8240, 8259, 1), new Range16.ptr(8261, 8273, 1), new Range16.ptr(8275, 8286, 1), new Range16.ptr(8317, 8318, 1), new Range16.ptr(8333, 8334, 1), new Range16.ptr(8968, 8971, 1), new Range16.ptr(9001, 9002, 1), new Range16.ptr(10088, 10101, 1), new Range16.ptr(10181, 10182, 1), new Range16.ptr(10214, 10223, 1), new Range16.ptr(10627, 10648, 1), new Range16.ptr(10712, 10715, 1), new Range16.ptr(10748, 10749, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11822, 1), new Range16.ptr(11824, 11849, 1), new Range16.ptr(12289, 12291, 1), new Range16.ptr(12296, 12305, 1), new Range16.ptr(12308, 12319, 1), new Range16.ptr(12336, 12349, 13), new Range16.ptr(12448, 12539, 91), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43260, 43310, 50), new Range16.ptr(43311, 43359, 48), new Range16.ptr(43457, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 64830, 20819), new Range16.ptr(64831, 65040, 209), new Range16.ptr(65041, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65121, 1), new Range16.ptr(65123, 65128, 5), new Range16.ptr(65130, 65131, 1), new Range16.ptr(65281, 65283, 1), new Range16.ptr(65285, 65290, 1), new Range16.ptr(65292, 65295, 1), new Range16.ptr(65306, 65307, 1), new Range16.ptr(65311, 65312, 1), new Range16.ptr(65339, 65341, 1), new Range16.ptr(65343, 65371, 28), new Range16.ptr(65373, 65375, 2), new Range16.ptr(65376, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70089, 1), new Range32.ptr(70093, 70107, 14), new Range32.ptr(70109, 70111, 1), new Range32.ptr(70200, 70205, 1), new Range32.ptr(70313, 70731, 418), new Range32.ptr(70732, 70735, 1), new Range32.ptr(70747, 70749, 2), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71127, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(71264, 71276, 1), new Range32.ptr(71484, 71486, 1), new Range32.ptr(72255, 72262, 1), new Range32.ptr(72346, 72348, 1), new Range32.ptr(72350, 72354, 1), new Range32.ptr(72769, 72773, 1), new Range32.ptr(72816, 72817, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827), new Range32.ptr(121479, 121483, 1), new Range32.ptr(125278, 125279, 1)]), 11); - _Pc = new RangeTable.ptr(new sliceType([new Range16.ptr(95, 8255, 8160), new Range16.ptr(8256, 8276, 20), new Range16.ptr(65075, 65076, 1), new Range16.ptr(65101, 65103, 1), new Range16.ptr(65343, 65343, 1)]), sliceType$1.nil, 0); - _Pd = new RangeTable.ptr(new sliceType([new Range16.ptr(45, 1418, 1373), new Range16.ptr(1470, 5120, 3650), new Range16.ptr(6150, 8208, 2058), new Range16.ptr(8209, 8213, 1), new Range16.ptr(11799, 11802, 3), new Range16.ptr(11834, 11835, 1), new Range16.ptr(11840, 12316, 476), new Range16.ptr(12336, 12448, 112), new Range16.ptr(65073, 65074, 1), new Range16.ptr(65112, 65123, 11), new Range16.ptr(65293, 65293, 1)]), sliceType$1.nil, 0); - _Pe = new RangeTable.ptr(new sliceType([new Range16.ptr(41, 93, 52), new Range16.ptr(125, 3899, 3774), new Range16.ptr(3901, 5788, 1887), new Range16.ptr(8262, 8318, 56), new Range16.ptr(8334, 8969, 635), new Range16.ptr(8971, 9002, 31), new Range16.ptr(10089, 10101, 2), new Range16.ptr(10182, 10215, 33), new Range16.ptr(10217, 10223, 2), new Range16.ptr(10628, 10648, 2), new Range16.ptr(10713, 10715, 2), new Range16.ptr(10749, 11811, 1062), new Range16.ptr(11813, 11817, 2), new Range16.ptr(12297, 12305, 2), new Range16.ptr(12309, 12315, 2), new Range16.ptr(12318, 12319, 1), new Range16.ptr(64830, 65048, 218), new Range16.ptr(65078, 65092, 2), new Range16.ptr(65096, 65114, 18), new Range16.ptr(65116, 65118, 2), new Range16.ptr(65289, 65341, 52), new Range16.ptr(65373, 65379, 3)]), sliceType$1.nil, 1); - _Pf = new RangeTable.ptr(new sliceType([new Range16.ptr(187, 8217, 8030), new Range16.ptr(8221, 8250, 29), new Range16.ptr(11779, 11781, 2), new Range16.ptr(11786, 11789, 3), new Range16.ptr(11805, 11809, 4)]), sliceType$1.nil, 0); - _Pi = new RangeTable.ptr(new sliceType([new Range16.ptr(171, 8216, 8045), new Range16.ptr(8219, 8220, 1), new Range16.ptr(8223, 8249, 26), new Range16.ptr(11778, 11780, 2), new Range16.ptr(11785, 11788, 3), new Range16.ptr(11804, 11808, 4)]), sliceType$1.nil, 0); - _Po = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 39, 1), new Range16.ptr(42, 46, 2), new Range16.ptr(47, 58, 11), new Range16.ptr(59, 63, 4), new Range16.ptr(64, 92, 28), new Range16.ptr(161, 167, 6), new Range16.ptr(182, 183, 1), new Range16.ptr(191, 894, 703), new Range16.ptr(903, 1370, 467), new Range16.ptr(1371, 1375, 1), new Range16.ptr(1417, 1472, 55), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2557, 2800, 243), new Range16.ptr(3572, 3663, 91), new Range16.ptr(3674, 3675, 1), new Range16.ptr(3844, 3858, 1), new Range16.ptr(3860, 3973, 113), new Range16.ptr(4048, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5741, 5742, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6149, 1), new Range16.ptr(6151, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8214, 835), new Range16.ptr(8215, 8224, 9), new Range16.ptr(8225, 8231, 1), new Range16.ptr(8240, 8248, 1), new Range16.ptr(8251, 8254, 1), new Range16.ptr(8257, 8259, 1), new Range16.ptr(8263, 8273, 1), new Range16.ptr(8275, 8277, 2), new Range16.ptr(8278, 8286, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11782, 5), new Range16.ptr(11783, 11784, 1), new Range16.ptr(11787, 11790, 3), new Range16.ptr(11791, 11798, 1), new Range16.ptr(11800, 11801, 1), new Range16.ptr(11803, 11806, 3), new Range16.ptr(11807, 11818, 11), new Range16.ptr(11819, 11822, 1), new Range16.ptr(11824, 11833, 1), new Range16.ptr(11836, 11839, 1), new Range16.ptr(11841, 11843, 2), new Range16.ptr(11844, 11849, 1), new Range16.ptr(12289, 12291, 1), new Range16.ptr(12349, 12539, 190), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43260, 43310, 50), new Range16.ptr(43311, 43359, 48), new Range16.ptr(43457, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 65040, 21029), new Range16.ptr(65041, 65046, 1), new Range16.ptr(65049, 65072, 23), new Range16.ptr(65093, 65094, 1), new Range16.ptr(65097, 65100, 1), new Range16.ptr(65104, 65106, 1), new Range16.ptr(65108, 65111, 1), new Range16.ptr(65119, 65121, 1), new Range16.ptr(65128, 65130, 2), new Range16.ptr(65131, 65281, 150), new Range16.ptr(65282, 65283, 1), new Range16.ptr(65285, 65287, 1), new Range16.ptr(65290, 65294, 2), new Range16.ptr(65295, 65306, 11), new Range16.ptr(65307, 65311, 4), new Range16.ptr(65312, 65340, 28), new Range16.ptr(65377, 65380, 3), new Range16.ptr(65381, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65792, 1), new Range32.ptr(65793, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70089, 1), new Range32.ptr(70093, 70107, 14), new Range32.ptr(70109, 70111, 1), new Range32.ptr(70200, 70205, 1), new Range32.ptr(70313, 70731, 418), new Range32.ptr(70732, 70735, 1), new Range32.ptr(70747, 70749, 2), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71127, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(71264, 71276, 1), new Range32.ptr(71484, 71486, 1), new Range32.ptr(72255, 72262, 1), new Range32.ptr(72346, 72348, 1), new Range32.ptr(72350, 72354, 1), new Range32.ptr(72769, 72773, 1), new Range32.ptr(72816, 72817, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827), new Range32.ptr(121479, 121483, 1), new Range32.ptr(125278, 125279, 1)]), 8); - _Ps = new RangeTable.ptr(new sliceType([new Range16.ptr(40, 91, 51), new Range16.ptr(123, 3898, 3775), new Range16.ptr(3900, 5787, 1887), new Range16.ptr(8218, 8222, 4), new Range16.ptr(8261, 8317, 56), new Range16.ptr(8333, 8968, 635), new Range16.ptr(8970, 9001, 31), new Range16.ptr(10088, 10100, 2), new Range16.ptr(10181, 10214, 33), new Range16.ptr(10216, 10222, 2), new Range16.ptr(10627, 10647, 2), new Range16.ptr(10712, 10714, 2), new Range16.ptr(10748, 11810, 1062), new Range16.ptr(11812, 11816, 2), new Range16.ptr(11842, 12296, 454), new Range16.ptr(12298, 12304, 2), new Range16.ptr(12308, 12314, 2), new Range16.ptr(12317, 64831, 52514), new Range16.ptr(65047, 65077, 30), new Range16.ptr(65079, 65091, 2), new Range16.ptr(65095, 65113, 18), new Range16.ptr(65115, 65117, 2), new Range16.ptr(65288, 65339, 51), new Range16.ptr(65371, 65375, 4), new Range16.ptr(65378, 65378, 1)]), sliceType$1.nil, 1); - _S = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 43, 7), new Range16.ptr(60, 62, 1), new Range16.ptr(94, 96, 2), new Range16.ptr(124, 126, 2), new Range16.ptr(162, 166, 1), new Range16.ptr(168, 169, 1), new Range16.ptr(172, 174, 2), new Range16.ptr(175, 177, 1), new Range16.ptr(180, 184, 4), new Range16.ptr(215, 247, 32), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 1014, 113), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1423, 1), new Range16.ptr(1542, 1544, 1), new Range16.ptr(1547, 1550, 3), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2554, 2555, 1), new Range16.ptr(2801, 2928, 127), new Range16.ptr(3059, 3066, 1), new Range16.ptr(3199, 3407, 208), new Range16.ptr(3449, 3647, 198), new Range16.ptr(3841, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6107, 6464, 357), new Range16.ptr(6622, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8125, 8127, 2), new Range16.ptr(8128, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8352, 8383, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8472, 1), new Range16.ptr(8478, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8512, 5), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8522, 8525, 1), new Range16.ptr(8527, 8586, 59), new Range16.ptr(8587, 8592, 5), new Range16.ptr(8593, 8967, 1), new Range16.ptr(8972, 9000, 1), new Range16.ptr(9003, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 10087, 1), new Range16.ptr(10132, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11218, 1), new Range16.ptr(11244, 11247, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43065, 1), new Range16.ptr(43639, 43641, 1), new Range16.ptr(43867, 64297, 20430), new Range16.ptr(64434, 64449, 1), new Range16.ptr(65020, 65021, 1), new Range16.ptr(65122, 65124, 2), new Range16.ptr(65125, 65126, 1), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65532, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65934, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 71487, 3191), new Range32.ptr(92988, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119272, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(120832, 121343, 1), new Range32.ptr(121399, 121402, 1), new Range32.ptr(121453, 121460, 1), new Range32.ptr(121462, 121475, 1), new Range32.ptr(121477, 121478, 1), new Range32.ptr(126704, 126705, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127404, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127547, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127584, 127589, 1), new Range32.ptr(127744, 128724, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128760, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(129280, 129291, 1), new Range32.ptr(129296, 129342, 1), new Range32.ptr(129344, 129356, 1), new Range32.ptr(129360, 129387, 1), new Range32.ptr(129408, 129431, 1), new Range32.ptr(129472, 129488, 16), new Range32.ptr(129489, 129510, 1)]), 10); - _Sc = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 162, 126), new Range16.ptr(163, 165, 1), new Range16.ptr(1423, 1547, 124), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2555, 2801, 246), new Range16.ptr(3065, 3647, 582), new Range16.ptr(6107, 8352, 2245), new Range16.ptr(8353, 8383, 1), new Range16.ptr(43064, 65020, 21956), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65504, 65505, 1), new Range16.ptr(65509, 65510, 1)]), sliceType$1.nil, 2); - _Sk = new RangeTable.ptr(new sliceType([new Range16.ptr(94, 96, 2), new Range16.ptr(168, 175, 7), new Range16.ptr(180, 184, 4), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 8125, 7224), new Range16.ptr(8127, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43867, 64434, 20567), new Range16.ptr(64435, 64449, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65507, 65507, 1)]), new sliceType$1([new Range32.ptr(127995, 127995, 1), new Range32.ptr(127996, 127999, 1)]), 3); - _Sm = new RangeTable.ptr(new sliceType([new Range16.ptr(43, 60, 17), new Range16.ptr(61, 62, 1), new Range16.ptr(124, 126, 2), new Range16.ptr(172, 177, 5), new Range16.ptr(215, 247, 32), new Range16.ptr(1014, 1542, 528), new Range16.ptr(1543, 1544, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8472, 8512, 40), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8523, 8592, 69), new Range16.ptr(8593, 8596, 1), new Range16.ptr(8602, 8603, 1), new Range16.ptr(8608, 8614, 3), new Range16.ptr(8622, 8654, 32), new Range16.ptr(8655, 8658, 3), new Range16.ptr(8660, 8692, 32), new Range16.ptr(8693, 8959, 1), new Range16.ptr(8992, 8993, 1), new Range16.ptr(9084, 9115, 31), new Range16.ptr(9116, 9139, 1), new Range16.ptr(9180, 9185, 1), new Range16.ptr(9655, 9665, 10), new Range16.ptr(9720, 9727, 1), new Range16.ptr(9839, 10176, 337), new Range16.ptr(10177, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10239, 1), new Range16.ptr(10496, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11007, 1), new Range16.ptr(11056, 11076, 1), new Range16.ptr(11079, 11084, 1), new Range16.ptr(64297, 65122, 825), new Range16.ptr(65124, 65126, 1), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65506, 65513, 7), new Range16.ptr(65514, 65516, 1)]), new sliceType$1([new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(126704, 126705, 1)]), 5); - _So = new RangeTable.ptr(new sliceType([new Range16.ptr(166, 169, 3), new Range16.ptr(174, 176, 2), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1550, 128), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2554, 2928, 374), new Range16.ptr(3059, 3064, 1), new Range16.ptr(3066, 3199, 133), new Range16.ptr(3407, 3449, 42), new Range16.ptr(3841, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6464, 6622, 158), new Range16.ptr(6623, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8478, 7), new Range16.ptr(8479, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8522, 15), new Range16.ptr(8524, 8525, 1), new Range16.ptr(8527, 8586, 59), new Range16.ptr(8587, 8597, 10), new Range16.ptr(8598, 8601, 1), new Range16.ptr(8604, 8607, 1), new Range16.ptr(8609, 8610, 1), new Range16.ptr(8612, 8613, 1), new Range16.ptr(8615, 8621, 1), new Range16.ptr(8623, 8653, 1), new Range16.ptr(8656, 8657, 1), new Range16.ptr(8659, 8661, 2), new Range16.ptr(8662, 8691, 1), new Range16.ptr(8960, 8967, 1), new Range16.ptr(8972, 8991, 1), new Range16.ptr(8994, 9000, 1), new Range16.ptr(9003, 9083, 1), new Range16.ptr(9085, 9114, 1), new Range16.ptr(9140, 9179, 1), new Range16.ptr(9186, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 9654, 1), new Range16.ptr(9656, 9664, 1), new Range16.ptr(9666, 9719, 1), new Range16.ptr(9728, 9838, 1), new Range16.ptr(9840, 10087, 1), new Range16.ptr(10132, 10175, 1), new Range16.ptr(10240, 10495, 1), new Range16.ptr(11008, 11055, 1), new Range16.ptr(11077, 11078, 1), new Range16.ptr(11085, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11218, 1), new Range16.ptr(11244, 11247, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43063, 1), new Range16.ptr(43065, 43639, 574), new Range16.ptr(43640, 43641, 1), new Range16.ptr(65021, 65508, 487), new Range16.ptr(65512, 65517, 5), new Range16.ptr(65518, 65532, 14), new Range16.ptr(65533, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65847, 1), new Range32.ptr(65848, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65934, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 71487, 3191), new Range32.ptr(92988, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119272, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(120832, 121343, 1), new Range32.ptr(121399, 121402, 1), new Range32.ptr(121453, 121460, 1), new Range32.ptr(121462, 121475, 1), new Range32.ptr(121477, 121478, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127404, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127547, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127584, 127589, 1), new Range32.ptr(127744, 127994, 1), new Range32.ptr(128000, 128724, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128760, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(129280, 129291, 1), new Range32.ptr(129296, 129342, 1), new Range32.ptr(129344, 129356, 1), new Range32.ptr(129360, 129387, 1), new Range32.ptr(129408, 129431, 1), new Range32.ptr(129472, 129488, 16), new Range32.ptr(129489, 129510, 1)]), 2); - _Z = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8232, 8233, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1); - _Zl = new RangeTable.ptr(new sliceType([new Range16.ptr(8232, 8232, 1)]), sliceType$1.nil, 0); - _Zp = new RangeTable.ptr(new sliceType([new Range16.ptr(8233, 8233, 1)]), sliceType$1.nil, 0); - _Zs = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1); - $pkg.Cc = _Cc; - $pkg.Cf = _Cf; - $pkg.Co = _Co; - $pkg.Cs = _Cs; - $pkg.Digit = _Nd; - $pkg.Nd = _Nd; - $pkg.Letter = _L; - $pkg.L = _L; - $pkg.Lm = _Lm; - $pkg.Lo = _Lo; - $pkg.Ll = _Ll; - $pkg.M = _M; - $pkg.Mc = _Mc; - $pkg.Me = _Me; - $pkg.Mn = _Mn; - $pkg.Nl = _Nl; - $pkg.No = _No; - $pkg.N = _N; - $pkg.C = _C; - $pkg.Pc = _Pc; - $pkg.Pd = _Pd; - $pkg.Pe = _Pe; - $pkg.Pf = _Pf; - $pkg.Pi = _Pi; - $pkg.Po = _Po; - $pkg.Ps = _Ps; - $pkg.P = _P; - $pkg.Sc = _Sc; - $pkg.Sk = _Sk; - $pkg.Sm = _Sm; - $pkg.So = _So; - $pkg.Z = _Z; - $pkg.S = _S; - $pkg.PrintRanges = new sliceType$2([$pkg.L, $pkg.M, $pkg.N, $pkg.P, $pkg.S]); - $pkg.Lt = _Lt; - $pkg.Lu = _Lu; - $pkg.Zl = _Zl; - $pkg.Zp = _Zp; - $pkg.Zs = _Zs; - $pkg.Categories = $makeMap($String.keyFor, [{ k: "C", v: $pkg.C }, { k: "Cc", v: $pkg.Cc }, { k: "Cf", v: $pkg.Cf }, { k: "Co", v: $pkg.Co }, { k: "Cs", v: $pkg.Cs }, { k: "L", v: $pkg.L }, { k: "Ll", v: $pkg.Ll }, { k: "Lm", v: $pkg.Lm }, { k: "Lo", v: $pkg.Lo }, { k: "Lt", v: $pkg.Lt }, { k: "Lu", v: $pkg.Lu }, { k: "M", v: $pkg.M }, { k: "Mc", v: $pkg.Mc }, { k: "Me", v: $pkg.Me }, { k: "Mn", v: $pkg.Mn }, { k: "N", v: $pkg.N }, { k: "Nd", v: $pkg.Nd }, { k: "Nl", v: $pkg.Nl }, { k: "No", v: $pkg.No }, { k: "P", v: $pkg.P }, { k: "Pc", v: $pkg.Pc }, { k: "Pd", v: $pkg.Pd }, { k: "Pe", v: $pkg.Pe }, { k: "Pf", v: $pkg.Pf }, { k: "Pi", v: $pkg.Pi }, { k: "Po", v: $pkg.Po }, { k: "Ps", v: $pkg.Ps }, { k: "S", v: $pkg.S }, { k: "Sc", v: $pkg.Sc }, { k: "Sk", v: $pkg.Sk }, { k: "Sm", v: $pkg.Sm }, { k: "So", v: $pkg.So }, { k: "Z", v: $pkg.Z }, { k: "Zl", v: $pkg.Zl }, { k: "Zp", v: $pkg.Zp }, { k: "Zs", v: $pkg.Zs }]); - _Adlam = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(125184, 125258, 1), new Range32.ptr(125264, 125273, 1), new Range32.ptr(125278, 125279, 1)]), 0); - _Ahom = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71424, 71449, 1), new Range32.ptr(71453, 71467, 1), new Range32.ptr(71472, 71487, 1)]), 0); - _Anatolian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(82944, 83526, 1)]), 0); - _Arabic = new RangeTable.ptr(new sliceType([new Range16.ptr(1536, 1540, 1), new Range16.ptr(1542, 1547, 1), new Range16.ptr(1549, 1562, 1), new Range16.ptr(1564, 1564, 1), new Range16.ptr(1566, 1566, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1622, 1647, 1), new Range16.ptr(1649, 1756, 1), new Range16.ptr(1758, 1791, 1), new Range16.ptr(1872, 1919, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2260, 2273, 1), new Range16.ptr(2275, 2303, 1), new Range16.ptr(64336, 64449, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65021, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1)]), new sliceType$1([new Range32.ptr(69216, 69246, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126500, 1), new Range32.ptr(126503, 126503, 1), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126521, 1), new Range32.ptr(126523, 126523, 1), new Range32.ptr(126530, 126530, 1), new Range32.ptr(126535, 126535, 1), new Range32.ptr(126537, 126537, 1), new Range32.ptr(126539, 126539, 1), new Range32.ptr(126541, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126548, 1), new Range32.ptr(126551, 126551, 1), new Range32.ptr(126553, 126553, 1), new Range32.ptr(126555, 126555, 1), new Range32.ptr(126557, 126557, 1), new Range32.ptr(126559, 126559, 1), new Range32.ptr(126561, 126562, 1), new Range32.ptr(126564, 126564, 1), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126590, 1), new Range32.ptr(126592, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(126704, 126705, 1)]), 0); - _Armenian = new RangeTable.ptr(new sliceType([new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1375, 1), new Range16.ptr(1377, 1415, 1), new Range16.ptr(1418, 1418, 1), new Range16.ptr(1421, 1423, 1), new Range16.ptr(64275, 64279, 1)]), sliceType$1.nil, 0); - _Avestan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68352, 68405, 1), new Range32.ptr(68409, 68415, 1)]), 0); - _Balinese = new RangeTable.ptr(new sliceType([new Range16.ptr(6912, 6987, 1), new Range16.ptr(6992, 7036, 1)]), sliceType$1.nil, 0); - _Bamum = new RangeTable.ptr(new sliceType([new Range16.ptr(42656, 42743, 1)]), new sliceType$1([new Range32.ptr(92160, 92728, 1)]), 0); - _Bassa_Vah = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92880, 92909, 1), new Range32.ptr(92912, 92917, 1)]), 0); - _Batak = new RangeTable.ptr(new sliceType([new Range16.ptr(7104, 7155, 1), new Range16.ptr(7164, 7167, 1)]), sliceType$1.nil, 0); - _Bengali = new RangeTable.ptr(new sliceType([new Range16.ptr(2432, 2435, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2482, 1), new Range16.ptr(2486, 2489, 1), new Range16.ptr(2492, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2510, 1), new Range16.ptr(2519, 2519, 1), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2531, 1), new Range16.ptr(2534, 2557, 1)]), sliceType$1.nil, 0); - _Bhaiksuki = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72758, 1), new Range32.ptr(72760, 72773, 1), new Range32.ptr(72784, 72812, 1)]), 0); - _Bopomofo = new RangeTable.ptr(new sliceType([new Range16.ptr(746, 747, 1), new Range16.ptr(12549, 12590, 1), new Range16.ptr(12704, 12730, 1)]), sliceType$1.nil, 0); - _Brahmi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69632, 69709, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69759, 69759, 1)]), 0); - _Braille = new RangeTable.ptr(new sliceType([new Range16.ptr(10240, 10495, 1)]), sliceType$1.nil, 0); - _Buginese = new RangeTable.ptr(new sliceType([new Range16.ptr(6656, 6683, 1), new Range16.ptr(6686, 6687, 1)]), sliceType$1.nil, 0); - _Buhid = new RangeTable.ptr(new sliceType([new Range16.ptr(5952, 5971, 1)]), sliceType$1.nil, 0); - _Canadian_Aboriginal = new RangeTable.ptr(new sliceType([new Range16.ptr(5120, 5759, 1), new Range16.ptr(6320, 6389, 1)]), sliceType$1.nil, 0); - _Carian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66208, 66256, 1)]), 0); - _Caucasian_Albanian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66864, 66915, 1), new Range32.ptr(66927, 66927, 1)]), 0); - _Chakma = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69888, 69940, 1), new Range32.ptr(69942, 69955, 1)]), 0); - _Cham = new RangeTable.ptr(new sliceType([new Range16.ptr(43520, 43574, 1), new Range16.ptr(43584, 43597, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(43612, 43615, 1)]), sliceType$1.nil, 0); - _Cherokee = new RangeTable.ptr(new sliceType([new Range16.ptr(5024, 5109, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(43888, 43967, 1)]), sliceType$1.nil, 0); - _Common = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 64, 1), new Range16.ptr(91, 96, 1), new Range16.ptr(123, 169, 1), new Range16.ptr(171, 185, 1), new Range16.ptr(187, 191, 1), new Range16.ptr(215, 215, 1), new Range16.ptr(247, 247, 1), new Range16.ptr(697, 735, 1), new Range16.ptr(741, 745, 1), new Range16.ptr(748, 767, 1), new Range16.ptr(884, 884, 1), new Range16.ptr(894, 894, 1), new Range16.ptr(901, 901, 1), new Range16.ptr(903, 903, 1), new Range16.ptr(1417, 1417, 1), new Range16.ptr(1541, 1541, 1), new Range16.ptr(1548, 1548, 1), new Range16.ptr(1563, 1563, 1), new Range16.ptr(1567, 1567, 1), new Range16.ptr(1600, 1600, 1), new Range16.ptr(1757, 1757, 1), new Range16.ptr(2274, 2274, 1), new Range16.ptr(2404, 2405, 1), new Range16.ptr(3647, 3647, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4347, 4347, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6146, 6147, 1), new Range16.ptr(6149, 6149, 1), new Range16.ptr(7379, 7379, 1), new Range16.ptr(7393, 7393, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7411, 1), new Range16.ptr(7413, 7415, 1), new Range16.ptr(8192, 8203, 1), new Range16.ptr(8206, 8292, 1), new Range16.ptr(8294, 8304, 1), new Range16.ptr(8308, 8318, 1), new Range16.ptr(8320, 8334, 1), new Range16.ptr(8352, 8383, 1), new Range16.ptr(8448, 8485, 1), new Range16.ptr(8487, 8489, 1), new Range16.ptr(8492, 8497, 1), new Range16.ptr(8499, 8525, 1), new Range16.ptr(8527, 8543, 1), new Range16.ptr(8585, 8587, 1), new Range16.ptr(8592, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9312, 10239, 1), new Range16.ptr(10496, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11218, 1), new Range16.ptr(11244, 11247, 1), new Range16.ptr(11776, 11849, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12288, 12292, 1), new Range16.ptr(12294, 12294, 1), new Range16.ptr(12296, 12320, 1), new Range16.ptr(12336, 12343, 1), new Range16.ptr(12348, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12448, 12448, 1), new Range16.ptr(12539, 12540, 1), new Range16.ptr(12688, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12832, 12895, 1), new Range16.ptr(12927, 13007, 1), new Range16.ptr(13144, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42752, 42785, 1), new Range16.ptr(42888, 42890, 1), new Range16.ptr(43056, 43065, 1), new Range16.ptr(43310, 43310, 1), new Range16.ptr(43471, 43471, 1), new Range16.ptr(43867, 43867, 1), new Range16.ptr(64830, 64831, 1), new Range16.ptr(65040, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65126, 1), new Range16.ptr(65128, 65131, 1), new Range16.ptr(65279, 65279, 1), new Range16.ptr(65281, 65312, 1), new Range16.ptr(65339, 65344, 1), new Range16.ptr(65371, 65381, 1), new Range16.ptr(65392, 65392, 1), new Range16.ptr(65438, 65439, 1), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65529, 65533, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(65799, 65843, 1), new Range32.ptr(65847, 65855, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(66000, 66044, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(113824, 113827, 1), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119142, 1), new Range32.ptr(119146, 119162, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119272, 1), new Range32.ptr(119552, 119638, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119970, 1), new Range32.ptr(119973, 119974, 1), new Range32.ptr(119977, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119995, 1), new Range32.ptr(119997, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120134, 1), new Range32.ptr(120138, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120779, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127232, 127244, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127404, 1), new Range32.ptr(127462, 127487, 1), new Range32.ptr(127489, 127490, 1), new Range32.ptr(127504, 127547, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127584, 127589, 1), new Range32.ptr(127744, 128724, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128760, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(129280, 129291, 1), new Range32.ptr(129296, 129342, 1), new Range32.ptr(129344, 129356, 1), new Range32.ptr(129360, 129387, 1), new Range32.ptr(129408, 129431, 1), new Range32.ptr(129472, 129472, 1), new Range32.ptr(129488, 129510, 1), new Range32.ptr(917505, 917505, 1), new Range32.ptr(917536, 917631, 1)]), 7); - _Coptic = new RangeTable.ptr(new sliceType([new Range16.ptr(994, 1007, 1), new Range16.ptr(11392, 11507, 1), new Range16.ptr(11513, 11519, 1)]), sliceType$1.nil, 0); - _Cuneiform = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(73728, 74649, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(74880, 75075, 1)]), 0); - _Cypriot = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67592, 1), new Range32.ptr(67594, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67644, 1), new Range32.ptr(67647, 67647, 1)]), 0); - _Cyrillic = new RangeTable.ptr(new sliceType([new Range16.ptr(1024, 1156, 1), new Range16.ptr(1159, 1327, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7467, 7467, 1), new Range16.ptr(7544, 7544, 1), new Range16.ptr(11744, 11775, 1), new Range16.ptr(42560, 42655, 1), new Range16.ptr(65070, 65071, 1)]), sliceType$1.nil, 0); - _Deseret = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66560, 66639, 1)]), 0); - _Devanagari = new RangeTable.ptr(new sliceType([new Range16.ptr(2304, 2384, 1), new Range16.ptr(2387, 2403, 1), new Range16.ptr(2406, 2431, 1), new Range16.ptr(43232, 43261, 1)]), sliceType$1.nil, 0); - _Duployan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(113820, 113823, 1)]), 0); - _Egyptian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(77824, 78894, 1)]), 0); - _Elbasan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66816, 66855, 1)]), 0); - _Ethiopic = new RangeTable.ptr(new sliceType([new Range16.ptr(4608, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4696, 1), new Range16.ptr(4698, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4800, 1), new Range16.ptr(4802, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4957, 4988, 1), new Range16.ptr(4992, 5017, 1), new Range16.ptr(11648, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1)]), sliceType$1.nil, 0); - _Georgian = new RangeTable.ptr(new sliceType([new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4295, 1), new Range16.ptr(4301, 4301, 1), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4351, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11559, 1), new Range16.ptr(11565, 11565, 1)]), sliceType$1.nil, 0); - _Glagolitic = new RangeTable.ptr(new sliceType([new Range16.ptr(11264, 11310, 1), new Range16.ptr(11312, 11358, 1)]), new sliceType$1([new Range32.ptr(122880, 122886, 1), new Range32.ptr(122888, 122904, 1), new Range32.ptr(122907, 122913, 1), new Range32.ptr(122915, 122916, 1), new Range32.ptr(122918, 122922, 1)]), 0); - _Gothic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66352, 66378, 1)]), 0); - _Grantha = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70400, 70403, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70460, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70480, 70480, 1), new Range32.ptr(70487, 70487, 1), new Range32.ptr(70493, 70499, 1), new Range32.ptr(70502, 70508, 1), new Range32.ptr(70512, 70516, 1)]), 0); - _Greek = new RangeTable.ptr(new sliceType([new Range16.ptr(880, 883, 1), new Range16.ptr(885, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 895, 1), new Range16.ptr(900, 900, 1), new Range16.ptr(902, 902, 1), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 908, 1), new Range16.ptr(910, 929, 1), new Range16.ptr(931, 993, 1), new Range16.ptr(1008, 1023, 1), new Range16.ptr(7462, 7466, 1), new Range16.ptr(7517, 7521, 1), new Range16.ptr(7526, 7530, 1), new Range16.ptr(7615, 7615, 1), new Range16.ptr(7936, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8025, 1), new Range16.ptr(8027, 8027, 1), new Range16.ptr(8029, 8029, 1), new Range16.ptr(8031, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8132, 1), new Range16.ptr(8134, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8157, 8175, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8190, 1), new Range16.ptr(8486, 8486, 1), new Range16.ptr(43877, 43877, 1)]), new sliceType$1([new Range32.ptr(65856, 65934, 1), new Range32.ptr(65952, 65952, 1), new Range32.ptr(119296, 119365, 1)]), 0); - _Gujarati = new RangeTable.ptr(new sliceType([new Range16.ptr(2689, 2691, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2748, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2768, 2768, 1), new Range16.ptr(2784, 2787, 1), new Range16.ptr(2790, 2801, 1), new Range16.ptr(2809, 2815, 1)]), sliceType$1.nil, 0); - _Gurmukhi = new RangeTable.ptr(new sliceType([new Range16.ptr(2561, 2563, 1), new Range16.ptr(2565, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2620, 2620, 1), new Range16.ptr(2622, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2641, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2654, 1), new Range16.ptr(2662, 2677, 1)]), sliceType$1.nil, 0); - _Han = new RangeTable.ptr(new sliceType([new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12293, 12293, 1), new Range16.ptr(12295, 12295, 1), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12347, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1)]), new sliceType$1([new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 0); - _Hangul = new RangeTable.ptr(new sliceType([new Range16.ptr(4352, 4607, 1), new Range16.ptr(12334, 12335, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12896, 12926, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(65440, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), sliceType$1.nil, 0); - _Hanunoo = new RangeTable.ptr(new sliceType([new Range16.ptr(5920, 5940, 1)]), sliceType$1.nil, 0); - _Hatran = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67835, 67839, 1)]), 0); - _Hebrew = new RangeTable.ptr(new sliceType([new Range16.ptr(1425, 1479, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1524, 1), new Range16.ptr(64285, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64318, 1), new Range16.ptr(64320, 64321, 1), new Range16.ptr(64323, 64324, 1), new Range16.ptr(64326, 64335, 1)]), sliceType$1.nil, 0); - _Hiragana = new RangeTable.ptr(new sliceType([new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1)]), new sliceType$1([new Range32.ptr(110593, 110878, 1), new Range32.ptr(127488, 127488, 1)]), 0); - _Imperial_Aramaic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67648, 67669, 1), new Range32.ptr(67671, 67679, 1)]), 0); - _Inherited = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1157, 1158, 1), new Range16.ptr(1611, 1621, 1), new Range16.ptr(1648, 1648, 1), new Range16.ptr(2385, 2386, 1), new Range16.ptr(6832, 6846, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7405, 1), new Range16.ptr(7412, 7412, 1), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7673, 1), new Range16.ptr(7675, 7679, 1), new Range16.ptr(8204, 8205, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66045, 1), new Range32.ptr(66272, 66272, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(917760, 917999, 1)]), 0); - _Inscriptional_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68448, 68466, 1), new Range32.ptr(68472, 68479, 1)]), 0); - _Inscriptional_Parthian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68416, 68437, 1), new Range32.ptr(68440, 68447, 1)]), 0); - _Javanese = new RangeTable.ptr(new sliceType([new Range16.ptr(43392, 43469, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43486, 43487, 1)]), sliceType$1.nil, 0); - _Kaithi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69760, 69825, 1)]), 0); - _Kannada = new RangeTable.ptr(new sliceType([new Range16.ptr(3200, 3203, 1), new Range16.ptr(3205, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3260, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3294, 3294, 1), new Range16.ptr(3296, 3299, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3313, 3314, 1)]), sliceType$1.nil, 0); - _Katakana = new RangeTable.ptr(new sliceType([new Range16.ptr(12449, 12538, 1), new Range16.ptr(12541, 12543, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13008, 13054, 1), new Range16.ptr(13056, 13143, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1)]), new sliceType$1([new Range32.ptr(110592, 110592, 1)]), 0); - _Kayah_Li = new RangeTable.ptr(new sliceType([new Range16.ptr(43264, 43309, 1), new Range16.ptr(43311, 43311, 1)]), sliceType$1.nil, 0); - _Kharoshthi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68096, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68167, 1), new Range32.ptr(68176, 68184, 1)]), 0); - _Khmer = new RangeTable.ptr(new sliceType([new Range16.ptr(6016, 6109, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6624, 6655, 1)]), sliceType$1.nil, 0); - _Khojki = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70206, 1)]), 0); - _Khudawadi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70320, 70378, 1), new Range32.ptr(70384, 70393, 1)]), 0); - _Lao = new RangeTable.ptr(new sliceType([new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3716, 1), new Range16.ptr(3719, 3720, 1), new Range16.ptr(3722, 3722, 1), new Range16.ptr(3725, 3725, 1), new Range16.ptr(3732, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3749, 1), new Range16.ptr(3751, 3751, 1), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3769, 1), new Range16.ptr(3771, 3773, 1), new Range16.ptr(3776, 3780, 1), new Range16.ptr(3782, 3782, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3804, 3807, 1)]), sliceType$1.nil, 0); - _Latin = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 170, 1), new Range16.ptr(186, 186, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 696, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(7424, 7461, 1), new Range16.ptr(7468, 7516, 1), new Range16.ptr(7522, 7525, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7614, 1), new Range16.ptr(7680, 7935, 1), new Range16.ptr(8305, 8305, 1), new Range16.ptr(8319, 8319, 1), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8490, 8491, 1), new Range16.ptr(8498, 8498, 1), new Range16.ptr(8526, 8526, 1), new Range16.ptr(8544, 8584, 1), new Range16.ptr(11360, 11391, 1), new Range16.ptr(42786, 42887, 1), new Range16.ptr(42891, 42926, 1), new Range16.ptr(42928, 42935, 1), new Range16.ptr(42999, 43007, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43876, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1)]), sliceType$1.nil, 6); - _Lepcha = new RangeTable.ptr(new sliceType([new Range16.ptr(7168, 7223, 1), new Range16.ptr(7227, 7241, 1), new Range16.ptr(7245, 7247, 1)]), sliceType$1.nil, 0); - _Limbu = new RangeTable.ptr(new sliceType([new Range16.ptr(6400, 6430, 1), new Range16.ptr(6432, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6464, 6464, 1), new Range16.ptr(6468, 6479, 1)]), sliceType$1.nil, 0); - _Linear_A = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1)]), 0); - _Linear_B = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1)]), 0); - _Lisu = new RangeTable.ptr(new sliceType([new Range16.ptr(42192, 42239, 1)]), sliceType$1.nil, 0); - _Lycian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66176, 66204, 1)]), 0); - _Lydian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67872, 67897, 1), new Range32.ptr(67903, 67903, 1)]), 0); - _Mahajani = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69968, 70006, 1)]), 0); - _Malayalam = new RangeTable.ptr(new sliceType([new Range16.ptr(3328, 3331, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3407, 1), new Range16.ptr(3412, 3427, 1), new Range16.ptr(3430, 3455, 1)]), sliceType$1.nil, 0); - _Mandaic = new RangeTable.ptr(new sliceType([new Range16.ptr(2112, 2139, 1), new Range16.ptr(2142, 2142, 1)]), sliceType$1.nil, 0); - _Manichaean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68288, 68326, 1), new Range32.ptr(68331, 68342, 1)]), 0); - _Marchen = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72816, 72847, 1), new Range32.ptr(72850, 72871, 1), new Range32.ptr(72873, 72886, 1)]), 0); - _Masaram_Gondi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73014, 1), new Range32.ptr(73018, 73018, 1), new Range32.ptr(73020, 73021, 1), new Range32.ptr(73023, 73031, 1), new Range32.ptr(73040, 73049, 1)]), 0); - _Meetei_Mayek = new RangeTable.ptr(new sliceType([new Range16.ptr(43744, 43766, 1), new Range16.ptr(43968, 44013, 1), new Range16.ptr(44016, 44025, 1)]), sliceType$1.nil, 0); - _Mende_Kikakui = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(124928, 125124, 1), new Range32.ptr(125127, 125142, 1)]), 0); - _Meroitic_Cursive = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68000, 68023, 1), new Range32.ptr(68028, 68047, 1), new Range32.ptr(68050, 68095, 1)]), 0); - _Meroitic_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67968, 67999, 1)]), 0); - _Miao = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94078, 1), new Range32.ptr(94095, 94111, 1)]), 0); - _Modi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71168, 71236, 1), new Range32.ptr(71248, 71257, 1)]), 0); - _Mongolian = new RangeTable.ptr(new sliceType([new Range16.ptr(6144, 6145, 1), new Range16.ptr(6148, 6148, 1), new Range16.ptr(6150, 6158, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6314, 1)]), new sliceType$1([new Range32.ptr(71264, 71276, 1)]), 0); - _Mro = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92736, 92766, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(92782, 92783, 1)]), 0); - _Multani = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70280, 1), new Range32.ptr(70282, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70313, 1)]), 0); - _Myanmar = new RangeTable.ptr(new sliceType([new Range16.ptr(4096, 4255, 1), new Range16.ptr(43488, 43518, 1), new Range16.ptr(43616, 43647, 1)]), sliceType$1.nil, 0); - _Nabataean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67712, 67742, 1), new Range32.ptr(67751, 67759, 1)]), 0); - _New_Tai_Lue = new RangeTable.ptr(new sliceType([new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6622, 6623, 1)]), sliceType$1.nil, 0); - _Newa = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70656, 70745, 1), new Range32.ptr(70747, 70747, 1), new Range32.ptr(70749, 70749, 1)]), 0); - _Nko = new RangeTable.ptr(new sliceType([new Range16.ptr(1984, 2042, 1)]), sliceType$1.nil, 0); - _Nushu = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(94177, 94177, 1), new Range32.ptr(110960, 111355, 1)]), 0); - _Ogham = new RangeTable.ptr(new sliceType([new Range16.ptr(5760, 5788, 1)]), sliceType$1.nil, 0); - _Ol_Chiki = new RangeTable.ptr(new sliceType([new Range16.ptr(7248, 7295, 1)]), sliceType$1.nil, 0); - _Old_Hungarian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68736, 68786, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(68858, 68863, 1)]), 0); - _Old_Italic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66304, 66339, 1), new Range32.ptr(66349, 66351, 1)]), 0); - _Old_North_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68224, 68255, 1)]), 0); - _Old_Permic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66384, 66426, 1)]), 0); - _Old_Persian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66517, 1)]), 0); - _Old_South_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68192, 68223, 1)]), 0); - _Old_Turkic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68608, 68680, 1)]), 0); - _Oriya = new RangeTable.ptr(new sliceType([new Range16.ptr(2817, 2819, 1), new Range16.ptr(2821, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2876, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2908, 2909, 1), new Range16.ptr(2911, 2915, 1), new Range16.ptr(2918, 2935, 1)]), sliceType$1.nil, 0); - _Osage = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66736, 66771, 1), new Range32.ptr(66776, 66811, 1)]), 0); - _Osmanya = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66688, 66717, 1), new Range32.ptr(66720, 66729, 1)]), 0); - _Pahawh_Hmong = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92928, 92997, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1)]), 0); - _Palmyrene = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67680, 67711, 1)]), 0); - _Pau_Cin_Hau = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72384, 72440, 1)]), 0); - _Phags_Pa = new RangeTable.ptr(new sliceType([new Range16.ptr(43072, 43127, 1)]), sliceType$1.nil, 0); - _Phoenician = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67840, 67867, 1), new Range32.ptr(67871, 67871, 1)]), 0); - _Psalter_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68480, 68497, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(68521, 68527, 1)]), 0); - _Rejang = new RangeTable.ptr(new sliceType([new Range16.ptr(43312, 43347, 1), new Range16.ptr(43359, 43359, 1)]), sliceType$1.nil, 0); - _Runic = new RangeTable.ptr(new sliceType([new Range16.ptr(5792, 5866, 1), new Range16.ptr(5870, 5880, 1)]), sliceType$1.nil, 0); - _Samaritan = new RangeTable.ptr(new sliceType([new Range16.ptr(2048, 2093, 1), new Range16.ptr(2096, 2110, 1)]), sliceType$1.nil, 0); - _Saurashtra = new RangeTable.ptr(new sliceType([new Range16.ptr(43136, 43205, 1), new Range16.ptr(43214, 43225, 1)]), sliceType$1.nil, 0); - _Sharada = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70016, 70093, 1), new Range32.ptr(70096, 70111, 1)]), 0); - _Shavian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66640, 66687, 1)]), 0); - _Siddham = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71040, 71093, 1), new Range32.ptr(71096, 71133, 1)]), 0); - _SignWriting = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(120832, 121483, 1), new Range32.ptr(121499, 121503, 1), new Range32.ptr(121505, 121519, 1)]), 0); - _Sinhala = new RangeTable.ptr(new sliceType([new Range16.ptr(3458, 3459, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3517, 1), new Range16.ptr(3520, 3526, 1), new Range16.ptr(3530, 3530, 1), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3542, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3570, 3572, 1)]), new sliceType$1([new Range32.ptr(70113, 70132, 1)]), 0); - _Sora_Sompeng = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69840, 69864, 1), new Range32.ptr(69872, 69881, 1)]), 0); - _Soyombo = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72272, 72323, 1), new Range32.ptr(72326, 72348, 1), new Range32.ptr(72350, 72354, 1)]), 0); - _Sundanese = new RangeTable.ptr(new sliceType([new Range16.ptr(7040, 7103, 1), new Range16.ptr(7360, 7367, 1)]), sliceType$1.nil, 0); - _Syloti_Nagri = new RangeTable.ptr(new sliceType([new Range16.ptr(43008, 43051, 1)]), sliceType$1.nil, 0); - _Syriac = new RangeTable.ptr(new sliceType([new Range16.ptr(1792, 1805, 1), new Range16.ptr(1807, 1866, 1), new Range16.ptr(1869, 1871, 1), new Range16.ptr(2144, 2154, 1)]), sliceType$1.nil, 0); - _Tagalog = new RangeTable.ptr(new sliceType([new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5908, 1)]), sliceType$1.nil, 0); - _Tagbanwa = new RangeTable.ptr(new sliceType([new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6002, 6003, 1)]), sliceType$1.nil, 0); - _Tai_Le = new RangeTable.ptr(new sliceType([new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1)]), sliceType$1.nil, 0); - _Tai_Tham = new RangeTable.ptr(new sliceType([new Range16.ptr(6688, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6816, 6829, 1)]), sliceType$1.nil, 0); - _Tai_Viet = new RangeTable.ptr(new sliceType([new Range16.ptr(43648, 43714, 1), new Range16.ptr(43739, 43743, 1)]), sliceType$1.nil, 0); - _Takri = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71296, 71351, 1), new Range32.ptr(71360, 71369, 1)]), 0); - _Tamil = new RangeTable.ptr(new sliceType([new Range16.ptr(2946, 2947, 1), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2972, 1), new Range16.ptr(2974, 2975, 1), new Range16.ptr(2979, 2980, 1), new Range16.ptr(2984, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3006, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3024, 3024, 1), new Range16.ptr(3031, 3031, 1), new Range16.ptr(3046, 3066, 1)]), sliceType$1.nil, 0); - _Tangut = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(94176, 94176, 1), new Range32.ptr(94208, 100332, 1), new Range32.ptr(100352, 101106, 1)]), 0); - _Telugu = new RangeTable.ptr(new sliceType([new Range16.ptr(3072, 3075, 1), new Range16.ptr(3077, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3160, 3162, 1), new Range16.ptr(3168, 3171, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3199, 1)]), sliceType$1.nil, 0); - _Thaana = new RangeTable.ptr(new sliceType([new Range16.ptr(1920, 1969, 1)]), sliceType$1.nil, 0); - _Thai = new RangeTable.ptr(new sliceType([new Range16.ptr(3585, 3642, 1), new Range16.ptr(3648, 3675, 1)]), sliceType$1.nil, 0); - _Tibetan = new RangeTable.ptr(new sliceType([new Range16.ptr(3840, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3953, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4030, 4044, 1), new Range16.ptr(4046, 4052, 1), new Range16.ptr(4057, 4058, 1)]), sliceType$1.nil, 0); - _Tifinagh = new RangeTable.ptr(new sliceType([new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11632, 1), new Range16.ptr(11647, 11647, 1)]), sliceType$1.nil, 0); - _Tirhuta = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70784, 70855, 1), new Range32.ptr(70864, 70873, 1)]), 0); - _Ugaritic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66432, 66461, 1), new Range32.ptr(66463, 66463, 1)]), 0); - _Vai = new RangeTable.ptr(new sliceType([new Range16.ptr(42240, 42539, 1)]), sliceType$1.nil, 0); - _Warang_Citi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71840, 71922, 1), new Range32.ptr(71935, 71935, 1)]), 0); - _Yi = new RangeTable.ptr(new sliceType([new Range16.ptr(40960, 42124, 1), new Range16.ptr(42128, 42182, 1)]), sliceType$1.nil, 0); - _Zanabazar_Square = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72192, 72263, 1)]), 0); - $pkg.Adlam = _Adlam; - $pkg.Ahom = _Ahom; - $pkg.Anatolian_Hieroglyphs = _Anatolian_Hieroglyphs; - $pkg.Arabic = _Arabic; - $pkg.Armenian = _Armenian; - $pkg.Avestan = _Avestan; - $pkg.Balinese = _Balinese; - $pkg.Bamum = _Bamum; - $pkg.Bassa_Vah = _Bassa_Vah; - $pkg.Batak = _Batak; - $pkg.Bengali = _Bengali; - $pkg.Bhaiksuki = _Bhaiksuki; - $pkg.Bopomofo = _Bopomofo; - $pkg.Brahmi = _Brahmi; - $pkg.Braille = _Braille; - $pkg.Buginese = _Buginese; - $pkg.Buhid = _Buhid; - $pkg.Canadian_Aboriginal = _Canadian_Aboriginal; - $pkg.Carian = _Carian; - $pkg.Caucasian_Albanian = _Caucasian_Albanian; - $pkg.Chakma = _Chakma; - $pkg.Cham = _Cham; - $pkg.Cherokee = _Cherokee; - $pkg.Common = _Common; - $pkg.Coptic = _Coptic; - $pkg.Cuneiform = _Cuneiform; - $pkg.Cypriot = _Cypriot; - $pkg.Cyrillic = _Cyrillic; - $pkg.Deseret = _Deseret; - $pkg.Devanagari = _Devanagari; - $pkg.Duployan = _Duployan; - $pkg.Egyptian_Hieroglyphs = _Egyptian_Hieroglyphs; - $pkg.Elbasan = _Elbasan; - $pkg.Ethiopic = _Ethiopic; - $pkg.Georgian = _Georgian; - $pkg.Glagolitic = _Glagolitic; - $pkg.Gothic = _Gothic; - $pkg.Grantha = _Grantha; - $pkg.Greek = _Greek; - $pkg.Gujarati = _Gujarati; - $pkg.Gurmukhi = _Gurmukhi; - $pkg.Han = _Han; - $pkg.Hangul = _Hangul; - $pkg.Hanunoo = _Hanunoo; - $pkg.Hatran = _Hatran; - $pkg.Hebrew = _Hebrew; - $pkg.Hiragana = _Hiragana; - $pkg.Imperial_Aramaic = _Imperial_Aramaic; - $pkg.Inherited = _Inherited; - $pkg.Inscriptional_Pahlavi = _Inscriptional_Pahlavi; - $pkg.Inscriptional_Parthian = _Inscriptional_Parthian; - $pkg.Javanese = _Javanese; - $pkg.Kaithi = _Kaithi; - $pkg.Kannada = _Kannada; - $pkg.Katakana = _Katakana; - $pkg.Kayah_Li = _Kayah_Li; - $pkg.Kharoshthi = _Kharoshthi; - $pkg.Khmer = _Khmer; - $pkg.Khojki = _Khojki; - $pkg.Khudawadi = _Khudawadi; - $pkg.Lao = _Lao; - $pkg.Latin = _Latin; - $pkg.Lepcha = _Lepcha; - $pkg.Limbu = _Limbu; - $pkg.Linear_A = _Linear_A; - $pkg.Linear_B = _Linear_B; - $pkg.Lisu = _Lisu; - $pkg.Lycian = _Lycian; - $pkg.Lydian = _Lydian; - $pkg.Mahajani = _Mahajani; - $pkg.Malayalam = _Malayalam; - $pkg.Mandaic = _Mandaic; - $pkg.Manichaean = _Manichaean; - $pkg.Marchen = _Marchen; - $pkg.Masaram_Gondi = _Masaram_Gondi; - $pkg.Meetei_Mayek = _Meetei_Mayek; - $pkg.Mende_Kikakui = _Mende_Kikakui; - $pkg.Meroitic_Cursive = _Meroitic_Cursive; - $pkg.Meroitic_Hieroglyphs = _Meroitic_Hieroglyphs; - $pkg.Miao = _Miao; - $pkg.Modi = _Modi; - $pkg.Mongolian = _Mongolian; - $pkg.Mro = _Mro; - $pkg.Multani = _Multani; - $pkg.Myanmar = _Myanmar; - $pkg.Nabataean = _Nabataean; - $pkg.New_Tai_Lue = _New_Tai_Lue; - $pkg.Newa = _Newa; - $pkg.Nko = _Nko; - $pkg.Nushu = _Nushu; - $pkg.Ogham = _Ogham; - $pkg.Ol_Chiki = _Ol_Chiki; - $pkg.Old_Hungarian = _Old_Hungarian; - $pkg.Old_Italic = _Old_Italic; - $pkg.Old_North_Arabian = _Old_North_Arabian; - $pkg.Old_Permic = _Old_Permic; - $pkg.Old_Persian = _Old_Persian; - $pkg.Old_South_Arabian = _Old_South_Arabian; - $pkg.Old_Turkic = _Old_Turkic; - $pkg.Oriya = _Oriya; - $pkg.Osage = _Osage; - $pkg.Osmanya = _Osmanya; - $pkg.Pahawh_Hmong = _Pahawh_Hmong; - $pkg.Palmyrene = _Palmyrene; - $pkg.Pau_Cin_Hau = _Pau_Cin_Hau; - $pkg.Phags_Pa = _Phags_Pa; - $pkg.Phoenician = _Phoenician; - $pkg.Psalter_Pahlavi = _Psalter_Pahlavi; - $pkg.Rejang = _Rejang; - $pkg.Runic = _Runic; - $pkg.Samaritan = _Samaritan; - $pkg.Saurashtra = _Saurashtra; - $pkg.Sharada = _Sharada; - $pkg.Shavian = _Shavian; - $pkg.Siddham = _Siddham; - $pkg.SignWriting = _SignWriting; - $pkg.Sinhala = _Sinhala; - $pkg.Sora_Sompeng = _Sora_Sompeng; - $pkg.Soyombo = _Soyombo; - $pkg.Sundanese = _Sundanese; - $pkg.Syloti_Nagri = _Syloti_Nagri; - $pkg.Syriac = _Syriac; - $pkg.Tagalog = _Tagalog; - $pkg.Tagbanwa = _Tagbanwa; - $pkg.Tai_Le = _Tai_Le; - $pkg.Tai_Tham = _Tai_Tham; - $pkg.Tai_Viet = _Tai_Viet; - $pkg.Takri = _Takri; - $pkg.Tamil = _Tamil; - $pkg.Tangut = _Tangut; - $pkg.Telugu = _Telugu; - $pkg.Thaana = _Thaana; - $pkg.Thai = _Thai; - $pkg.Tibetan = _Tibetan; - $pkg.Tifinagh = _Tifinagh; - $pkg.Tirhuta = _Tirhuta; - $pkg.Ugaritic = _Ugaritic; - $pkg.Vai = _Vai; - $pkg.Warang_Citi = _Warang_Citi; - $pkg.Yi = _Yi; - $pkg.Zanabazar_Square = _Zanabazar_Square; - $pkg.Scripts = $makeMap($String.keyFor, [{ k: "Adlam", v: $pkg.Adlam }, { k: "Ahom", v: $pkg.Ahom }, { k: "Anatolian_Hieroglyphs", v: $pkg.Anatolian_Hieroglyphs }, { k: "Arabic", v: $pkg.Arabic }, { k: "Armenian", v: $pkg.Armenian }, { k: "Avestan", v: $pkg.Avestan }, { k: "Balinese", v: $pkg.Balinese }, { k: "Bamum", v: $pkg.Bamum }, { k: "Bassa_Vah", v: $pkg.Bassa_Vah }, { k: "Batak", v: $pkg.Batak }, { k: "Bengali", v: $pkg.Bengali }, { k: "Bhaiksuki", v: $pkg.Bhaiksuki }, { k: "Bopomofo", v: $pkg.Bopomofo }, { k: "Brahmi", v: $pkg.Brahmi }, { k: "Braille", v: $pkg.Braille }, { k: "Buginese", v: $pkg.Buginese }, { k: "Buhid", v: $pkg.Buhid }, { k: "Canadian_Aboriginal", v: $pkg.Canadian_Aboriginal }, { k: "Carian", v: $pkg.Carian }, { k: "Caucasian_Albanian", v: $pkg.Caucasian_Albanian }, { k: "Chakma", v: $pkg.Chakma }, { k: "Cham", v: $pkg.Cham }, { k: "Cherokee", v: $pkg.Cherokee }, { k: "Common", v: $pkg.Common }, { k: "Coptic", v: $pkg.Coptic }, { k: "Cuneiform", v: $pkg.Cuneiform }, { k: "Cypriot", v: $pkg.Cypriot }, { k: "Cyrillic", v: $pkg.Cyrillic }, { k: "Deseret", v: $pkg.Deseret }, { k: "Devanagari", v: $pkg.Devanagari }, { k: "Duployan", v: $pkg.Duployan }, { k: "Egyptian_Hieroglyphs", v: $pkg.Egyptian_Hieroglyphs }, { k: "Elbasan", v: $pkg.Elbasan }, { k: "Ethiopic", v: $pkg.Ethiopic }, { k: "Georgian", v: $pkg.Georgian }, { k: "Glagolitic", v: $pkg.Glagolitic }, { k: "Gothic", v: $pkg.Gothic }, { k: "Grantha", v: $pkg.Grantha }, { k: "Greek", v: $pkg.Greek }, { k: "Gujarati", v: $pkg.Gujarati }, { k: "Gurmukhi", v: $pkg.Gurmukhi }, { k: "Han", v: $pkg.Han }, { k: "Hangul", v: $pkg.Hangul }, { k: "Hanunoo", v: $pkg.Hanunoo }, { k: "Hatran", v: $pkg.Hatran }, { k: "Hebrew", v: $pkg.Hebrew }, { k: "Hiragana", v: $pkg.Hiragana }, { k: "Imperial_Aramaic", v: $pkg.Imperial_Aramaic }, { k: "Inherited", v: $pkg.Inherited }, { k: "Inscriptional_Pahlavi", v: $pkg.Inscriptional_Pahlavi }, { k: "Inscriptional_Parthian", v: $pkg.Inscriptional_Parthian }, { k: "Javanese", v: $pkg.Javanese }, { k: "Kaithi", v: $pkg.Kaithi }, { k: "Kannada", v: $pkg.Kannada }, { k: "Katakana", v: $pkg.Katakana }, { k: "Kayah_Li", v: $pkg.Kayah_Li }, { k: "Kharoshthi", v: $pkg.Kharoshthi }, { k: "Khmer", v: $pkg.Khmer }, { k: "Khojki", v: $pkg.Khojki }, { k: "Khudawadi", v: $pkg.Khudawadi }, { k: "Lao", v: $pkg.Lao }, { k: "Latin", v: $pkg.Latin }, { k: "Lepcha", v: $pkg.Lepcha }, { k: "Limbu", v: $pkg.Limbu }, { k: "Linear_A", v: $pkg.Linear_A }, { k: "Linear_B", v: $pkg.Linear_B }, { k: "Lisu", v: $pkg.Lisu }, { k: "Lycian", v: $pkg.Lycian }, { k: "Lydian", v: $pkg.Lydian }, { k: "Mahajani", v: $pkg.Mahajani }, { k: "Malayalam", v: $pkg.Malayalam }, { k: "Mandaic", v: $pkg.Mandaic }, { k: "Manichaean", v: $pkg.Manichaean }, { k: "Marchen", v: $pkg.Marchen }, { k: "Masaram_Gondi", v: $pkg.Masaram_Gondi }, { k: "Meetei_Mayek", v: $pkg.Meetei_Mayek }, { k: "Mende_Kikakui", v: $pkg.Mende_Kikakui }, { k: "Meroitic_Cursive", v: $pkg.Meroitic_Cursive }, { k: "Meroitic_Hieroglyphs", v: $pkg.Meroitic_Hieroglyphs }, { k: "Miao", v: $pkg.Miao }, { k: "Modi", v: $pkg.Modi }, { k: "Mongolian", v: $pkg.Mongolian }, { k: "Mro", v: $pkg.Mro }, { k: "Multani", v: $pkg.Multani }, { k: "Myanmar", v: $pkg.Myanmar }, { k: "Nabataean", v: $pkg.Nabataean }, { k: "New_Tai_Lue", v: $pkg.New_Tai_Lue }, { k: "Newa", v: $pkg.Newa }, { k: "Nko", v: $pkg.Nko }, { k: "Nushu", v: $pkg.Nushu }, { k: "Ogham", v: $pkg.Ogham }, { k: "Ol_Chiki", v: $pkg.Ol_Chiki }, { k: "Old_Hungarian", v: $pkg.Old_Hungarian }, { k: "Old_Italic", v: $pkg.Old_Italic }, { k: "Old_North_Arabian", v: $pkg.Old_North_Arabian }, { k: "Old_Permic", v: $pkg.Old_Permic }, { k: "Old_Persian", v: $pkg.Old_Persian }, { k: "Old_South_Arabian", v: $pkg.Old_South_Arabian }, { k: "Old_Turkic", v: $pkg.Old_Turkic }, { k: "Oriya", v: $pkg.Oriya }, { k: "Osage", v: $pkg.Osage }, { k: "Osmanya", v: $pkg.Osmanya }, { k: "Pahawh_Hmong", v: $pkg.Pahawh_Hmong }, { k: "Palmyrene", v: $pkg.Palmyrene }, { k: "Pau_Cin_Hau", v: $pkg.Pau_Cin_Hau }, { k: "Phags_Pa", v: $pkg.Phags_Pa }, { k: "Phoenician", v: $pkg.Phoenician }, { k: "Psalter_Pahlavi", v: $pkg.Psalter_Pahlavi }, { k: "Rejang", v: $pkg.Rejang }, { k: "Runic", v: $pkg.Runic }, { k: "Samaritan", v: $pkg.Samaritan }, { k: "Saurashtra", v: $pkg.Saurashtra }, { k: "Sharada", v: $pkg.Sharada }, { k: "Shavian", v: $pkg.Shavian }, { k: "Siddham", v: $pkg.Siddham }, { k: "SignWriting", v: $pkg.SignWriting }, { k: "Sinhala", v: $pkg.Sinhala }, { k: "Sora_Sompeng", v: $pkg.Sora_Sompeng }, { k: "Soyombo", v: $pkg.Soyombo }, { k: "Sundanese", v: $pkg.Sundanese }, { k: "Syloti_Nagri", v: $pkg.Syloti_Nagri }, { k: "Syriac", v: $pkg.Syriac }, { k: "Tagalog", v: $pkg.Tagalog }, { k: "Tagbanwa", v: $pkg.Tagbanwa }, { k: "Tai_Le", v: $pkg.Tai_Le }, { k: "Tai_Tham", v: $pkg.Tai_Tham }, { k: "Tai_Viet", v: $pkg.Tai_Viet }, { k: "Takri", v: $pkg.Takri }, { k: "Tamil", v: $pkg.Tamil }, { k: "Tangut", v: $pkg.Tangut }, { k: "Telugu", v: $pkg.Telugu }, { k: "Thaana", v: $pkg.Thaana }, { k: "Thai", v: $pkg.Thai }, { k: "Tibetan", v: $pkg.Tibetan }, { k: "Tifinagh", v: $pkg.Tifinagh }, { k: "Tirhuta", v: $pkg.Tirhuta }, { k: "Ugaritic", v: $pkg.Ugaritic }, { k: "Vai", v: $pkg.Vai }, { k: "Warang_Citi", v: $pkg.Warang_Citi }, { k: "Yi", v: $pkg.Yi }, { k: "Zanabazar_Square", v: $pkg.Zanabazar_Square }]); - _CaseRanges = new sliceType$3([new CaseRange.ptr(65, 90, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(97, 122, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(181, 181, $toNativeArray($kindInt32, [743, 0, 743])), new CaseRange.ptr(192, 214, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(216, 222, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(224, 246, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(248, 254, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(255, 255, $toNativeArray($kindInt32, [121, 0, 121])), new CaseRange.ptr(256, 303, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(304, 304, $toNativeArray($kindInt32, [0, -199, 0])), new CaseRange.ptr(305, 305, $toNativeArray($kindInt32, [-232, 0, -232])), new CaseRange.ptr(306, 311, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(313, 328, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(330, 375, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(376, 376, $toNativeArray($kindInt32, [0, -121, 0])), new CaseRange.ptr(377, 382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(383, 383, $toNativeArray($kindInt32, [-300, 0, -300])), new CaseRange.ptr(384, 384, $toNativeArray($kindInt32, [195, 0, 195])), new CaseRange.ptr(385, 385, $toNativeArray($kindInt32, [0, 210, 0])), new CaseRange.ptr(386, 389, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(390, 390, $toNativeArray($kindInt32, [0, 206, 0])), new CaseRange.ptr(391, 392, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(393, 394, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(395, 396, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(398, 398, $toNativeArray($kindInt32, [0, 79, 0])), new CaseRange.ptr(399, 399, $toNativeArray($kindInt32, [0, 202, 0])), new CaseRange.ptr(400, 400, $toNativeArray($kindInt32, [0, 203, 0])), new CaseRange.ptr(401, 402, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(403, 403, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(404, 404, $toNativeArray($kindInt32, [0, 207, 0])), new CaseRange.ptr(405, 405, $toNativeArray($kindInt32, [97, 0, 97])), new CaseRange.ptr(406, 406, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(407, 407, $toNativeArray($kindInt32, [0, 209, 0])), new CaseRange.ptr(408, 409, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(410, 410, $toNativeArray($kindInt32, [163, 0, 163])), new CaseRange.ptr(412, 412, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(413, 413, $toNativeArray($kindInt32, [0, 213, 0])), new CaseRange.ptr(414, 414, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(415, 415, $toNativeArray($kindInt32, [0, 214, 0])), new CaseRange.ptr(416, 421, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(422, 422, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(423, 424, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(425, 425, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(428, 429, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(430, 430, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(431, 432, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(433, 434, $toNativeArray($kindInt32, [0, 217, 0])), new CaseRange.ptr(435, 438, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(439, 439, $toNativeArray($kindInt32, [0, 219, 0])), new CaseRange.ptr(440, 441, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(444, 445, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(447, 447, $toNativeArray($kindInt32, [56, 0, 56])), new CaseRange.ptr(452, 452, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(453, 453, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(454, 454, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(455, 455, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(456, 456, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(457, 457, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(458, 458, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(459, 459, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(460, 460, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(461, 476, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(477, 477, $toNativeArray($kindInt32, [-79, 0, -79])), new CaseRange.ptr(478, 495, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(497, 497, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(498, 498, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(499, 499, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(500, 501, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(502, 502, $toNativeArray($kindInt32, [0, -97, 0])), new CaseRange.ptr(503, 503, $toNativeArray($kindInt32, [0, -56, 0])), new CaseRange.ptr(504, 543, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(544, 544, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(546, 563, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(570, 570, $toNativeArray($kindInt32, [0, 10795, 0])), new CaseRange.ptr(571, 572, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(573, 573, $toNativeArray($kindInt32, [0, -163, 0])), new CaseRange.ptr(574, 574, $toNativeArray($kindInt32, [0, 10792, 0])), new CaseRange.ptr(575, 576, $toNativeArray($kindInt32, [10815, 0, 10815])), new CaseRange.ptr(577, 578, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(579, 579, $toNativeArray($kindInt32, [0, -195, 0])), new CaseRange.ptr(580, 580, $toNativeArray($kindInt32, [0, 69, 0])), new CaseRange.ptr(581, 581, $toNativeArray($kindInt32, [0, 71, 0])), new CaseRange.ptr(582, 591, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(592, 592, $toNativeArray($kindInt32, [10783, 0, 10783])), new CaseRange.ptr(593, 593, $toNativeArray($kindInt32, [10780, 0, 10780])), new CaseRange.ptr(594, 594, $toNativeArray($kindInt32, [10782, 0, 10782])), new CaseRange.ptr(595, 595, $toNativeArray($kindInt32, [-210, 0, -210])), new CaseRange.ptr(596, 596, $toNativeArray($kindInt32, [-206, 0, -206])), new CaseRange.ptr(598, 599, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(601, 601, $toNativeArray($kindInt32, [-202, 0, -202])), new CaseRange.ptr(603, 603, $toNativeArray($kindInt32, [-203, 0, -203])), new CaseRange.ptr(604, 604, $toNativeArray($kindInt32, [42319, 0, 42319])), new CaseRange.ptr(608, 608, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(609, 609, $toNativeArray($kindInt32, [42315, 0, 42315])), new CaseRange.ptr(611, 611, $toNativeArray($kindInt32, [-207, 0, -207])), new CaseRange.ptr(613, 613, $toNativeArray($kindInt32, [42280, 0, 42280])), new CaseRange.ptr(614, 614, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(616, 616, $toNativeArray($kindInt32, [-209, 0, -209])), new CaseRange.ptr(617, 617, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(618, 618, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(619, 619, $toNativeArray($kindInt32, [10743, 0, 10743])), new CaseRange.ptr(620, 620, $toNativeArray($kindInt32, [42305, 0, 42305])), new CaseRange.ptr(623, 623, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(625, 625, $toNativeArray($kindInt32, [10749, 0, 10749])), new CaseRange.ptr(626, 626, $toNativeArray($kindInt32, [-213, 0, -213])), new CaseRange.ptr(629, 629, $toNativeArray($kindInt32, [-214, 0, -214])), new CaseRange.ptr(637, 637, $toNativeArray($kindInt32, [10727, 0, 10727])), new CaseRange.ptr(640, 640, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(643, 643, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(647, 647, $toNativeArray($kindInt32, [42282, 0, 42282])), new CaseRange.ptr(648, 648, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(649, 649, $toNativeArray($kindInt32, [-69, 0, -69])), new CaseRange.ptr(650, 651, $toNativeArray($kindInt32, [-217, 0, -217])), new CaseRange.ptr(652, 652, $toNativeArray($kindInt32, [-71, 0, -71])), new CaseRange.ptr(658, 658, $toNativeArray($kindInt32, [-219, 0, -219])), new CaseRange.ptr(669, 669, $toNativeArray($kindInt32, [42261, 0, 42261])), new CaseRange.ptr(670, 670, $toNativeArray($kindInt32, [42258, 0, 42258])), new CaseRange.ptr(837, 837, $toNativeArray($kindInt32, [84, 0, 84])), new CaseRange.ptr(880, 883, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(886, 887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(891, 893, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(895, 895, $toNativeArray($kindInt32, [0, 116, 0])), new CaseRange.ptr(902, 902, $toNativeArray($kindInt32, [0, 38, 0])), new CaseRange.ptr(904, 906, $toNativeArray($kindInt32, [0, 37, 0])), new CaseRange.ptr(908, 908, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(910, 911, $toNativeArray($kindInt32, [0, 63, 0])), new CaseRange.ptr(913, 929, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(931, 939, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(940, 940, $toNativeArray($kindInt32, [-38, 0, -38])), new CaseRange.ptr(941, 943, $toNativeArray($kindInt32, [-37, 0, -37])), new CaseRange.ptr(945, 961, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(962, 962, $toNativeArray($kindInt32, [-31, 0, -31])), new CaseRange.ptr(963, 971, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(972, 972, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(973, 974, $toNativeArray($kindInt32, [-63, 0, -63])), new CaseRange.ptr(975, 975, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(976, 976, $toNativeArray($kindInt32, [-62, 0, -62])), new CaseRange.ptr(977, 977, $toNativeArray($kindInt32, [-57, 0, -57])), new CaseRange.ptr(981, 981, $toNativeArray($kindInt32, [-47, 0, -47])), new CaseRange.ptr(982, 982, $toNativeArray($kindInt32, [-54, 0, -54])), new CaseRange.ptr(983, 983, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(984, 1007, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1008, 1008, $toNativeArray($kindInt32, [-86, 0, -86])), new CaseRange.ptr(1009, 1009, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1010, 1010, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(1011, 1011, $toNativeArray($kindInt32, [-116, 0, -116])), new CaseRange.ptr(1012, 1012, $toNativeArray($kindInt32, [0, -60, 0])), new CaseRange.ptr(1013, 1013, $toNativeArray($kindInt32, [-96, 0, -96])), new CaseRange.ptr(1015, 1016, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1017, 1017, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(1018, 1019, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1021, 1023, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(1024, 1039, $toNativeArray($kindInt32, [0, 80, 0])), new CaseRange.ptr(1040, 1071, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(1072, 1103, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(1104, 1119, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1120, 1153, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1162, 1215, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1216, 1216, $toNativeArray($kindInt32, [0, 15, 0])), new CaseRange.ptr(1217, 1230, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1231, 1231, $toNativeArray($kindInt32, [-15, 0, -15])), new CaseRange.ptr(1232, 1327, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1329, 1366, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(1377, 1414, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(4256, 4293, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4295, 4295, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4301, 4301, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(5024, 5103, $toNativeArray($kindInt32, [0, 38864, 0])), new CaseRange.ptr(5104, 5109, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(5112, 5117, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(7296, 7296, $toNativeArray($kindInt32, [-6254, 0, -6254])), new CaseRange.ptr(7297, 7297, $toNativeArray($kindInt32, [-6253, 0, -6253])), new CaseRange.ptr(7298, 7298, $toNativeArray($kindInt32, [-6244, 0, -6244])), new CaseRange.ptr(7299, 7300, $toNativeArray($kindInt32, [-6242, 0, -6242])), new CaseRange.ptr(7301, 7301, $toNativeArray($kindInt32, [-6243, 0, -6243])), new CaseRange.ptr(7302, 7302, $toNativeArray($kindInt32, [-6236, 0, -6236])), new CaseRange.ptr(7303, 7303, $toNativeArray($kindInt32, [-6181, 0, -6181])), new CaseRange.ptr(7304, 7304, $toNativeArray($kindInt32, [35266, 0, 35266])), new CaseRange.ptr(7545, 7545, $toNativeArray($kindInt32, [35332, 0, 35332])), new CaseRange.ptr(7549, 7549, $toNativeArray($kindInt32, [3814, 0, 3814])), new CaseRange.ptr(7680, 7829, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7835, 7835, $toNativeArray($kindInt32, [-59, 0, -59])), new CaseRange.ptr(7838, 7838, $toNativeArray($kindInt32, [0, -7615, 0])), new CaseRange.ptr(7840, 7935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7936, 7943, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7944, 7951, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7952, 7957, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7960, 7965, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7968, 7975, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7976, 7983, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7984, 7991, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7992, 7999, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8000, 8005, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8008, 8013, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8017, 8017, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8019, 8019, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8021, 8021, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8023, 8023, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8025, 8025, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8027, 8027, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8029, 8029, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8031, 8031, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8032, 8039, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8040, 8047, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8048, 8049, $toNativeArray($kindInt32, [74, 0, 74])), new CaseRange.ptr(8050, 8053, $toNativeArray($kindInt32, [86, 0, 86])), new CaseRange.ptr(8054, 8055, $toNativeArray($kindInt32, [100, 0, 100])), new CaseRange.ptr(8056, 8057, $toNativeArray($kindInt32, [128, 0, 128])), new CaseRange.ptr(8058, 8059, $toNativeArray($kindInt32, [112, 0, 112])), new CaseRange.ptr(8060, 8061, $toNativeArray($kindInt32, [126, 0, 126])), new CaseRange.ptr(8064, 8071, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8072, 8079, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8080, 8087, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8088, 8095, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8096, 8103, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8104, 8111, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8112, 8113, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8115, 8115, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8120, 8121, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8122, 8123, $toNativeArray($kindInt32, [0, -74, 0])), new CaseRange.ptr(8124, 8124, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8126, 8126, $toNativeArray($kindInt32, [-7205, 0, -7205])), new CaseRange.ptr(8131, 8131, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8136, 8139, $toNativeArray($kindInt32, [0, -86, 0])), new CaseRange.ptr(8140, 8140, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8144, 8145, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8152, 8153, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8154, 8155, $toNativeArray($kindInt32, [0, -100, 0])), new CaseRange.ptr(8160, 8161, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8165, 8165, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(8168, 8169, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8170, 8171, $toNativeArray($kindInt32, [0, -112, 0])), new CaseRange.ptr(8172, 8172, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(8179, 8179, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8184, 8185, $toNativeArray($kindInt32, [0, -128, 0])), new CaseRange.ptr(8186, 8187, $toNativeArray($kindInt32, [0, -126, 0])), new CaseRange.ptr(8188, 8188, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8486, 8486, $toNativeArray($kindInt32, [0, -7517, 0])), new CaseRange.ptr(8490, 8490, $toNativeArray($kindInt32, [0, -8383, 0])), new CaseRange.ptr(8491, 8491, $toNativeArray($kindInt32, [0, -8262, 0])), new CaseRange.ptr(8498, 8498, $toNativeArray($kindInt32, [0, 28, 0])), new CaseRange.ptr(8526, 8526, $toNativeArray($kindInt32, [-28, 0, -28])), new CaseRange.ptr(8544, 8559, $toNativeArray($kindInt32, [0, 16, 0])), new CaseRange.ptr(8560, 8575, $toNativeArray($kindInt32, [-16, 0, -16])), new CaseRange.ptr(8579, 8580, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(9398, 9423, $toNativeArray($kindInt32, [0, 26, 0])), new CaseRange.ptr(9424, 9449, $toNativeArray($kindInt32, [-26, 0, -26])), new CaseRange.ptr(11264, 11310, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(11312, 11358, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(11360, 11361, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11362, 11362, $toNativeArray($kindInt32, [0, -10743, 0])), new CaseRange.ptr(11363, 11363, $toNativeArray($kindInt32, [0, -3814, 0])), new CaseRange.ptr(11364, 11364, $toNativeArray($kindInt32, [0, -10727, 0])), new CaseRange.ptr(11365, 11365, $toNativeArray($kindInt32, [-10795, 0, -10795])), new CaseRange.ptr(11366, 11366, $toNativeArray($kindInt32, [-10792, 0, -10792])), new CaseRange.ptr(11367, 11372, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11373, 11373, $toNativeArray($kindInt32, [0, -10780, 0])), new CaseRange.ptr(11374, 11374, $toNativeArray($kindInt32, [0, -10749, 0])), new CaseRange.ptr(11375, 11375, $toNativeArray($kindInt32, [0, -10783, 0])), new CaseRange.ptr(11376, 11376, $toNativeArray($kindInt32, [0, -10782, 0])), new CaseRange.ptr(11378, 11379, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11381, 11382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11390, 11391, $toNativeArray($kindInt32, [0, -10815, 0])), new CaseRange.ptr(11392, 11491, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11499, 11502, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11506, 11507, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11520, 11557, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11559, 11559, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11565, 11565, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(42560, 42605, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42624, 42651, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42786, 42799, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42802, 42863, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42873, 42876, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42877, 42877, $toNativeArray($kindInt32, [0, -35332, 0])), new CaseRange.ptr(42878, 42887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42891, 42892, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42893, 42893, $toNativeArray($kindInt32, [0, -42280, 0])), new CaseRange.ptr(42896, 42899, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42902, 42921, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42922, 42922, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42923, 42923, $toNativeArray($kindInt32, [0, -42319, 0])), new CaseRange.ptr(42924, 42924, $toNativeArray($kindInt32, [0, -42315, 0])), new CaseRange.ptr(42925, 42925, $toNativeArray($kindInt32, [0, -42305, 0])), new CaseRange.ptr(42926, 42926, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42928, 42928, $toNativeArray($kindInt32, [0, -42258, 0])), new CaseRange.ptr(42929, 42929, $toNativeArray($kindInt32, [0, -42282, 0])), new CaseRange.ptr(42930, 42930, $toNativeArray($kindInt32, [0, -42261, 0])), new CaseRange.ptr(42931, 42931, $toNativeArray($kindInt32, [0, 928, 0])), new CaseRange.ptr(42932, 42935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(43859, 43859, $toNativeArray($kindInt32, [-928, 0, -928])), new CaseRange.ptr(43888, 43967, $toNativeArray($kindInt32, [-38864, 0, -38864])), new CaseRange.ptr(65313, 65338, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(65345, 65370, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(66560, 66599, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66600, 66639, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(66736, 66771, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66776, 66811, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(68736, 68786, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(68800, 68850, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(71840, 71871, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(71872, 71903, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(125184, 125217, $toNativeArray($kindInt32, [0, 34, 0])), new CaseRange.ptr(125218, 125251, $toNativeArray($kindInt32, [-34, 0, -34]))]); - $pkg.CaseRanges = _CaseRanges; - properties = $toNativeArray($kindUint8, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 130, 130, 130, 136, 130, 130, 130, 130, 130, 130, 136, 130, 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 130, 130, 136, 136, 136, 130, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 130, 130, 130, 136, 130, 136, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 130, 136, 130, 136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 130, 136, 136, 136, 136, 136, 130, 136, 136, 224, 130, 136, 0, 136, 136, 136, 136, 132, 132, 136, 192, 130, 130, 136, 132, 224, 130, 132, 132, 132, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, 160, 160, 160, 160, 160, 160, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 136, 192, 192, 192, 192, 192, 192, 192, 192]); - asciiFold = $toNativeArray($kindUint16, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 8490, 76, 77, 78, 79, 80, 81, 82, 383, 84, 85, 86, 87, 88, 89, 90, 123, 124, 125, 126, 127]); - caseOrbit = new sliceType$4([new foldPair.ptr(75, 107), new foldPair.ptr(83, 115), new foldPair.ptr(107, 8490), new foldPair.ptr(115, 383), new foldPair.ptr(181, 924), new foldPair.ptr(197, 229), new foldPair.ptr(223, 7838), new foldPair.ptr(229, 8491), new foldPair.ptr(304, 304), new foldPair.ptr(305, 305), new foldPair.ptr(383, 83), new foldPair.ptr(452, 453), new foldPair.ptr(453, 454), new foldPair.ptr(454, 452), new foldPair.ptr(455, 456), new foldPair.ptr(456, 457), new foldPair.ptr(457, 455), new foldPair.ptr(458, 459), new foldPair.ptr(459, 460), new foldPair.ptr(460, 458), new foldPair.ptr(497, 498), new foldPair.ptr(498, 499), new foldPair.ptr(499, 497), new foldPair.ptr(837, 921), new foldPair.ptr(914, 946), new foldPair.ptr(917, 949), new foldPair.ptr(920, 952), new foldPair.ptr(921, 953), new foldPair.ptr(922, 954), new foldPair.ptr(924, 956), new foldPair.ptr(928, 960), new foldPair.ptr(929, 961), new foldPair.ptr(931, 962), new foldPair.ptr(934, 966), new foldPair.ptr(937, 969), new foldPair.ptr(946, 976), new foldPair.ptr(949, 1013), new foldPair.ptr(952, 977), new foldPair.ptr(953, 8126), new foldPair.ptr(954, 1008), new foldPair.ptr(956, 181), new foldPair.ptr(960, 982), new foldPair.ptr(961, 1009), new foldPair.ptr(962, 963), new foldPair.ptr(963, 931), new foldPair.ptr(966, 981), new foldPair.ptr(969, 8486), new foldPair.ptr(976, 914), new foldPair.ptr(977, 1012), new foldPair.ptr(981, 934), new foldPair.ptr(982, 928), new foldPair.ptr(1008, 922), new foldPair.ptr(1009, 929), new foldPair.ptr(1012, 920), new foldPair.ptr(1013, 917), new foldPair.ptr(1042, 1074), new foldPair.ptr(1044, 1076), new foldPair.ptr(1054, 1086), new foldPair.ptr(1057, 1089), new foldPair.ptr(1058, 1090), new foldPair.ptr(1066, 1098), new foldPair.ptr(1074, 7296), new foldPair.ptr(1076, 7297), new foldPair.ptr(1086, 7298), new foldPair.ptr(1089, 7299), new foldPair.ptr(1090, 7300), new foldPair.ptr(1098, 7302), new foldPair.ptr(1122, 1123), new foldPair.ptr(1123, 7303), new foldPair.ptr(7296, 1042), new foldPair.ptr(7297, 1044), new foldPair.ptr(7298, 1054), new foldPair.ptr(7299, 1057), new foldPair.ptr(7300, 7301), new foldPair.ptr(7301, 1058), new foldPair.ptr(7302, 1066), new foldPair.ptr(7303, 1122), new foldPair.ptr(7304, 42570), new foldPair.ptr(7776, 7777), new foldPair.ptr(7777, 7835), new foldPair.ptr(7835, 7776), new foldPair.ptr(7838, 223), new foldPair.ptr(8126, 837), new foldPair.ptr(8486, 937), new foldPair.ptr(8490, 75), new foldPair.ptr(8491, 197), new foldPair.ptr(42570, 42571), new foldPair.ptr(42571, 7304)]); - foldL = new RangeTable.ptr(new sliceType([new Range16.ptr(837, 837, 1)]), sliceType$1.nil, 0); - foldLl = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 302, 2), new Range16.ptr(306, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 453, 1), new Range16.ptr(455, 456, 1), new Range16.ptr(458, 459, 1), new Range16.ptr(461, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 498, 1), new Range16.ptr(500, 502, 2), new Range16.ptr(503, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(837, 880, 43), new Range16.ptr(882, 886, 4), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 984, 9), new Range16.ptr(986, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(5024, 5109, 1), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8072, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8120, 8124, 1), new Range16.ptr(8136, 8140, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8188, 1), new Range16.ptr(8486, 8490, 4), new Range16.ptr(8491, 8498, 7), new Range16.ptr(8579, 11264, 2685), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42926, 1), new Range16.ptr(42928, 42932, 1), new Range16.ptr(42934, 65313, 22379), new Range16.ptr(65314, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(71840, 71871, 1), new Range32.ptr(125184, 125217, 1)]), 3); - foldLt = new RangeTable.ptr(new sliceType([new Range16.ptr(452, 454, 2), new Range16.ptr(455, 457, 2), new Range16.ptr(458, 460, 2), new Range16.ptr(497, 499, 2), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8115, 8131, 16), new Range16.ptr(8179, 8179, 1)]), sliceType$1.nil, 0); - foldLu = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 303, 2), new Range16.ptr(307, 311, 2), new Range16.ptr(314, 328, 2), new Range16.ptr(331, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(402, 405, 3), new Range16.ptr(409, 410, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 429, 5), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(445, 447, 2), new Range16.ptr(453, 454, 1), new Range16.ptr(456, 457, 1), new Range16.ptr(459, 460, 1), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(498, 499, 1), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 543, 2), new Range16.ptr(547, 563, 2), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 596, 1), new Range16.ptr(598, 599, 1), new Range16.ptr(601, 603, 2), new Range16.ptr(604, 608, 4), new Range16.ptr(609, 613, 2), new Range16.ptr(614, 616, 2), new Range16.ptr(617, 620, 1), new Range16.ptr(623, 625, 2), new Range16.ptr(626, 629, 3), new Range16.ptr(637, 643, 3), new Range16.ptr(647, 652, 1), new Range16.ptr(658, 669, 11), new Range16.ptr(670, 837, 167), new Range16.ptr(881, 883, 2), new Range16.ptr(887, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(940, 943, 1), new Range16.ptr(945, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1072, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1414, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7545, 7549, 4), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7835, 7841, 6), new Range16.ptr(7843, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8017, 8023, 2), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8112, 8113, 1), new Range16.ptr(8126, 8144, 18), new Range16.ptr(8145, 8160, 15), new Range16.ptr(8161, 8165, 4), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11379, 11382, 3), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11500, 11502, 2), new Range16.ptr(11507, 11520, 13), new Range16.ptr(11521, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42803, 42863, 2), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42897, 5), new Range16.ptr(42899, 42903, 4), new Range16.ptr(42905, 42921, 2), new Range16.ptr(42933, 42935, 2), new Range16.ptr(43859, 43888, 29), new Range16.ptr(43889, 43967, 1), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(71872, 71903, 1), new Range32.ptr(125218, 125251, 1)]), 4); - foldM = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); - foldMn = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); - $pkg.FoldCategory = $makeMap($String.keyFor, [{ k: "L", v: foldL }, { k: "Ll", v: foldLl }, { k: "Lt", v: foldLt }, { k: "Lu", v: foldLu }, { k: "M", v: foldM }, { k: "Mn", v: foldMn }]); - foldCommon = new RangeTable.ptr(new sliceType([new Range16.ptr(924, 956, 32)]), sliceType$1.nil, 0); - foldGreek = new RangeTable.ptr(new sliceType([new Range16.ptr(181, 837, 656)]), sliceType$1.nil, 0); - foldInherited = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0); - $pkg.FoldScript = $makeMap($String.keyFor, [{ k: "Common", v: foldCommon }, { k: "Greek", v: foldGreek }, { k: "Inherited", v: foldInherited }]); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["reflect"] = (function() { - var $pkg = {}, $init, errors, js, math, runtime, strconv, sync, unicode, utf8, uncommonType, funcType, name, nameData, mapIter, Type, Kind, tflag, rtype, typeAlg, method, ChanDir, arrayType, chanType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, Method, nameOff, typeOff, textOff, StructField, StructTag, fieldScan, Value, flag, ValueError, MapIter, sliceType$1, ptrType$1, sliceType$2, sliceType$3, ptrType$2, funcType$1, sliceType$4, ptrType$3, ptrType$4, sliceType$5, sliceType$6, sliceType$7, ptrType$5, ptrType$6, structType$3, sliceType$8, sliceType$9, ptrType$7, ptrType$8, sliceType$10, sliceType$11, ptrType$9, ptrType$10, sliceType$13, sliceType$14, ptrType$11, sliceType$15, ptrType$17, sliceType$18, funcType$3, funcType$4, funcType$5, ptrType$18, arrayType$8, ptrType$19, ptrType$20, initialized, uncommonTypeMap, nameMap, nameOffList, typeOffList, callHelper, jsObjectPtr, selectHelper, kindNames, uint8Type, init, jsType, reflectType, setKindType, newName, newNameOff, newTypeOff, internalStr, isWrapped, copyStruct, makeValue, MakeSlice, TypeOf, ValueOf, FuncOf, SliceOf, Zero, unsafe_New, makeInt, typedmemmove, keyFor, mapaccess, mapassign, mapdelete, mapiterinit, mapiterkey, mapitervalue, mapiternext, maplen, cvtDirect, methodReceiver, valueInterface, ifaceE2I, methodName, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, chanrecv, chansend, PtrTo, implements$1, directlyAssignable, haveIdenticalType, haveIdenticalUnderlyingType, toType, ifaceIndir, copyVal, overflowFloat32, Indirect, New, convertOp, makeFloat, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I; - errors = $packages["errors"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - math = $packages["math"]; - runtime = $packages["runtime"]; - strconv = $packages["strconv"]; - sync = $packages["sync"]; - unicode = $packages["unicode"]; - utf8 = $packages["unicode/utf8"]; - uncommonType = $pkg.uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", true, "reflect", false, function(pkgPath_, mcount_, xcount_, moff_, _methods_) { - this.$val = this; - if (arguments.length === 0) { - this.pkgPath = 0; - this.mcount = 0; - this.xcount = 0; - this.moff = 0; - this._methods = sliceType$5.nil; - return; - } - this.pkgPath = pkgPath_; - this.mcount = mcount_; - this.xcount = xcount_; - this.moff = moff_; - this._methods = _methods_; - }); - funcType = $pkg.funcType = $newType(0, $kindStruct, "reflect.funcType", true, "reflect", false, function(rtype_, inCount_, outCount_, _in_, _out_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.inCount = 0; - this.outCount = 0; - this._in = sliceType$2.nil; - this._out = sliceType$2.nil; - return; - } - this.rtype = rtype_; - this.inCount = inCount_; - this.outCount = outCount_; - this._in = _in_; - this._out = _out_; - }); - name = $pkg.name = $newType(0, $kindStruct, "reflect.name", true, "reflect", false, function(bytes_) { - this.$val = this; - if (arguments.length === 0) { - this.bytes = ptrType$4.nil; - return; - } - this.bytes = bytes_; - }); - nameData = $pkg.nameData = $newType(0, $kindStruct, "reflect.nameData", true, "reflect", false, function(name_, tag_, exported_) { - this.$val = this; - if (arguments.length === 0) { - this.name = ""; - this.tag = ""; - this.exported = false; - return; - } - this.name = name_; - this.tag = tag_; - this.exported = exported_; - }); - mapIter = $pkg.mapIter = $newType(0, $kindStruct, "reflect.mapIter", true, "reflect", false, function(t_, m_, keys_, i_, last_) { - this.$val = this; - if (arguments.length === 0) { - this.t = $ifaceNil; - this.m = null; - this.keys = null; - this.i = 0; - this.last = null; - return; - } - this.t = t_; - this.m = m_; - this.keys = keys_; - this.i = i_; - this.last = last_; - }); - Type = $pkg.Type = $newType(8, $kindInterface, "reflect.Type", true, "reflect", true, null); - Kind = $pkg.Kind = $newType(4, $kindUint, "reflect.Kind", true, "reflect", true, null); - tflag = $pkg.tflag = $newType(1, $kindUint8, "reflect.tflag", true, "reflect", false, null); - rtype = $pkg.rtype = $newType(0, $kindStruct, "reflect.rtype", true, "reflect", false, function(size_, ptrdata_, hash_, tflag_, align_, fieldAlign_, kind_, alg_, gcdata_, str_, ptrToThis_) { - this.$val = this; - if (arguments.length === 0) { - this.size = 0; - this.ptrdata = 0; - this.hash = 0; - this.tflag = 0; - this.align = 0; - this.fieldAlign = 0; - this.kind = 0; - this.alg = ptrType$3.nil; - this.gcdata = ptrType$4.nil; - this.str = 0; - this.ptrToThis = 0; - return; - } - this.size = size_; - this.ptrdata = ptrdata_; - this.hash = hash_; - this.tflag = tflag_; - this.align = align_; - this.fieldAlign = fieldAlign_; - this.kind = kind_; - this.alg = alg_; - this.gcdata = gcdata_; - this.str = str_; - this.ptrToThis = ptrToThis_; - }); - typeAlg = $pkg.typeAlg = $newType(0, $kindStruct, "reflect.typeAlg", true, "reflect", false, function(hash_, equal_) { - this.$val = this; - if (arguments.length === 0) { - this.hash = $throwNilPointerError; - this.equal = $throwNilPointerError; - return; - } - this.hash = hash_; - this.equal = equal_; - }); - method = $pkg.method = $newType(0, $kindStruct, "reflect.method", true, "reflect", false, function(name_, mtyp_, ifn_, tfn_) { - this.$val = this; - if (arguments.length === 0) { - this.name = 0; - this.mtyp = 0; - this.ifn = 0; - this.tfn = 0; - return; - } - this.name = name_; - this.mtyp = mtyp_; - this.ifn = ifn_; - this.tfn = tfn_; - }); - ChanDir = $pkg.ChanDir = $newType(4, $kindInt, "reflect.ChanDir", true, "reflect", true, null); - arrayType = $pkg.arrayType = $newType(0, $kindStruct, "reflect.arrayType", true, "reflect", false, function(rtype_, elem_, slice_, len_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.elem = ptrType$1.nil; - this.slice = ptrType$1.nil; - this.len = 0; - return; - } - this.rtype = rtype_; - this.elem = elem_; - this.slice = slice_; - this.len = len_; - }); - chanType = $pkg.chanType = $newType(0, $kindStruct, "reflect.chanType", true, "reflect", false, function(rtype_, elem_, dir_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.elem = ptrType$1.nil; - this.dir = 0; - return; - } - this.rtype = rtype_; - this.elem = elem_; - this.dir = dir_; - }); - imethod = $pkg.imethod = $newType(0, $kindStruct, "reflect.imethod", true, "reflect", false, function(name_, typ_) { - this.$val = this; - if (arguments.length === 0) { - this.name = 0; - this.typ = 0; - return; - } - this.name = name_; - this.typ = typ_; - }); - interfaceType = $pkg.interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", true, "reflect", false, function(rtype_, pkgPath_, methods_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.pkgPath = new name.ptr(ptrType$4.nil); - this.methods = sliceType$6.nil; - return; - } - this.rtype = rtype_; - this.pkgPath = pkgPath_; - this.methods = methods_; - }); - mapType = $pkg.mapType = $newType(0, $kindStruct, "reflect.mapType", true, "reflect", false, function(rtype_, key_, elem_, bucket_, keysize_, valuesize_, bucketsize_, flags_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.key = ptrType$1.nil; - this.elem = ptrType$1.nil; - this.bucket = ptrType$1.nil; - this.keysize = 0; - this.valuesize = 0; - this.bucketsize = 0; - this.flags = 0; - return; - } - this.rtype = rtype_; - this.key = key_; - this.elem = elem_; - this.bucket = bucket_; - this.keysize = keysize_; - this.valuesize = valuesize_; - this.bucketsize = bucketsize_; - this.flags = flags_; - }); - ptrType = $pkg.ptrType = $newType(0, $kindStruct, "reflect.ptrType", true, "reflect", false, function(rtype_, elem_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.elem = ptrType$1.nil; - return; - } - this.rtype = rtype_; - this.elem = elem_; - }); - sliceType = $pkg.sliceType = $newType(0, $kindStruct, "reflect.sliceType", true, "reflect", false, function(rtype_, elem_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.elem = ptrType$1.nil; - return; - } - this.rtype = rtype_; - this.elem = elem_; - }); - structField = $pkg.structField = $newType(0, $kindStruct, "reflect.structField", true, "reflect", false, function(name_, typ_, offsetEmbed_) { - this.$val = this; - if (arguments.length === 0) { - this.name = new name.ptr(ptrType$4.nil); - this.typ = ptrType$1.nil; - this.offsetEmbed = 0; - return; - } - this.name = name_; - this.typ = typ_; - this.offsetEmbed = offsetEmbed_; - }); - structType = $pkg.structType = $newType(0, $kindStruct, "reflect.structType", true, "reflect", false, function(rtype_, pkgPath_, fields_) { - this.$val = this; - if (arguments.length === 0) { - this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - this.pkgPath = new name.ptr(ptrType$4.nil); - this.fields = sliceType$7.nil; - return; - } - this.rtype = rtype_; - this.pkgPath = pkgPath_; - this.fields = fields_; - }); - Method = $pkg.Method = $newType(0, $kindStruct, "reflect.Method", true, "reflect", true, function(Name_, PkgPath_, Type_, Func_, Index_) { - this.$val = this; - if (arguments.length === 0) { - this.Name = ""; - this.PkgPath = ""; - this.Type = $ifaceNil; - this.Func = new Value.ptr(ptrType$1.nil, 0, 0); - this.Index = 0; - return; - } - this.Name = Name_; - this.PkgPath = PkgPath_; - this.Type = Type_; - this.Func = Func_; - this.Index = Index_; - }); - nameOff = $pkg.nameOff = $newType(4, $kindInt32, "reflect.nameOff", true, "reflect", false, null); - typeOff = $pkg.typeOff = $newType(4, $kindInt32, "reflect.typeOff", true, "reflect", false, null); - textOff = $pkg.textOff = $newType(4, $kindInt32, "reflect.textOff", true, "reflect", false, null); - StructField = $pkg.StructField = $newType(0, $kindStruct, "reflect.StructField", true, "reflect", true, function(Name_, PkgPath_, Type_, Tag_, Offset_, Index_, Anonymous_) { - this.$val = this; - if (arguments.length === 0) { - this.Name = ""; - this.PkgPath = ""; - this.Type = $ifaceNil; - this.Tag = ""; - this.Offset = 0; - this.Index = sliceType$13.nil; - this.Anonymous = false; - return; - } - this.Name = Name_; - this.PkgPath = PkgPath_; - this.Type = Type_; - this.Tag = Tag_; - this.Offset = Offset_; - this.Index = Index_; - this.Anonymous = Anonymous_; - }); - StructTag = $pkg.StructTag = $newType(8, $kindString, "reflect.StructTag", true, "reflect", true, null); - fieldScan = $pkg.fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", true, "reflect", false, function(typ_, index_) { - this.$val = this; - if (arguments.length === 0) { - this.typ = ptrType$11.nil; - this.index = sliceType$13.nil; - return; - } - this.typ = typ_; - this.index = index_; - }); - Value = $pkg.Value = $newType(0, $kindStruct, "reflect.Value", true, "reflect", true, function(typ_, ptr_, flag_) { - this.$val = this; - if (arguments.length === 0) { - this.typ = ptrType$1.nil; - this.ptr = 0; - this.flag = 0; - return; - } - this.typ = typ_; - this.ptr = ptr_; - this.flag = flag_; - }); - flag = $pkg.flag = $newType(4, $kindUintptr, "reflect.flag", true, "reflect", false, null); - ValueError = $pkg.ValueError = $newType(0, $kindStruct, "reflect.ValueError", true, "reflect", true, function(Method_, Kind_) { - this.$val = this; - if (arguments.length === 0) { - this.Method = ""; - this.Kind = 0; - return; - } - this.Method = Method_; - this.Kind = Kind_; - }); - MapIter = $pkg.MapIter = $newType(0, $kindStruct, "reflect.MapIter", true, "reflect", true, function(m_, it_) { - this.$val = this; - if (arguments.length === 0) { - this.m = new Value.ptr(ptrType$1.nil, 0, 0); - this.it = 0; - return; - } - this.m = m_; - this.it = it_; - }); - sliceType$1 = $sliceType(name); - ptrType$1 = $ptrType(rtype); - sliceType$2 = $sliceType(ptrType$1); - sliceType$3 = $sliceType($emptyInterface); - ptrType$2 = $ptrType(js.Object); - funcType$1 = $funcType([sliceType$3], [ptrType$2], true); - sliceType$4 = $sliceType($String); - ptrType$3 = $ptrType(typeAlg); - ptrType$4 = $ptrType($Uint8); - sliceType$5 = $sliceType(method); - sliceType$6 = $sliceType(imethod); - sliceType$7 = $sliceType(structField); - ptrType$5 = $ptrType(uncommonType); - ptrType$6 = $ptrType(nameData); - structType$3 = $structType("reflect", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); - sliceType$8 = $sliceType(ptrType$2); - sliceType$9 = $sliceType(Value); - ptrType$7 = $ptrType(mapIter); - ptrType$8 = $ptrType(funcType); - sliceType$10 = $sliceType(Type); - sliceType$11 = $sliceType(sliceType$8); - ptrType$9 = $ptrType(interfaceType); - ptrType$10 = $ptrType(imethod); - sliceType$13 = $sliceType($Int); - sliceType$14 = $sliceType(fieldScan); - ptrType$11 = $ptrType(structType); - sliceType$15 = $sliceType($Uint8); - ptrType$17 = $ptrType($UnsafePointer); - sliceType$18 = $sliceType($Int32); - funcType$3 = $funcType([$String], [$Bool], false); - funcType$4 = $funcType([$UnsafePointer, $Uintptr], [$Uintptr], false); - funcType$5 = $funcType([$UnsafePointer, $UnsafePointer], [$Bool], false); - ptrType$18 = $ptrType(structField); - arrayType$8 = $arrayType($Uintptr, 2); - ptrType$19 = $ptrType(MapIter); - ptrType$20 = $ptrType(ValueError); - init = function() { - var used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; used = $f.used; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - used = (function(i) { - var i; - }); - $r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$1 = new uncommonType.ptr(0, 0, 0, 0, sliceType$5.nil), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$2 = new method.ptr(0, 0, 0, 0), new x$2.constructor.elem(x$2))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$3 = new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, 0), new x$3.constructor.elem(x$3))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$4 = new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, 0), new x$4.constructor.elem(x$4))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$5 = new funcType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), 0, 0, sliceType$2.nil, sliceType$2.nil), new x$5.constructor.elem(x$5))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$6 = new interfaceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new name.ptr(ptrType$4.nil), sliceType$6.nil), new x$6.constructor.elem(x$6))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$7 = new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0), new x$7.constructor.elem(x$7))); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$8 = new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil), new x$8.constructor.elem(x$8))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$9 = new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil), new x$9.constructor.elem(x$9))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$10 = new structType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new name.ptr(ptrType$4.nil), sliceType$7.nil), new x$10.constructor.elem(x$10))); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$11 = new imethod.ptr(0, 0), new x$11.constructor.elem(x$11))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = used((x$12 = new structField.ptr(new name.ptr(ptrType$4.nil), ptrType$1.nil, 0), new x$12.constructor.elem(x$12))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - initialized = true; - uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.used = used; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; - }; - jsType = function(typ) { - var typ; - return typ.jsType; - }; - reflectType = function(typ) { - var _1, _i, _i$1, _i$2, _i$3, _key, _ref, _ref$1, _ref$2, _ref$3, dir, exported, exported$1, f, fields, i, i$1, i$2, i$3, i$4, i$5, imethods, in$1, m, m$1, m$2, methodSet, methods, offsetEmbed, out, outCount, params, reflectFields, reflectMethods, results, rt, typ, ut, xcount; - if (typ.reflectType === undefined) { - rt = new rtype.ptr(((($parseInt(typ.size) >> 0) >>> 0)), 0, 0, 0, 0, 0, ((($parseInt(typ.kind) >> 0) << 24 >>> 24)), ptrType$3.nil, ptrType$4.nil, newNameOff($clone(newName(internalStr(typ.string), "", !!(typ.exported)), name)), 0); - rt.jsType = typ; - typ.reflectType = rt; - methodSet = $methodSet(typ); - if (!(($parseInt(methodSet.length) === 0)) || !!(typ.named)) { - rt.tflag = (rt.tflag | (1)) >>> 0; - if (!!(typ.named)) { - rt.tflag = (rt.tflag | (4)) >>> 0; - } - reflectMethods = sliceType$5.nil; - i = 0; - while (true) { - if (!(i < $parseInt(methodSet.length))) { break; } - m = methodSet[i]; - exported = internalStr(m.pkg) === ""; - if (!exported) { - i = i + (1) >> 0; - continue; - } - reflectMethods = $append(reflectMethods, new method.ptr(newNameOff($clone(newName(internalStr(m.name), "", exported), name)), newTypeOff(reflectType(m.typ)), 0, 0)); - i = i + (1) >> 0; - } - xcount = ((reflectMethods.$length << 16 >>> 16)); - i$1 = 0; - while (true) { - if (!(i$1 < $parseInt(methodSet.length))) { break; } - m$1 = methodSet[i$1]; - exported$1 = internalStr(m$1.pkg) === ""; - if (exported$1) { - i$1 = i$1 + (1) >> 0; - continue; - } - reflectMethods = $append(reflectMethods, new method.ptr(newNameOff($clone(newName(internalStr(m$1.name), "", exported$1), name)), newTypeOff(reflectType(m$1.typ)), 0, 0)); - i$1 = i$1 + (1) >> 0; - } - ut = new uncommonType.ptr(newNameOff($clone(newName(internalStr(typ.pkg), "", false), name)), (($parseInt(methodSet.length) << 16 >>> 16)), xcount, 0, reflectMethods); - _key = rt; (uncommonTypeMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: ut }; - ut.jsType = typ; - } - _1 = rt.Kind(); - if (_1 === (17)) { - setKindType(rt, new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem), ptrType$1.nil, ((($parseInt(typ.len) >> 0) >>> 0)))); - } else if (_1 === (18)) { - dir = 3; - if (!!(typ.sendOnly)) { - dir = 2; - } - if (!!(typ.recvOnly)) { - dir = 1; - } - setKindType(rt, new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem), ((dir >>> 0)))); - } else if (_1 === (19)) { - params = typ.params; - in$1 = $makeSlice(sliceType$2, $parseInt(params.length)); - _ref = in$1; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i$2 = _i; - ((i$2 < 0 || i$2 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i$2] = reflectType(params[i$2])); - _i++; - } - results = typ.results; - out = $makeSlice(sliceType$2, $parseInt(results.length)); - _ref$1 = out; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$3 = _i$1; - ((i$3 < 0 || i$3 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$3] = reflectType(results[i$3])); - _i$1++; - } - outCount = (($parseInt(results.length) << 16 >>> 16)); - if (!!(typ.variadic)) { - outCount = (outCount | (32768)) >>> 0; - } - setKindType(rt, new funcType.ptr($clone(rt, rtype), (($parseInt(params.length) << 16 >>> 16)), outCount, in$1, out)); - } else if (_1 === (20)) { - methods = typ.methods; - imethods = $makeSlice(sliceType$6, $parseInt(methods.length)); - _ref$2 = imethods; - _i$2 = 0; - while (true) { - if (!(_i$2 < _ref$2.$length)) { break; } - i$4 = _i$2; - m$2 = methods[i$4]; - imethod.copy(((i$4 < 0 || i$4 >= imethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : imethods.$array[imethods.$offset + i$4]), new imethod.ptr(newNameOff($clone(newName(internalStr(m$2.name), "", internalStr(m$2.pkg) === ""), name)), newTypeOff(reflectType(m$2.typ)))); - _i$2++; - } - setKindType(rt, new interfaceType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkg), "", false), name), imethods)); - } else if (_1 === (21)) { - setKindType(rt, new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, 0, 0, 0, 0)); - } else if (_1 === (22)) { - setKindType(rt, new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem))); - } else if (_1 === (23)) { - setKindType(rt, new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem))); - } else if (_1 === (25)) { - fields = typ.fields; - reflectFields = $makeSlice(sliceType$7, $parseInt(fields.length)); - _ref$3 = reflectFields; - _i$3 = 0; - while (true) { - if (!(_i$3 < _ref$3.$length)) { break; } - i$5 = _i$3; - f = fields[i$5]; - offsetEmbed = ((i$5 >>> 0)) << 1 >>> 0; - if (!!(f.embedded)) { - offsetEmbed = (offsetEmbed | (1)) >>> 0; - } - structField.copy(((i$5 < 0 || i$5 >= reflectFields.$length) ? ($throwRuntimeError("index out of range"), undefined) : reflectFields.$array[reflectFields.$offset + i$5]), new structField.ptr($clone(newName(internalStr(f.name), internalStr(f.tag), !!(f.exported)), name), reflectType(f.typ), offsetEmbed)); - _i$3++; - } - setKindType(rt, new structType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkgPath), "", false), name), reflectFields)); - } - } - return ((typ.reflectType)); - }; - setKindType = function(rt, kindType) { - var kindType, rt; - rt.kindType = kindType; - kindType.rtype = rt; - }; - uncommonType.ptr.prototype.methods = function() { - var t; - t = this; - return t._methods; - }; - uncommonType.prototype.methods = function() { return this.$val.methods(); }; - uncommonType.ptr.prototype.exportedMethods = function() { - var t; - t = this; - return $subslice(t._methods, 0, t.xcount, t.xcount); - }; - uncommonType.prototype.exportedMethods = function() { return this.$val.exportedMethods(); }; - rtype.ptr.prototype.uncommon = function() { - var _entry, t; - t = this; - return (_entry = uncommonTypeMap[ptrType$1.keyFor(t)], _entry !== undefined ? _entry.v : ptrType$5.nil); - }; - rtype.prototype.uncommon = function() { return this.$val.uncommon(); }; - funcType.ptr.prototype.in$ = function() { - var t; - t = this; - return t._in; - }; - funcType.prototype.in$ = function() { return this.$val.in$(); }; - funcType.ptr.prototype.out = function() { - var t; - t = this; - return t._out; - }; - funcType.prototype.out = function() { return this.$val.out(); }; - name.ptr.prototype.name = function() { - var _entry, n, s; - s = ""; - n = this; - s = (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).name; - return s; - }; - name.prototype.name = function() { return this.$val.name(); }; - name.ptr.prototype.tag = function() { - var _entry, n, s; - s = ""; - n = this; - s = (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).tag; - return s; - }; - name.prototype.tag = function() { return this.$val.tag(); }; - name.ptr.prototype.pkgPath = function() { - var n; - n = this; - return ""; - }; - name.prototype.pkgPath = function() { return this.$val.pkgPath(); }; - name.ptr.prototype.isExported = function() { - var _entry, n; - n = this; - return (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).exported; - }; - name.prototype.isExported = function() { return this.$val.isExported(); }; - newName = function(n, tag, exported) { - var _key, b, exported, n, tag; - b = $newDataPointer(0, ptrType$4); - _key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$4.keyFor(_key)] = { k: _key, v: new nameData.ptr(n, tag, exported) }; - return new name.ptr(b); - }; - rtype.ptr.prototype.nameOff = function(off) { - var off, t, x; - t = this; - return (x = ((off >> 0)), ((x < 0 || x >= nameOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : nameOffList.$array[nameOffList.$offset + x])); - }; - rtype.prototype.nameOff = function(off) { return this.$val.nameOff(off); }; - newNameOff = function(n) { - var i, n; - i = nameOffList.$length; - nameOffList = $append(nameOffList, n); - return ((i >> 0)); - }; - rtype.ptr.prototype.typeOff = function(off) { - var off, t, x; - t = this; - return (x = ((off >> 0)), ((x < 0 || x >= typeOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeOffList.$array[typeOffList.$offset + x])); - }; - rtype.prototype.typeOff = function(off) { return this.$val.typeOff(off); }; - newTypeOff = function(t) { - var i, t; - i = typeOffList.$length; - typeOffList = $append(typeOffList, t); - return ((i >> 0)); - }; - internalStr = function(strObj) { - var c, strObj; - c = new structType$3.ptr(""); - c.str = strObj; - return c.str; - }; - isWrapped = function(typ) { - var typ; - return !!(jsType(typ).wrapped); - }; - copyStruct = function(dst, src, typ) { - var dst, fields, i, prop, src, typ; - fields = jsType(typ).fields; - i = 0; - while (true) { - if (!(i < $parseInt(fields.length))) { break; } - prop = $internalize(fields[i].prop, $String); - dst[$externalize(prop, $String)] = src[$externalize(prop, $String)]; - i = i + (1) >> 0; - } - }; - makeValue = function(t, v, fl) { - var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _v = $f._v; _v$1 = $f._v$1; fl = $f.fl; rt = $f.rt; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - rt = _r; - _r$1 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; } - _r$2 = t.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v$1 = _r$2 === 25; case 5: - if (_v$1) { _v = true; $s = 4; continue s; } - _r$3 = t.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _v = _r$3 === 22; case 4: - /* */ if (_v) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (_v) { */ case 2: - _r$4 = t.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $s = -1; return new Value.ptr(rt, (v), (fl | ((_r$4 >>> 0))) >>> 0); - /* } */ case 3: - _r$5 = t.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $s = -1; return new Value.ptr(rt, ($newDataPointer(v, jsType(rt.ptrTo()))), (((fl | ((_r$5 >>> 0))) >>> 0) | 128) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: makeValue }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._v = _v; $f._v$1 = _v$1; $f.fl = fl; $f.rt = rt; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - MakeSlice = function(typ, len, cap) { - var _r, _r$1, cap, len, typ, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; len = $f.len; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - typ = [typ]; - _r = typ[0].Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 23))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 23))) { */ case 1: - $panic(new $String("reflect.MakeSlice of non-slice type")); - /* } */ case 2: - if (len < 0) { - $panic(new $String("reflect.MakeSlice: negative len")); - } - if (cap < 0) { - $panic(new $String("reflect.MakeSlice: negative cap")); - } - if (len > cap) { - $panic(new $String("reflect.MakeSlice: len > cap")); - } - _r$1 = makeValue(typ[0], $makeSlice(jsType(typ[0]), len, cap, (function(typ) { return function $b() { - var _r$1, _r$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$1 = typ[0].Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = jsType(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2.zero(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f; - }; })(typ)), 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: MakeSlice }; } $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.len = len; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.MakeSlice = MakeSlice; - TypeOf = function(i) { - var i; - if (!initialized) { - return new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0); - } - if ($interfaceIsEqual(i, $ifaceNil)) { - return $ifaceNil; - } - return reflectType(i.constructor); - }; - $pkg.TypeOf = TypeOf; - ValueOf = function(i) { - var _r, i, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if ($interfaceIsEqual(i, $ifaceNil)) { - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - } - _r = makeValue(reflectType(i.constructor), i.$val, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: ValueOf }; } $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.ValueOf = ValueOf; - FuncOf = function(in$1, out, variadic) { - var _i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$1, jsIn, jsOut, out, v, v$1, variadic, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _v = $f._v; _v$1 = $f._v$1; i = $f.i; i$1 = $f.i$1; in$1 = $f.in$1; jsIn = $f.jsIn; jsOut = $f.jsOut; out = $f.out; v = $f.v; v$1 = $f.v$1; variadic = $f.variadic; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (!(variadic)) { _v = false; $s = 3; continue s; } - if (in$1.$length === 0) { _v$1 = true; $s = 4; continue s; } - _r = (x = in$1.$length - 1 >> 0, ((x < 0 || x >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x])).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v$1 = !((_r === 23)); case 4: - _v = _v$1; case 3: - /* */ if (_v) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_v) { */ case 1: - $panic(new $String("reflect.FuncOf: last arg of variadic func must be slice")); - /* } */ case 2: - jsIn = $makeSlice(sliceType$8, in$1.$length); - _ref = in$1; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - ((i < 0 || i >= jsIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsIn.$array[jsIn.$offset + i] = jsType(v)); - _i++; - } - jsOut = $makeSlice(sliceType$8, out.$length); - _ref$1 = out; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$1 = _i$1; - v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - ((i$1 < 0 || i$1 >= jsOut.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsOut.$array[jsOut.$offset + i$1] = jsType(v$1)); - _i$1++; - } - $s = -1; return reflectType($funcType($externalize(jsIn, sliceType$8), $externalize(jsOut, sliceType$8), $externalize(variadic, $Bool))); - /* */ } return; } if ($f === undefined) { $f = { $blk: FuncOf }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._v = _v; $f._v$1 = _v$1; $f.i = i; $f.i$1 = i$1; $f.in$1 = in$1; $f.jsIn = jsIn; $f.jsOut = jsOut; $f.out = out; $f.v = v; $f.v$1 = v$1; $f.variadic = variadic; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.FuncOf = FuncOf; - rtype.ptr.prototype.ptrTo = function() { - var t; - t = this; - return reflectType($ptrType(jsType(t))); - }; - rtype.prototype.ptrTo = function() { return this.$val.ptrTo(); }; - SliceOf = function(t) { - var t; - return reflectType($sliceType(jsType(t))); - }; - $pkg.SliceOf = SliceOf; - Zero = function(typ) { - var _r, typ, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeValue(typ, jsType(typ).zero(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Zero }; } $f._r = _r; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Zero = Zero; - unsafe_New = function(typ) { - var _1, typ; - _1 = typ.Kind(); - if (_1 === (25)) { - return (new (jsType(typ).ptr)()); - } else if (_1 === (17)) { - return (jsType(typ).zero()); - } else { - return ($newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo()))); - } - }; - makeInt = function(f, bits, t) { - var _1, _r, bits, f, ptr, t, typ, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; bits = $f.bits; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - typ = _r; - ptr = unsafe_New(typ); - _1 = typ.Kind(); - if (_1 === (3)) { - (ptr).$set(((bits.$low << 24 >> 24))); - } else if (_1 === (4)) { - (ptr).$set(((bits.$low << 16 >> 16))); - } else if ((_1 === (2)) || (_1 === (5))) { - (ptr).$set(((bits.$low >> 0))); - } else if (_1 === (6)) { - (ptr).$set((new $Int64(bits.$high, bits.$low))); - } else if (_1 === (8)) { - (ptr).$set(((bits.$low << 24 >>> 24))); - } else if (_1 === (9)) { - (ptr).$set(((bits.$low << 16 >>> 16))); - } else if ((_1 === (7)) || (_1 === (10)) || (_1 === (12))) { - (ptr).$set(((bits.$low >>> 0))); - } else if (_1 === (11)) { - (ptr).$set((bits)); - } - $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: makeInt }; } $f._1 = _1; $f._r = _r; $f.bits = bits; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f; - }; - typedmemmove = function(t, dst, src) { - var dst, src, t; - dst.$set(src.$get()); - }; - keyFor = function(t, key) { - var k, key, kv, t; - kv = key; - if (!(kv.$get === undefined)) { - kv = kv.$get(); - } - k = $internalize(jsType(t.Key()).keyFor(kv), $String); - return [kv, k]; - }; - mapaccess = function(t, m, key) { - var _tuple, entry, k, key, m, t; - _tuple = keyFor(t, key); - k = _tuple[1]; - entry = m[$externalize(k, $String)]; - if (entry === undefined) { - return 0; - } - return ($newDataPointer(entry.v, jsType(PtrTo(t.Elem())))); - }; - mapassign = function(t, m, key, val) { - var _r, _tuple, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; entry = $f.entry; et = $f.et; jsVal = $f.jsVal; k = $f.k; key = $f.key; kv = $f.kv; m = $f.m; newVal = $f.newVal; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tuple = keyFor(t, key); - kv = _tuple[0]; - k = _tuple[1]; - jsVal = val.$get(); - et = t.Elem(); - _r = et.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r === 25) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_r === 25) { */ case 1: - newVal = jsType(et).zero(); - copyStruct(newVal, jsVal, et); - jsVal = newVal; - /* } */ case 2: - entry = new ($global.Object)(); - entry.k = kv; - entry.v = jsVal; - m[$externalize(k, $String)] = entry; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: mapassign }; } $f._r = _r; $f._tuple = _tuple; $f.entry = entry; $f.et = et; $f.jsVal = jsVal; $f.k = k; $f.key = key; $f.kv = kv; $f.m = m; $f.newVal = newVal; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - mapdelete = function(t, m, key) { - var _tuple, k, key, m, t; - _tuple = keyFor(t, key); - k = _tuple[1]; - delete m[$externalize(k, $String)]; - }; - mapIter.ptr.prototype.skipUntilValidKey = function() { - var iter, k; - iter = this; - while (true) { - if (!(iter.i < $parseInt(iter.keys.length))) { break; } - k = iter.keys[iter.i]; - if (!(iter.m[$externalize($internalize(k, $String), $String)] === undefined)) { - break; - } - iter.i = iter.i + (1) >> 0; - } - }; - mapIter.prototype.skipUntilValidKey = function() { return this.$val.skipUntilValidKey(); }; - mapiterinit = function(t, m) { - var m, t; - return (new mapIter.ptr(t, m, $keys(m), 0, null)); - }; - mapiterkey = function(it) { - var _r, _r$1, _r$2, it, iter, k, kv, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; iter = $f.iter; k = $f.k; kv = $f.kv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - iter = ($pointerOfStructConversion(it, ptrType$7)); - kv = null; - if (!(iter.last === null)) { - kv = iter.last; - } else { - iter.skipUntilValidKey(); - if (iter.i === $parseInt(iter.keys.length)) { - $s = -1; return 0; - } - k = iter.keys[iter.i]; - kv = iter.m[$externalize($internalize(k, $String), $String)]; - iter.last = kv; - } - _r = iter.t.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return ($newDataPointer(kv.k, _r$2)); - /* */ } return; } if ($f === undefined) { $f = { $blk: mapiterkey }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.iter = iter; $f.k = k; $f.kv = kv; $f.$s = $s; $f.$r = $r; return $f; - }; - mapitervalue = function(it) { - var _r, _r$1, _r$2, it, iter, k, kv, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; iter = $f.iter; k = $f.k; kv = $f.kv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - iter = ($pointerOfStructConversion(it, ptrType$7)); - kv = null; - if (!(iter.last === null)) { - kv = iter.last; - } else { - iter.skipUntilValidKey(); - if (iter.i === $parseInt(iter.keys.length)) { - $s = -1; return 0; - } - k = iter.keys[iter.i]; - kv = iter.m[$externalize($internalize(k, $String), $String)]; - iter.last = kv; - } - _r = iter.t.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return ($newDataPointer(kv.v, _r$2)); - /* */ } return; } if ($f === undefined) { $f = { $blk: mapitervalue }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.iter = iter; $f.k = k; $f.kv = kv; $f.$s = $s; $f.$r = $r; return $f; - }; - mapiternext = function(it) { - var it, iter; - iter = ($pointerOfStructConversion(it, ptrType$7)); - iter.last = null; - iter.i = iter.i + (1) >> 0; - }; - maplen = function(m) { - var m; - return $parseInt($keys(m).length); - }; - cvtDirect = function(v, typ) { - var _1, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, k, slice, srcVal, typ, v, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; k = $f.k; slice = $f.slice; srcVal = $f.srcVal; typ = $f.typ; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - srcVal = $clone(v, Value).object(); - /* */ if (srcVal === jsType(v.typ).nil) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (srcVal === jsType(v.typ).nil) { */ case 1: - _r = makeValue(typ, jsType(typ).nil, v.flag); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - val = null; - _r$1 = typ.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - k = _r$1; - _1 = k; - /* */ if (_1 === (23)) { $s = 6; continue; } - /* */ if (_1 === (22)) { $s = 7; continue; } - /* */ if (_1 === (25)) { $s = 8; continue; } - /* */ if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (_1 === (23)) { */ case 6: - slice = new (jsType(typ))(srcVal.$array); - slice.$offset = srcVal.$offset; - slice.$length = srcVal.$length; - slice.$capacity = srcVal.$capacity; - val = $newDataPointer(slice, jsType(PtrTo(typ))); - $s = 11; continue; - /* } else if (_1 === (22)) { */ case 7: - _r$2 = typ.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$3 = _r$2.Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (_r$3 === 25) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (_r$3 === 25) { */ case 12: - _r$4 = typ.Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - /* */ if ($interfaceIsEqual(_r$4, v.typ.Elem())) { $s = 16; continue; } - /* */ $s = 17; continue; - /* if ($interfaceIsEqual(_r$4, v.typ.Elem())) { */ case 16: - val = srcVal; - /* break; */ $s = 4; continue; - /* } */ case 17: - val = new (jsType(typ))(); - _arg = val; - _arg$1 = srcVal; - _r$5 = typ.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _arg$2 = _r$5; - $r = copyStruct(_arg, _arg$1, _arg$2); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* break; */ $s = 4; continue; - /* } */ case 13: - val = new (jsType(typ))(srcVal.$get, srcVal.$set); - $s = 11; continue; - /* } else if (_1 === (25)) { */ case 8: - val = new (jsType(typ).ptr)(); - copyStruct(val, srcVal, typ); - $s = 11; continue; - /* } else if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { */ case 9: - val = v.ptr; - $s = 11; continue; - /* } else { */ case 10: - $panic(new ValueError.ptr("reflect.Convert", k)); - /* } */ case 11: - case 4: - _r$6 = typ.common(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _r$7 = typ.Kind(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $s = -1; return new Value.ptr(_r$6, (val), (((new flag(v.flag).ro() | ((v.flag & 128) >>> 0)) >>> 0) | ((_r$7 >>> 0))) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtDirect }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.k = k; $f.slice = slice; $f.srcVal = srcVal; $f.typ = typ; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - methodReceiver = function(op, v, i) { - var _$39, fn, i, m, m$1, ms, op, prop, rcvr, t, tt, v, x; - _$39 = ptrType$1.nil; - t = ptrType$8.nil; - fn = 0; - prop = ""; - if (v.typ.Kind() === 20) { - tt = (v.typ.kindType); - if (i < 0 || i >= tt.methods.$length) { - $panic(new $String("reflect: internal error: invalid method index")); - } - m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - if (!$clone(tt.rtype.nameOff(m.name), name).isExported()) { - $panic(new $String("reflect: " + op + " of unexported method")); - } - t = (tt.rtype.typeOff(m.typ).kindType); - prop = $clone(tt.rtype.nameOff(m.name), name).name(); - } else { - ms = v.typ.exportedMethods(); - if (((i >>> 0)) >= ((ms.$length >>> 0))) { - $panic(new $String("reflect: internal error: invalid method index")); - } - m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); - if (!$clone(v.typ.nameOff(m$1.name), name).isExported()) { - $panic(new $String("reflect: " + op + " of unexported method")); - } - t = (v.typ.typeOff(m$1.mtyp).kindType); - prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String); - } - rcvr = $clone(v, Value).object(); - if (isWrapped(v.typ)) { - rcvr = new (jsType(v.typ))(rcvr); - } - fn = (rcvr[$externalize(prop, $String)]); - return [_$39, t, fn]; - }; - valueInterface = function(v, safe) { - var _r, safe, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; safe = $f.safe; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (v.flag === 0) { - $panic(new ValueError.ptr("reflect.Value.Interface", 0)); - } - if (safe && !((((v.flag & 96) >>> 0) === 0))) { - $panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method")); - } - /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: - _r = makeMethodValue("Interface", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - /* } */ case 2: - if (isWrapped(v.typ)) { - $s = -1; return ((new (jsType(v.typ))($clone(v, Value).object()))); - } - $s = -1; return (($clone(v, Value).object())); - /* */ } return; } if ($f === undefined) { $f = { $blk: valueInterface }; } $f._r = _r; $f.safe = safe; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - ifaceE2I = function(t, src, dst) { - var dst, src, t; - dst.$set(src); - }; - methodName = function() { - return "?FIXME?"; - }; - makeMethodValue = function(op, v) { - var _r, _tuple, fn, fv, op, rcvr, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; fn = $f.fn; fv = $f.fv; op = $f.op; rcvr = $f.rcvr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fn = [fn]; - rcvr = [rcvr]; - if (((v.flag & 512) >>> 0) === 0) { - $panic(new $String("reflect: internal error: invalid use of makePartialFunc")); - } - _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); - fn[0] = _tuple[2]; - rcvr[0] = $clone(v, Value).object(); - if (isWrapped(v.typ)) { - rcvr[0] = new (jsType(v.typ))(rcvr[0]); - } - fv = js.MakeFunc((function(fn, rcvr) { return function(this$1, arguments$1) { - var arguments$1, this$1; - return new $jsObjectPtr(fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$8))); - }; })(fn, rcvr)); - _r = $clone(v, Value).Type().common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return new Value.ptr(_r, (fv), (new flag(v.flag).ro() | 19) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: makeMethodValue }; } $f._r = _r; $f._tuple = _tuple; $f.fn = fn; $f.fv = fv; $f.op = op; $f.rcvr = rcvr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.ptr.prototype.pointers = function() { - var _1, t; - t = this; - _1 = t.Kind(); - if ((_1 === (22)) || (_1 === (21)) || (_1 === (18)) || (_1 === (19)) || (_1 === (25)) || (_1 === (17))) { - return true; - } else { - return false; - } - }; - rtype.prototype.pointers = function() { return this.$val.pointers(); }; - rtype.ptr.prototype.Comparable = function() { - var _1, _r, _r$1, i, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; i = $f.i; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _1 = t.Kind(); - /* */ if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { $s = 2; continue; } - /* */ if (_1 === (17)) { $s = 3; continue; } - /* */ if (_1 === (25)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { */ case 2: - $s = -1; return false; - /* } else if (_1 === (17)) { */ case 3: - _r = t.Elem().Comparable(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } else if (_1 === (25)) { */ case 4: - i = 0; - /* while (true) { */ case 7: - /* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 8; continue; } - _r$1 = t.Field(i).Type.Comparable(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (!_r$1) { */ case 9: - $s = -1; return false; - /* } */ case 10: - i = i + (1) >> 0; - /* } */ $s = 7; continue; case 8: - /* } */ case 5: - case 1: - $s = -1; return true; - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Comparable }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.Comparable = function() { return this.$val.Comparable(); }; - rtype.ptr.prototype.Method = function(i) { - var _i, _i$1, _r, _ref, _ref$1, arg, fl, fn, ft, i, in$1, m, methods, mt, mtyp, out, p, pname, prop, ret, t, tt, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; arg = $f.arg; fl = $f.fl; fn = $f.fn; ft = $f.ft; i = $f.i; in$1 = $f.in$1; m = $f.m; methods = $f.methods; mt = $f.mt; mtyp = $f.mtyp; out = $f.out; p = $f.p; pname = $f.pname; prop = $f.prop; ret = $f.ret; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - prop = [prop]; - m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); - t = this; - if (t.Kind() === 20) { - tt = (t.kindType); - Method.copy(m, tt.Method(i)); - $s = -1; return m; - } - methods = t.exportedMethods(); - if (i < 0 || i >= methods.$length) { - $panic(new $String("reflect: Method index out of range")); - } - p = $clone(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]), method); - pname = $clone(t.nameOff(p.name), name); - m.Name = $clone(pname, name).name(); - fl = 19; - mtyp = t.typeOff(p.mtyp); - ft = (mtyp.kindType); - in$1 = $makeSlice(sliceType$10, 0, (1 + ft.in$().$length >> 0)); - in$1 = $append(in$1, t); - _ref = ft.in$(); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - in$1 = $append(in$1, arg); - _i++; - } - out = $makeSlice(sliceType$10, 0, ft.out().$length); - _ref$1 = ft.out(); - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - ret = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - out = $append(out, ret); - _i$1++; - } - _r = FuncOf(in$1, out, ft.rtype.IsVariadic()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - mt = _r; - m.Type = mt; - prop[0] = $internalize($methodSet(t.jsType)[i].prop, $String); - fn = js.MakeFunc((function(prop) { return function(this$1, arguments$1) { - var arguments$1, rcvr, this$1; - rcvr = (0 >= arguments$1.$length ? ($throwRuntimeError("index out of range"), undefined) : arguments$1.$array[arguments$1.$offset + 0]); - return new $jsObjectPtr(rcvr[$externalize(prop[0], $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$8))); - }; })(prop)); - m.Func = new Value.ptr($assertType(mt, ptrType$1), (fn), fl); - m.Index = i; - Method.copy(m, m); - $s = -1; return m; - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Method }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.arg = arg; $f.fl = fl; $f.fn = fn; $f.ft = ft; $f.i = i; $f.in$1 = in$1; $f.m = m; $f.methods = methods; $f.mt = mt; $f.mtyp = mtyp; $f.out = out; $f.p = p; $f.pname = pname; $f.prop = prop; $f.ret = ret; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.Method = function(i) { return this.$val.Method(i); }; - Value.ptr.prototype.object = function() { - var _1, newVal, v, val; - v = this; - if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) { - return v.ptr; - } - if (!((((v.flag & 128) >>> 0) === 0))) { - val = v.ptr.$get(); - if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) { - switch (0) { default: - _1 = v.typ.Kind(); - if ((_1 === (11)) || (_1 === (6))) { - val = new (jsType(v.typ))(val.$high, val.$low); - } else if ((_1 === (15)) || (_1 === (16))) { - val = new (jsType(v.typ))(val.$real, val.$imag); - } else if (_1 === (23)) { - if (val === val.constructor.nil) { - val = jsType(v.typ).nil; - break; - } - newVal = new (jsType(v.typ))(val.$array); - newVal.$offset = val.$offset; - newVal.$length = val.$length; - newVal.$capacity = val.$capacity; - val = newVal; - } - } - } - return val; - } - return v.ptr; - }; - Value.prototype.object = function() { return this.$val.object(); }; - Value.ptr.prototype.assignTo = function(context, dst, target) { - var _r, _r$1, _r$2, context, dst, fl, target, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; context = $f.context; dst = $f.dst; fl = $f.fl; target = $f.target; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: - _r = makeMethodValue(context, $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - /* } */ case 2: - _r$1 = directlyAssignable(dst, v.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 5; continue; } - /* */ if (implements$1(dst, v.typ)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (_r$1) { */ case 5: - fl = (((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0; - fl = (fl | (((dst.Kind() >>> 0)))) >>> 0; - $s = -1; return new Value.ptr(dst, v.ptr, fl); - /* } else if (implements$1(dst, v.typ)) { */ case 6: - if (target === 0) { - target = unsafe_New(dst); - } - _r$2 = valueInterface($clone(v, Value), false); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - x = _r$2; - if (dst.NumMethod() === 0) { - (target).$set(x); - } else { - ifaceE2I(dst, x, target); - } - $s = -1; return new Value.ptr(dst, target, 148); - /* } */ case 7: - case 4: - $panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String())); - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.assignTo }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.context = context; $f.dst = dst; $f.fl = fl; $f.target = target; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.assignTo = function(context, dst, target) { return this.$val.assignTo(context, dst, target); }; - Value.ptr.prototype.call = function(op, in$1) { - var _1, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, arg, argsArray, elem, fn, i, i$1, i$2, i$3, in$1, isSlice, m, n, nin, nout, op, origIn, rcvr, results, ret, slice, t, targ, v, x, x$1, x$2, xt, xt$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; arg = $f.arg; argsArray = $f.argsArray; elem = $f.elem; fn = $f.fn; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; in$1 = $f.in$1; isSlice = $f.isSlice; m = $f.m; n = $f.n; nin = $f.nin; nout = $f.nout; op = $f.op; origIn = $f.origIn; rcvr = $f.rcvr; results = $f.results; ret = $f.ret; slice = $f.slice; t = $f.t; targ = $f.targ; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; xt = $f.xt; xt$1 = $f.xt$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - t = ptrType$8.nil; - fn = 0; - rcvr = null; - if (!((((v.flag & 512) >>> 0) === 0))) { - _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); - t = _tuple[1]; - fn = _tuple[2]; - rcvr = $clone(v, Value).object(); - if (isWrapped(v.typ)) { - rcvr = new (jsType(v.typ))(rcvr); - } - } else { - t = (v.typ.kindType); - fn = ($clone(v, Value).object()); - rcvr = undefined; - } - if (fn === 0) { - $panic(new $String("reflect.Value.Call: call of nil function")); - } - isSlice = op === "CallSlice"; - n = t.rtype.NumIn(); - if (isSlice) { - if (!t.rtype.IsVariadic()) { - $panic(new $String("reflect: CallSlice of non-variadic function")); - } - if (in$1.$length < n) { - $panic(new $String("reflect: CallSlice with too few input arguments")); - } - if (in$1.$length > n) { - $panic(new $String("reflect: CallSlice with too many input arguments")); - } - } else { - if (t.rtype.IsVariadic()) { - n = n - (1) >> 0; - } - if (in$1.$length < n) { - $panic(new $String("reflect: Call with too few input arguments")); - } - if (!t.rtype.IsVariadic() && in$1.$length > n) { - $panic(new $String("reflect: Call with too many input arguments")); - } - } - _ref = in$1; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if ($clone(x, Value).Kind() === 0) { - $panic(new $String("reflect: " + op + " using zero Value argument")); - } - _i++; - } - i = 0; - /* while (true) { */ case 1: - /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } - _tmp = $clone(((i < 0 || i >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i]), Value).Type(); - _tmp$1 = t.rtype.In(i); - xt = _tmp; - targ = _tmp$1; - _r = xt.AssignableTo(targ); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!_r) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!_r) { */ case 3: - _r$1 = xt.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = targ.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $panic(new $String("reflect: " + op + " using " + _r$1 + " as type " + _r$2)); - /* } */ case 4: - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - /* */ if (!isSlice && t.rtype.IsVariadic()) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (!isSlice && t.rtype.IsVariadic()) { */ case 8: - m = in$1.$length - n >> 0; - _r$3 = MakeSlice(t.rtype.In(n), m, m); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - slice = _r$3; - _r$4 = t.rtype.In(n).Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - elem = _r$4; - i$1 = 0; - /* while (true) { */ case 12: - /* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 13; continue; } - x$2 = (x$1 = n + i$1 >> 0, ((x$1 < 0 || x$1 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x$1])); - xt$1 = $clone(x$2, Value).Type(); - _r$5 = xt$1.AssignableTo(elem); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - /* */ if (!_r$5) { $s = 14; continue; } - /* */ $s = 15; continue; - /* if (!_r$5) { */ case 14: - _r$6 = xt$1.String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _r$7 = elem.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $panic(new $String("reflect: cannot use " + _r$6 + " as type " + _r$7 + " in " + op)); - /* } */ case 15: - _r$8 = $clone(slice, Value).Index(i$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - $r = $clone(_r$8, Value).Set($clone(x$2, Value)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$1 = i$1 + (1) >> 0; - /* } */ $s = 12; continue; case 13: - origIn = in$1; - in$1 = $makeSlice(sliceType$9, (n + 1 >> 0)); - $copySlice($subslice(in$1, 0, n), origIn); - ((n < 0 || n >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + n] = slice); - /* } */ case 9: - nin = in$1.$length; - if (!((nin === t.rtype.NumIn()))) { - $panic(new $String("reflect.Value.Call: wrong argument count")); - } - nout = t.rtype.NumOut(); - argsArray = new ($global.Array)(t.rtype.NumIn()); - _ref$1 = in$1; - _i$1 = 0; - /* while (true) { */ case 21: - /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; } - i$2 = _i$1; - arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - _arg = t.rtype.In(i$2); - _r$9 = t.rtype.In(i$2).common(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _arg$1 = _r$9; - _arg$2 = 0; - _r$10 = $clone(arg, Value).assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _r$11 = $clone(_r$10, Value).object(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - _arg$3 = _r$11; - _r$12 = unwrapJsObject(_arg, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - argsArray[i$2] = _r$12; - _i$1++; - /* } */ $s = 21; continue; case 22: - _r$13 = callHelper(new sliceType$3([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - results = _r$13; - _1 = nout; - /* */ if (_1 === (0)) { $s = 29; continue; } - /* */ if (_1 === (1)) { $s = 30; continue; } - /* */ $s = 31; continue; - /* if (_1 === (0)) { */ case 29: - $s = -1; return sliceType$9.nil; - /* } else if (_1 === (1)) { */ case 30: - _r$14 = makeValue(t.rtype.Out(0), wrapJsObject(t.rtype.Out(0), results), 0); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - $s = -1; return new sliceType$9([$clone(_r$14, Value)]); - /* } else { */ case 31: - ret = $makeSlice(sliceType$9, nout); - _ref$2 = ret; - _i$2 = 0; - /* while (true) { */ case 34: - /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 35; continue; } - i$3 = _i$2; - _r$15 = makeValue(t.rtype.Out(i$3), wrapJsObject(t.rtype.Out(i$3), results[i$3]), 0); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } - ((i$3 < 0 || i$3 >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i$3] = _r$15); - _i$2++; - /* } */ $s = 34; continue; case 35: - $s = -1; return ret; - /* } */ case 32: - case 28: - $s = -1; return sliceType$9.nil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.call }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.arg = arg; $f.argsArray = argsArray; $f.elem = elem; $f.fn = fn; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.in$1 = in$1; $f.isSlice = isSlice; $f.m = m; $f.n = n; $f.nin = nin; $f.nout = nout; $f.op = op; $f.origIn = origIn; $f.rcvr = rcvr; $f.results = results; $f.ret = ret; $f.slice = slice; $f.t = t; $f.targ = targ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.xt = xt; $f.xt$1 = xt$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.call = function(op, in$1) { return this.$val.call(op, in$1); }; - Value.ptr.prototype.Cap = function() { - var _1, k, v; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (17)) { - return v.typ.Len(); - } else if ((_1 === (18)) || (_1 === (23))) { - return $parseInt($clone(v, Value).object().$capacity) >> 0; - } - $panic(new ValueError.ptr("reflect.Value.Cap", k)); - }; - Value.prototype.Cap = function() { return this.$val.Cap(); }; - wrapJsObject = function(typ, val) { - var typ, val; - if ($interfaceIsEqual(typ, jsObjectPtr)) { - return new (jsType(jsObjectPtr))(val); - } - return val; - }; - unwrapJsObject = function(typ, val) { - var typ, val; - if ($interfaceIsEqual(typ, jsObjectPtr)) { - return val.object; - } - return val; - }; - Value.ptr.prototype.Elem = function() { - var _1, _r, fl, k, tt, typ, v, val, val$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; fl = $f.fl; k = $f.k; tt = $f.tt; typ = $f.typ; v = $f.v; val = $f.val; val$1 = $f.val$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - k = new flag(v.flag).kind(); - _1 = k; - /* */ if (_1 === (20)) { $s = 2; continue; } - /* */ if (_1 === (22)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (_1 === (20)) { */ case 2: - val = $clone(v, Value).object(); - if (val === $ifaceNil) { - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - } - typ = reflectType(val.constructor); - _r = makeValue(typ, val.$val, new flag(v.flag).ro()); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } else if (_1 === (22)) { */ case 3: - if ($clone(v, Value).IsNil()) { - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - } - val$1 = $clone(v, Value).object(); - tt = (v.typ.kindType); - fl = (((((v.flag & 96) >>> 0) | 128) >>> 0) | 256) >>> 0; - fl = (fl | (((tt.elem.Kind() >>> 0)))) >>> 0; - $s = -1; return new Value.ptr(tt.elem, (wrapJsObject(tt.elem, val$1)), fl); - /* } else { */ case 4: - $panic(new ValueError.ptr("reflect.Value.Elem", k)); - /* } */ case 5: - case 1: - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Elem }; } $f._1 = _1; $f._r = _r; $f.fl = fl; $f.k = k; $f.tt = tt; $f.typ = typ; $f.v = v; $f.val = val; $f.val$1 = val$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Elem = function() { return this.$val.Elem(); }; - Value.ptr.prototype.Field = function(i) { - var _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; field = $f.field; fl = $f.fl; i = $f.i; jsTag = $f.jsTag; o = $f.o; prop = $f.prop; s = $f.s; tag = $f.tag; tt = $f.tt; typ = $f.typ; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - jsTag = [jsTag]; - prop = [prop]; - s = [s]; - typ = [typ]; - v = this; - if (!((new flag(v.flag).kind() === 25))) { - $panic(new ValueError.ptr("reflect.Value.Field", new flag(v.flag).kind())); - } - tt = (v.typ.kindType); - if (((i >>> 0)) >= ((tt.fields.$length >>> 0))) { - $panic(new $String("reflect: Field index out of range")); - } - prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String); - field = (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - typ[0] = field.typ; - fl = (((v.flag & 416) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; - if (!$clone(field.name, name).isExported()) { - if (field.embedded()) { - fl = (fl | (64)) >>> 0; - } else { - fl = (fl | (32)) >>> 0; - } - } - tag = $clone((x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).name, name).tag(); - /* */ if (!(tag === "") && !((i === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!(tag === "") && !((i === 0))) { */ case 1: - jsTag[0] = getJsTag(tag); - /* */ if (!(jsTag[0] === "")) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!(jsTag[0] === "")) { */ case 3: - /* while (true) { */ case 5: - o = [o]; - _r = $clone(v, Value).Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - /* */ if (v.typ === jsObjectPtr) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (v.typ === jsObjectPtr) { */ case 8: - o[0] = $clone(v, Value).object().object; - $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function() { - return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0])); - }; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function(x$2) { - var x$2; - o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0])); - }; })(jsTag, o, prop, s, typ))), fl); - /* } */ case 9: - /* */ if (v.typ.Kind() === 22) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (v.typ.Kind() === 22) { */ case 10: - _r$1 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v = _r$1; - /* } */ case 11: - /* } */ $s = 5; continue; case 6: - /* } */ case 4: - /* } */ case 2: - s[0] = v.ptr; - /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13: - $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function() { - return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]); - }; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function(x$2) { - var x$2; - s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2); - }; })(jsTag, prop, s, typ))), fl); - /* } */ case 14: - _r$2 = makeValue(typ[0], wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]), fl); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Field }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.field = field; $f.fl = fl; $f.i = i; $f.jsTag = jsTag; $f.o = o; $f.prop = prop; $f.s = s; $f.tag = tag; $f.tt = tt; $f.typ = typ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Field = function(i) { return this.$val.Field(i); }; - getJsTag = function(tag) { - var _tuple, i, name$1, qvalue, tag, value; - while (true) { - if (!(!(tag === ""))) { break; } - i = 0; - while (true) { - if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; } - i = i + (1) >> 0; - } - tag = $substring(tag, i); - if (tag === "") { - break; - } - i = 0; - while (true) { - if (!(i < tag.length && !((tag.charCodeAt(i) === 32)) && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)))) { break; } - i = i + (1) >> 0; - } - if ((i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) { - break; - } - name$1 = ($substring(tag, 0, i)); - tag = $substring(tag, (i + 1 >> 0)); - i = 1; - while (true) { - if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; } - if (tag.charCodeAt(i) === 92) { - i = i + (1) >> 0; - } - i = i + (1) >> 0; - } - if (i >= tag.length) { - break; - } - qvalue = ($substring(tag, 0, (i + 1 >> 0))); - tag = $substring(tag, (i + 1 >> 0)); - if (name$1 === "js") { - _tuple = strconv.Unquote(qvalue); - value = _tuple[0]; - return value; - } - } - return ""; - }; - Value.ptr.prototype.Index = function(i) { - var _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; a = $f.a; a$1 = $f.a$1; c = $f.c; fl = $f.fl; fl$1 = $f.fl$1; fl$2 = $f.fl$2; i = $f.i; k = $f.k; s = $f.s; str = $f.str; tt = $f.tt; tt$1 = $f.tt$1; typ = $f.typ; typ$1 = $f.typ$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - a = [a]; - a$1 = [a$1]; - c = [c]; - i = [i]; - typ = [typ]; - typ$1 = [typ$1]; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - /* */ if (_1 === (17)) { $s = 2; continue; } - /* */ if (_1 === (23)) { $s = 3; continue; } - /* */ if (_1 === (24)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_1 === (17)) { */ case 2: - tt = (v.typ.kindType); - if (i[0] < 0 || i[0] > ((tt.len >> 0))) { - $panic(new $String("reflect: array index out of range")); - } - typ[0] = tt.elem; - fl = (((((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; - a[0] = v.ptr; - /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 7: - $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function() { - return wrapJsObject(typ[0], a[0][i[0]]); - }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) { - var x; - a[0][i[0]] = unwrapJsObject(typ[0], x); - }; })(a, a$1, c, i, typ, typ$1))), fl); - /* } */ case 8: - _r = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } else if (_1 === (23)) { */ case 3: - s = $clone(v, Value).object(); - if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) { - $panic(new $String("reflect: slice index out of range")); - } - tt$1 = (v.typ.kindType); - typ$1[0] = tt$1.elem; - fl$1 = (((384 | new flag(v.flag).ro()) >>> 0) | ((typ$1[0].Kind() >>> 0))) >>> 0; - i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0; - a$1[0] = s.$array; - /* */ if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 10: - $s = -1; return new Value.ptr(typ$1[0], (new (jsType(PtrTo(typ$1[0])))((function(a, a$1, c, i, typ, typ$1) { return function() { - return wrapJsObject(typ$1[0], a$1[0][i[0]]); - }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) { - var x; - a$1[0][i[0]] = unwrapJsObject(typ$1[0], x); - }; })(a, a$1, c, i, typ, typ$1))), fl$1); - /* } */ case 11: - _r$1 = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* } else if (_1 === (24)) { */ case 4: - str = (v.ptr).$get(); - if (i[0] < 0 || i[0] >= str.length) { - $panic(new $String("reflect: string index out of range")); - } - fl$2 = (((new flag(v.flag).ro() | 8) >>> 0) | 128) >>> 0; - c[0] = str.charCodeAt(i[0]); - $s = -1; return new Value.ptr(uint8Type, ((c.$ptr || (c.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c)))), fl$2); - /* } else { */ case 5: - $panic(new ValueError.ptr("reflect.Value.Index", k)); - /* } */ case 6: - case 1: - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Index }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.a$1 = a$1; $f.c = c; $f.fl = fl; $f.fl$1 = fl$1; $f.fl$2 = fl$2; $f.i = i; $f.k = k; $f.s = s; $f.str = str; $f.tt = tt; $f.tt$1 = tt$1; $f.typ = typ; $f.typ$1 = typ$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Index = function(i) { return this.$val.Index(i); }; - Value.ptr.prototype.InterfaceData = function() { - var v; - v = this; - $panic(errors.New("InterfaceData is not supported by GopherJS")); - }; - Value.prototype.InterfaceData = function() { return this.$val.InterfaceData(); }; - Value.ptr.prototype.IsNil = function() { - var _1, k, v; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if ((_1 === (22)) || (_1 === (23))) { - return $clone(v, Value).object() === jsType(v.typ).nil; - } else if (_1 === (18)) { - return $clone(v, Value).object() === $chanNil; - } else if (_1 === (19)) { - return $clone(v, Value).object() === $throwNilPointerError; - } else if (_1 === (21)) { - return $clone(v, Value).object() === false; - } else if (_1 === (20)) { - return $clone(v, Value).object() === $ifaceNil; - } else if (_1 === (26)) { - return $clone(v, Value).object() === 0; - } else { - $panic(new ValueError.ptr("reflect.Value.IsNil", k)); - } - }; - Value.prototype.IsNil = function() { return this.$val.IsNil(); }; - Value.ptr.prototype.Len = function() { - var _1, k, v; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if ((_1 === (17)) || (_1 === (24))) { - return $parseInt($clone(v, Value).object().length); - } else if (_1 === (23)) { - return $parseInt($clone(v, Value).object().$length) >> 0; - } else if (_1 === (18)) { - return $parseInt($clone(v, Value).object().$buffer.length) >> 0; - } else if (_1 === (21)) { - return $parseInt($keys($clone(v, Value).object()).length); - } else { - $panic(new ValueError.ptr("reflect.Value.Len", k)); - } - }; - Value.prototype.Len = function() { return this.$val.Len(); }; - Value.ptr.prototype.Pointer = function() { - var _1, k, v; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if ((_1 === (18)) || (_1 === (21)) || (_1 === (22)) || (_1 === (26))) { - if ($clone(v, Value).IsNil()) { - return 0; - } - return $clone(v, Value).object(); - } else if (_1 === (19)) { - if ($clone(v, Value).IsNil()) { - return 0; - } - return 1; - } else if (_1 === (23)) { - if ($clone(v, Value).IsNil()) { - return 0; - } - return $clone(v, Value).object().$array; - } else { - $panic(new ValueError.ptr("reflect.Value.Pointer", k)); - } - }; - Value.prototype.Pointer = function() { return this.$val.Pointer(); }; - Value.ptr.prototype.Set = function(x) { - var _1, _r, _r$1, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(x.flag).mustBeExported(); - _r = $clone(x, Value).assignTo("reflect.Set", v.typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - x = _r; - /* */ if (!((((v.flag & 128) >>> 0) === 0))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!((((v.flag & 128) >>> 0) === 0))) { */ case 2: - _1 = v.typ.Kind(); - /* */ if (_1 === (17)) { $s = 5; continue; } - /* */ if (_1 === (20)) { $s = 6; continue; } - /* */ if (_1 === (25)) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (_1 === (17)) { */ case 5: - jsType(v.typ).copy(v.ptr, x.ptr); - $s = 9; continue; - /* } else if (_1 === (20)) { */ case 6: - _r$1 = valueInterface($clone(x, Value), false); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v.ptr.$set(_r$1); - $s = 9; continue; - /* } else if (_1 === (25)) { */ case 7: - copyStruct(v.ptr, x.ptr, v.typ); - $s = 9; continue; - /* } else { */ case 8: - v.ptr.$set($clone(x, Value).object()); - /* } */ case 9: - case 4: - $s = -1; return; - /* } */ case 3: - v.ptr = x.ptr; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Set }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Set = function(x) { return this.$val.Set(x); }; - Value.ptr.prototype.SetBytes = function(x) { - var _r, _r$1, _v, slice, typedSlice, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; slice = $f.slice; typedSlice = $f.typedSlice; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(23); - _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 8))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 8))) { */ case 1: - $panic(new $String("reflect.Value.SetBytes of non-byte slice")); - /* } */ case 2: - slice = x; - if (!(v.typ.Name() === "")) { _v = true; $s = 6; continue s; } - _r$1 = v.typ.Elem().Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _v = !(_r$1 === ""); case 6: - /* */ if (_v) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_v) { */ case 4: - typedSlice = new (jsType(v.typ))(slice.$array); - typedSlice.$offset = slice.$offset; - typedSlice.$length = slice.$length; - typedSlice.$capacity = slice.$capacity; - slice = typedSlice; - /* } */ case 5: - v.ptr.$set(slice); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetBytes }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.slice = slice; $f.typedSlice = typedSlice; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.SetBytes = function(x) { return this.$val.SetBytes(x); }; - Value.ptr.prototype.SetCap = function(n) { - var n, newSlice, s, v; - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(23); - s = v.ptr.$get(); - if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) { - $panic(new $String("reflect: slice capacity out of range in SetCap")); - } - newSlice = new (jsType(v.typ))(s.$array); - newSlice.$offset = s.$offset; - newSlice.$length = s.$length; - newSlice.$capacity = n; - v.ptr.$set(newSlice); - }; - Value.prototype.SetCap = function(n) { return this.$val.SetCap(n); }; - Value.ptr.prototype.SetLen = function(n) { - var n, newSlice, s, v; - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(23); - s = v.ptr.$get(); - if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) { - $panic(new $String("reflect: slice length out of range in SetLen")); - } - newSlice = new (jsType(v.typ))(s.$array); - newSlice.$offset = s.$offset; - newSlice.$length = n; - newSlice.$capacity = s.$capacity; - v.ptr.$set(newSlice); - }; - Value.prototype.SetLen = function(n) { return this.$val.SetLen(n); }; - Value.ptr.prototype.Slice = function(i, j) { - var _1, _r, _r$1, cap, i, j, kind, s, str, tt, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; i = $f.i; j = $f.j; kind = $f.kind; s = $f.s; str = $f.str; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - cap = 0; - typ = $ifaceNil; - s = null; - kind = new flag(v.flag).kind(); - _1 = kind; - /* */ if (_1 === (17)) { $s = 2; continue; } - /* */ if (_1 === (23)) { $s = 3; continue; } - /* */ if (_1 === (24)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_1 === (17)) { */ case 2: - if (((v.flag & 256) >>> 0) === 0) { - $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); - } - tt = (v.typ.kindType); - cap = ((tt.len >> 0)); - typ = SliceOf(tt.elem); - s = new (jsType(typ))($clone(v, Value).object()); - $s = 6; continue; - /* } else if (_1 === (23)) { */ case 3: - typ = v.typ; - s = $clone(v, Value).object(); - cap = $parseInt(s.$capacity) >> 0; - $s = 6; continue; - /* } else if (_1 === (24)) { */ case 4: - str = (v.ptr).$get(); - if (i < 0 || j < i || j > str.length) { - $panic(new $String("reflect.Value.Slice: string slice index out of bounds")); - } - _r = ValueOf(new $String($substring(str, i, j))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } else { */ case 5: - $panic(new ValueError.ptr("reflect.Value.Slice", kind)); - /* } */ case 6: - case 1: - if (i < 0 || j < i || j > cap) { - $panic(new $String("reflect.Value.Slice: slice index out of bounds")); - } - _r$1 = makeValue(typ, $subslice(s, i, j), new flag(v.flag).ro()); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.i = i; $f.j = j; $f.kind = kind; $f.s = s; $f.str = str; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Slice = function(i, j) { return this.$val.Slice(i, j); }; - Value.ptr.prototype.Slice3 = function(i, j, k) { - var _1, _r, cap, i, j, k, kind, s, tt, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; cap = $f.cap; i = $f.i; j = $f.j; k = $f.k; kind = $f.kind; s = $f.s; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - cap = 0; - typ = $ifaceNil; - s = null; - kind = new flag(v.flag).kind(); - _1 = kind; - if (_1 === (17)) { - if (((v.flag & 256) >>> 0) === 0) { - $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); - } - tt = (v.typ.kindType); - cap = ((tt.len >> 0)); - typ = SliceOf(tt.elem); - s = new (jsType(typ))($clone(v, Value).object()); - } else if (_1 === (23)) { - typ = v.typ; - s = $clone(v, Value).object(); - cap = $parseInt(s.$capacity) >> 0; - } else { - $panic(new ValueError.ptr("reflect.Value.Slice3", kind)); - } - if (i < 0 || j < i || k < j || k > cap) { - $panic(new $String("reflect.Value.Slice3: slice index out of bounds")); - } - _r = makeValue(typ, $subslice(s, i, j, k), new flag(v.flag).ro()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice3 }; } $f._1 = _1; $f._r = _r; $f.cap = cap; $f.i = i; $f.j = j; $f.k = k; $f.kind = kind; $f.s = s; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Slice3 = function(i, j, k) { return this.$val.Slice3(i, j, k); }; - Value.ptr.prototype.Close = function() { - var v; - v = this; - new flag(v.flag).mustBe(18); - new flag(v.flag).mustBeExported(); - $close($clone(v, Value).object()); - }; - Value.prototype.Close = function() { return this.$val.Close(); }; - chanrecv = function(ch, nb, val) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; ch = $f.ch; comms = $f.comms; nb = $f.nb; received = $f.received; recvRes = $f.recvRes; selectRes = $f.selectRes; selected = $f.selected; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - selected = false; - received = false; - comms = new sliceType$11([new sliceType$8([ch])]); - if (nb) { - comms = $append(comms, new sliceType$8([])); - } - _r = selectHelper(new sliceType$3([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - selectRes = _r; - if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) { - _tmp = false; - _tmp$1 = false; - selected = _tmp; - received = _tmp$1; - $s = -1; return [selected, received]; - } - recvRes = selectRes[1]; - val.$set(recvRes[0]); - _tmp$2 = true; - _tmp$3 = !!(recvRes[1]); - selected = _tmp$2; - received = _tmp$3; - $s = -1; return [selected, received]; - /* */ } return; } if ($f === undefined) { $f = { $blk: chanrecv }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.received = received; $f.recvRes = recvRes; $f.selectRes = selectRes; $f.selected = selected; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - chansend = function(ch, val, nb) { - var _r, ch, comms, nb, selectRes, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; ch = $f.ch; comms = $f.comms; nb = $f.nb; selectRes = $f.selectRes; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - comms = new sliceType$11([new sliceType$8([ch, val.$get()])]); - if (nb) { - comms = $append(comms, new sliceType$8([])); - } - _r = selectHelper(new sliceType$3([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - selectRes = _r; - if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) { - $s = -1; return false; - } - $s = -1; return true; - /* */ } return; } if ($f === undefined) { $f = { $blk: chansend }; } $f._r = _r; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.selectRes = selectRes; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - structField.ptr.prototype.offset = function() { - var f; - f = this; - return f.offsetEmbed >>> 1 >>> 0; - }; - structField.prototype.offset = function() { return this.$val.offset(); }; - structField.ptr.prototype.embedded = function() { - var f; - f = this; - return !((((f.offsetEmbed & 1) >>> 0) === 0)); - }; - structField.prototype.embedded = function() { return this.$val.embedded(); }; - Kind.prototype.String = function() { - var k; - k = this.$val; - if (((k >> 0)) < kindNames.$length) { - return ((k < 0 || k >= kindNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + k]); - } - return "kind" + strconv.Itoa(((k >> 0))); - }; - $ptrType(Kind).prototype.String = function() { return new Kind(this.$get()).String(); }; - rtype.ptr.prototype.String = function() { - var s, t; - t = this; - s = $clone(t.nameOff(t.str), name).name(); - if (!((((t.tflag & 2) >>> 0) === 0))) { - return $substring(s, 1); - } - return s; - }; - rtype.prototype.String = function() { return this.$val.String(); }; - rtype.ptr.prototype.Size = function() { - var t; - t = this; - return t.size; - }; - rtype.prototype.Size = function() { return this.$val.Size(); }; - rtype.ptr.prototype.Bits = function() { - var k, t; - t = this; - if (t === ptrType$1.nil) { - $panic(new $String("reflect: Bits of nil Type")); - } - k = t.Kind(); - if (k < 2 || k > 16) { - $panic(new $String("reflect: Bits of non-arithmetic Type " + t.String())); - } - return $imul(((t.size >> 0)), 8); - }; - rtype.prototype.Bits = function() { return this.$val.Bits(); }; - rtype.ptr.prototype.Align = function() { - var t; - t = this; - return ((t.align >> 0)); - }; - rtype.prototype.Align = function() { return this.$val.Align(); }; - rtype.ptr.prototype.FieldAlign = function() { - var t; - t = this; - return ((t.fieldAlign >> 0)); - }; - rtype.prototype.FieldAlign = function() { return this.$val.FieldAlign(); }; - rtype.ptr.prototype.Kind = function() { - var t; - t = this; - return ((((t.kind & 31) >>> 0) >>> 0)); - }; - rtype.prototype.Kind = function() { return this.$val.Kind(); }; - rtype.ptr.prototype.common = function() { - var t; - t = this; - return t; - }; - rtype.prototype.common = function() { return this.$val.common(); }; - rtype.ptr.prototype.exportedMethods = function() { - var t, ut; - t = this; - ut = t.uncommon(); - if (ut === ptrType$5.nil) { - return sliceType$5.nil; - } - return ut.exportedMethods(); - }; - rtype.prototype.exportedMethods = function() { return this.$val.exportedMethods(); }; - rtype.ptr.prototype.NumMethod = function() { - var t, tt; - t = this; - if (t.Kind() === 20) { - tt = (t.kindType); - return tt.NumMethod(); - } - return t.exportedMethods().$length; - }; - rtype.prototype.NumMethod = function() { return this.$val.NumMethod(); }; - rtype.ptr.prototype.MethodByName = function(name$1) { - var _i, _r, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, i, m, name$1, ok, p, t, tt, ut, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; i = $f.i; m = $f.m; name$1 = $f.name$1; ok = $f.ok; p = $f.p; t = $f.t; tt = $f.tt; ut = $f.ut; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); - ok = false; - t = this; - if (t.Kind() === 20) { - tt = (t.kindType); - _tuple = tt.MethodByName(name$1); - Method.copy(m, _tuple[0]); - ok = _tuple[1]; - $s = -1; return [m, ok]; - } - ut = t.uncommon(); - if (ut === ptrType$5.nil) { - _tmp = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); - _tmp$1 = false; - Method.copy(m, _tmp); - ok = _tmp$1; - $s = -1; return [m, ok]; - } - _ref = ut.exportedMethods(); - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } - i = _i; - p = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), method); - /* */ if ($clone(t.nameOff(p.name), name).name() === name$1) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if ($clone(t.nameOff(p.name), name).name() === name$1) { */ case 3: - _r = t.Method(i); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tmp$2 = $clone(_r, Method); - _tmp$3 = true; - Method.copy(m, _tmp$2); - ok = _tmp$3; - $s = -1; return [m, ok]; - /* } */ case 4: - _i++; - /* } */ $s = 1; continue; case 2: - _tmp$4 = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); - _tmp$5 = false; - Method.copy(m, _tmp$4); - ok = _tmp$5; - $s = -1; return [m, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.MethodByName }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.i = i; $f.m = m; $f.name$1 = name$1; $f.ok = ok; $f.p = p; $f.t = t; $f.tt = tt; $f.ut = ut; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); }; - rtype.ptr.prototype.PkgPath = function() { - var t, ut; - t = this; - if (((t.tflag & 4) >>> 0) === 0) { - return ""; - } - ut = t.uncommon(); - if (ut === ptrType$5.nil) { - return ""; - } - return $clone(t.nameOff(ut.pkgPath), name).name(); - }; - rtype.prototype.PkgPath = function() { return this.$val.PkgPath(); }; - rtype.ptr.prototype.Name = function() { - var i, s, t; - t = this; - if (((t.tflag & 4) >>> 0) === 0) { - return ""; - } - s = t.String(); - i = s.length - 1 >> 0; - while (true) { - if (!(i >= 0)) { break; } - if (s.charCodeAt(i) === 46) { - break; - } - i = i - (1) >> 0; - } - return $substring(s, (i + 1 >> 0)); - }; - rtype.prototype.Name = function() { return this.$val.Name(); }; - rtype.ptr.prototype.ChanDir = function() { - var t, tt; - t = this; - if (!((t.Kind() === 18))) { - $panic(new $String("reflect: ChanDir of non-chan type")); - } - tt = (t.kindType); - return ((tt.dir >> 0)); - }; - rtype.prototype.ChanDir = function() { return this.$val.ChanDir(); }; - rtype.ptr.prototype.IsVariadic = function() { - var t, tt; - t = this; - if (!((t.Kind() === 19))) { - $panic(new $String("reflect: IsVariadic of non-func type")); - } - tt = (t.kindType); - return !((((tt.outCount & 32768) >>> 0) === 0)); - }; - rtype.prototype.IsVariadic = function() { return this.$val.IsVariadic(); }; - rtype.ptr.prototype.Elem = function() { - var _1, t, tt, tt$1, tt$2, tt$3, tt$4; - t = this; - _1 = t.Kind(); - if (_1 === (17)) { - tt = (t.kindType); - return toType(tt.elem); - } else if (_1 === (18)) { - tt$1 = (t.kindType); - return toType(tt$1.elem); - } else if (_1 === (21)) { - tt$2 = (t.kindType); - return toType(tt$2.elem); - } else if (_1 === (22)) { - tt$3 = (t.kindType); - return toType(tt$3.elem); - } else if (_1 === (23)) { - tt$4 = (t.kindType); - return toType(tt$4.elem); - } - $panic(new $String("reflect: Elem of invalid type")); - }; - rtype.prototype.Elem = function() { return this.$val.Elem(); }; - rtype.ptr.prototype.Field = function(i) { - var i, t, tt; - t = this; - if (!((t.Kind() === 25))) { - $panic(new $String("reflect: Field of non-struct type")); - } - tt = (t.kindType); - return tt.Field(i); - }; - rtype.prototype.Field = function(i) { return this.$val.Field(i); }; - rtype.ptr.prototype.FieldByIndex = function(index) { - var _r, index, t, tt, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; index = $f.index; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if (!((t.Kind() === 25))) { - $panic(new $String("reflect: FieldByIndex of non-struct type")); - } - tt = (t.kindType); - _r = tt.FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByIndex }; } $f._r = _r; $f.index = index; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); }; - rtype.ptr.prototype.FieldByName = function(name$1) { - var _r, name$1, t, tt, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; name$1 = $f.name$1; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if (!((t.Kind() === 25))) { - $panic(new $String("reflect: FieldByName of non-struct type")); - } - tt = (t.kindType); - _r = tt.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByName }; } $f._r = _r; $f.name$1 = name$1; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); }; - rtype.ptr.prototype.FieldByNameFunc = function(match) { - var _r, match, t, tt, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; match = $f.match; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if (!((t.Kind() === 25))) { - $panic(new $String("reflect: FieldByNameFunc of non-struct type")); - } - tt = (t.kindType); - _r = tt.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByNameFunc }; } $f._r = _r; $f.match = match; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); }; - rtype.ptr.prototype.In = function(i) { - var i, t, tt, x; - t = this; - if (!((t.Kind() === 19))) { - $panic(new $String("reflect: In of non-func type")); - } - tt = (t.kindType); - return toType((x = tt.in$(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); - }; - rtype.prototype.In = function(i) { return this.$val.In(i); }; - rtype.ptr.prototype.Key = function() { - var t, tt; - t = this; - if (!((t.Kind() === 21))) { - $panic(new $String("reflect: Key of non-map type")); - } - tt = (t.kindType); - return toType(tt.key); - }; - rtype.prototype.Key = function() { return this.$val.Key(); }; - rtype.ptr.prototype.Len = function() { - var t, tt; - t = this; - if (!((t.Kind() === 17))) { - $panic(new $String("reflect: Len of non-array type")); - } - tt = (t.kindType); - return ((tt.len >> 0)); - }; - rtype.prototype.Len = function() { return this.$val.Len(); }; - rtype.ptr.prototype.NumField = function() { - var t, tt; - t = this; - if (!((t.Kind() === 25))) { - $panic(new $String("reflect: NumField of non-struct type")); - } - tt = (t.kindType); - return tt.fields.$length; - }; - rtype.prototype.NumField = function() { return this.$val.NumField(); }; - rtype.ptr.prototype.NumIn = function() { - var t, tt; - t = this; - if (!((t.Kind() === 19))) { - $panic(new $String("reflect: NumIn of non-func type")); - } - tt = (t.kindType); - return ((tt.inCount >> 0)); - }; - rtype.prototype.NumIn = function() { return this.$val.NumIn(); }; - rtype.ptr.prototype.NumOut = function() { - var t, tt; - t = this; - if (!((t.Kind() === 19))) { - $panic(new $String("reflect: NumOut of non-func type")); - } - tt = (t.kindType); - return tt.out().$length; - }; - rtype.prototype.NumOut = function() { return this.$val.NumOut(); }; - rtype.ptr.prototype.Out = function(i) { - var i, t, tt, x; - t = this; - if (!((t.Kind() === 19))) { - $panic(new $String("reflect: Out of non-func type")); - } - tt = (t.kindType); - return toType((x = tt.out(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); - }; - rtype.prototype.Out = function(i) { return this.$val.Out(i); }; - ChanDir.prototype.String = function() { - var _1, d; - d = this.$val; - _1 = d; - if (_1 === (2)) { - return "chan<-"; - } else if (_1 === (1)) { - return "<-chan"; - } else if (_1 === (3)) { - return "chan"; - } - return "ChanDir" + strconv.Itoa(((d >> 0))); - }; - $ptrType(ChanDir).prototype.String = function() { return new ChanDir(this.$get()).String(); }; - interfaceType.ptr.prototype.Method = function(i) { - var i, m, p, pname, t, x; - m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); - t = this; - if (i < 0 || i >= t.methods.$length) { - return m; - } - p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - pname = $clone(t.rtype.nameOff(p.name), name); - m.Name = $clone(pname, name).name(); - if (!$clone(pname, name).isExported()) { - m.PkgPath = $clone(pname, name).pkgPath(); - if (m.PkgPath === "") { - m.PkgPath = $clone(t.pkgPath, name).name(); - } - } - m.Type = toType(t.rtype.typeOff(p.typ)); - m.Index = i; - return m; - }; - interfaceType.prototype.Method = function(i) { return this.$val.Method(i); }; - interfaceType.ptr.prototype.NumMethod = function() { - var t; - t = this; - return t.methods.$length; - }; - interfaceType.prototype.NumMethod = function() { return this.$val.NumMethod(); }; - interfaceType.ptr.prototype.MethodByName = function(name$1) { - var _i, _ref, _tmp, _tmp$1, i, m, name$1, ok, p, t, x; - m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); - ok = false; - t = this; - if (t === ptrType$9.nil) { - return [m, ok]; - } - p = ptrType$10.nil; - _ref = t.methods; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - if ($clone(t.rtype.nameOff(p.name), name).name() === name$1) { - _tmp = $clone(t.Method(i), Method); - _tmp$1 = true; - Method.copy(m, _tmp); - ok = _tmp$1; - return [m, ok]; - } - _i++; - } - return [m, ok]; - }; - interfaceType.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); }; - StructTag.prototype.Get = function(key) { - var _tuple, key, tag, v; - tag = this.$val; - _tuple = new StructTag(tag).Lookup(key); - v = _tuple[0]; - return v; - }; - $ptrType(StructTag).prototype.Get = function(key) { return new StructTag(this.$get()).Get(key); }; - StructTag.prototype.Lookup = function(key) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, i, key, name$1, ok, qvalue, tag, value, value$1; - value = ""; - ok = false; - tag = this.$val; - while (true) { - if (!(!(tag === ""))) { break; } - i = 0; - while (true) { - if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; } - i = i + (1) >> 0; - } - tag = $substring(tag, i); - if (tag === "") { - break; - } - i = 0; - while (true) { - if (!(i < tag.length && tag.charCodeAt(i) > 32 && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)) && !((tag.charCodeAt(i) === 127)))) { break; } - i = i + (1) >> 0; - } - if ((i === 0) || (i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) { - break; - } - name$1 = ($substring(tag, 0, i)); - tag = $substring(tag, (i + 1 >> 0)); - i = 1; - while (true) { - if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; } - if (tag.charCodeAt(i) === 92) { - i = i + (1) >> 0; - } - i = i + (1) >> 0; - } - if (i >= tag.length) { - break; - } - qvalue = ($substring(tag, 0, (i + 1 >> 0))); - tag = $substring(tag, (i + 1 >> 0)); - if (key === name$1) { - _tuple = strconv.Unquote(qvalue); - value$1 = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - break; - } - _tmp = value$1; - _tmp$1 = true; - value = _tmp; - ok = _tmp$1; - return [value, ok]; - } - } - _tmp$2 = ""; - _tmp$3 = false; - value = _tmp$2; - ok = _tmp$3; - return [value, ok]; - }; - $ptrType(StructTag).prototype.Lookup = function(key) { return new StructTag(this.$get()).Lookup(key); }; - structType.ptr.prototype.Field = function(i) { - var f, i, p, t, tag, x; - f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); - t = this; - if (i < 0 || i >= t.fields.$length) { - $panic(new $String("reflect: Field index out of bounds")); - } - p = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - f.Type = toType(p.typ); - f.Name = $clone(p.name, name).name(); - f.Anonymous = p.embedded(); - if (!$clone(p.name, name).isExported()) { - f.PkgPath = $clone(t.pkgPath, name).name(); - } - tag = $clone(p.name, name).tag(); - if (!(tag === "")) { - f.Tag = (tag); - } - f.Offset = p.offset(); - f.Index = new sliceType$13([i]); - return f; - }; - structType.prototype.Field = function(i) { return this.$val.Field(i); }; - structType.ptr.prototype.FieldByIndex = function(index) { - var _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _v = $f._v; f = $f.f; ft = $f.ft; i = $f.i; index = $f.index; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); - t = this; - f.Type = toType(t.rtype); - _ref = index; - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } - i = _i; - x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - /* */ if (i > 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (i > 0) { */ case 3: - ft = f.Type; - _r = ft.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - if (!(_r === 22)) { _v = false; $s = 7; continue s; } - _r$1 = ft.Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = _r$1.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v = _r$2 === 25; case 7: - /* */ if (_v) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_v) { */ case 5: - _r$3 = ft.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - ft = _r$3; - /* } */ case 6: - f.Type = ft; - /* } */ case 4: - _r$4 = f.Type.Field(x); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - StructField.copy(f, _r$4); - _i++; - /* } */ $s = 1; continue; case 2: - $s = -1; return f; - /* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByIndex }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._v = _v; $f.f = f; $f.ft = ft; $f.i = i; $f.index = index; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - structType.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); }; - structType.ptr.prototype.FieldByNameFunc = function(match) { - var _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; count = $f.count; current = $f.current; f = $f.f; fname = $f.fname; i = $f.i; index = $f.index; match = $f.match; next = $f.next; nextCount = $f.nextCount; ntyp = $f.ntyp; ok = $f.ok; result = $f.result; scan = $f.scan; styp = $f.styp; t = $f.t; t$1 = $f.t$1; visited = $f.visited; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); - ok = false; - t = this; - current = new sliceType$14([]); - next = new sliceType$14([new fieldScan.ptr(t, sliceType$13.nil)]); - nextCount = false; - visited = $makeMap(ptrType$11.keyFor, []); - /* while (true) { */ case 1: - /* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; } - _tmp = next; - _tmp$1 = $subslice(current, 0, 0); - current = _tmp; - next = _tmp$1; - count = nextCount; - nextCount = false; - _ref = current; - _i = 0; - /* while (true) { */ case 3: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } - scan = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), fieldScan); - t$1 = scan.typ; - /* */ if ((_entry = visited[ptrType$11.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if ((_entry = visited[ptrType$11.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { */ case 5: - _i++; - /* continue; */ $s = 3; continue; - /* } */ case 6: - _key = t$1; (visited || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key)] = { k: _key, v: true }; - _ref$1 = t$1.fields; - _i$1 = 0; - /* while (true) { */ case 7: - /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; } - i = _i$1; - f = (x = t$1.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - fname = $clone(f.name, name).name(); - ntyp = ptrType$1.nil; - /* */ if (f.embedded()) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (f.embedded()) { */ case 9: - ntyp = f.typ; - /* */ if (ntyp.Kind() === 22) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (ntyp.Kind() === 22) { */ case 11: - _r = ntyp.Elem().common(); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - ntyp = _r; - /* } */ case 12: - /* } */ case 10: - _r$1 = match(fname); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 14; continue; } - /* */ $s = 15; continue; - /* if (_r$1) { */ case 14: - if ((_entry$1 = count[ptrType$11.keyFor(t$1)], _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) { - _tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); - _tmp$3 = false; - StructField.copy(result, _tmp$2); - ok = _tmp$3; - $s = -1; return [result, ok]; - } - StructField.copy(result, t$1.Field(i)); - result.Index = sliceType$13.nil; - result.Index = $appendSlice(result.Index, scan.index); - result.Index = $append(result.Index, i); - ok = true; - _i$1++; - /* continue; */ $s = 7; continue; - /* } */ case 15: - if (ok || ntyp === ptrType$1.nil || !((ntyp.Kind() === 25))) { - _i$1++; - /* continue; */ $s = 7; continue; - } - styp = (ntyp.kindType); - if ((_entry$2 = nextCount[ptrType$11.keyFor(styp)], _entry$2 !== undefined ? _entry$2.v : 0) > 0) { - _key$1 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key$1)] = { k: _key$1, v: 2 }; - _i$1++; - /* continue; */ $s = 7; continue; - } - if (nextCount === false) { - nextCount = $makeMap(ptrType$11.keyFor, []); - } - _key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key$2)] = { k: _key$2, v: 1 }; - if ((_entry$3 = count[ptrType$11.keyFor(t$1)], _entry$3 !== undefined ? _entry$3.v : 0) > 1) { - _key$3 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$11.keyFor(_key$3)] = { k: _key$3, v: 2 }; - } - index = sliceType$13.nil; - index = $appendSlice(index, scan.index); - index = $append(index, i); - next = $append(next, new fieldScan.ptr(styp, index)); - _i$1++; - /* } */ $s = 7; continue; case 8: - _i++; - /* } */ $s = 3; continue; case 4: - if (ok) { - /* break; */ $s = 2; continue; - } - /* } */ $s = 1; continue; case 2: - $s = -1; return [result, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByNameFunc }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.count = count; $f.current = current; $f.f = f; $f.fname = fname; $f.i = i; $f.index = index; $f.match = match; $f.next = next; $f.nextCount = nextCount; $f.ntyp = ntyp; $f.ok = ok; $f.result = result; $f.scan = scan; $f.styp = styp; $f.t = t; $f.t$1 = t$1; $f.visited = visited; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - structType.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); }; - structType.ptr.prototype.FieldByName = function(name$1) { - var _i, _r, _ref, _tmp, _tmp$1, _tuple, f, hasEmbeds, i, name$1, present, t, tf, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; f = $f.f; hasEmbeds = $f.hasEmbeds; i = $f.i; name$1 = $f.name$1; present = $f.present; t = $f.t; tf = $f.tf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - name$1 = [name$1]; - f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false); - present = false; - t = this; - hasEmbeds = false; - if (!(name$1[0] === "")) { - _ref = t.fields; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - tf = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - if ($clone(tf.name, name).name() === name$1[0]) { - _tmp = $clone(t.Field(i), StructField); - _tmp$1 = true; - StructField.copy(f, _tmp); - present = _tmp$1; - $s = -1; return [f, present]; - } - if (tf.embedded()) { - hasEmbeds = true; - } - _i++; - } - } - if (!hasEmbeds) { - $s = -1; return [f, present]; - } - _r = t.FieldByNameFunc((function(name$1) { return function(s) { - var s; - return s === name$1[0]; - }; })(name$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - StructField.copy(f, _tuple[0]); - present = _tuple[1]; - $s = -1; return [f, present]; - /* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByName }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.f = f; $f.hasEmbeds = hasEmbeds; $f.i = i; $f.name$1 = name$1; $f.present = present; $f.t = t; $f.tf = tf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - structType.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); }; - PtrTo = function(t) { - var t; - return $assertType(t, ptrType$1).ptrTo(); - }; - $pkg.PtrTo = PtrTo; - rtype.ptr.prototype.Implements = function(u) { - var _r, t, u, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if ($interfaceIsEqual(u, $ifaceNil)) { - $panic(new $String("reflect: nil type passed to Type.Implements")); - } - _r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 20))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 20))) { */ case 1: - $panic(new $String("reflect: non-interface type passed to Type.Implements")); - /* } */ case 2: - $s = -1; return implements$1($assertType(u, ptrType$1), t); - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Implements }; } $f._r = _r; $f.t = t; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.Implements = function(u) { return this.$val.Implements(u); }; - rtype.ptr.prototype.AssignableTo = function(u) { - var _r, t, u, uu, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if ($interfaceIsEqual(u, $ifaceNil)) { - $panic(new $String("reflect: nil type passed to Type.AssignableTo")); - } - uu = $assertType(u, ptrType$1); - _r = directlyAssignable(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r || implements$1(uu, t); - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.AssignableTo }; } $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.AssignableTo = function(u) { return this.$val.AssignableTo(u); }; - rtype.ptr.prototype.ConvertibleTo = function(u) { - var _r, t, u, uu, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if ($interfaceIsEqual(u, $ifaceNil)) { - $panic(new $String("reflect: nil type passed to Type.ConvertibleTo")); - } - uu = $assertType(u, ptrType$1); - _r = convertOp(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return !(_r === $throwNilPointerError); - /* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.ConvertibleTo }; } $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f; - }; - rtype.prototype.ConvertibleTo = function(u) { return this.$val.ConvertibleTo(u); }; - implements$1 = function(T, V) { - var T, V, i, i$1, j, j$1, t, tm, tm$1, tmName, tmName$1, tmPkgPath, tmPkgPath$1, v, v$1, vm, vm$1, vmName, vmName$1, vmPkgPath, vmPkgPath$1, vmethods, x, x$1, x$2; - if (!((T.Kind() === 20))) { - return false; - } - t = (T.kindType); - if (t.methods.$length === 0) { - return true; - } - if (V.Kind() === 20) { - v = (V.kindType); - i = 0; - j = 0; - while (true) { - if (!(j < v.methods.$length)) { break; } - tm = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - tmName = $clone(t.rtype.nameOff(tm.name), name); - vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])); - vmName = $clone(V.nameOff(vm.name), name); - if ($clone(vmName, name).name() === $clone(tmName, name).name() && V.typeOff(vm.typ) === t.rtype.typeOff(tm.typ)) { - if (!$clone(tmName, name).isExported()) { - tmPkgPath = $clone(tmName, name).pkgPath(); - if (tmPkgPath === "") { - tmPkgPath = $clone(t.pkgPath, name).name(); - } - vmPkgPath = $clone(vmName, name).pkgPath(); - if (vmPkgPath === "") { - vmPkgPath = $clone(v.pkgPath, name).name(); - } - if (!(tmPkgPath === vmPkgPath)) { - j = j + (1) >> 0; - continue; - } - } - i = i + (1) >> 0; - if (i >= t.methods.$length) { - return true; - } - } - j = j + (1) >> 0; - } - return false; - } - v$1 = V.uncommon(); - if (v$1 === ptrType$5.nil) { - return false; - } - i$1 = 0; - vmethods = v$1.methods(); - j$1 = 0; - while (true) { - if (!(j$1 < ((v$1.mcount >> 0)))) { break; } - tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])); - tmName$1 = $clone(t.rtype.nameOff(tm$1.name), name); - vm$1 = $clone(((j$1 < 0 || j$1 >= vmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : vmethods.$array[vmethods.$offset + j$1]), method); - vmName$1 = $clone(V.nameOff(vm$1.name), name); - if ($clone(vmName$1, name).name() === $clone(tmName$1, name).name() && V.typeOff(vm$1.mtyp) === t.rtype.typeOff(tm$1.typ)) { - if (!$clone(tmName$1, name).isExported()) { - tmPkgPath$1 = $clone(tmName$1, name).pkgPath(); - if (tmPkgPath$1 === "") { - tmPkgPath$1 = $clone(t.pkgPath, name).name(); - } - vmPkgPath$1 = $clone(vmName$1, name).pkgPath(); - if (vmPkgPath$1 === "") { - vmPkgPath$1 = $clone(V.nameOff(v$1.pkgPath), name).name(); - } - if (!(tmPkgPath$1 === vmPkgPath$1)) { - j$1 = j$1 + (1) >> 0; - continue; - } - } - i$1 = i$1 + (1) >> 0; - if (i$1 >= t.methods.$length) { - return true; - } - } - j$1 = j$1 + (1) >> 0; - } - return false; - }; - directlyAssignable = function(T, V) { - var T, V, _r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (T === V) { - $s = -1; return true; - } - if (!(T.Name() === "") && !(V.Name() === "") || !((T.Kind() === V.Kind()))) { - $s = -1; return false; - } - _r = haveIdenticalUnderlyingType(T, V, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: directlyAssignable }; } $f.T = T; $f.V = V; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f; - }; - haveIdenticalType = function(T, V, cmpTags) { - var T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _v, cmpTags, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _v = $f._v; cmpTags = $f.cmpTags; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (cmpTags) { - $s = -1; return $interfaceIsEqual(T, V); - } - _r = T.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = V.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - if (!(_r === _r$1)) { _v = true; $s = 3; continue s; } - _r$2 = T.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$3 = V.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _v = !((_r$2 === _r$3)); case 3: - /* */ if (_v) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_v) { */ case 1: - $s = -1; return false; - /* } */ case 2: - _r$4 = T.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _arg = _r$4; - _r$5 = V.common(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _arg$1 = _r$5; - _r$6 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - $s = -1; return _r$6; - /* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalType }; } $f.T = T; $f.V = V; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._v = _v; $f.cmpTags = cmpTags; $f.$s = $s; $f.$r = $r; return $f; - }; - haveIdenticalUnderlyingType = function(T, V, cmpTags) { - var T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _v, _v$1, _v$2, _v$3, cmpTags, i, i$1, i$2, kind, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; cmpTags = $f.cmpTags; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; kind = $f.kind; t = $f.t; t$1 = $f.t$1; t$2 = $f.t$2; tf = $f.tf; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; vf = $f.vf; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (T === V) { - $s = -1; return true; - } - kind = T.Kind(); - if (!((kind === V.Kind()))) { - $s = -1; return false; - } - if (1 <= kind && kind <= 16 || (kind === 24) || (kind === 26)) { - $s = -1; return true; - } - _1 = kind; - /* */ if (_1 === (17)) { $s = 2; continue; } - /* */ if (_1 === (18)) { $s = 3; continue; } - /* */ if (_1 === (19)) { $s = 4; continue; } - /* */ if (_1 === (20)) { $s = 5; continue; } - /* */ if (_1 === (21)) { $s = 6; continue; } - /* */ if ((_1 === (22)) || (_1 === (23))) { $s = 7; continue; } - /* */ if (_1 === (25)) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (_1 === (17)) { */ case 2: - if (!(T.Len() === V.Len())) { _v = false; $s = 10; continue s; } - _r = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 10: - $s = -1; return _v; - /* } else if (_1 === (18)) { */ case 3: - if (!(V.ChanDir() === 3)) { _v$1 = false; $s = 14; continue s; } - _r$1 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _v$1 = _r$1; case 14: - /* */ if (_v$1) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (_v$1) { */ case 12: - $s = -1; return true; - /* } */ case 13: - if (!(V.ChanDir() === T.ChanDir())) { _v$2 = false; $s = 16; continue s; } - _r$2 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v$2 = _r$2; case 16: - $s = -1; return _v$2; - /* } else if (_1 === (19)) { */ case 4: - t = (T.kindType); - v = (V.kindType); - if (!((t.outCount === v.outCount)) || !((t.inCount === v.inCount))) { - $s = -1; return false; - } - i = 0; - /* while (true) { */ case 18: - /* if (!(i < t.rtype.NumIn())) { break; } */ if(!(i < t.rtype.NumIn())) { $s = 19; continue; } - _r$3 = haveIdenticalType(t.rtype.In(i), v.rtype.In(i), cmpTags); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (!_r$3) { $s = 20; continue; } - /* */ $s = 21; continue; - /* if (!_r$3) { */ case 20: - $s = -1; return false; - /* } */ case 21: - i = i + (1) >> 0; - /* } */ $s = 18; continue; case 19: - i$1 = 0; - /* while (true) { */ case 23: - /* if (!(i$1 < t.rtype.NumOut())) { break; } */ if(!(i$1 < t.rtype.NumOut())) { $s = 24; continue; } - _r$4 = haveIdenticalType(t.rtype.Out(i$1), v.rtype.Out(i$1), cmpTags); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - /* */ if (!_r$4) { $s = 25; continue; } - /* */ $s = 26; continue; - /* if (!_r$4) { */ case 25: - $s = -1; return false; - /* } */ case 26: - i$1 = i$1 + (1) >> 0; - /* } */ $s = 23; continue; case 24: - $s = -1; return true; - /* } else if (_1 === (20)) { */ case 5: - t$1 = (T.kindType); - v$1 = (V.kindType); - if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) { - $s = -1; return true; - } - $s = -1; return false; - /* } else if (_1 === (21)) { */ case 6: - _r$5 = haveIdenticalType(T.Key(), V.Key(), cmpTags); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - if (!(_r$5)) { _v$3 = false; $s = 28; continue s; } - _r$6 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _v$3 = _r$6; case 28: - $s = -1; return _v$3; - /* } else if ((_1 === (22)) || (_1 === (23))) { */ case 7: - _r$7 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $s = -1; return _r$7; - /* } else if (_1 === (25)) { */ case 8: - t$2 = (T.kindType); - v$2 = (V.kindType); - if (!((t$2.fields.$length === v$2.fields.$length))) { - $s = -1; return false; - } - if (!($clone(t$2.pkgPath, name).name() === $clone(v$2.pkgPath, name).name())) { - $s = -1; return false; - } - _ref = t$2.fields; - _i = 0; - /* while (true) { */ case 32: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 33; continue; } - i$2 = _i; - tf = (x = t$2.fields, ((i$2 < 0 || i$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$2])); - vf = (x$1 = v$2.fields, ((i$2 < 0 || i$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$2])); - if (!($clone(tf.name, name).name() === $clone(vf.name, name).name())) { - $s = -1; return false; - } - _r$8 = haveIdenticalType(tf.typ, vf.typ, cmpTags); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - /* */ if (!_r$8) { $s = 34; continue; } - /* */ $s = 35; continue; - /* if (!_r$8) { */ case 34: - $s = -1; return false; - /* } */ case 35: - if (cmpTags && !($clone(tf.name, name).tag() === $clone(vf.name, name).tag())) { - $s = -1; return false; - } - if (!((tf.offsetEmbed === vf.offsetEmbed))) { - $s = -1; return false; - } - _i++; - /* } */ $s = 32; continue; case 33: - $s = -1; return true; - /* } */ case 9: - case 1: - $s = -1; return false; - /* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalUnderlyingType }; } $f.T = T; $f.V = V; $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.cmpTags = cmpTags; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.kind = kind; $f.t = t; $f.t$1 = t$1; $f.t$2 = t$2; $f.tf = tf; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.vf = vf; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - toType = function(t) { - var t; - if (t === ptrType$1.nil) { - return $ifaceNil; - } - return t; - }; - ifaceIndir = function(t) { - var t; - return ((t.kind & 32) >>> 0) === 0; - }; - flag.prototype.kind = function() { - var f; - f = this.$val; - return ((((f & 31) >>> 0) >>> 0)); - }; - $ptrType(flag).prototype.kind = function() { return new flag(this.$get()).kind(); }; - flag.prototype.ro = function() { - var f; - f = this.$val; - if (!((((f & 96) >>> 0) === 0))) { - return 32; - } - return 0; - }; - $ptrType(flag).prototype.ro = function() { return new flag(this.$get()).ro(); }; - Value.ptr.prototype.pointer = function() { - var v; - v = this; - if (!((v.typ.size === 4)) || !v.typ.pointers()) { - $panic(new $String("can't call pointer on a non-pointer Value")); - } - if (!((((v.flag & 128) >>> 0) === 0))) { - return (v.ptr).$get(); - } - return v.ptr; - }; - Value.prototype.pointer = function() { return this.$val.pointer(); }; - ValueError.ptr.prototype.Error = function() { - var e; - e = this; - if (e.Kind === 0) { - return "reflect: call of " + e.Method + " on zero Value"; - } - return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value"; - }; - ValueError.prototype.Error = function() { return this.$val.Error(); }; - flag.prototype.mustBe = function(expected) { - var expected, f; - f = this.$val; - if (!((new flag(f).kind() === expected))) { - $panic(new ValueError.ptr(methodName(), new flag(f).kind())); - } - }; - $ptrType(flag).prototype.mustBe = function(expected) { return new flag(this.$get()).mustBe(expected); }; - flag.prototype.mustBeExported = function() { - var f; - f = this.$val; - if (f === 0) { - $panic(new ValueError.ptr(methodName(), 0)); - } - if (!((((f & 96) >>> 0) === 0))) { - $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); - } - }; - $ptrType(flag).prototype.mustBeExported = function() { return new flag(this.$get()).mustBeExported(); }; - flag.prototype.mustBeAssignable = function() { - var f; - f = this.$val; - if (f === 0) { - $panic(new ValueError.ptr(methodName(), 0)); - } - if (!((((f & 96) >>> 0) === 0))) { - $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); - } - if (((f & 256) >>> 0) === 0) { - $panic(new $String("reflect: " + methodName() + " using unaddressable value")); - } - }; - $ptrType(flag).prototype.mustBeAssignable = function() { return new flag(this.$get()).mustBeAssignable(); }; - Value.ptr.prototype.Addr = function() { - var v; - v = this; - if (((v.flag & 256) >>> 0) === 0) { - $panic(new $String("reflect.Value.Addr of unaddressable value")); - } - return new Value.ptr(v.typ.ptrTo(), v.ptr, (new flag(v.flag).ro() | 22) >>> 0); - }; - Value.prototype.Addr = function() { return this.$val.Addr(); }; - Value.ptr.prototype.Bool = function() { - var v; - v = this; - new flag(v.flag).mustBe(1); - return (v.ptr).$get(); - }; - Value.prototype.Bool = function() { return this.$val.Bool(); }; - Value.ptr.prototype.Bytes = function() { - var _r, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(23); - _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 8))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 8))) { */ case 1: - $panic(new $String("reflect.Value.Bytes of non-byte slice")); - /* } */ case 2: - $s = -1; return (v.ptr).$get(); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Bytes }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Bytes = function() { return this.$val.Bytes(); }; - Value.ptr.prototype.runes = function() { - var _r, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(23); - _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 5))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 5))) { */ case 1: - $panic(new $String("reflect.Value.Bytes of non-rune slice")); - /* } */ case 2: - $s = -1; return (v.ptr).$get(); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.runes }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.runes = function() { return this.$val.runes(); }; - Value.ptr.prototype.CanAddr = function() { - var v; - v = this; - return !((((v.flag & 256) >>> 0) === 0)); - }; - Value.prototype.CanAddr = function() { return this.$val.CanAddr(); }; - Value.ptr.prototype.CanSet = function() { - var v; - v = this; - return ((v.flag & 352) >>> 0) === 256; - }; - Value.prototype.CanSet = function() { return this.$val.CanSet(); }; - Value.ptr.prototype.Call = function(in$1) { - var _r, in$1, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(19); - new flag(v.flag).mustBeExported(); - _r = $clone(v, Value).call("Call", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Call }; } $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Call = function(in$1) { return this.$val.Call(in$1); }; - Value.ptr.prototype.CallSlice = function(in$1) { - var _r, in$1, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(19); - new flag(v.flag).mustBeExported(); - _r = $clone(v, Value).call("CallSlice", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.CallSlice }; } $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.CallSlice = function(in$1) { return this.$val.CallSlice(in$1); }; - Value.ptr.prototype.Complex = function() { - var _1, k, v, x; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (15)) { - return ((x = (v.ptr).$get(), new $Complex128(x.$real, x.$imag))); - } else if (_1 === (16)) { - return (v.ptr).$get(); - } - $panic(new ValueError.ptr("reflect.Value.Complex", new flag(v.flag).kind())); - }; - Value.prototype.Complex = function() { return this.$val.Complex(); }; - Value.ptr.prototype.FieldByIndex = function(index) { - var _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _v = $f._v; i = $f.i; index = $f.index; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - /* */ if (index.$length === 1) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (index.$length === 1) { */ case 1: - _r = $clone(v, Value).Field((0 >= index.$length ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - new flag(v.flag).mustBe(25); - _ref = index; - _i = 0; - /* while (true) { */ case 4: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } - i = _i; - x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - /* */ if (i > 0) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (i > 0) { */ case 6: - if (!($clone(v, Value).Kind() === 22)) { _v = false; $s = 10; continue s; } - _r$1 = v.typ.Elem().Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _v = _r$1 === 25; case 10: - /* */ if (_v) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (_v) { */ case 8: - if ($clone(v, Value).IsNil()) { - $panic(new $String("reflect: indirection through nil pointer to embedded struct")); - } - _r$2 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v = _r$2; - /* } */ case 9: - /* } */ case 7: - _r$3 = $clone(v, Value).Field(x); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - v = _r$3; - _i++; - /* } */ $s = 4; continue; case 5: - $s = -1; return v; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByIndex }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._v = _v; $f.i = i; $f.index = index; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); }; - Value.ptr.prototype.FieldByName = function(name$1) { - var _r, _r$1, _tuple, f, name$1, ok, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; name$1 = $f.name$1; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(25); - _r = v.typ.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - f = $clone(_tuple[0], StructField); - ok = _tuple[1]; - /* */ if (ok) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (ok) { */ case 2: - _r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* } */ case 3: - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByName }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.name$1 = name$1; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); }; - Value.ptr.prototype.FieldByNameFunc = function(match) { - var _r, _r$1, _tuple, f, match, ok, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; match = $f.match; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - _r = v.typ.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - f = $clone(_tuple[0], StructField); - ok = _tuple[1]; - /* */ if (ok) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (ok) { */ case 2: - _r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* } */ case 3: - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByNameFunc }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.match = match; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); }; - Value.ptr.prototype.Float = function() { - var _1, k, v; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (13)) { - return ((v.ptr).$get()); - } else if (_1 === (14)) { - return (v.ptr).$get(); - } - $panic(new ValueError.ptr("reflect.Value.Float", new flag(v.flag).kind())); - }; - Value.prototype.Float = function() { return this.$val.Float(); }; - Value.ptr.prototype.Int = function() { - var _1, k, p, v; - v = this; - k = new flag(v.flag).kind(); - p = v.ptr; - _1 = k; - if (_1 === (2)) { - return (new $Int64(0, (p).$get())); - } else if (_1 === (3)) { - return (new $Int64(0, (p).$get())); - } else if (_1 === (4)) { - return (new $Int64(0, (p).$get())); - } else if (_1 === (5)) { - return (new $Int64(0, (p).$get())); - } else if (_1 === (6)) { - return (p).$get(); - } - $panic(new ValueError.ptr("reflect.Value.Int", new flag(v.flag).kind())); - }; - Value.prototype.Int = function() { return this.$val.Int(); }; - Value.ptr.prototype.CanInterface = function() { - var v; - v = this; - if (v.flag === 0) { - $panic(new ValueError.ptr("reflect.Value.CanInterface", 0)); - } - return ((v.flag & 96) >>> 0) === 0; - }; - Value.prototype.CanInterface = function() { return this.$val.CanInterface(); }; - Value.ptr.prototype.Interface = function() { - var _r, i, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - i = $ifaceNil; - v = this; - _r = valueInterface($clone(v, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - i = _r; - $s = -1; return i; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Interface }; } $f._r = _r; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Interface = function() { return this.$val.Interface(); }; - Value.ptr.prototype.IsValid = function() { - var v; - v = this; - return !((v.flag === 0)); - }; - Value.prototype.IsValid = function() { return this.$val.IsValid(); }; - Value.ptr.prototype.Kind = function() { - var v; - v = this; - return new flag(v.flag).kind(); - }; - Value.prototype.Kind = function() { return this.$val.Kind(); }; - Value.ptr.prototype.MapIndex = function(key) { - var _r, e, fl, k, key, tt, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; fl = $f.fl; k = $f.k; key = $f.key; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(21); - tt = (v.typ.kindType); - _r = $clone(key, Value).assignTo("reflect.Value.MapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - key = _r; - k = 0; - if (!((((key.flag & 128) >>> 0) === 0))) { - k = key.ptr; - } else { - k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); - } - e = mapaccess(v.typ, $clone(v, Value).pointer(), k); - if (e === 0) { - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - } - typ = tt.elem; - fl = new flag((((v.flag | key.flag) >>> 0))).ro(); - fl = (fl | (((typ.Kind() >>> 0)))) >>> 0; - $s = -1; return copyVal(typ, fl, e); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapIndex }; } $f._r = _r; $f.e = e; $f.fl = fl; $f.k = k; $f.key = key; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.MapIndex = function(key) { return this.$val.MapIndex(key); }; - Value.ptr.prototype.MapKeys = function() { - var _r, a, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; fl = $f.fl; i = $f.i; it = $f.it; key = $f.key; keyType = $f.keyType; m = $f.m; mlen = $f.mlen; tt = $f.tt; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(21); - tt = (v.typ.kindType); - keyType = tt.key; - fl = (new flag(v.flag).ro() | ((keyType.Kind() >>> 0))) >>> 0; - m = $clone(v, Value).pointer(); - mlen = 0; - if (!(m === 0)) { - mlen = maplen(m); - } - it = mapiterinit(v.typ, m); - a = $makeSlice(sliceType$9, mlen); - i = 0; - i = 0; - /* while (true) { */ case 1: - /* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; } - _r = mapiterkey(it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - key = _r; - if (key === 0) { - /* break; */ $s = 2; continue; - } - ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = copyVal(keyType, fl, key)); - mapiternext(it); - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - $s = -1; return $subslice(a, 0, i); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapKeys }; } $f._r = _r; $f.a = a; $f.fl = fl; $f.i = i; $f.it = it; $f.key = key; $f.keyType = keyType; $f.m = m; $f.mlen = mlen; $f.tt = tt; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.MapKeys = function() { return this.$val.MapKeys(); }; - MapIter.ptr.prototype.Key = function() { - var _arg, _arg$1, _arg$2, _r, _r$1, _r$2, it, ktype, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; ktype = $f.ktype; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - it = this; - if (it.it === 0) { - $panic(new $String("MapIter.Key called before Next")); - } - _r = mapiterkey(it.it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_r === 0) { */ case 1: - $panic(new $String("MapIter.Key called on exhausted iterator")); - /* } */ case 2: - t = (it.m.typ.kindType); - ktype = t.key; - _arg = ktype; - _arg$1 = (new flag(it.m.flag).ro() | ((ktype.Kind() >>> 0))) >>> 0; - _r$1 = mapiterkey(it.it); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _arg$2 = _r$1; - _r$2 = copyVal(_arg, _arg$1, _arg$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: MapIter.ptr.prototype.Key }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.ktype = ktype; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - MapIter.prototype.Key = function() { return this.$val.Key(); }; - MapIter.ptr.prototype.Value = function() { - var _arg, _arg$1, _arg$2, _r, _r$1, _r$2, it, t, vtype, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; t = $f.t; vtype = $f.vtype; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - it = this; - if (it.it === 0) { - $panic(new $String("MapIter.Value called before Next")); - } - _r = mapiterkey(it.it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_r === 0) { */ case 1: - $panic(new $String("MapIter.Value called on exhausted iterator")); - /* } */ case 2: - t = (it.m.typ.kindType); - vtype = t.elem; - _arg = vtype; - _arg$1 = (new flag(it.m.flag).ro() | ((vtype.Kind() >>> 0))) >>> 0; - _r$1 = mapitervalue(it.it); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _arg$2 = _r$1; - _r$2 = copyVal(_arg, _arg$1, _arg$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: MapIter.ptr.prototype.Value }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.t = t; $f.vtype = vtype; $f.$s = $s; $f.$r = $r; return $f; - }; - MapIter.prototype.Value = function() { return this.$val.Value(); }; - MapIter.ptr.prototype.Next = function() { - var _r, _r$1, it, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; it = $f.it; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - it = this; - /* */ if (it.it === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (it.it === 0) { */ case 1: - it.it = mapiterinit(it.m.typ, $clone(it.m, Value).pointer()); - $s = 3; continue; - /* } else { */ case 2: - _r = mapiterkey(it.it); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r === 0) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_r === 0) { */ case 4: - $panic(new $String("MapIter.Next called on exhausted iterator")); - /* } */ case 5: - mapiternext(it.it); - /* } */ case 3: - _r$1 = mapiterkey(it.it); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return !(_r$1 === 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: MapIter.ptr.prototype.Next }; } $f._r = _r; $f._r$1 = _r$1; $f.it = it; $f.$s = $s; $f.$r = $r; return $f; - }; - MapIter.prototype.Next = function() { return this.$val.Next(); }; - Value.ptr.prototype.MapRange = function() { - var v; - v = this; - new flag(v.flag).mustBe(21); - return new MapIter.ptr($clone(v, Value), 0); - }; - Value.prototype.MapRange = function() { return this.$val.MapRange(); }; - copyVal = function(typ, fl, ptr) { - var c, fl, ptr, typ; - if (ifaceIndir(typ)) { - c = unsafe_New(typ); - typedmemmove(typ, c, ptr); - return new Value.ptr(typ, c, (fl | 128) >>> 0); - } - return new Value.ptr(typ, (ptr).$get(), fl); - }; - Value.ptr.prototype.Method = function(i) { - var fl, i, v; - v = this; - if (v.typ === ptrType$1.nil) { - $panic(new ValueError.ptr("reflect.Value.Method", 0)); - } - if (!((((v.flag & 512) >>> 0) === 0)) || ((i >>> 0)) >= ((v.typ.NumMethod() >>> 0))) { - $panic(new $String("reflect: Method index out of range")); - } - if ((v.typ.Kind() === 20) && $clone(v, Value).IsNil()) { - $panic(new $String("reflect: Method on nil interface value")); - } - fl = (v.flag & 160) >>> 0; - fl = (fl | (19)) >>> 0; - fl = (fl | ((((((i >>> 0)) << 10 >>> 0) | 512) >>> 0))) >>> 0; - return new Value.ptr(v.typ, v.ptr, fl); - }; - Value.prototype.Method = function(i) { return this.$val.Method(i); }; - Value.ptr.prototype.NumMethod = function() { - var v; - v = this; - if (v.typ === ptrType$1.nil) { - $panic(new ValueError.ptr("reflect.Value.NumMethod", 0)); - } - if (!((((v.flag & 512) >>> 0) === 0))) { - return 0; - } - return v.typ.NumMethod(); - }; - Value.prototype.NumMethod = function() { return this.$val.NumMethod(); }; - Value.ptr.prototype.MethodByName = function(name$1) { - var _r, _tuple, m, name$1, ok, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; m = $f.m; name$1 = $f.name$1; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - if (v.typ === ptrType$1.nil) { - $panic(new ValueError.ptr("reflect.Value.MethodByName", 0)); - } - if (!((((v.flag & 512) >>> 0) === 0))) { - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - } - _r = v.typ.MethodByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - m = $clone(_tuple[0], Method); - ok = _tuple[1]; - if (!ok) { - $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); - } - $s = -1; return $clone(v, Value).Method(m.Index); - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MethodByName }; } $f._r = _r; $f._tuple = _tuple; $f.m = m; $f.name$1 = name$1; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); }; - Value.ptr.prototype.NumField = function() { - var tt, v; - v = this; - new flag(v.flag).mustBe(25); - tt = (v.typ.kindType); - return tt.fields.$length; - }; - Value.prototype.NumField = function() { return this.$val.NumField(); }; - Value.ptr.prototype.OverflowComplex = function(x) { - var _1, k, v, x; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (15)) { - return overflowFloat32(x.$real) || overflowFloat32(x.$imag); - } else if (_1 === (16)) { - return false; - } - $panic(new ValueError.ptr("reflect.Value.OverflowComplex", new flag(v.flag).kind())); - }; - Value.prototype.OverflowComplex = function(x) { return this.$val.OverflowComplex(x); }; - Value.ptr.prototype.OverflowFloat = function(x) { - var _1, k, v, x; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (13)) { - return overflowFloat32(x); - } else if (_1 === (14)) { - return false; - } - $panic(new ValueError.ptr("reflect.Value.OverflowFloat", new flag(v.flag).kind())); - }; - Value.prototype.OverflowFloat = function(x) { return this.$val.OverflowFloat(x); }; - overflowFloat32 = function(x) { - var x; - if (x < 0) { - x = -x; - } - return 3.4028234663852886e+38 < x && x <= 1.7976931348623157e+308; - }; - Value.ptr.prototype.OverflowInt = function(x) { - var _1, bitSize, k, trunc, v, x; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { - bitSize = $imul(v.typ.size, 8) >>> 0; - trunc = $shiftRightInt64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0))); - return !((x.$high === trunc.$high && x.$low === trunc.$low)); - } - $panic(new ValueError.ptr("reflect.Value.OverflowInt", new flag(v.flag).kind())); - }; - Value.prototype.OverflowInt = function(x) { return this.$val.OverflowInt(x); }; - Value.ptr.prototype.OverflowUint = function(x) { - var _1, bitSize, k, trunc, v, x; - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if ((_1 === (7)) || (_1 === (12)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { - bitSize = $imul(v.typ.size, 8) >>> 0; - trunc = $shiftRightUint64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0))); - return !((x.$high === trunc.$high && x.$low === trunc.$low)); - } - $panic(new ValueError.ptr("reflect.Value.OverflowUint", new flag(v.flag).kind())); - }; - Value.prototype.OverflowUint = function(x) { return this.$val.OverflowUint(x); }; - Value.ptr.prototype.Recv = function() { - var _r, _tuple, ok, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - x = new Value.ptr(ptrType$1.nil, 0, 0); - ok = false; - v = this; - new flag(v.flag).mustBe(18); - new flag(v.flag).mustBeExported(); - _r = $clone(v, Value).recv(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - x = _tuple[0]; - ok = _tuple[1]; - $s = -1; return [x, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Recv }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Recv = function() { return this.$val.Recv(); }; - Value.ptr.prototype.recv = function(nb) { - var _r, _tuple, nb, ok, p, selected, t, tt, v, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; nb = $f.nb; ok = $f.ok; p = $f.p; selected = $f.selected; t = $f.t; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - val = new Value.ptr(ptrType$1.nil, 0, 0); - ok = false; - v = this; - tt = (v.typ.kindType); - if ((((tt.dir >> 0)) & 1) === 0) { - $panic(new $String("reflect: recv on send-only channel")); - } - t = tt.elem; - val = new Value.ptr(t, 0, ((t.Kind() >>> 0))); - p = 0; - if (ifaceIndir(t)) { - p = unsafe_New(t); - val.ptr = p; - val.flag = (val.flag | (128)) >>> 0; - } else { - p = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)))); - } - _r = chanrecv($clone(v, Value).pointer(), nb, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - selected = _tuple[0]; - ok = _tuple[1]; - if (!selected) { - val = new Value.ptr(ptrType$1.nil, 0, 0); - } - $s = -1; return [val, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.recv }; } $f._r = _r; $f._tuple = _tuple; $f.nb = nb; $f.ok = ok; $f.p = p; $f.selected = selected; $f.t = t; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.recv = function(nb) { return this.$val.recv(nb); }; - Value.ptr.prototype.Send = function(x) { - var _r, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(18); - new flag(v.flag).mustBeExported(); - _r = $clone(v, Value).send($clone(x, Value), false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Send }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Send = function(x) { return this.$val.Send(x); }; - Value.ptr.prototype.send = function(x, nb) { - var _r, _r$1, nb, p, selected, tt, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; nb = $f.nb; p = $f.p; selected = $f.selected; tt = $f.tt; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - selected = false; - v = this; - tt = (v.typ.kindType); - if ((((tt.dir >> 0)) & 2) === 0) { - $panic(new $String("reflect: send on recv-only channel")); - } - new flag(x.flag).mustBeExported(); - _r = $clone(x, Value).assignTo("reflect.Value.Send", tt.elem, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - x = _r; - p = 0; - if (!((((x.flag & 128) >>> 0) === 0))) { - p = x.ptr; - } else { - p = ((x.$ptr_ptr || (x.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x)))); - } - _r$1 = chansend($clone(v, Value).pointer(), p, nb); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - selected = _r$1; - $s = -1; return selected; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.send }; } $f._r = _r; $f._r$1 = _r$1; $f.nb = nb; $f.p = p; $f.selected = selected; $f.tt = tt; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.send = function(x, nb) { return this.$val.send(x, nb); }; - Value.ptr.prototype.SetBool = function(x) { - var v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(1); - (v.ptr).$set(x); - }; - Value.prototype.SetBool = function(x) { return this.$val.SetBool(x); }; - Value.ptr.prototype.setRunes = function(x) { - var _r, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(23); - _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 5))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 5))) { */ case 1: - $panic(new $String("reflect.Value.setRunes of non-rune slice")); - /* } */ case 2: - (v.ptr).$set(x); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.setRunes }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.setRunes = function(x) { return this.$val.setRunes(x); }; - Value.ptr.prototype.SetComplex = function(x) { - var _1, k, v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (15)) { - (v.ptr).$set((new $Complex64(x.$real, x.$imag))); - } else if (_1 === (16)) { - (v.ptr).$set(x); - } else { - $panic(new ValueError.ptr("reflect.Value.SetComplex", new flag(v.flag).kind())); - } - }; - Value.prototype.SetComplex = function(x) { return this.$val.SetComplex(x); }; - Value.ptr.prototype.SetFloat = function(x) { - var _1, k, v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (13)) { - (v.ptr).$set(($fround(x))); - } else if (_1 === (14)) { - (v.ptr).$set(x); - } else { - $panic(new ValueError.ptr("reflect.Value.SetFloat", new flag(v.flag).kind())); - } - }; - Value.prototype.SetFloat = function(x) { return this.$val.SetFloat(x); }; - Value.ptr.prototype.SetInt = function(x) { - var _1, k, v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (2)) { - (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0))); - } else if (_1 === (3)) { - (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24))); - } else if (_1 === (4)) { - (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16))); - } else if (_1 === (5)) { - (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0))); - } else if (_1 === (6)) { - (v.ptr).$set(x); - } else { - $panic(new ValueError.ptr("reflect.Value.SetInt", new flag(v.flag).kind())); - } - }; - Value.prototype.SetInt = function(x) { return this.$val.SetInt(x); }; - Value.ptr.prototype.SetMapIndex = function(key, val) { - var _r, _r$1, e, k, key, tt, v, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; e = $f.e; k = $f.k; key = $f.key; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(21); - new flag(v.flag).mustBeExported(); - new flag(key.flag).mustBeExported(); - tt = (v.typ.kindType); - _r = $clone(key, Value).assignTo("reflect.Value.SetMapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - key = _r; - k = 0; - if (!((((key.flag & 128) >>> 0) === 0))) { - k = key.ptr; - } else { - k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); - } - if (val.typ === ptrType$1.nil) { - mapdelete(v.typ, $clone(v, Value).pointer(), k); - $s = -1; return; - } - new flag(val.flag).mustBeExported(); - _r$1 = $clone(val, Value).assignTo("reflect.Value.SetMapIndex", tt.elem, 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - e = 0; - if (!((((val.flag & 128) >>> 0) === 0))) { - e = val.ptr; - } else { - e = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$17(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)))); - } - $r = mapassign(v.typ, $clone(v, Value).pointer(), k, e); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetMapIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.k = k; $f.key = key; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.SetMapIndex = function(key, val) { return this.$val.SetMapIndex(key, val); }; - Value.ptr.prototype.SetUint = function(x) { - var _1, k, v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (7)) { - (v.ptr).$set(((x.$low >>> 0))); - } else if (_1 === (8)) { - (v.ptr).$set(((x.$low << 24 >>> 24))); - } else if (_1 === (9)) { - (v.ptr).$set(((x.$low << 16 >>> 16))); - } else if (_1 === (10)) { - (v.ptr).$set(((x.$low >>> 0))); - } else if (_1 === (11)) { - (v.ptr).$set(x); - } else if (_1 === (12)) { - (v.ptr).$set(((x.$low >>> 0))); - } else { - $panic(new ValueError.ptr("reflect.Value.SetUint", new flag(v.flag).kind())); - } - }; - Value.prototype.SetUint = function(x) { return this.$val.SetUint(x); }; - Value.ptr.prototype.SetPointer = function(x) { - var v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(26); - (v.ptr).$set(x); - }; - Value.prototype.SetPointer = function(x) { return this.$val.SetPointer(x); }; - Value.ptr.prototype.SetString = function(x) { - var v, x; - v = this; - new flag(v.flag).mustBeAssignable(); - new flag(v.flag).mustBe(24); - (v.ptr).$set(x); - }; - Value.prototype.SetString = function(x) { return this.$val.SetString(x); }; - Value.ptr.prototype.String = function() { - var _1, _r, k, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - k = new flag(v.flag).kind(); - _1 = k; - if (_1 === (0)) { - $s = -1; return ""; - } else if (_1 === (24)) { - $s = -1; return (v.ptr).$get(); - } - _r = $clone(v, Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return "<" + _r + " Value>"; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.String }; } $f._1 = _1; $f._r = _r; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.String = function() { return this.$val.String(); }; - Value.ptr.prototype.TryRecv = function() { - var _r, _tuple, ok, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - x = new Value.ptr(ptrType$1.nil, 0, 0); - ok = false; - v = this; - new flag(v.flag).mustBe(18); - new flag(v.flag).mustBeExported(); - _r = $clone(v, Value).recv(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - x = _tuple[0]; - ok = _tuple[1]; - $s = -1; return [x, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TryRecv }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.TryRecv = function() { return this.$val.TryRecv(); }; - Value.ptr.prototype.TrySend = function(x) { - var _r, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - new flag(v.flag).mustBe(18); - new flag(v.flag).mustBeExported(); - _r = $clone(v, Value).send($clone(x, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TrySend }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.TrySend = function(x) { return this.$val.TrySend(x); }; - Value.ptr.prototype.Type = function() { - var f, i, m, m$1, ms, tt, v, x; - v = this; - f = v.flag; - if (f === 0) { - $panic(new ValueError.ptr("reflect.Value.Type", 0)); - } - if (((f & 512) >>> 0) === 0) { - return v.typ; - } - i = ((v.flag >> 0)) >> 10 >> 0; - if (v.typ.Kind() === 20) { - tt = (v.typ.kindType); - if (((i >>> 0)) >= ((tt.methods.$length >>> 0))) { - $panic(new $String("reflect: internal error: invalid method index")); - } - m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); - return v.typ.typeOff(m.typ); - } - ms = v.typ.exportedMethods(); - if (((i >>> 0)) >= ((ms.$length >>> 0))) { - $panic(new $String("reflect: internal error: invalid method index")); - } - m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); - return v.typ.typeOff(m$1.mtyp); - }; - Value.prototype.Type = function() { return this.$val.Type(); }; - Value.ptr.prototype.Uint = function() { - var _1, k, p, v, x; - v = this; - k = new flag(v.flag).kind(); - p = v.ptr; - _1 = k; - if (_1 === (7)) { - return (new $Uint64(0, (p).$get())); - } else if (_1 === (8)) { - return (new $Uint64(0, (p).$get())); - } else if (_1 === (9)) { - return (new $Uint64(0, (p).$get())); - } else if (_1 === (10)) { - return (new $Uint64(0, (p).$get())); - } else if (_1 === (11)) { - return (p).$get(); - } else if (_1 === (12)) { - return ((x = (p).$get(), new $Uint64(0, x.constructor === Number ? x : 1))); - } - $panic(new ValueError.ptr("reflect.Value.Uint", new flag(v.flag).kind())); - }; - Value.prototype.Uint = function() { return this.$val.Uint(); }; - Value.ptr.prototype.UnsafeAddr = function() { - var v; - v = this; - if (v.typ === ptrType$1.nil) { - $panic(new ValueError.ptr("reflect.Value.UnsafeAddr", 0)); - } - if (((v.flag & 256) >>> 0) === 0) { - $panic(new $String("reflect.Value.UnsafeAddr of unaddressable value")); - } - return (v.ptr); - }; - Value.prototype.UnsafeAddr = function() { return this.$val.UnsafeAddr(); }; - Indirect = function(v) { - var _r, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (!(($clone(v, Value).Kind() === 22))) { - $s = -1; return v; - } - _r = $clone(v, Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Indirect }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Indirect = Indirect; - New = function(typ) { - var fl, ptr, t, typ; - if ($interfaceIsEqual(typ, $ifaceNil)) { - $panic(new $String("reflect: New(nil)")); - } - t = $assertType(typ, ptrType$1); - ptr = unsafe_New(t); - fl = 22; - return new Value.ptr(t.ptrTo(), ptr, fl); - }; - $pkg.New = New; - Value.ptr.prototype.Convert = function(t) { - var _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; op = $f.op; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this; - /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: - _r = makeMethodValue("Convert", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - /* } */ case 2: - _r$1 = t.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = convertOp(_r$1, v.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - op = _r$2; - /* */ if (op === $throwNilPointerError) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (op === $throwNilPointerError) { */ case 6: - _r$3 = t.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $panic(new $String("reflect.Value.Convert: value of type " + v.typ.String() + " cannot be converted to type " + _r$3)); - /* } */ case 7: - _r$4 = op($clone(v, Value), t); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $s = -1; return _r$4; - /* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Convert }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.op = op; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Value.prototype.Convert = function(t) { return this.$val.Convert(t); }; - convertOp = function(dst, src) { - var _1, _2, _3, _4, _5, _6, _7, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, dst, src, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _6 = $f._6; _7 = $f._7; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; dst = $f.dst; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _1 = src.Kind(); - /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; } - /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; } - /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 4; continue; } - /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 5; continue; } - /* */ if (_1 === (24)) { $s = 6; continue; } - /* */ if (_1 === (23)) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2: - _2 = dst.Kind(); - if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) { - $s = -1; return cvtInt; - } else if ((_2 === (13)) || (_2 === (14))) { - $s = -1; return cvtIntFloat; - } else if (_2 === (24)) { - $s = -1; return cvtIntString; - } - $s = 8; continue; - /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3: - _3 = dst.Kind(); - if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6)) || (_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { - $s = -1; return cvtUint; - } else if ((_3 === (13)) || (_3 === (14))) { - $s = -1; return cvtUintFloat; - } else if (_3 === (24)) { - $s = -1; return cvtUintString; - } - $s = 8; continue; - /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 4: - _4 = dst.Kind(); - if ((_4 === (2)) || (_4 === (3)) || (_4 === (4)) || (_4 === (5)) || (_4 === (6))) { - $s = -1; return cvtFloatInt; - } else if ((_4 === (7)) || (_4 === (8)) || (_4 === (9)) || (_4 === (10)) || (_4 === (11)) || (_4 === (12))) { - $s = -1; return cvtFloatUint; - } else if ((_4 === (13)) || (_4 === (14))) { - $s = -1; return cvtFloat; - } - $s = 8; continue; - /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 5: - _5 = dst.Kind(); - if ((_5 === (15)) || (_5 === (16))) { - $s = -1; return cvtComplex; - } - $s = 8; continue; - /* } else if (_1 === (24)) { */ case 6: - if (!(dst.Kind() === 23)) { _v = false; $s = 11; continue s; } - _r = dst.Elem().PkgPath(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r === ""; case 11: - /* */ if (_v) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (_v) { */ case 9: - _r$1 = dst.Elem().Kind(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _6 = _r$1; - if (_6 === (8)) { - $s = -1; return cvtStringBytes; - } else if (_6 === (5)) { - $s = -1; return cvtStringRunes; - } - case 13: - /* } */ case 10: - $s = 8; continue; - /* } else if (_1 === (23)) { */ case 7: - if (!(dst.Kind() === 24)) { _v$1 = false; $s = 17; continue s; } - _r$2 = src.Elem().PkgPath(); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v$1 = _r$2 === ""; case 17: - /* */ if (_v$1) { $s = 15; continue; } - /* */ $s = 16; continue; - /* if (_v$1) { */ case 15: - _r$3 = src.Elem().Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _7 = _r$3; - if (_7 === (8)) { - $s = -1; return cvtBytesString; - } else if (_7 === (5)) { - $s = -1; return cvtRunesString; - } - case 19: - /* } */ case 16: - /* } */ case 8: - case 1: - _r$4 = haveIdenticalUnderlyingType(dst, src, false); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - /* */ if (_r$4) { $s = 21; continue; } - /* */ $s = 22; continue; - /* if (_r$4) { */ case 21: - $s = -1; return cvtDirect; - /* } */ case 22: - if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$2 = false; $s = 26; continue s; } - _r$5 = dst.Elem().common(); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _arg = _r$5; - _r$6 = src.Elem().common(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _arg$1 = _r$6; - _r$7 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _v$2 = _r$7; case 26: - /* */ if (_v$2) { $s = 24; continue; } - /* */ $s = 25; continue; - /* if (_v$2) { */ case 24: - $s = -1; return cvtDirect; - /* } */ case 25: - if (implements$1(dst, src)) { - if (src.Kind() === 20) { - $s = -1; return cvtI2I; - } - $s = -1; return cvtT2I; - } - $s = -1; return $throwNilPointerError; - /* */ } return; } if ($f === undefined) { $f = { $blk: convertOp }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._6 = _6; $f._7 = _7; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.dst = dst; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; - }; - makeFloat = function(f, v, t) { - var _1, _r, f, ptr, t, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - typ = _r; - ptr = unsafe_New(typ); - _1 = typ.size; - if (_1 === (4)) { - (ptr).$set(($fround(v))); - } else if (_1 === (8)) { - (ptr).$set(v); - } - $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: makeFloat }; } $f._1 = _1; $f._r = _r; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - makeComplex = function(f, v, t) { - var _1, _r, f, ptr, t, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - typ = _r; - ptr = unsafe_New(typ); - _1 = typ.size; - if (_1 === (8)) { - (ptr).$set((new $Complex64(v.$real, v.$imag))); - } else if (_1 === (16)) { - (ptr).$set(v); - } - $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: makeComplex }; } $f._1 = _1; $f._r = _r; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - makeString = function(f, v, t) { - var _r, f, ret, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - ret = _r; - $clone(ret, Value).SetString(v); - ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; - $s = -1; return ret; - /* */ } return; } if ($f === undefined) { $f = { $blk: makeString }; } $f._r = _r; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - makeBytes = function(f, v, t) { - var _r, f, ret, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - ret = _r; - $r = $clone(ret, Value).SetBytes(v); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; - $s = -1; return ret; - /* */ } return; } if ($f === undefined) { $f = { $blk: makeBytes }; } $f._r = _r; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - makeRunes = function(f, v, t) { - var _r, f, ret, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - ret = _r; - $r = $clone(ret, Value).setRunes(v); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; - $s = -1; return ret; - /* */ } return; } if ($f === undefined) { $f = { $blk: makeRunes }; } $f._r = _r; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtInt = function(v, t) { - var _r, t, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeInt(new flag(v.flag).ro(), ((x = $clone(v, Value).Int(), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtInt }; } $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtUint = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeInt(new flag(v.flag).ro(), $clone(v, Value).Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtUint }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtFloatInt = function(v, t) { - var _r, t, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeInt(new flag(v.flag).ro(), ((x = (new $Int64(0, $clone(v, Value).Float())), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatInt }; } $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtFloatUint = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeInt(new flag(v.flag).ro(), (new $Uint64(0, $clone(v, Value).Float())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatUint }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtIntFloat = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Int())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtUintFloat = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Uint())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtFloat = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeFloat(new flag(v.flag).ro(), $clone(v, Value).Float(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtComplex = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeComplex(new flag(v.flag).ro(), $clone(v, Value).Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtComplex }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtIntString = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeString(new flag(v.flag).ro(), ($encodeRune($clone(v, Value).Int().$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntString }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtUintString = function(v, t) { - var _r, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = makeString(new flag(v.flag).ro(), ($encodeRune($clone(v, Value).Uint().$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintString }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtBytesString = function(v, t) { - var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = new flag(v.flag).ro(); - _r = $clone(v, Value).Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = ($bytesToString(_r)); - _arg$2 = t; - _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtBytesString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtStringBytes = function(v, t) { - var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = new flag(v.flag).ro(); - _r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = (new sliceType$15($stringToBytes(_r))); - _arg$2 = t; - _r$1 = makeBytes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringBytes }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtRunesString = function(v, t) { - var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = new flag(v.flag).ro(); - _r = $clone(v, Value).runes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = ($runesToString(_r)); - _arg$2 = t; - _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtRunesString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtStringRunes = function(v, t) { - var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = new flag(v.flag).ro(); - _r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = (new sliceType$18($stringToRunes(_r))); - _arg$2 = t; - _r$1 = makeRunes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringRunes }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtT2I = function(v, typ) { - var _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; target = $f.target; typ = $f.typ; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = unsafe_New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - target = _r$1; - _r$2 = valueInterface($clone(v, Value), false); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - x = _r$2; - _r$3 = typ.NumMethod(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (_r$3 === 0) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_r$3 === 0) { */ case 4: - (target).$set(x); - $s = 6; continue; - /* } else { */ case 5: - ifaceE2I($assertType(typ, ptrType$1), x, target); - /* } */ case 6: - _r$4 = typ.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $s = -1; return new Value.ptr(_r$4, target, (((new flag(v.flag).ro() | 128) >>> 0) | 20) >>> 0); - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtT2I }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.target = target; $f.typ = typ; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - cvtI2I = function(v, typ) { - var _r, _r$1, _r$2, ret, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; ret = $f.ret; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ if ($clone(v, Value).IsNil()) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ($clone(v, Value).IsNil()) { */ case 1: - _r = Zero(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - ret = _r; - ret.flag = (ret.flag | (new flag(v.flag).ro())) >>> 0; - $s = -1; return ret; - /* } */ case 2: - _r$1 = $clone(v, Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = cvtT2I($clone(_r$1, Value), typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: cvtI2I }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ret = ret; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - ptrType$5.methods = [{prop: "methods", name: "methods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}]; - ptrType$8.methods = [{prop: "in$", name: "in", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}, {prop: "out", name: "out", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}]; - name.methods = [{prop: "name", name: "name", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "tag", name: "tag", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "isExported", name: "isExported", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "data", name: "data", pkg: "reflect", typ: $funcType([$Int, $String], [ptrType$4], false)}, {prop: "nameLen", name: "nameLen", pkg: "reflect", typ: $funcType([], [$Int], false)}, {prop: "tagLen", name: "tagLen", pkg: "reflect", typ: $funcType([], [$Int], false)}]; - ptrType$7.methods = [{prop: "skipUntilValidKey", name: "skipUntilValidKey", pkg: "reflect", typ: $funcType([], [], false)}]; - Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$1.methods = [{prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$5], false)}, {prop: "nameOff", name: "nameOff", pkg: "reflect", typ: $funcType([nameOff], [name], false)}, {prop: "typeOff", name: "typeOff", pkg: "reflect", typ: $funcType([typeOff], [ptrType$1], false)}, {prop: "ptrTo", name: "ptrTo", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "pointers", name: "pointers", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "textOff", name: "textOff", pkg: "reflect", typ: $funcType([textOff], [$UnsafePointer], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}]; - ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$9.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}]; - ptrType$18.methods = [{prop: "offset", name: "offset", pkg: "reflect", typ: $funcType([], [$Uintptr], false)}, {prop: "embedded", name: "embedded", pkg: "reflect", typ: $funcType([], [$Bool], false)}]; - ptrType$11.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}]; - StructTag.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}]; - Value.methods = [{prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$2], false)}, {prop: "assignTo", name: "assignTo", pkg: "reflect", typ: $funcType([$String, ptrType$1, $UnsafePointer], [Value], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$9], [sliceType$9], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$8], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Pointer", name: "Pointer", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Value], [], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$15], [], false)}, {prop: "SetCap", name: "SetCap", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([$Int, $Int], [Value], false)}, {prop: "Slice3", name: "Slice3", pkg: "", typ: $funcType([$Int, $Int, $Int], [Value], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "pointer", name: "pointer", pkg: "reflect", typ: $funcType([], [$UnsafePointer], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$15], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$18], false)}, {prop: "CanAddr", name: "CanAddr", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "CanSet", name: "CanSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$9], [sliceType$9], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$9], [sliceType$9], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [Value], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [Value], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "CanInterface", name: "CanInterface", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "MapIndex", name: "MapIndex", pkg: "", typ: $funcType([Value], [Value], false)}, {prop: "MapKeys", name: "MapKeys", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "MapRange", name: "MapRange", pkg: "", typ: $funcType([], [ptrType$19], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "OverflowComplex", name: "OverflowComplex", pkg: "", typ: $funcType([$Complex128], [$Bool], false)}, {prop: "OverflowFloat", name: "OverflowFloat", pkg: "", typ: $funcType([$Float64], [$Bool], false)}, {prop: "OverflowInt", name: "OverflowInt", pkg: "", typ: $funcType([$Int64], [$Bool], false)}, {prop: "OverflowUint", name: "OverflowUint", pkg: "", typ: $funcType([$Uint64], [$Bool], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "recv", name: "recv", pkg: "reflect", typ: $funcType([$Bool], [Value, $Bool], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([Value], [], false)}, {prop: "send", name: "send", pkg: "reflect", typ: $funcType([Value, $Bool], [$Bool], false)}, {prop: "SetBool", name: "SetBool", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "setRunes", name: "setRunes", pkg: "reflect", typ: $funcType([sliceType$18], [], false)}, {prop: "SetComplex", name: "SetComplex", pkg: "", typ: $funcType([$Complex128], [], false)}, {prop: "SetFloat", name: "SetFloat", pkg: "", typ: $funcType([$Float64], [], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetMapIndex", name: "SetMapIndex", pkg: "", typ: $funcType([Value, Value], [], false)}, {prop: "SetUint", name: "SetUint", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "SetPointer", name: "SetPointer", pkg: "", typ: $funcType([$UnsafePointer], [], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TryRecv", name: "TryRecv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "TrySend", name: "TrySend", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "UnsafeAddr", name: "UnsafeAddr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Convert", name: "Convert", pkg: "", typ: $funcType([Type], [Value], false)}]; - flag.methods = [{prop: "kind", name: "kind", pkg: "reflect", typ: $funcType([], [Kind], false)}, {prop: "ro", name: "ro", pkg: "reflect", typ: $funcType([], [flag], false)}, {prop: "mustBe", name: "mustBe", pkg: "reflect", typ: $funcType([Kind], [], false)}, {prop: "mustBeExported", name: "mustBeExported", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeAssignable", name: "mustBeAssignable", pkg: "reflect", typ: $funcType([], [], false)}]; - ptrType$20.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$19.methods = [{prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([], [$Bool], false)}]; - uncommonType.init("reflect", [{prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mcount", name: "mcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "xcount", name: "xcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "moff", name: "moff", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "_methods", name: "_methods", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); - funcType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: "reflect:\"func\""}, {prop: "inCount", name: "inCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "outCount", name: "outCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "_in", name: "_in", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "_out", name: "_out", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); - name.init("reflect", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: ptrType$4, tag: ""}]); - nameData.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tag", name: "tag", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "exported", name: "exported", embedded: false, exported: false, typ: $Bool, tag: ""}]); - mapIter.init("reflect", [{prop: "t", name: "t", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "m", name: "m", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "keys", name: "keys", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "last", name: "last", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); - Type.init([{prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$5], false)}]); - rtype.init("reflect", [{prop: "size", name: "size", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "ptrdata", name: "ptrdata", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tflag", name: "tflag", embedded: false, exported: false, typ: tflag, tag: ""}, {prop: "align", name: "align", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "alg", name: "alg", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "gcdata", name: "gcdata", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "str", name: "str", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", embedded: false, exported: false, typ: typeOff, tag: ""}]); - typeAlg.init("reflect", [{prop: "hash", name: "hash", embedded: false, exported: false, typ: funcType$4, tag: ""}, {prop: "equal", name: "equal", embedded: false, exported: false, typ: funcType$5, tag: ""}]); - method.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mtyp", name: "mtyp", embedded: false, exported: false, typ: typeOff, tag: ""}, {prop: "ifn", name: "ifn", embedded: false, exported: false, typ: textOff, tag: ""}, {prop: "tfn", name: "tfn", embedded: false, exported: false, typ: textOff, tag: ""}]); - arrayType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); - chanType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); - imethod.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: typeOff, tag: ""}]); - interfaceType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType$6, tag: ""}]); - mapType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "key", name: "key", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "keysize", name: "keysize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "flags", name: "flags", embedded: false, exported: false, typ: $Uint32, tag: ""}]); - ptrType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); - sliceType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); - structField.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: name, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "offsetEmbed", name: "offsetEmbed", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); - structType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "fields", name: "fields", embedded: false, exported: false, typ: sliceType$7, tag: ""}]); - Method.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Func", name: "Func", embedded: false, exported: true, typ: Value, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}]); - StructField.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Tag", name: "Tag", embedded: false, exported: true, typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "Anonymous", name: "Anonymous", embedded: false, exported: true, typ: $Bool, tag: ""}]); - fieldScan.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$13, tag: ""}]); - Value.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", embedded: true, exported: false, typ: flag, tag: ""}]); - ValueError.init("", [{prop: "Method", name: "Method", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: Kind, tag: ""}]); - MapIter.init("reflect", [{prop: "m", name: "m", embedded: false, exported: false, typ: Value, tag: ""}, {prop: "it", name: "it", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = unicode.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - nameOffList = sliceType$1.nil; - typeOffList = sliceType$2.nil; - initialized = false; - uncommonTypeMap = {}; - nameMap = {}; - callHelper = $assertType($internalize($call, $emptyInterface), funcType$1); - selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1); - jsObjectPtr = reflectType($jsObjectPtr); - kindNames = new sliceType$4(["invalid", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "float32", "float64", "complex64", "complex128", "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"]); - uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1); - $r = init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["sort"] = (function() { - var $pkg = {}, $init, reflect, Interface, reverse, StringSlice, sliceType$2, Search, SearchStrings, insertionSort, siftDown, heapSort, medianOfThree, swapRange, doPivot, quickSort, Sort, maxDepth, Reverse, Strings, Stable, stable, symMerge, rotate; - reflect = $packages["reflect"]; - Interface = $pkg.Interface = $newType(8, $kindInterface, "sort.Interface", true, "sort", true, null); - reverse = $pkg.reverse = $newType(0, $kindStruct, "sort.reverse", true, "sort", false, function(Interface_) { - this.$val = this; - if (arguments.length === 0) { - this.Interface = $ifaceNil; - return; - } - this.Interface = Interface_; - }); - StringSlice = $pkg.StringSlice = $newType(12, $kindSlice, "sort.StringSlice", true, "sort", true, null); - sliceType$2 = $sliceType($String); - Search = function(n, f) { - var _r, _tmp, _tmp$1, f, h, i, j, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; f = $f.f; h = $f.h; i = $f.i; j = $f.j; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tmp = 0; - _tmp$1 = n; - i = _tmp; - j = _tmp$1; - /* while (true) { */ case 1: - /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; } - h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); - _r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!_r) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!_r) { */ case 3: - i = h + 1 >> 0; - $s = 5; continue; - /* } else { */ case 4: - j = h; - /* } */ case 5: - /* } */ $s = 1; continue; case 2: - $s = -1; return i; - /* */ } return; } if ($f === undefined) { $f = { $blk: Search }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.f = f; $f.h = h; $f.i = i; $f.j = j; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Search = Search; - SearchStrings = function(a, x) { - var _r, a, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - a = [a]; - x = [x]; - _r = Search(a[0].$length, (function(a, x) { return function(i) { - var i; - return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]) >= x[0]; - }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: SearchStrings }; } $f._r = _r; $f.a = a; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.SearchStrings = SearchStrings; - StringSlice.prototype.Search = function(x) { - var _r, p, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _r = SearchStrings($subslice(new sliceType$2(p.$array), p.$offset, p.$offset + p.$length), x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Search }; } $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(StringSlice).prototype.Search = function(x) { return this.$get().Search(x); }; - insertionSort = function(data, a, b) { - var _r, _v, a, b, data, i, j, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - i = a + 1 >> 0; - /* while (true) { */ case 1: - /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; } - j = i; - /* while (true) { */ case 3: - if (!(j > a)) { _v = false; $s = 5; continue s; } - _r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 5: - /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; } - $r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - j = j - (1) >> 0; - /* } */ $s = 3; continue; case 4: - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: insertionSort }; } $f._r = _r; $f._v = _v; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f; - }; - siftDown = function(data, lo, hi, first) { - var _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; child = $f.child; data = $f.data; first = $f.first; hi = $f.hi; lo = $f.lo; root = $f.root; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - root = lo; - /* while (true) { */ case 1: - child = ($imul(2, root)) + 1 >> 0; - if (child >= hi) { - /* break; */ $s = 2; continue; - } - if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; } - _r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 5: - /* */ if (_v) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (_v) { */ case 3: - child = child + (1) >> 0; - /* } */ case 4: - _r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!_r$1) { */ case 7: - $s = -1; return; - /* } */ case 8: - $r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - root = child; - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: siftDown }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.child = child; $f.data = data; $f.first = first; $f.hi = hi; $f.lo = lo; $f.root = root; $f.$s = $s; $f.$r = $r; return $f; - }; - heapSort = function(data, a, b) { - var _q, a, b, data, first, hi, i, i$1, lo, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; a = $f.a; b = $f.b; data = $f.data; first = $f.first; hi = $f.hi; i = $f.i; i$1 = $f.i$1; lo = $f.lo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - first = a; - lo = 0; - hi = b - a >> 0; - i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - /* while (true) { */ case 1: - /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; } - $r = siftDown(data, i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i - (1) >> 0; - /* } */ $s = 1; continue; case 2: - i$1 = hi - 1 >> 0; - /* while (true) { */ case 4: - /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; } - $r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = siftDown(data, lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$1 = i$1 - (1) >> 0; - /* } */ $s = 4; continue; case 5: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: heapSort }; } $f._q = _q; $f.a = a; $f.b = b; $f.data = data; $f.first = first; $f.hi = hi; $f.i = i; $f.i$1 = i$1; $f.lo = lo; $f.$s = $s; $f.$r = $r; return $f; - }; - medianOfThree = function(data, m1, m0, m2) { - var _r, _r$1, _r$2, data, m0, m1, m2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; data = $f.data; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_r) { */ case 1: - $r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - _r$1 = data.Less(m2, m1); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_r$1) { */ case 5: - $r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r$2 = data.Less(m1, m0); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - /* */ if (_r$2) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (_r$2) { */ case 9: - $r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 10: - /* } */ case 6: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: medianOfThree }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.data = data; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.$s = $s; $f.$r = $r; return $f; - }; - swapRange = function(data, a, b, n) { - var a, b, data, i, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; b = $f.b; data = $f.data; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - i = 0; - /* while (true) { */ case 1: - /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } - $r = data.Swap(a + i >> 0, b + i >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: swapRange }; } $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - doPivot = function(data, lo, hi) { - var _q, _q$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, a, b, c, data, dups, hi, lo, m, midhi, midlo, pivot, protect, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; a = $f.a; b = $f.b; c = $f.c; data = $f.data; dups = $f.dups; hi = $f.hi; lo = $f.lo; m = $f.m; midhi = $f.midhi; midlo = $f.midlo; pivot = $f.pivot; protect = $f.protect; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - midlo = 0; - midhi = 0; - m = ((((((lo + hi >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); - /* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((hi - lo >> 0) > 40) { */ case 1: - s = (_q = ((hi - lo >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - $r = medianOfThree(data, lo, lo + s >> 0, lo + ($imul(2, s)) >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = medianOfThree(data, m, m - s >> 0, m + s >> 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = medianOfThree(data, hi - 1 >> 0, (hi - 1 >> 0) - s >> 0, (hi - 1 >> 0) - ($imul(2, s)) >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - $r = medianOfThree(data, lo, m, hi - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - pivot = lo; - _tmp = lo + 1 >> 0; - _tmp$1 = hi - 1 >> 0; - a = _tmp; - c = _tmp$1; - /* while (true) { */ case 7: - if (!(a < c)) { _v = false; $s = 9; continue s; } - _r = data.Less(a, pivot); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 9: - /* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; } - a = a + (1) >> 0; - /* } */ $s = 7; continue; case 8: - b = a; - /* while (true) { */ case 11: - /* while (true) { */ case 13: - if (!(b < c)) { _v$1 = false; $s = 15; continue s; } - _r$1 = data.Less(pivot, b); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _v$1 = !_r$1; case 15: - /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 14; continue; } - b = b + (1) >> 0; - /* } */ $s = 13; continue; case 14: - /* while (true) { */ case 17: - if (!(b < c)) { _v$2 = false; $s = 19; continue s; } - _r$2 = data.Less(pivot, c - 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v$2 = _r$2; case 19: - /* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 18; continue; } - c = c - (1) >> 0; - /* } */ $s = 17; continue; case 18: - if (b >= c) { - /* break; */ $s = 12; continue; - } - $r = data.Swap(b, c - 1 >> 0); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - b = b + (1) >> 0; - c = c - (1) >> 0; - /* } */ $s = 11; continue; case 12: - protect = (hi - c >> 0) < 5; - /* */ if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 22; continue; } - /* */ $s = 23; continue; - /* if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 22: - dups = 0; - _r$3 = data.Less(pivot, hi - 1 >> 0); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (!_r$3) { $s = 24; continue; } - /* */ $s = 25; continue; - /* if (!_r$3) { */ case 24: - $r = data.Swap(c, hi - 1 >> 0); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - c = c + (1) >> 0; - dups = dups + (1) >> 0; - /* } */ case 25: - _r$4 = data.Less(b - 1 >> 0, pivot); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - /* */ if (!_r$4) { $s = 28; continue; } - /* */ $s = 29; continue; - /* if (!_r$4) { */ case 28: - b = b - (1) >> 0; - dups = dups + (1) >> 0; - /* } */ case 29: - _r$5 = data.Less(m, pivot); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - /* */ if (!_r$5) { $s = 31; continue; } - /* */ $s = 32; continue; - /* if (!_r$5) { */ case 31: - $r = data.Swap(m, b - 1 >> 0); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - b = b - (1) >> 0; - dups = dups + (1) >> 0; - /* } */ case 32: - protect = dups > 1; - /* } */ case 23: - /* */ if (protect) { $s = 35; continue; } - /* */ $s = 36; continue; - /* if (protect) { */ case 35: - /* while (true) { */ case 37: - /* while (true) { */ case 39: - if (!(a < b)) { _v$3 = false; $s = 41; continue s; } - _r$6 = data.Less(b - 1 >> 0, pivot); /* */ $s = 42; case 42: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _v$3 = !_r$6; case 41: - /* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 40; continue; } - b = b - (1) >> 0; - /* } */ $s = 39; continue; case 40: - /* while (true) { */ case 43: - if (!(a < b)) { _v$4 = false; $s = 45; continue s; } - _r$7 = data.Less(a, pivot); /* */ $s = 46; case 46: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _v$4 = _r$7; case 45: - /* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 44; continue; } - a = a + (1) >> 0; - /* } */ $s = 43; continue; case 44: - if (a >= b) { - /* break; */ $s = 38; continue; - } - $r = data.Swap(a, b - 1 >> 0); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - a = a + (1) >> 0; - b = b - (1) >> 0; - /* } */ $s = 37; continue; case 38: - /* } */ case 36: - $r = data.Swap(pivot, b - 1 >> 0); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _tmp$2 = b - 1 >> 0; - _tmp$3 = c; - midlo = _tmp$2; - midhi = _tmp$3; - $s = -1; return [midlo, midhi]; - /* */ } return; } if ($f === undefined) { $f = { $blk: doPivot }; } $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.dups = dups; $f.hi = hi; $f.lo = lo; $f.m = m; $f.midhi = midhi; $f.midlo = midlo; $f.pivot = pivot; $f.protect = protect; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - quickSort = function(data, a, b, maxDepth$1) { - var _r, _r$1, _tuple, a, b, data, i, maxDepth$1, mhi, mlo, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; b = $f.b; data = $f.data; i = $f.i; maxDepth$1 = $f.maxDepth$1; mhi = $f.mhi; mlo = $f.mlo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* while (true) { */ case 1: - /* if (!((b - a >> 0) > 12)) { break; } */ if(!((b - a >> 0) > 12)) { $s = 2; continue; } - /* */ if (maxDepth$1 === 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (maxDepth$1 === 0) { */ case 3: - $r = heapSort(data, a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 4: - maxDepth$1 = maxDepth$1 - (1) >> 0; - _r = doPivot(data, a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - mlo = _tuple[0]; - mhi = _tuple[1]; - /* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7: - $r = quickSort(data, a, mlo, maxDepth$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - a = mhi; - $s = 9; continue; - /* } else { */ case 8: - $r = quickSort(data, mhi, b, maxDepth$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - b = mlo; - /* } */ case 9: - /* } */ $s = 1; continue; case 2: - /* */ if ((b - a >> 0) > 1) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if ((b - a >> 0) > 1) { */ case 12: - i = a + 6 >> 0; - /* while (true) { */ case 14: - /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 15; continue; } - _r$1 = data.Less(i, i - 6 >> 0); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 16; continue; } - /* */ $s = 17; continue; - /* if (_r$1) { */ case 16: - $r = data.Swap(i, i - 6 >> 0); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 17: - i = i + (1) >> 0; - /* } */ $s = 14; continue; case 15: - $r = insertionSort(data, a, b); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 13: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: quickSort }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.maxDepth$1 = maxDepth$1; $f.mhi = mhi; $f.mlo = mlo; $f.$s = $s; $f.$r = $r; return $f; - }; - Sort = function(data) { - var _r, data, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - n = _r; - $r = quickSort(data, 0, n, maxDepth(n)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f._r = _r; $f.data = data; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Sort = Sort; - maxDepth = function(n) { - var depth, i, n; - depth = 0; - i = n; - while (true) { - if (!(i > 0)) { break; } - depth = depth + (1) >> 0; - i = (i >> $min((1), 31)) >> 0; - } - return $imul(depth, 2); - }; - reverse.ptr.prototype.Less = function(i, j) { - var _r, i, j, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _r = r.Interface.Less(j, i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: reverse.ptr.prototype.Less }; } $f._r = _r; $f.i = i; $f.j = j; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - reverse.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; - Reverse = function(data) { - var data; - return new reverse.ptr(data); - }; - $pkg.Reverse = Reverse; - StringSlice.prototype.Len = function() { - var p; - p = this; - return p.$length; - }; - $ptrType(StringSlice).prototype.Len = function() { return this.$get().Len(); }; - StringSlice.prototype.Less = function(i, j) { - var i, j, p; - p = this; - return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); - }; - $ptrType(StringSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; - StringSlice.prototype.Swap = function(i, j) { - var _tmp, _tmp$1, i, j, p; - p = this; - _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); - _tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); - ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); - ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1); - }; - $ptrType(StringSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; - StringSlice.prototype.Sort = function() { - var p, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - $r = Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Sort }; } $f.p = p; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(StringSlice).prototype.Sort = function() { return this.$get().Sort(); }; - Strings = function(a) { - var a, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = Sort(($subslice(new StringSlice(a.$array), a.$offset, a.$offset + a.$length))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Strings }; } $f.a = a; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Strings = Strings; - Stable = function(data) { - var _arg, _arg$1, _r, data, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; data = $f.data; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = data; - _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = _r; - $r = stable(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stable }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.data = data; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Stable = Stable; - stable = function(data, n) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, blockSize, data, m, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; a = $f.a; b = $f.b; blockSize = $f.blockSize; data = $f.data; m = $f.m; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - blockSize = 20; - _tmp = 0; - _tmp$1 = blockSize; - a = _tmp; - b = _tmp$1; - /* while (true) { */ case 1: - /* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 2; continue; } - $r = insertionSort(data, a, b); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - a = b; - b = b + (blockSize) >> 0; - /* } */ $s = 1; continue; case 2: - $r = insertionSort(data, a, n); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* while (true) { */ case 5: - /* if (!(blockSize < n)) { break; } */ if(!(blockSize < n)) { $s = 6; continue; } - _tmp$2 = 0; - _tmp$3 = $imul(2, blockSize); - a = _tmp$2; - b = _tmp$3; - /* while (true) { */ case 7: - /* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 8; continue; } - $r = symMerge(data, a, a + blockSize >> 0, b); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - a = b; - b = b + (($imul(2, blockSize))) >> 0; - /* } */ $s = 7; continue; case 8: - m = a + blockSize >> 0; - /* */ if (m < n) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (m < n) { */ case 10: - $r = symMerge(data, a, m, n); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 11: - blockSize = $imul(blockSize, (2)); - /* } */ $s = 5; continue; case 6: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: stable }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.a = a; $f.b = b; $f.blockSize = blockSize; $f.data = data; $f.m = m; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - symMerge = function(data, a, m, b) { - var _r, _r$1, _r$2, _tmp, _tmp$1, a, b, c, data, end, h, h$1, i, i$1, j, j$1, k, k$1, m, mid, n, p, r, start, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; a = $f.a; b = $f.b; c = $f.c; data = $f.data; end = $f.end; h = $f.h; h$1 = $f.h$1; i = $f.i; i$1 = $f.i$1; j = $f.j; j$1 = $f.j$1; k = $f.k; k$1 = $f.k$1; m = $f.m; mid = $f.mid; n = $f.n; p = $f.p; r = $f.r; start = $f.start; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ if ((m - a >> 0) === 1) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((m - a >> 0) === 1) { */ case 1: - i = m; - j = b; - /* while (true) { */ case 3: - /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 4; continue; } - h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); - _r = data.Less(h, a); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_r) { */ case 5: - i = h + 1 >> 0; - $s = 7; continue; - /* } else { */ case 6: - j = h; - /* } */ case 7: - /* } */ $s = 3; continue; case 4: - k = a; - /* while (true) { */ case 9: - /* if (!(k < (i - 1 >> 0))) { break; } */ if(!(k < (i - 1 >> 0))) { $s = 10; continue; } - $r = data.Swap(k, k + 1 >> 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - k = k + (1) >> 0; - /* } */ $s = 9; continue; case 10: - $s = -1; return; - /* } */ case 2: - /* */ if ((b - m >> 0) === 1) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if ((b - m >> 0) === 1) { */ case 12: - i$1 = a; - j$1 = m; - /* while (true) { */ case 14: - /* if (!(i$1 < j$1)) { break; } */ if(!(i$1 < j$1)) { $s = 15; continue; } - h$1 = ((((((i$1 + j$1 >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); - _r$1 = data.Less(m, h$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 16; continue; } - /* */ $s = 17; continue; - /* if (!_r$1) { */ case 16: - i$1 = h$1 + 1 >> 0; - $s = 18; continue; - /* } else { */ case 17: - j$1 = h$1; - /* } */ case 18: - /* } */ $s = 14; continue; case 15: - k$1 = m; - /* while (true) { */ case 20: - /* if (!(k$1 > i$1)) { break; } */ if(!(k$1 > i$1)) { $s = 21; continue; } - $r = data.Swap(k$1, k$1 - 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - k$1 = k$1 - (1) >> 0; - /* } */ $s = 20; continue; case 21: - $s = -1; return; - /* } */ case 13: - mid = ((((((a + b >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); - n = mid + m >> 0; - _tmp = 0; - _tmp$1 = 0; - start = _tmp; - r = _tmp$1; - if (m > mid) { - start = n - b >> 0; - r = mid; - } else { - start = a; - r = m; - } - p = n - 1 >> 0; - /* while (true) { */ case 23: - /* if (!(start < r)) { break; } */ if(!(start < r)) { $s = 24; continue; } - c = ((((((start + r >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); - _r$2 = data.Less(p - c >> 0, c); /* */ $s = 28; case 28: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - /* */ if (!_r$2) { $s = 25; continue; } - /* */ $s = 26; continue; - /* if (!_r$2) { */ case 25: - start = c + 1 >> 0; - $s = 27; continue; - /* } else { */ case 26: - r = c; - /* } */ case 27: - /* } */ $s = 23; continue; case 24: - end = n - start >> 0; - /* */ if (start < m && m < end) { $s = 29; continue; } - /* */ $s = 30; continue; - /* if (start < m && m < end) { */ case 29: - $r = rotate(data, start, m, end); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 30: - /* */ if (a < start && start < mid) { $s = 32; continue; } - /* */ $s = 33; continue; - /* if (a < start && start < mid) { */ case 32: - $r = symMerge(data, a, start, mid); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 33: - /* */ if (mid < end && end < b) { $s = 35; continue; } - /* */ $s = 36; continue; - /* if (mid < end && end < b) { */ case 35: - $r = symMerge(data, mid, end, b); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 36: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: symMerge }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.end = end; $f.h = h; $f.h$1 = h$1; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.j$1 = j$1; $f.k = k; $f.k$1 = k$1; $f.m = m; $f.mid = mid; $f.n = n; $f.p = p; $f.r = r; $f.start = start; $f.$s = $s; $f.$r = $r; return $f; - }; - rotate = function(data, a, m, b) { - var a, b, data, i, j, m, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - i = m - a >> 0; - j = b - m >> 0; - /* while (true) { */ case 1: - /* if (!(!((i === j)))) { break; } */ if(!(!((i === j)))) { $s = 2; continue; } - /* */ if (i > j) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (i > j) { */ case 3: - $r = swapRange(data, m - i >> 0, m, j); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i - (j) >> 0; - $s = 5; continue; - /* } else { */ case 4: - $r = swapRange(data, m - i >> 0, (m + j >> 0) - i >> 0, i); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - j = j - (i) >> 0; - /* } */ case 5: - /* } */ $s = 1; continue; case 2: - $r = swapRange(data, m - i >> 0, m, i); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: rotate }; } $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.m = m; $f.$s = $s; $f.$r = $r; return $f; - }; - reverse.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; - StringSlice.methods = [{prop: "Search", name: "Search", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}]; - Interface.init([{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]); - reverse.init("", [{prop: "Interface", name: "Interface", embedded: true, exported: true, typ: Interface, tag: ""}]); - StringSlice.init($String); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/fmtsort"] = (function() { - var $pkg = {}, $init, reflect, sort, SortedMap, ptrType, sliceType, Sort, compare, nilCompare, floatCompare, isNaN; - reflect = $packages["reflect"]; - sort = $packages["sort"]; - SortedMap = $pkg.SortedMap = $newType(0, $kindStruct, "fmtsort.SortedMap", true, "internal/fmtsort", true, function(Key_, Value_) { - this.$val = this; - if (arguments.length === 0) { - this.Key = sliceType.nil; - this.Value = sliceType.nil; - return; - } - this.Key = Key_; - this.Value = Value_; - }); - ptrType = $ptrType(SortedMap); - sliceType = $sliceType(reflect.Value); - SortedMap.ptr.prototype.Len = function() { - var o; - o = this; - return o.Key.$length; - }; - SortedMap.prototype.Len = function() { return this.$val.Len(); }; - SortedMap.ptr.prototype.Less = function(i, j) { - var _r, i, j, o, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; o = $f.o; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - o = this; - _r = compare($clone((x = o.Key, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), reflect.Value), $clone((x$1 = o.Key, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])), reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r < 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: SortedMap.ptr.prototype.Less }; } $f._r = _r; $f.i = i; $f.j = j; $f.o = o; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - SortedMap.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; - SortedMap.ptr.prototype.Swap = function(i, j) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, o, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; - o = this; - _tmp = (x = o.Key, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); - _tmp$1 = (x$1 = o.Key, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); - (x$2 = o.Key, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i] = _tmp)); - (x$3 = o.Key, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j] = _tmp$1)); - _tmp$2 = (x$4 = o.Value, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j])); - _tmp$3 = (x$5 = o.Value, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i])); - (x$6 = o.Value, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = _tmp$2)); - (x$7 = o.Value, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j] = _tmp$3)); - }; - SortedMap.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); }; - Sort = function(mapValue) { - var _r, _r$1, _r$2, _r$3, i, iter, key, mapValue, sorted, value, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; iter = $f.iter; key = $f.key; mapValue = $f.mapValue; sorted = $f.sorted; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = $clone(mapValue, reflect.Value).Type().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!((_r === 21))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((_r === 21))) { */ case 1: - $s = -1; return ptrType.nil; - /* } */ case 2: - key = $makeSlice(sliceType, $clone(mapValue, reflect.Value).Len()); - value = $makeSlice(sliceType, key.$length); - iter = $clone(mapValue, reflect.Value).MapRange(); - i = 0; - /* while (true) { */ case 4: - _r$1 = iter.Next(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* if (!(_r$1)) { break; } */ if(!(_r$1)) { $s = 5; continue; } - _r$2 = iter.Key(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - ((i < 0 || i >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + i] = _r$2); - _r$3 = iter.Value(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - ((i < 0 || i >= value.$length) ? ($throwRuntimeError("index out of range"), undefined) : value.$array[value.$offset + i] = _r$3); - i = i + (1) >> 0; - /* } */ $s = 4; continue; case 5: - sorted = new SortedMap.ptr(key, value); - $r = sort.Stable(sorted); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return sorted; - /* */ } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.iter = iter; $f.key = key; $f.mapValue = mapValue; $f.sorted = sorted; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Sort = Sort; - compare = function(aVal, bVal) { - var _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, a, a$1, a$2, a$3, a$4, a$5, aType, aVal, ap, b, b$1, b$2, b$3, b$4, b$5, bType, bVal, bp, c, c$1, c$2, c$3, c$4, c$5, i, i$1, ok, ok$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; a$1 = $f.a$1; a$2 = $f.a$2; a$3 = $f.a$3; a$4 = $f.a$4; a$5 = $f.a$5; aType = $f.aType; aVal = $f.aVal; ap = $f.ap; b = $f.b; b$1 = $f.b$1; b$2 = $f.b$2; b$3 = $f.b$3; b$4 = $f.b$4; b$5 = $f.b$5; bType = $f.bType; bVal = $f.bVal; bp = $f.bp; c = $f.c; c$1 = $f.c$1; c$2 = $f.c$2; c$3 = $f.c$3; c$4 = $f.c$4; c$5 = $f.c$5; i = $f.i; i$1 = $f.i$1; ok = $f.ok; ok$1 = $f.ok$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tmp = $clone(aVal, reflect.Value).Type(); - _tmp$1 = $clone(bVal, reflect.Value).Type(); - aType = _tmp; - bType = _tmp$1; - if (!($interfaceIsEqual(aType, bType))) { - $s = -1; return -1; - } - _1 = $clone(aVal, reflect.Value).Kind(); - /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; } - /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; } - /* */ if (_1 === (24)) { $s = 4; continue; } - /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 5; continue; } - /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 6; continue; } - /* */ if (_1 === (1)) { $s = 7; continue; } - /* */ if (_1 === (22)) { $s = 8; continue; } - /* */ if (_1 === (18)) { $s = 9; continue; } - /* */ if (_1 === (25)) { $s = 10; continue; } - /* */ if (_1 === (17)) { $s = 11; continue; } - /* */ if (_1 === (20)) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2: - _tmp$2 = $clone(aVal, reflect.Value).Int(); - _tmp$3 = $clone(bVal, reflect.Value).Int(); - a = _tmp$2; - b = _tmp$3; - if ((a.$high < b.$high || (a.$high === b.$high && a.$low < b.$low))) { - $s = -1; return -1; - } else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) { - $s = -1; return 1; - } else { - $s = -1; return 0; - } - $s = 14; continue; - /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3: - _tmp$4 = $clone(aVal, reflect.Value).Uint(); - _tmp$5 = $clone(bVal, reflect.Value).Uint(); - a$1 = _tmp$4; - b$1 = _tmp$5; - if ((a$1.$high < b$1.$high || (a$1.$high === b$1.$high && a$1.$low < b$1.$low))) { - $s = -1; return -1; - } else if ((a$1.$high > b$1.$high || (a$1.$high === b$1.$high && a$1.$low > b$1.$low))) { - $s = -1; return 1; - } else { - $s = -1; return 0; - } - $s = 14; continue; - /* } else if (_1 === (24)) { */ case 4: - _r = $clone(aVal, reflect.Value).String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tmp$6 = _r; - _r$1 = $clone(bVal, reflect.Value).String(); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tmp$7 = _r$1; - a$2 = _tmp$6; - b$2 = _tmp$7; - if (a$2 < b$2) { - $s = -1; return -1; - } else if (a$2 > b$2) { - $s = -1; return 1; - } else { - $s = -1; return 0; - } - $s = 14; continue; - /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 5: - $s = -1; return floatCompare($clone(aVal, reflect.Value).Float(), $clone(bVal, reflect.Value).Float()); - /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 6: - _tmp$8 = $clone(aVal, reflect.Value).Complex(); - _tmp$9 = $clone(bVal, reflect.Value).Complex(); - a$3 = _tmp$8; - b$3 = _tmp$9; - c = floatCompare(a$3.$real, b$3.$real); - if (!((c === 0))) { - $s = -1; return c; - } - $s = -1; return floatCompare(a$3.$imag, b$3.$imag); - /* } else if (_1 === (1)) { */ case 7: - _tmp$10 = $clone(aVal, reflect.Value).Bool(); - _tmp$11 = $clone(bVal, reflect.Value).Bool(); - a$4 = _tmp$10; - b$4 = _tmp$11; - if (a$4 === b$4) { - $s = -1; return 0; - } else if (a$4) { - $s = -1; return 1; - } else { - $s = -1; return -1; - } - $s = 14; continue; - /* } else if (_1 === (22)) { */ case 8: - _tmp$12 = $clone(aVal, reflect.Value).Pointer(); - _tmp$13 = $clone(bVal, reflect.Value).Pointer(); - a$5 = _tmp$12; - b$5 = _tmp$13; - if (a$5 < b$5) { - $s = -1; return -1; - } else if (a$5 > b$5) { - $s = -1; return 1; - } else { - $s = -1; return 0; - } - $s = 14; continue; - /* } else if (_1 === (18)) { */ case 9: - _tuple = nilCompare($clone(aVal, reflect.Value), $clone(bVal, reflect.Value)); - c$1 = _tuple[0]; - ok = _tuple[1]; - if (ok) { - $s = -1; return c$1; - } - _tmp$14 = $clone(aVal, reflect.Value).Pointer(); - _tmp$15 = $clone(bVal, reflect.Value).Pointer(); - ap = _tmp$14; - bp = _tmp$15; - if (ap < bp) { - $s = -1; return -1; - } else if (ap > bp) { - $s = -1; return 1; - } else { - $s = -1; return 0; - } - $s = 14; continue; - /* } else if (_1 === (25)) { */ case 10: - i = 0; - /* while (true) { */ case 17: - /* if (!(i < $clone(aVal, reflect.Value).NumField())) { break; } */ if(!(i < $clone(aVal, reflect.Value).NumField())) { $s = 18; continue; } - _r$2 = $clone(aVal, reflect.Value).Field(i); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _arg = $clone(_r$2, reflect.Value); - _r$3 = $clone(bVal, reflect.Value).Field(i); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _arg$1 = $clone(_r$3, reflect.Value); - _r$4 = compare(_arg, _arg$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - c$2 = _r$4; - if (!((c$2 === 0))) { - $s = -1; return c$2; - } - i = i + (1) >> 0; - /* } */ $s = 17; continue; case 18: - $s = -1; return 0; - /* } else if (_1 === (17)) { */ case 11: - i$1 = 0; - /* while (true) { */ case 22: - /* if (!(i$1 < $clone(aVal, reflect.Value).Len())) { break; } */ if(!(i$1 < $clone(aVal, reflect.Value).Len())) { $s = 23; continue; } - _r$5 = $clone(aVal, reflect.Value).Index(i$1); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _arg$2 = $clone(_r$5, reflect.Value); - _r$6 = $clone(bVal, reflect.Value).Index(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _arg$3 = $clone(_r$6, reflect.Value); - _r$7 = compare(_arg$2, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - c$3 = _r$7; - if (!((c$3 === 0))) { - $s = -1; return c$3; - } - i$1 = i$1 + (1) >> 0; - /* } */ $s = 22; continue; case 23: - $s = -1; return 0; - /* } else if (_1 === (20)) { */ case 12: - _tuple$1 = nilCompare($clone(aVal, reflect.Value), $clone(bVal, reflect.Value)); - c$4 = _tuple$1[0]; - ok$1 = _tuple$1[1]; - if (ok$1) { - $s = -1; return c$4; - } - _r$8 = $clone(aVal, reflect.Value).Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - _r$9 = $clone(_r$8, reflect.Value).Type(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _r$10 = reflect.ValueOf(_r$9); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _arg$4 = $clone(_r$10, reflect.Value); - _r$11 = $clone(bVal, reflect.Value).Elem(); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - _r$12 = $clone(_r$11, reflect.Value).Type(); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - _r$13 = reflect.ValueOf(_r$12); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - _arg$5 = $clone(_r$13, reflect.Value); - _r$14 = compare(_arg$4, _arg$5); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - c$5 = _r$14; - if (!((c$5 === 0))) { - $s = -1; return c$5; - } - _r$15 = $clone(aVal, reflect.Value).Elem(); /* */ $s = 34; case 34: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } - _arg$6 = $clone(_r$15, reflect.Value); - _r$16 = $clone(bVal, reflect.Value).Elem(); /* */ $s = 35; case 35: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } - _arg$7 = $clone(_r$16, reflect.Value); - _r$17 = compare(_arg$6, _arg$7); /* */ $s = 36; case 36: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } - $s = -1; return _r$17; - /* } else { */ case 13: - _r$18 = aType.String(); /* */ $s = 37; case 37: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } - $panic(new $String("bad type in compare: " + _r$18)); - /* } */ case 14: - case 1: - $s = -1; return 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: compare }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.a$1 = a$1; $f.a$2 = a$2; $f.a$3 = a$3; $f.a$4 = a$4; $f.a$5 = a$5; $f.aType = aType; $f.aVal = aVal; $f.ap = ap; $f.b = b; $f.b$1 = b$1; $f.b$2 = b$2; $f.b$3 = b$3; $f.b$4 = b$4; $f.b$5 = b$5; $f.bType = bType; $f.bVal = bVal; $f.bp = bp; $f.c = c; $f.c$1 = c$1; $f.c$2 = c$2; $f.c$3 = c$3; $f.c$4 = c$4; $f.c$5 = c$5; $f.i = i; $f.i$1 = i$1; $f.ok = ok; $f.ok$1 = ok$1; $f.$s = $s; $f.$r = $r; return $f; - }; - nilCompare = function(aVal, bVal) { - var aVal, bVal; - if ($clone(aVal, reflect.Value).IsNil()) { - if ($clone(bVal, reflect.Value).IsNil()) { - return [0, true]; - } - return [-1, true]; - } - if ($clone(bVal, reflect.Value).IsNil()) { - return [1, true]; - } - return [0, false]; - }; - floatCompare = function(a, b) { - var a, b; - if (isNaN(a)) { - return -1; - } else if (isNaN(b)) { - return 1; - } else if (a < b) { - return -1; - } else if (a > b) { - return 1; - } - return 0; - }; - isNaN = function(a) { - var a; - return !((a === a)); - }; - ptrType.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; - SortedMap.init("", [{prop: "Key", name: "Key", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: sliceType, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["io"] = (function() { - var $pkg = {}, $init, errors, sync, atomic, Reader, Writer, ReadWriteCloser, ReaderFrom, WriterTo, RuneReader, RuneScanner, LimitedReader, sliceType, ptrType$1, errWhence, errOffset, ReadAtLeast, ReadFull, Copy, copyBuffer; - errors = $packages["errors"]; - sync = $packages["sync"]; - atomic = $packages["sync/atomic"]; - Reader = $pkg.Reader = $newType(8, $kindInterface, "io.Reader", true, "io", true, null); - Writer = $pkg.Writer = $newType(8, $kindInterface, "io.Writer", true, "io", true, null); - ReadWriteCloser = $pkg.ReadWriteCloser = $newType(8, $kindInterface, "io.ReadWriteCloser", true, "io", true, null); - ReaderFrom = $pkg.ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", true, "io", true, null); - WriterTo = $pkg.WriterTo = $newType(8, $kindInterface, "io.WriterTo", true, "io", true, null); - RuneReader = $pkg.RuneReader = $newType(8, $kindInterface, "io.RuneReader", true, "io", true, null); - RuneScanner = $pkg.RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", true, "io", true, null); - LimitedReader = $pkg.LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", true, "io", true, function(R_, N_) { - this.$val = this; - if (arguments.length === 0) { - this.R = $ifaceNil; - this.N = new $Int64(0, 0); - return; - } - this.R = R_; - this.N = N_; - }); - sliceType = $sliceType($Uint8); - ptrType$1 = $ptrType(LimitedReader); - ReadAtLeast = function(r, buf, min) { - var _r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; min = $f.min; n = $f.n; nn = $f.nn; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - if (buf.$length < min) { - _tmp = 0; - _tmp$1 = $pkg.ErrShortBuffer; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - /* while (true) { */ case 1: - /* if (!(n < min && $interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!(n < min && $interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } - nn = 0; - _r = r.Read($subslice(buf, n)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - nn = _tuple[0]; - err = _tuple[1]; - n = n + (nn) >> 0; - /* } */ $s = 1; continue; case 2: - if (n >= min) { - err = $ifaceNil; - } else if (n > 0 && $interfaceIsEqual(err, $pkg.EOF)) { - err = $pkg.ErrUnexpectedEOF; - } - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: ReadAtLeast }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.min = min; $f.n = n; $f.nn = nn; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.ReadAtLeast = ReadAtLeast; - ReadFull = function(r, buf) { - var _r, _tuple, buf, err, n, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - _r = ReadAtLeast(r, buf, buf.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: ReadFull }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.ReadFull = ReadFull; - Copy = function(dst, src) { - var _r, _tuple, dst, err, src, written, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; dst = $f.dst; err = $f.err; src = $f.src; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - written = new $Int64(0, 0); - err = $ifaceNil; - _r = copyBuffer(dst, src, sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - written = _tuple[0]; - err = _tuple[1]; - $s = -1; return [written, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.src = src; $f.written = written; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Copy = Copy; - copyBuffer = function(dst, src, buf) { - var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, buf, dst, er, err, ew, l, nr, nw, ok, ok$1, ok$2, rt, size, src, written, wt, x, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; buf = $f.buf; dst = $f.dst; er = $f.er; err = $f.err; ew = $f.ew; l = $f.l; nr = $f.nr; nw = $f.nw; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; rt = $f.rt; size = $f.size; src = $f.src; written = $f.written; wt = $f.wt; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - written = new $Int64(0, 0); - err = $ifaceNil; - _tuple = $assertType(src, WriterTo, true); - wt = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _r = wt.WriteTo(dst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - written = _tuple$1[0]; - err = _tuple$1[1]; - $s = -1; return [written, err]; - /* } */ case 2: - _tuple$2 = $assertType(dst, ReaderFrom, true); - rt = _tuple$2[0]; - ok$1 = _tuple$2[1]; - /* */ if (ok$1) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (ok$1) { */ case 4: - _r$1 = rt.ReadFrom(src); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$3 = _r$1; - written = _tuple$3[0]; - err = _tuple$3[1]; - $s = -1; return [written, err]; - /* } */ case 5: - if (buf === sliceType.nil) { - size = 32768; - _tuple$4 = $assertType(src, ptrType$1, true); - l = _tuple$4[0]; - ok$2 = _tuple$4[1]; - if (ok$2 && (x = (new $Int64(0, size)), x$1 = l.N, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) { - if ((x$2 = l.N, (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low < 1)))) { - size = 1; - } else { - size = (((x$3 = l.N, x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0)); - } - } - buf = $makeSlice(sliceType, size); - } - /* while (true) { */ case 7: - _r$2 = src.Read(buf); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$5 = _r$2; - nr = _tuple$5[0]; - er = _tuple$5[1]; - /* */ if (nr > 0) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (nr > 0) { */ case 10: - _r$3 = dst.Write($subslice(buf, 0, nr)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _tuple$6 = _r$3; - nw = _tuple$6[0]; - ew = _tuple$6[1]; - if (nw > 0) { - written = (x$4 = (new $Int64(0, nw)), new $Int64(written.$high + x$4.$high, written.$low + x$4.$low)); - } - if (!($interfaceIsEqual(ew, $ifaceNil))) { - err = ew; - /* break; */ $s = 8; continue; - } - if (!((nr === nw))) { - err = $pkg.ErrShortWrite; - /* break; */ $s = 8; continue; - } - /* } */ case 11: - if (!($interfaceIsEqual(er, $ifaceNil))) { - if (!($interfaceIsEqual(er, $pkg.EOF))) { - err = er; - } - /* break; */ $s = 8; continue; - } - /* } */ $s = 7; continue; case 8: - _tmp = written; - _tmp$1 = err; - written = _tmp; - err = _tmp$1; - $s = -1; return [written, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: copyBuffer }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.buf = buf; $f.dst = dst; $f.er = er; $f.err = err; $f.ew = ew; $f.l = l; $f.nr = nr; $f.nw = nw; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.rt = rt; $f.size = size; $f.src = src; $f.written = written; $f.wt = wt; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - LimitedReader.ptr.prototype.Read = function(p) { - var _r, _tmp, _tmp$1, _tuple, err, l, n, p, x, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; l = $f.l; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - l = this; - if ((x = l.N, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { - _tmp = 0; - _tmp$1 = $pkg.EOF; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - if ((x$1 = (new $Int64(0, p.$length)), x$2 = l.N, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { - p = $subslice(p, 0, $flatten64(l.N)); - } - _r = l.R.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - l.N = (x$3 = l.N, x$4 = (new $Int64(0, n)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)); - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: LimitedReader.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.l = l; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - LimitedReader.prototype.Read = function(p) { return this.$val.Read(p); }; - ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; - Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); - Writer.init([{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); - ReadWriteCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); - ReaderFrom.init([{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]); - WriterTo.init([{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]); - RuneReader.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}]); - RuneScanner.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]); - LimitedReader.init("", [{prop: "R", name: "R", embedded: false, exported: true, typ: Reader, tag: ""}, {prop: "N", name: "N", embedded: false, exported: true, typ: $Int64, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = atomic.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.ErrShortWrite = errors.New("short write"); - $pkg.ErrShortBuffer = errors.New("short buffer"); - $pkg.EOF = errors.New("EOF"); - $pkg.ErrUnexpectedEOF = errors.New("unexpected EOF"); - $pkg.ErrNoProgress = errors.New("multiple Read calls return no data or error"); - errWhence = errors.New("Seek: invalid whence"); - errOffset = errors.New("Seek: invalid offset"); - $pkg.ErrClosedPipe = errors.New("io: read/write on closed pipe"); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["syscall"] = (function() { - var $pkg = {}, $init, js, race, runtime, sync, RawConn, NetlinkRouteRequest, NetlinkMessage, NetlinkRouteAttr, SockaddrLinklayer, SockaddrNetlink, mmapper, Errno, Sockaddr, SockaddrInet4, SockaddrInet6, SockaddrUnix, Timespec, Stat_t, RawSockaddrInet4, RawSockaddrInet6, RawSockaddrUnix, RawSockaddrLinklayer, RawSockaddrNetlink, RawSockaddr, RawSockaddrAny, _Socklen, Linger, Iovec, IPMreq, IPMreqn, IPv6Mreq, Msghdr, NlMsghdr, RtGenmsg, RtAttr, IfInfomsg, IfAddrmsg, sliceType, sliceType$1, ptrType$2, ptrType$4, arrayType$1, ptrType$9, arrayType$2, ptrType$12, sliceType$6, ptrType$13, sliceType$7, ptrType$14, arrayType$4, arrayType$5, arrayType$8, arrayType$9, arrayType$10, arrayType$11, ptrType$19, ptrType$20, structType, ptrType$23, funcType, funcType$1, ptrType$24, ptrType$25, ptrType$26, mapType, funcType$2, funcType$3, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$32, warningPrinted, lineBuffer, syscallModule, alreadyTriedToLoad, minusOne, envs, mapper, errEAGAIN, errEINVAL, errENOENT, ioSync, ioSync$24ptr, errors, init, printWarning, printToConsole, Exit, indexByte, runtime_envs, syscallByName, Syscall, Syscall6, RawSyscall, BytePtrFromString, readInt, readIntBE, readIntLE, ParseDirent, CloseOnExec, SetNonblock, msanRead, msanWrite, nlmAlignOf, rtaAlignOf, newNetlinkRouteRequest, NetlinkRIB, ParseNetlinkMessage, netlinkMessageHeaderAndData, ParseNetlinkRouteAttr, netlinkRouteAttrAndValue, itoa, uitoa, Getpagesize, Chmod, Fchmodat, Open, anyToSockaddr, Accept, Accept4, Getsockname, SetsockoptIPMreqn, Recvmsg, SendmsgN, ReadDirent, direntIno, direntReclen, direntNamlen, Stat, Lstat, errnoErr, Read, Write, Bind, GetsockoptInt, Recvfrom, Sendto, SetsockoptByte, SetsockoptInt, SetsockoptInet4Addr, SetsockoptIPMreq, SetsockoptIPv6Mreq, SetsockoptLinger, Socket, fchmodat, openat, Close, Dup, Fchdir, Fchmod, fcntl, Fsync, Getdents, read, write, munmap, Fchown, Fstat, Ftruncate, Pread, Pwrite, Seek, Shutdown, accept, accept4, bind, fstatat, getsockopt, setsockopt, socket, getsockname, recvfrom, sendto, recvmsg, sendmsg, mmap; - js = $packages["github.com/gopherjs/gopherjs/js"]; - race = $packages["internal/race"]; - runtime = $packages["runtime"]; - sync = $packages["sync"]; - RawConn = $pkg.RawConn = $newType(8, $kindInterface, "syscall.RawConn", true, "syscall", true, null); - NetlinkRouteRequest = $pkg.NetlinkRouteRequest = $newType(0, $kindStruct, "syscall.NetlinkRouteRequest", true, "syscall", true, function(Header_, Data_) { - this.$val = this; - if (arguments.length === 0) { - this.Header = new NlMsghdr.ptr(0, 0, 0, 0, 0); - this.Data = new RtGenmsg.ptr(0); - return; - } - this.Header = Header_; - this.Data = Data_; - }); - NetlinkMessage = $pkg.NetlinkMessage = $newType(0, $kindStruct, "syscall.NetlinkMessage", true, "syscall", true, function(Header_, Data_) { - this.$val = this; - if (arguments.length === 0) { - this.Header = new NlMsghdr.ptr(0, 0, 0, 0, 0); - this.Data = sliceType.nil; - return; - } - this.Header = Header_; - this.Data = Data_; - }); - NetlinkRouteAttr = $pkg.NetlinkRouteAttr = $newType(0, $kindStruct, "syscall.NetlinkRouteAttr", true, "syscall", true, function(Attr_, Value_) { - this.$val = this; - if (arguments.length === 0) { - this.Attr = new RtAttr.ptr(0, 0); - this.Value = sliceType.nil; - return; - } - this.Attr = Attr_; - this.Value = Value_; - }); - SockaddrLinklayer = $pkg.SockaddrLinklayer = $newType(0, $kindStruct, "syscall.SockaddrLinklayer", true, "syscall", true, function(Protocol_, Ifindex_, Hatype_, Pkttype_, Halen_, Addr_, raw_) { - this.$val = this; - if (arguments.length === 0) { - this.Protocol = 0; - this.Ifindex = 0; - this.Hatype = 0; - this.Pkttype = 0; - this.Halen = 0; - this.Addr = arrayType$1.zero(); - this.raw = new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero()); - return; - } - this.Protocol = Protocol_; - this.Ifindex = Ifindex_; - this.Hatype = Hatype_; - this.Pkttype = Pkttype_; - this.Halen = Halen_; - this.Addr = Addr_; - this.raw = raw_; - }); - SockaddrNetlink = $pkg.SockaddrNetlink = $newType(0, $kindStruct, "syscall.SockaddrNetlink", true, "syscall", true, function(Family_, Pad_, Pid_, Groups_, raw_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Pad = 0; - this.Pid = 0; - this.Groups = 0; - this.raw = new RawSockaddrNetlink.ptr(0, 0, 0, 0); - return; - } - this.Family = Family_; - this.Pad = Pad_; - this.Pid = Pid_; - this.Groups = Groups_; - this.raw = raw_; - }); - mmapper = $pkg.mmapper = $newType(0, $kindStruct, "syscall.mmapper", true, "syscall", false, function(Mutex_, active_, mmap_, munmap_) { - this.$val = this; - if (arguments.length === 0) { - this.Mutex = new sync.Mutex.ptr(0, 0); - this.active = false; - this.mmap = $throwNilPointerError; - this.munmap = $throwNilPointerError; - return; - } - this.Mutex = Mutex_; - this.active = active_; - this.mmap = mmap_; - this.munmap = munmap_; - }); - Errno = $pkg.Errno = $newType(4, $kindUintptr, "syscall.Errno", true, "syscall", true, null); - Sockaddr = $pkg.Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", true, "syscall", true, null); - SockaddrInet4 = $pkg.SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", true, "syscall", true, function(Port_, Addr_, raw_) { - this.$val = this; - if (arguments.length === 0) { - this.Port = 0; - this.Addr = arrayType$9.zero(); - this.raw = new RawSockaddrInet4.ptr(0, 0, arrayType$9.zero(), arrayType$1.zero()); - return; - } - this.Port = Port_; - this.Addr = Addr_; - this.raw = raw_; - }); - SockaddrInet6 = $pkg.SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", true, "syscall", true, function(Port_, ZoneId_, Addr_, raw_) { - this.$val = this; - if (arguments.length === 0) { - this.Port = 0; - this.ZoneId = 0; - this.Addr = arrayType$2.zero(); - this.raw = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0); - return; - } - this.Port = Port_; - this.ZoneId = ZoneId_; - this.Addr = Addr_; - this.raw = raw_; - }); - SockaddrUnix = $pkg.SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", true, "syscall", true, function(Name_, raw_) { - this.$val = this; - if (arguments.length === 0) { - this.Name = ""; - this.raw = new RawSockaddrUnix.ptr(0, arrayType$8.zero()); - return; - } - this.Name = Name_; - this.raw = raw_; - }); - Timespec = $pkg.Timespec = $newType(0, $kindStruct, "syscall.Timespec", true, "syscall", true, function(Sec_, Nsec_) { - this.$val = this; - if (arguments.length === 0) { - this.Sec = new $Int64(0, 0); - this.Nsec = new $Int64(0, 0); - return; - } - this.Sec = Sec_; - this.Nsec = Nsec_; - }); - Stat_t = $pkg.Stat_t = $newType(0, $kindStruct, "syscall.Stat_t", true, "syscall", true, function(Dev_, Ino_, Nlink_, Mode_, Uid_, Gid_, X__pad0_, Rdev_, Size_, Blksize_, Blocks_, Atim_, Mtim_, Ctim_, X__unused_) { - this.$val = this; - if (arguments.length === 0) { - this.Dev = new $Uint64(0, 0); - this.Ino = new $Uint64(0, 0); - this.Nlink = new $Uint64(0, 0); - this.Mode = 0; - this.Uid = 0; - this.Gid = 0; - this.X__pad0 = 0; - this.Rdev = new $Uint64(0, 0); - this.Size = new $Int64(0, 0); - this.Blksize = new $Int64(0, 0); - this.Blocks = new $Int64(0, 0); - this.Atim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)); - this.Mtim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)); - this.Ctim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)); - this.X__unused = arrayType$5.zero(); - return; - } - this.Dev = Dev_; - this.Ino = Ino_; - this.Nlink = Nlink_; - this.Mode = Mode_; - this.Uid = Uid_; - this.Gid = Gid_; - this.X__pad0 = X__pad0_; - this.Rdev = Rdev_; - this.Size = Size_; - this.Blksize = Blksize_; - this.Blocks = Blocks_; - this.Atim = Atim_; - this.Mtim = Mtim_; - this.Ctim = Ctim_; - this.X__unused = X__unused_; - }); - RawSockaddrInet4 = $pkg.RawSockaddrInet4 = $newType(0, $kindStruct, "syscall.RawSockaddrInet4", true, "syscall", true, function(Family_, Port_, Addr_, Zero_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Port = 0; - this.Addr = arrayType$9.zero(); - this.Zero = arrayType$1.zero(); - return; - } - this.Family = Family_; - this.Port = Port_; - this.Addr = Addr_; - this.Zero = Zero_; - }); - RawSockaddrInet6 = $pkg.RawSockaddrInet6 = $newType(0, $kindStruct, "syscall.RawSockaddrInet6", true, "syscall", true, function(Family_, Port_, Flowinfo_, Addr_, Scope_id_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Port = 0; - this.Flowinfo = 0; - this.Addr = arrayType$2.zero(); - this.Scope_id = 0; - return; - } - this.Family = Family_; - this.Port = Port_; - this.Flowinfo = Flowinfo_; - this.Addr = Addr_; - this.Scope_id = Scope_id_; - }); - RawSockaddrUnix = $pkg.RawSockaddrUnix = $newType(0, $kindStruct, "syscall.RawSockaddrUnix", true, "syscall", true, function(Family_, Path_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Path = arrayType$8.zero(); - return; - } - this.Family = Family_; - this.Path = Path_; - }); - RawSockaddrLinklayer = $pkg.RawSockaddrLinklayer = $newType(0, $kindStruct, "syscall.RawSockaddrLinklayer", true, "syscall", true, function(Family_, Protocol_, Ifindex_, Hatype_, Pkttype_, Halen_, Addr_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Protocol = 0; - this.Ifindex = 0; - this.Hatype = 0; - this.Pkttype = 0; - this.Halen = 0; - this.Addr = arrayType$1.zero(); - return; - } - this.Family = Family_; - this.Protocol = Protocol_; - this.Ifindex = Ifindex_; - this.Hatype = Hatype_; - this.Pkttype = Pkttype_; - this.Halen = Halen_; - this.Addr = Addr_; - }); - RawSockaddrNetlink = $pkg.RawSockaddrNetlink = $newType(0, $kindStruct, "syscall.RawSockaddrNetlink", true, "syscall", true, function(Family_, Pad_, Pid_, Groups_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Pad = 0; - this.Pid = 0; - this.Groups = 0; - return; - } - this.Family = Family_; - this.Pad = Pad_; - this.Pid = Pid_; - this.Groups = Groups_; - }); - RawSockaddr = $pkg.RawSockaddr = $newType(0, $kindStruct, "syscall.RawSockaddr", true, "syscall", true, function(Family_, Data_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Data = arrayType$10.zero(); - return; - } - this.Family = Family_; - this.Data = Data_; - }); - RawSockaddrAny = $pkg.RawSockaddrAny = $newType(0, $kindStruct, "syscall.RawSockaddrAny", true, "syscall", true, function(Addr_, Pad_) { - this.$val = this; - if (arguments.length === 0) { - this.Addr = new RawSockaddr.ptr(0, arrayType$10.zero()); - this.Pad = arrayType$11.zero(); - return; - } - this.Addr = Addr_; - this.Pad = Pad_; - }); - _Socklen = $pkg._Socklen = $newType(4, $kindUint32, "syscall._Socklen", true, "syscall", false, null); - Linger = $pkg.Linger = $newType(0, $kindStruct, "syscall.Linger", true, "syscall", true, function(Onoff_, Linger_) { - this.$val = this; - if (arguments.length === 0) { - this.Onoff = 0; - this.Linger = 0; - return; - } - this.Onoff = Onoff_; - this.Linger = Linger_; - }); - Iovec = $pkg.Iovec = $newType(0, $kindStruct, "syscall.Iovec", true, "syscall", true, function(Base_, Len_) { - this.$val = this; - if (arguments.length === 0) { - this.Base = ptrType$2.nil; - this.Len = new $Uint64(0, 0); - return; - } - this.Base = Base_; - this.Len = Len_; - }); - IPMreq = $pkg.IPMreq = $newType(0, $kindStruct, "syscall.IPMreq", true, "syscall", true, function(Multiaddr_, Interface_) { - this.$val = this; - if (arguments.length === 0) { - this.Multiaddr = arrayType$9.zero(); - this.Interface = arrayType$9.zero(); - return; - } - this.Multiaddr = Multiaddr_; - this.Interface = Interface_; - }); - IPMreqn = $pkg.IPMreqn = $newType(0, $kindStruct, "syscall.IPMreqn", true, "syscall", true, function(Multiaddr_, Address_, Ifindex_) { - this.$val = this; - if (arguments.length === 0) { - this.Multiaddr = arrayType$9.zero(); - this.Address = arrayType$9.zero(); - this.Ifindex = 0; - return; - } - this.Multiaddr = Multiaddr_; - this.Address = Address_; - this.Ifindex = Ifindex_; - }); - IPv6Mreq = $pkg.IPv6Mreq = $newType(0, $kindStruct, "syscall.IPv6Mreq", true, "syscall", true, function(Multiaddr_, Interface_) { - this.$val = this; - if (arguments.length === 0) { - this.Multiaddr = arrayType$2.zero(); - this.Interface = 0; - return; - } - this.Multiaddr = Multiaddr_; - this.Interface = Interface_; - }); - Msghdr = $pkg.Msghdr = $newType(0, $kindStruct, "syscall.Msghdr", true, "syscall", true, function(Name_, Namelen_, Pad_cgo_0_, Iov_, Iovlen_, Control_, Controllen_, Flags_, Pad_cgo_1_) { - this.$val = this; - if (arguments.length === 0) { - this.Name = ptrType$2.nil; - this.Namelen = 0; - this.Pad_cgo_0 = arrayType$9.zero(); - this.Iov = ptrType$20.nil; - this.Iovlen = new $Uint64(0, 0); - this.Control = ptrType$2.nil; - this.Controllen = new $Uint64(0, 0); - this.Flags = 0; - this.Pad_cgo_1 = arrayType$9.zero(); - return; - } - this.Name = Name_; - this.Namelen = Namelen_; - this.Pad_cgo_0 = Pad_cgo_0_; - this.Iov = Iov_; - this.Iovlen = Iovlen_; - this.Control = Control_; - this.Controllen = Controllen_; - this.Flags = Flags_; - this.Pad_cgo_1 = Pad_cgo_1_; - }); - NlMsghdr = $pkg.NlMsghdr = $newType(0, $kindStruct, "syscall.NlMsghdr", true, "syscall", true, function(Len_, Type_, Flags_, Seq_, Pid_) { - this.$val = this; - if (arguments.length === 0) { - this.Len = 0; - this.Type = 0; - this.Flags = 0; - this.Seq = 0; - this.Pid = 0; - return; - } - this.Len = Len_; - this.Type = Type_; - this.Flags = Flags_; - this.Seq = Seq_; - this.Pid = Pid_; - }); - RtGenmsg = $pkg.RtGenmsg = $newType(0, $kindStruct, "syscall.RtGenmsg", true, "syscall", true, function(Family_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - return; - } - this.Family = Family_; - }); - RtAttr = $pkg.RtAttr = $newType(0, $kindStruct, "syscall.RtAttr", true, "syscall", true, function(Len_, Type_) { - this.$val = this; - if (arguments.length === 0) { - this.Len = 0; - this.Type = 0; - return; - } - this.Len = Len_; - this.Type = Type_; - }); - IfInfomsg = $pkg.IfInfomsg = $newType(0, $kindStruct, "syscall.IfInfomsg", true, "syscall", true, function(Family_, X__ifi_pad_, Type_, Index_, Flags_, Change_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.X__ifi_pad = 0; - this.Type = 0; - this.Index = 0; - this.Flags = 0; - this.Change = 0; - return; - } - this.Family = Family_; - this.X__ifi_pad = X__ifi_pad_; - this.Type = Type_; - this.Index = Index_; - this.Flags = Flags_; - this.Change = Change_; - }); - IfAddrmsg = $pkg.IfAddrmsg = $newType(0, $kindStruct, "syscall.IfAddrmsg", true, "syscall", true, function(Family_, Prefixlen_, Flags_, Scope_, Index_) { - this.$val = this; - if (arguments.length === 0) { - this.Family = 0; - this.Prefixlen = 0; - this.Flags = 0; - this.Scope = 0; - this.Index = 0; - return; - } - this.Family = Family_; - this.Prefixlen = Prefixlen_; - this.Flags = Flags_; - this.Scope = Scope_; - this.Index = Index_; - }); - sliceType = $sliceType($Uint8); - sliceType$1 = $sliceType($String); - ptrType$2 = $ptrType($Uint8); - ptrType$4 = $ptrType($Int32); - arrayType$1 = $arrayType($Uint8, 8); - ptrType$9 = $ptrType($Uint16); - arrayType$2 = $arrayType($Uint8, 16); - ptrType$12 = $ptrType(SockaddrNetlink); - sliceType$6 = $sliceType(NetlinkMessage); - ptrType$13 = $ptrType(NlMsghdr); - sliceType$7 = $sliceType(NetlinkRouteAttr); - ptrType$14 = $ptrType(RtAttr); - arrayType$4 = $arrayType($Uint8, 32); - arrayType$5 = $arrayType($Int64, 3); - arrayType$8 = $arrayType($Int8, 108); - arrayType$9 = $arrayType($Uint8, 4); - arrayType$10 = $arrayType($Int8, 14); - arrayType$11 = $arrayType($Int8, 96); - ptrType$19 = $ptrType(_Socklen); - ptrType$20 = $ptrType(Iovec); - structType = $structType("syscall", [{prop: "addr", name: "addr", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: $Int, tag: ""}]); - ptrType$23 = $ptrType($Int64); - funcType = $funcType([$Uintptr], [], false); - funcType$1 = $funcType([$Uintptr], [$Bool], false); - ptrType$24 = $ptrType(NetlinkRouteRequest); - ptrType$25 = $ptrType(SockaddrLinklayer); - ptrType$26 = $ptrType(mmapper); - mapType = $mapType(ptrType$2, sliceType); - funcType$2 = $funcType([$Uintptr, $Uintptr, $Int, $Int, $Int, $Int64], [$Uintptr, $error], false); - funcType$3 = $funcType([$Uintptr, $Uintptr], [$error], false); - ptrType$27 = $ptrType(SockaddrInet4); - ptrType$28 = $ptrType(SockaddrInet6); - ptrType$29 = $ptrType(SockaddrUnix); - ptrType$30 = $ptrType(Timespec); - ptrType$32 = $ptrType(Msghdr); - init = function() { - $flushConsole = (function() { - if (!((lineBuffer.$length === 0))) { - $global.console.log($externalize(($bytesToString(lineBuffer)), $String)); - lineBuffer = sliceType.nil; - } - }); - }; - printWarning = function() { - if (!warningPrinted) { - $global.console.error($externalize("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md", $String)); - } - warningPrinted = true; - }; - printToConsole = function(b) { - var b, goPrintToConsole, i; - goPrintToConsole = $global.goPrintToConsole; - if (!(goPrintToConsole === undefined)) { - goPrintToConsole(b); - return; - } - lineBuffer = $appendSlice(lineBuffer, b); - while (true) { - i = indexByte(lineBuffer, 10); - if (i === -1) { - break; - } - $global.console.log($externalize(($bytesToString($subslice(lineBuffer, 0, i))), $String)); - lineBuffer = $subslice(lineBuffer, (i + 1 >> 0)); - } - }; - Exit = function(code) { - var code; - Syscall(231, ((code >>> 0)), 0, 0); - }; - $pkg.Exit = Exit; - indexByte = function(s, c) { - var _i, _ref, b, c, i, s; - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (b === c) { - return i; - } - _i++; - } - return -1; - }; - runtime_envs = function() { - var envkeys, envs$1, i, jsEnv, key, process; - process = $global.process; - if (process === undefined) { - return sliceType$1.nil; - } - jsEnv = process.env; - envkeys = $global.Object.keys(jsEnv); - envs$1 = $makeSlice(sliceType$1, $parseInt(envkeys.length)); - i = 0; - while (true) { - if (!(i < $parseInt(envkeys.length))) { break; } - key = $internalize(envkeys[i], $String); - ((i < 0 || i >= envs$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs$1.$array[envs$1.$offset + i] = key + "=" + $internalize(jsEnv[$externalize(key, $String)], $String)); - i = i + (1) >> 0; - } - return envs$1; - }; - syscallByName = function(name) { - var name, require, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - $deferred.push([(function() { - $recover(); - }), []]); - if (syscallModule === null) { - if (alreadyTriedToLoad) { - return null; - } - alreadyTriedToLoad = true; - require = $global.require; - if (require === undefined) { - $panic(new $String("")); - } - syscallModule = require($externalize("syscall", $String)); - } - return syscallModule[$externalize(name, $String)]; - /* */ } catch(err) { $err = err; return null; } finally { $callDeferred($deferred, $err); } - }; - Syscall = function(trap, a1, a2, a3) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, a1, a2, a3, array, err, f, r, r1, r2, slice, trap; - r1 = 0; - r2 = 0; - err = 0; - f = syscallByName("Syscall"); - if (!(f === null)) { - r = f(trap, a1, a2, a3); - _tmp = ((($parseInt(r[0]) >> 0) >>> 0)); - _tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0)); - _tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0)); - r1 = _tmp; - r2 = _tmp$1; - err = _tmp$2; - return [r1, r2, err]; - } - if ((trap === 1) && ((a1 === 1) || (a1 === 2))) { - array = a2; - slice = $makeSlice(sliceType, $parseInt(array.length)); - slice.$array = array; - printToConsole(slice); - _tmp$3 = (($parseInt(array.length) >>> 0)); - _tmp$4 = 0; - _tmp$5 = 0; - r1 = _tmp$3; - r2 = _tmp$4; - err = _tmp$5; - return [r1, r2, err]; - } - if (trap === 231) { - runtime.Goexit(); - } - printWarning(); - _tmp$6 = ((minusOne >>> 0)); - _tmp$7 = 0; - _tmp$8 = 13; - r1 = _tmp$6; - r2 = _tmp$7; - err = _tmp$8; - return [r1, r2, err]; - }; - $pkg.Syscall = Syscall; - Syscall6 = function(trap, a1, a2, a3, a4, a5, a6) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a1, a2, a3, a4, a5, a6, err, f, r, r1, r2, trap; - r1 = 0; - r2 = 0; - err = 0; - f = syscallByName("Syscall6"); - if (!(f === null)) { - r = f(trap, a1, a2, a3, a4, a5, a6); - _tmp = ((($parseInt(r[0]) >> 0) >>> 0)); - _tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0)); - _tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0)); - r1 = _tmp; - r2 = _tmp$1; - err = _tmp$2; - return [r1, r2, err]; - } - if (!((trap === 202))) { - printWarning(); - } - _tmp$3 = ((minusOne >>> 0)); - _tmp$4 = 0; - _tmp$5 = 13; - r1 = _tmp$3; - r2 = _tmp$4; - err = _tmp$5; - return [r1, r2, err]; - }; - $pkg.Syscall6 = Syscall6; - RawSyscall = function(trap, a1, a2, a3) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a1, a2, a3, err, f, r, r1, r2, trap; - r1 = 0; - r2 = 0; - err = 0; - f = syscallByName("Syscall"); - if (!(f === null)) { - r = f(trap, a1, a2, a3); - _tmp = ((($parseInt(r[0]) >> 0) >>> 0)); - _tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0)); - _tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0)); - r1 = _tmp; - r2 = _tmp$1; - err = _tmp$2; - return [r1, r2, err]; - } - printWarning(); - _tmp$3 = ((minusOne >>> 0)); - _tmp$4 = 0; - _tmp$5 = 13; - r1 = _tmp$3; - r2 = _tmp$4; - err = _tmp$5; - return [r1, r2, err]; - }; - $pkg.RawSyscall = RawSyscall; - BytePtrFromString = function(s) { - var _i, _ref, array, b, i, s; - array = new ($global.Uint8Array)(s.length + 1 >> 0); - _ref = (new sliceType($stringToBytes(s))); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (b === 0) { - return [ptrType$2.nil, new Errno(22)]; - } - array[i] = b; - _i++; - } - array[s.length] = 0; - return [((array)), $ifaceNil]; - }; - $pkg.BytePtrFromString = BytePtrFromString; - readInt = function(b, off, size) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, off, ok, size, u; - u = new $Uint64(0, 0); - ok = false; - if (b.$length < (((off + size >>> 0) >> 0))) { - _tmp = new $Uint64(0, 0); - _tmp$1 = false; - u = _tmp; - ok = _tmp$1; - return [u, ok]; - } - if (false) { - _tmp$2 = readIntBE($subslice(b, off), size); - _tmp$3 = true; - u = _tmp$2; - ok = _tmp$3; - return [u, ok]; - } - _tmp$4 = readIntLE($subslice(b, off), size); - _tmp$5 = true; - u = _tmp$4; - ok = _tmp$5; - return [u, ok]; - }; - readIntBE = function(b, size) { - var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - _1 = size; - if (_1 === (1)) { - return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))); - } else if (_1 === (2)) { - $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); - return (x = (new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), x$1 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); - } else if (_1 === (4)) { - $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); - return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), x$5 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0)); - } else if (_1 === (8)) { - $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); - return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$15 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0)); - } else { - $panic(new $String("syscall: readInt with unsupported size")); - } - }; - readIntLE = function(b, size) { - var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - _1 = size; - if (_1 === (1)) { - return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))); - } else if (_1 === (2)) { - $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); - return (x = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$1 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); - } else if (_1 === (4)) { - $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); - return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$5 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0)); - } else if (_1 === (8)) { - $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); - return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$15 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0)); - } else { - $panic(new $String("syscall: readInt with unsupported size")); - } - }; - ParseDirent = function(buf, max, names) { - var _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, buf, c, consumed, count, i, ino, max, name, names, namlen, newnames, ok, origlen, rec, reclen, x, x$1, x$2; - consumed = 0; - count = 0; - newnames = sliceType$1.nil; - origlen = buf.$length; - count = 0; - while (true) { - if (!(!((max === 0)) && buf.$length > 0)) { break; } - _tuple = direntReclen(buf); - reclen = _tuple[0]; - ok = _tuple[1]; - if (!ok || (x = (new $Uint64(0, buf.$length)), (reclen.$high > x.$high || (reclen.$high === x.$high && reclen.$low > x.$low)))) { - _tmp = origlen; - _tmp$1 = count; - _tmp$2 = names; - consumed = _tmp; - count = _tmp$1; - newnames = _tmp$2; - return [consumed, count, newnames]; - } - rec = $subslice(buf, 0, $flatten64(reclen)); - buf = $subslice(buf, $flatten64(reclen)); - _tuple$1 = direntIno(rec); - ino = _tuple$1[0]; - ok = _tuple$1[1]; - if (!ok) { - break; - } - if ((ino.$high === 0 && ino.$low === 0)) { - continue; - } - _tuple$2 = direntNamlen(rec); - namlen = _tuple$2[0]; - ok = _tuple$2[1]; - if (!ok || (x$1 = new $Uint64(0 + namlen.$high, 19 + namlen.$low), x$2 = (new $Uint64(0, rec.$length)), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { - break; - } - name = $subslice(rec, 19, $flatten64(new $Uint64(0 + namlen.$high, 19 + namlen.$low))); - _ref = name; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (c === 0) { - name = $subslice(name, 0, i); - break; - } - _i++; - } - if (($bytesToString(name)) === "." || ($bytesToString(name)) === "..") { - continue; - } - max = max - (1) >> 0; - count = count + (1) >> 0; - names = $append(names, ($bytesToString(name))); - } - _tmp$3 = origlen - buf.$length >> 0; - _tmp$4 = count; - _tmp$5 = names; - consumed = _tmp$3; - count = _tmp$4; - newnames = _tmp$5; - return [consumed, count, newnames]; - }; - $pkg.ParseDirent = ParseDirent; - CloseOnExec = function(fd) { - var fd; - fcntl(fd, 2, 1); - }; - $pkg.CloseOnExec = CloseOnExec; - SetNonblock = function(fd, nonblocking) { - var _tuple, _tuple$1, err, fd, flag, nonblocking; - err = $ifaceNil; - _tuple = fcntl(fd, 3, 0); - flag = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - err = err; - return err; - } - if (nonblocking) { - flag = flag | (2048); - } else { - flag = (flag & ~(2048)) >> 0; - } - _tuple$1 = fcntl(fd, 4, flag); - err = _tuple$1[1]; - err = err; - return err; - }; - $pkg.SetNonblock = SetNonblock; - msanRead = function(addr, len) { - var addr, len; - }; - msanWrite = function(addr, len) { - var addr, len; - }; - nlmAlignOf = function(msglen) { - var msglen; - return (((msglen + 4 >> 0) - 1 >> 0)) & -4; - }; - rtaAlignOf = function(attrlen) { - var attrlen; - return (((attrlen + 4 >> 0) - 1 >> 0)) & -4; - }; - NetlinkRouteRequest.ptr.prototype.toWireFormat = function() { - var b, rr; - rr = this; - b = $makeSlice(sliceType, rr.Header.Len); - (($sliceToArray($subslice(b, 0, 4)))).$set(rr.Header.Len); - (($sliceToArray($subslice(b, 4, 6)))).$set(rr.Header.Type); - (($sliceToArray($subslice(b, 6, 8)))).$set(rr.Header.Flags); - (($sliceToArray($subslice(b, 8, 12)))).$set(rr.Header.Seq); - (($sliceToArray($subslice(b, 12, 16)))).$set(rr.Header.Pid); - (16 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 16] = (rr.Data.Family)); - return b; - }; - NetlinkRouteRequest.prototype.toWireFormat = function() { return this.$val.toWireFormat(); }; - newNetlinkRouteRequest = function(proto, seq, family) { - var family, proto, rr, seq; - rr = new NetlinkRouteRequest.ptr(new NlMsghdr.ptr(0, 0, 0, 0, 0), new RtGenmsg.ptr(0)); - rr.Header.Len = 17; - rr.Header.Type = ((proto << 16 >>> 16)); - rr.Header.Flags = 769; - rr.Header.Seq = ((seq >>> 0)); - rr.Data.Family = ((family << 24 >>> 24)); - return rr.toWireFormat(); - }; - NetlinkRIB = function(proto, family) { - var _i, _r, _r$1, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, err$2, err$3, err$4, family, lsa, lsa$1, m, msgs, nr, proto, rb, rbNew, s, tab, v, v$1, wb, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; family = $f.family; lsa = $f.lsa; lsa$1 = $f.lsa$1; m = $f.m; msgs = $f.msgs; nr = $f.nr; proto = $f.proto; rb = $f.rb; rbNew = $f.rbNew; s = $f.s; tab = $f.tab; v = $f.v; v$1 = $f.v$1; wb = $f.wb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - _tuple = Socket(16, 3, 0); - s = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [sliceType.nil, err]; - } - $deferred.push([Close, [s]]); - lsa = new SockaddrNetlink.ptr(16, 0, 0, 0, new RawSockaddrNetlink.ptr(0, 0, 0, 0)); - _r = Bind(s, lsa); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err$1 = _r; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [sliceType.nil, err$1]; - } - wb = newNetlinkRouteRequest(proto, 1, family); - _r$1 = Sendto(s, wb, 0, lsa); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err$2 = _r$1; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return [sliceType.nil, err$2]; - } - tab = sliceType.nil; - rbNew = $makeSlice(sliceType, Getpagesize()); - done: - while (true) { - rb = rbNew; - _tuple$1 = Recvfrom(s, rb, 0); - nr = _tuple$1[0]; - err$3 = _tuple$1[2]; - if (!($interfaceIsEqual(err$3, $ifaceNil))) { - $s = -1; return [sliceType.nil, err$3]; - } - if (nr < 16) { - $s = -1; return [sliceType.nil, new Errno(22)]; - } - rb = $subslice(rb, 0, nr); - tab = $appendSlice(tab, rb); - _tuple$2 = ParseNetlinkMessage(rb); - msgs = _tuple$2[0]; - err$3 = _tuple$2[1]; - if (!($interfaceIsEqual(err$3, $ifaceNil))) { - $s = -1; return [sliceType.nil, err$3]; - } - _ref = msgs; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), NetlinkMessage); - _tuple$3 = Getsockname(s); - lsa$1 = _tuple$3[0]; - err$4 = _tuple$3[1]; - if (!($interfaceIsEqual(err$4, $ifaceNil))) { - $s = -1; return [sliceType.nil, err$4]; - } - _ref$1 = lsa$1; - if ($assertType(_ref$1, ptrType$12, true)[1]) { - v = _ref$1.$val; - if (!((m.Header.Seq === 1)) || !((m.Header.Pid === v.Pid))) { - $s = -1; return [sliceType.nil, new Errno(22)]; - } - } else { - v$1 = _ref$1; - $s = -1; return [sliceType.nil, new Errno(22)]; - } - if (m.Header.Type === 3) { - break done; - } - if (m.Header.Type === 2) { - $s = -1; return [sliceType.nil, new Errno(22)]; - } - _i++; - } - } - $s = -1; return [tab, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: NetlinkRIB }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.family = family; $f.lsa = lsa; $f.lsa$1 = lsa$1; $f.m = m; $f.msgs = msgs; $f.nr = nr; $f.proto = proto; $f.rb = rb; $f.rbNew = rbNew; $f.s = s; $f.tab = tab; $f.v = v; $f.v$1 = v$1; $f.wb = wb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - $pkg.NetlinkRIB = NetlinkRIB; - ParseNetlinkMessage = function(b) { - var _tuple, b, dbuf, dlen, err, h, m, msgs; - msgs = sliceType$6.nil; - while (true) { - if (!(b.$length >= 16)) { break; } - _tuple = netlinkMessageHeaderAndData(b); - h = _tuple[0]; - dbuf = _tuple[1]; - dlen = _tuple[2]; - err = _tuple[3]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [sliceType$6.nil, err]; - } - m = new NetlinkMessage.ptr($clone(h, NlMsghdr), $subslice(dbuf, 0, (((h.Len >> 0)) - 16 >> 0))); - msgs = $append(msgs, m); - b = $subslice(b, dlen); - } - return [msgs, $ifaceNil]; - }; - $pkg.ParseNetlinkMessage = ParseNetlinkMessage; - netlinkMessageHeaderAndData = function(b) { - var _array, _struct, _view, b, h, l; - h = ((_array = ($sliceToArray(b)), _struct = new NlMsghdr.ptr(0, 0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true), _struct.Type = _view.getUint16(4, true), _struct.Flags = _view.getUint16(6, true), _struct.Seq = _view.getUint32(8, true), _struct.Pid = _view.getUint32(12, true), _struct)); - l = nlmAlignOf(((h.Len >> 0))); - if (((h.Len >> 0)) < 16 || l > b.$length) { - return [ptrType$13.nil, sliceType.nil, 0, new Errno(22)]; - } - return [h, $subslice(b, 16), l, $ifaceNil]; - }; - ParseNetlinkRouteAttr = function(m) { - var _1, _tuple, a, alen, attrs, b, err, m, ra, vbuf; - b = sliceType.nil; - _1 = m.Header.Type; - if ((_1 === (16)) || (_1 === (17))) { - b = $subslice(m.Data, 16); - } else if ((_1 === (20)) || (_1 === (21))) { - b = $subslice(m.Data, 8); - } else if ((_1 === (24)) || (_1 === (25))) { - b = $subslice(m.Data, 12); - } else { - return [sliceType$7.nil, new Errno(22)]; - } - attrs = sliceType$7.nil; - while (true) { - if (!(b.$length >= 4)) { break; } - _tuple = netlinkRouteAttrAndValue(b); - a = _tuple[0]; - vbuf = _tuple[1]; - alen = _tuple[2]; - err = _tuple[3]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [sliceType$7.nil, err]; - } - ra = new NetlinkRouteAttr.ptr($clone(a, RtAttr), $subslice(vbuf, 0, (((a.Len >> 0)) - 4 >> 0))); - attrs = $append(attrs, ra); - b = $subslice(b, alen); - } - return [attrs, $ifaceNil]; - }; - $pkg.ParseNetlinkRouteAttr = ParseNetlinkRouteAttr; - netlinkRouteAttrAndValue = function(b) { - var _array, _struct, _view, a, b; - a = ((_array = ($sliceToArray(b)), _struct = new RtAttr.ptr(0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint16(0, true), _struct.Type = _view.getUint16(2, true), _struct)); - if (((a.Len >> 0)) < 4 || ((a.Len >> 0)) > b.$length) { - return [ptrType$14.nil, sliceType.nil, 0, new Errno(22)]; - } - return [a, $subslice(b, 4), rtaAlignOf(((a.Len >> 0))), $ifaceNil]; - }; - itoa = function(val) { - var val; - if (val < 0) { - return "-" + uitoa(((-val >>> 0))); - } - return uitoa(((val >>> 0))); - }; - uitoa = function(val) { - var _q, _r, buf, i, val; - buf = arrayType$4.zero(); - i = 31; - while (true) { - if (!(val >= 10)) { break; } - ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((_r = val % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24))); - i = i - (1) >> 0; - val = (_q = val / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - } - ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((val + 48 >>> 0) << 24 >>> 24))); - return ($bytesToString($subslice(new sliceType(buf), i))); - }; - Timespec.ptr.prototype.Unix = function() { - var _tmp, _tmp$1, nsec, sec, ts; - sec = new $Int64(0, 0); - nsec = new $Int64(0, 0); - ts = this; - _tmp = (ts.Sec); - _tmp$1 = (ts.Nsec); - sec = _tmp; - nsec = _tmp$1; - return [sec, nsec]; - }; - Timespec.prototype.Unix = function() { return this.$val.Unix(); }; - Timespec.ptr.prototype.Nano = function() { - var ts, x, x$1; - ts = this; - return (x = $mul64((ts.Sec), new $Int64(0, 1000000000)), x$1 = (ts.Nsec), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); - }; - Timespec.prototype.Nano = function() { return this.$val.Nano(); }; - Getpagesize = function() { - $throwRuntimeError("native function not implemented: syscall.Getpagesize"); - }; - $pkg.Getpagesize = Getpagesize; - Chmod = function(path, mode) { - var err, mode, path; - err = $ifaceNil; - err = Fchmodat(-100, path, mode, 0); - return err; - }; - $pkg.Chmod = Chmod; - Fchmodat = function(dirfd, path, mode, flags) { - var dirfd, err, flags, mode, path; - err = $ifaceNil; - if (!((((flags & ~256) >> 0) === 0))) { - err = new Errno(22); - return err; - } else if (!(((flags & 256) === 0))) { - err = new Errno(95); - return err; - } - err = fchmodat(dirfd, path, mode); - return err; - }; - $pkg.Fchmodat = Fchmodat; - Open = function(path, mode, perm) { - var _tuple, err, fd, mode, path, perm; - fd = 0; - err = $ifaceNil; - _tuple = openat(-100, path, mode | 0, perm); - fd = _tuple[0]; - err = _tuple[1]; - return [fd, err]; - }; - $pkg.Open = Open; - SockaddrInet4.ptr.prototype.sockaddr = function() { - var _array, _struct, _view, i, p, sa, x, x$1, x$2; - sa = this; - if (sa.Port < 0 || sa.Port > 65535) { - return [0, 0, new Errno(22)]; - } - sa.raw.Family = 2; - p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x)))))); - p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24)); - p.nilCheck, p[1] = ((sa.Port << 24 >>> 24)); - i = 0; - while (true) { - if (!(i < 4)) { break; } - (x$2 = sa.raw.Addr, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])))); - i = i + (1) >> 0; - } - _array = new Uint8Array(16); - return [(_array), 16, $ifaceNil]; - }; - SockaddrInet4.prototype.sockaddr = function() { return this.$val.sockaddr(); }; - SockaddrInet6.ptr.prototype.sockaddr = function() { - var _array, _struct, _view, i, p, sa, x, x$1, x$2; - sa = this; - if (sa.Port < 0 || sa.Port > 65535) { - return [0, 0, new Errno(22)]; - } - sa.raw.Family = 10; - p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x)))))); - p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24)); - p.nilCheck, p[1] = ((sa.Port << 24 >>> 24)); - sa.raw.Scope_id = sa.ZoneId; - i = 0; - while (true) { - if (!(i < 16)) { break; } - (x$2 = sa.raw.Addr, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])))); - i = i + (1) >> 0; - } - _array = new Uint8Array(28); - return [(_array), 28, $ifaceNil]; - }; - SockaddrInet6.prototype.sockaddr = function() { return this.$val.sockaddr(); }; - SockaddrUnix.ptr.prototype.sockaddr = function() { - var _array, _struct, _view, i, n, name, sa, sl, x; - sa = this; - name = sa.Name; - n = name.length; - if (n > 108) { - return [0, 0, new Errno(22)]; - } - if ((n === 108) && !((name.charCodeAt(0) === 64))) { - return [0, 0, new Errno(22)]; - } - sa.raw.Family = 1; - i = 0; - while (true) { - if (!(i < n)) { break; } - (x = sa.raw.Path, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = ((name.charCodeAt(i) << 24 >> 24)))); - i = i + (1) >> 0; - } - sl = 2; - if (n > 0) { - sl = sl + ((((n >>> 0)) + 1 >>> 0)) >>> 0; - } - if (sa.raw.Path[0] === 64) { - sa.raw.Path[0] = 0; - sl = sl - (1) >>> 0; - } - _array = new Uint8Array(110); - return [(_array), sl, $ifaceNil]; - }; - SockaddrUnix.prototype.sockaddr = function() { return this.$val.sockaddr(); }; - SockaddrLinklayer.ptr.prototype.sockaddr = function() { - var _array, _struct, _view, i, sa, x, x$1; - sa = this; - if (sa.Ifindex < 0 || sa.Ifindex > 2147483647) { - return [0, 0, new Errno(22)]; - } - sa.raw.Family = 17; - sa.raw.Protocol = sa.Protocol; - sa.raw.Ifindex = ((sa.Ifindex >> 0)); - sa.raw.Hatype = sa.Hatype; - sa.raw.Pkttype = sa.Pkttype; - sa.raw.Halen = sa.Halen; - i = 0; - while (true) { - if (!(i < 8)) { break; } - (x$1 = sa.raw.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = sa.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])))); - i = i + (1) >> 0; - } - _array = new Uint8Array(20); - return [(_array), 20, $ifaceNil]; - }; - SockaddrLinklayer.prototype.sockaddr = function() { return this.$val.sockaddr(); }; - SockaddrNetlink.ptr.prototype.sockaddr = function() { - var _array, _struct, _view, sa; - sa = this; - sa.raw.Family = 16; - sa.raw.Pad = sa.Pad; - sa.raw.Pid = sa.Pid; - sa.raw.Groups = sa.Groups; - _array = new Uint8Array(12); - return [(_array), 12, $ifaceNil]; - }; - SockaddrNetlink.prototype.sockaddr = function() { return this.$val.sockaddr(); }; - anyToSockaddr = function(rsa) { - var _1, _array, _array$1, _array$2, _array$3, _array$4, _array$5, _array$6, _array$7, _array$8, _array$9, _struct, _struct$1, _struct$2, _struct$3, _struct$4, _struct$5, _struct$6, _struct$7, _struct$8, _struct$9, _view, _view$1, _view$2, _view$3, _view$4, _view$5, _view$6, _view$7, _view$8, _view$9, bytes, i, i$1, i$2, n, p, p$1, pp, pp$1, pp$2, pp$3, pp$4, rsa, sa, sa$1, sa$2, sa$3, sa$4, x, x$1, x$2, x$3, x$4, x$5, x$6; - _1 = rsa.Addr.Family; - if (_1 === (16)) { - _array$1 = new Uint8Array(112); - pp = ((_array = (_array$1), _struct = new RawSockaddrNetlink.ptr(0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Family = _view.getUint16(0, true), _struct.Pad = _view.getUint16(2, true), _struct.Pid = _view.getUint32(4, true), _struct.Groups = _view.getUint32(8, true), _struct)); - _struct$1 = rsa, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Addr.Family = _view$1.getUint16(0, true), _struct$1.Addr.Data = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 2, _array$1.buffer.byteLength)), _struct$1.Pad = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 16, _array$1.buffer.byteLength)); - sa = new SockaddrNetlink.ptr(0, 0, 0, 0, new RawSockaddrNetlink.ptr(0, 0, 0, 0)); - sa.Family = pp.Family; - sa.Pad = pp.Pad; - sa.Pid = pp.Pid; - sa.Groups = pp.Groups; - return [sa, $ifaceNil]; - } else if (_1 === (17)) { - _array$3 = new Uint8Array(112); - pp$1 = ((_array$2 = (_array$3), _struct$2 = new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero()), _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Family = _view$2.getUint16(0, true), _struct$2.Protocol = _view$2.getUint16(2, true), _struct$2.Ifindex = _view$2.getInt32(4, true), _struct$2.Hatype = _view$2.getUint16(8, true), _struct$2.Pkttype = _view$2.getUint8(10, true), _struct$2.Halen = _view$2.getUint8(11, true), _struct$2.Addr = new ($nativeArray($kindUint8))(_array$2.buffer, $min(_array$2.byteOffset + 12, _array$2.buffer.byteLength)), _struct$2)); - _struct$3 = rsa, _view$3 = new DataView(_array$3.buffer, _array$3.byteOffset), _struct$3.Addr.Family = _view$3.getUint16(0, true), _struct$3.Addr.Data = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 2, _array$3.buffer.byteLength)), _struct$3.Pad = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 16, _array$3.buffer.byteLength)); - sa$1 = new SockaddrLinklayer.ptr(0, 0, 0, 0, 0, arrayType$1.zero(), new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero())); - sa$1.Protocol = pp$1.Protocol; - sa$1.Ifindex = ((pp$1.Ifindex >> 0)); - sa$1.Hatype = pp$1.Hatype; - sa$1.Pkttype = pp$1.Pkttype; - sa$1.Halen = pp$1.Halen; - i = 0; - while (true) { - if (!(i < 8)) { break; } - (x$1 = sa$1.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = pp$1.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])))); - i = i + (1) >> 0; - } - return [sa$1, $ifaceNil]; - } else if (_1 === (1)) { - _array$5 = new Uint8Array(112); - pp$2 = ((_array$4 = (_array$5), _struct$4 = new RawSockaddrUnix.ptr(0, arrayType$8.zero()), _view$4 = new DataView(_array$4.buffer, _array$4.byteOffset), _struct$4.Family = _view$4.getUint16(0, true), _struct$4.Path = new ($nativeArray($kindInt8))(_array$4.buffer, $min(_array$4.byteOffset + 2, _array$4.buffer.byteLength)), _struct$4)); - _struct$5 = rsa, _view$5 = new DataView(_array$5.buffer, _array$5.byteOffset), _struct$5.Addr.Family = _view$5.getUint16(0, true), _struct$5.Addr.Data = new ($nativeArray($kindInt8))(_array$5.buffer, $min(_array$5.byteOffset + 2, _array$5.buffer.byteLength)), _struct$5.Pad = new ($nativeArray($kindInt8))(_array$5.buffer, $min(_array$5.byteOffset + 16, _array$5.buffer.byteLength)); - sa$2 = new SockaddrUnix.ptr("", new RawSockaddrUnix.ptr(0, arrayType$8.zero())); - if (pp$2.Path[0] === 0) { - pp$2.Path[0] = 64; - } - n = 0; - while (true) { - if (!(n < 108 && !(((x$2 = pp$2.Path, ((n < 0 || n >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[n])) === 0)))) { break; } - n = n + (1) >> 0; - } - bytes = $subslice(new sliceType((($sliceToArray(new sliceType(pp$2.Path))))), 0, n); - sa$2.Name = ($bytesToString(bytes)); - return [sa$2, $ifaceNil]; - } else if (_1 === (2)) { - _array$7 = new Uint8Array(112); - pp$3 = ((_array$6 = (_array$7), _struct$6 = new RawSockaddrInet4.ptr(0, 0, arrayType$9.zero(), arrayType$1.zero()), _view$6 = new DataView(_array$6.buffer, _array$6.byteOffset), _struct$6.Family = _view$6.getUint16(0, true), _struct$6.Port = _view$6.getUint16(2, true), _struct$6.Addr = new ($nativeArray($kindUint8))(_array$6.buffer, $min(_array$6.byteOffset + 4, _array$6.buffer.byteLength)), _struct$6.Zero = new ($nativeArray($kindUint8))(_array$6.buffer, $min(_array$6.byteOffset + 8, _array$6.buffer.byteLength)), _struct$6)); - _struct$7 = rsa, _view$7 = new DataView(_array$7.buffer, _array$7.byteOffset), _struct$7.Addr.Family = _view$7.getUint16(0, true), _struct$7.Addr.Data = new ($nativeArray($kindInt8))(_array$7.buffer, $min(_array$7.byteOffset + 2, _array$7.buffer.byteLength)), _struct$7.Pad = new ($nativeArray($kindInt8))(_array$7.buffer, $min(_array$7.byteOffset + 16, _array$7.buffer.byteLength)); - sa$3 = new SockaddrInet4.ptr(0, arrayType$9.zero(), new RawSockaddrInet4.ptr(0, 0, arrayType$9.zero(), arrayType$1.zero())); - p = (((pp$3.$ptr_Port || (pp$3.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$3))))); - sa$3.Port = ((((p.nilCheck, p[0]) >> 0)) << 8 >> 0) + (((p.nilCheck, p[1]) >> 0)) >> 0; - i$1 = 0; - while (true) { - if (!(i$1 < 4)) { break; } - (x$4 = sa$3.Addr, ((i$1 < 0 || i$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[i$1] = (x$3 = pp$3.Addr, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1])))); - i$1 = i$1 + (1) >> 0; - } - return [sa$3, $ifaceNil]; - } else if (_1 === (10)) { - _array$9 = new Uint8Array(112); - pp$4 = ((_array$8 = (_array$9), _struct$8 = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0), _view$8 = new DataView(_array$8.buffer, _array$8.byteOffset), _struct$8.Family = _view$8.getUint16(0, true), _struct$8.Port = _view$8.getUint16(2, true), _struct$8.Flowinfo = _view$8.getUint32(4, true), _struct$8.Addr = new ($nativeArray($kindUint8))(_array$8.buffer, $min(_array$8.byteOffset + 8, _array$8.buffer.byteLength)), _struct$8.Scope_id = _view$8.getUint32(24, true), _struct$8)); - _struct$9 = rsa, _view$9 = new DataView(_array$9.buffer, _array$9.byteOffset), _struct$9.Addr.Family = _view$9.getUint16(0, true), _struct$9.Addr.Data = new ($nativeArray($kindInt8))(_array$9.buffer, $min(_array$9.byteOffset + 2, _array$9.buffer.byteLength)), _struct$9.Pad = new ($nativeArray($kindInt8))(_array$9.buffer, $min(_array$9.byteOffset + 16, _array$9.buffer.byteLength)); - sa$4 = new SockaddrInet6.ptr(0, 0, arrayType$2.zero(), new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0)); - p$1 = (((pp$4.$ptr_Port || (pp$4.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$4))))); - sa$4.Port = ((((p$1.nilCheck, p$1[0]) >> 0)) << 8 >> 0) + (((p$1.nilCheck, p$1[1]) >> 0)) >> 0; - sa$4.ZoneId = pp$4.Scope_id; - i$2 = 0; - while (true) { - if (!(i$2 < 16)) { break; } - (x$6 = sa$4.Addr, ((i$2 < 0 || i$2 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i$2] = (x$5 = pp$4.Addr, ((i$2 < 0 || i$2 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i$2])))); - i$2 = i$2 + (1) >> 0; - } - return [sa$4, $ifaceNil]; - } - return [$ifaceNil, new Errno(97)]; - }; - Accept = function(fd) { - var _tuple, _tuple$1, err, fd, len, len$24ptr, nfd, rsa, sa; - nfd = 0; - sa = $ifaceNil; - err = $ifaceNil; - rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); - len = 112; - _tuple = accept(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; })))); - nfd = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [nfd, sa, err]; - } - _tuple$1 = anyToSockaddr(rsa); - sa = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - Close(nfd); - nfd = 0; - } - return [nfd, sa, err]; - }; - $pkg.Accept = Accept; - Accept4 = function(fd, flags) { - var _tuple, _tuple$1, err, fd, flags, len, len$24ptr, nfd, rsa, sa; - nfd = 0; - sa = $ifaceNil; - err = $ifaceNil; - rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); - len = 112; - _tuple = accept4(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; }))), flags); - nfd = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [nfd, sa, err]; - } - if (len > 112) { - $panic(new $String("RawSockaddrAny too small")); - } - _tuple$1 = anyToSockaddr(rsa); - sa = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - Close(nfd); - nfd = 0; - } - return [nfd, sa, err]; - }; - $pkg.Accept4 = Accept4; - Getsockname = function(fd) { - var _tuple, err, fd, len, len$24ptr, rsa, sa; - sa = $ifaceNil; - err = $ifaceNil; - rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); - len = 112; - err = getsockname(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; })))); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [sa, err]; - } - _tuple = anyToSockaddr(rsa); - sa = _tuple[0]; - err = _tuple[1]; - return [sa, err]; - }; - $pkg.Getsockname = Getsockname; - SetsockoptIPMreqn = function(fd, level, opt, mreq) { - var _array, _struct, _view, err, fd, level, mreq, opt; - err = $ifaceNil; - _array = new Uint8Array(12); - err = setsockopt(fd, level, opt, (_array), 12); - _struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Address = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)), _struct.Ifindex = _view.getInt32(8, true); - return err; - }; - $pkg.SetsockoptIPMreqn = SetsockoptIPMreqn; - Recvmsg = function(fd, p, oob, flags) { - var _array, _struct, _tuple, _tuple$1, _tuple$2, _view, dummy, dummy$24ptr, err, fd, flags, from, iov, msg, n, oob, oobn, p, recvflags, rsa, sockType; - n = 0; - oobn = 0; - recvflags = 0; - from = $ifaceNil; - err = $ifaceNil; - msg = new Msghdr.ptr(ptrType$2.nil, 0, arrayType$9.zero(), ptrType$20.nil, new $Uint64(0, 0), ptrType$2.nil, new $Uint64(0, 0), 0, arrayType$9.zero()); - rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); - _array = new Uint8Array(112); - msg.Name = ((_array)); - _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); - msg.Namelen = 112; - iov = new Iovec.ptr(ptrType$2.nil, new $Uint64(0, 0)); - if (p.$length > 0) { - iov.Base = $indexPtr(p.$array, p.$offset + 0, ptrType$2); - iov.SetLen(p.$length); - } - dummy = 0; - if (oob.$length > 0) { - if (p.$length === 0) { - sockType = 0; - _tuple = GetsockoptInt(fd, 1, 3); - sockType = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [n, oobn, recvflags, from, err]; - } - if (!((sockType === 2))) { - iov.Base = (dummy$24ptr || (dummy$24ptr = new ptrType$2(function() { return dummy; }, function($v) { dummy = $v; }))); - iov.SetLen(1); - } - } - msg.Control = $indexPtr(oob.$array, oob.$offset + 0, ptrType$2); - msg.SetControllen(oob.$length); - } - msg.Iov = iov; - msg.Iovlen = new $Uint64(0, 1); - _tuple$1 = recvmsg(fd, msg, flags); - n = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [n, oobn, recvflags, from, err]; - } - oobn = ((msg.Controllen.$low >> 0)); - recvflags = ((msg.Flags >> 0)); - if (!((rsa.Addr.Family === 0))) { - _tuple$2 = anyToSockaddr(rsa); - from = _tuple$2[0]; - err = _tuple$2[1]; - } - return [n, oobn, recvflags, from, err]; - }; - $pkg.Recvmsg = Recvmsg; - SendmsgN = function(fd, p, oob, to, flags) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, dummy, err, err$1, fd, flags, iov, msg, n, oob, p, ptr, salen, sockType, to, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; dummy = $f.dummy; err = $f.err; err$1 = $f.err$1; fd = $f.fd; flags = $f.flags; iov = $f.iov; msg = $f.msg; n = $f.n; oob = $f.oob; p = $f.p; ptr = $f.ptr; salen = $f.salen; sockType = $f.sockType; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - dummy = [dummy]; - iov = [iov]; - msg = [msg]; - n = 0; - err = $ifaceNil; - ptr = 0; - salen = 0; - /* */ if (!($interfaceIsEqual(to, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(to, $ifaceNil))) { */ case 1: - err$1 = $ifaceNil; - _r = to.sockaddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - ptr = _tuple[0]; - salen = _tuple[1]; - err$1 = _tuple[2]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err$1; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - /* } */ case 2: - msg[0] = new Msghdr.ptr(ptrType$2.nil, 0, arrayType$9.zero(), ptrType$20.nil, new $Uint64(0, 0), ptrType$2.nil, new $Uint64(0, 0), 0, arrayType$9.zero()); - msg[0].Name = (ptr); - msg[0].Namelen = ((salen >>> 0)); - iov[0] = new Iovec.ptr(ptrType$2.nil, new $Uint64(0, 0)); - if (p.$length > 0) { - iov[0].Base = $indexPtr(p.$array, p.$offset + 0, ptrType$2); - iov[0].SetLen(p.$length); - } - dummy[0] = 0; - if (oob.$length > 0) { - if (p.$length === 0) { - sockType = 0; - _tuple$1 = GetsockoptInt(fd, 1, 3); - sockType = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$2 = 0; - _tmp$3 = err; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - if (!((sockType === 2))) { - iov[0].Base = (dummy.$ptr || (dummy.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, dummy))); - iov[0].SetLen(1); - } - } - msg[0].Control = $indexPtr(oob.$array, oob.$offset + 0, ptrType$2); - msg[0].SetControllen(oob.$length); - } - msg[0].Iov = iov[0]; - msg[0].Iovlen = new $Uint64(0, 1); - _tuple$2 = sendmsg(fd, msg[0], flags); - n = _tuple$2[0]; - err = _tuple$2[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$4 = 0; - _tmp$5 = err; - n = _tmp$4; - err = _tmp$5; - $s = -1; return [n, err]; - } - if (oob.$length > 0 && (p.$length === 0)) { - n = 0; - } - _tmp$6 = n; - _tmp$7 = $ifaceNil; - n = _tmp$6; - err = _tmp$7; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: SendmsgN }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.dummy = dummy; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.flags = flags; $f.iov = iov; $f.msg = msg; $f.n = n; $f.oob = oob; $f.p = p; $f.ptr = ptr; $f.salen = salen; $f.sockType = sockType; $f.to = to; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.SendmsgN = SendmsgN; - ReadDirent = function(fd, buf) { - var _tuple, buf, err, fd, n; - n = 0; - err = $ifaceNil; - _tuple = Getdents(fd, buf); - n = _tuple[0]; - err = _tuple[1]; - return [n, err]; - }; - $pkg.ReadDirent = ReadDirent; - direntIno = function(buf) { - var buf; - return readInt(buf, 0, 8); - }; - direntReclen = function(buf) { - var buf; - return readInt(buf, 16, 2); - }; - direntNamlen = function(buf) { - var _tuple, buf, ok, reclen; - _tuple = direntReclen(buf); - reclen = _tuple[0]; - ok = _tuple[1]; - if (!ok) { - return [new $Uint64(0, 0), false]; - } - return [new $Uint64(reclen.$high - 0, reclen.$low - 19), true]; - }; - Stat = function(path, stat) { - var err, path, stat; - err = $ifaceNil; - err = fstatat(-100, path, stat, 0); - return err; - }; - $pkg.Stat = Stat; - Lstat = function(path, stat) { - var err, path, stat; - err = $ifaceNil; - err = fstatat(-100, path, stat, 256); - return err; - }; - $pkg.Lstat = Lstat; - Iovec.ptr.prototype.SetLen = function(length) { - var iov, length; - iov = this; - iov.Len = (new $Uint64(0, length)); - }; - Iovec.prototype.SetLen = function(length) { return this.$val.SetLen(length); }; - Msghdr.ptr.prototype.SetControllen = function(length) { - var length, msghdr; - msghdr = this; - msghdr.Controllen = (new $Uint64(0, length)); - }; - Msghdr.prototype.SetControllen = function(length) { return this.$val.SetControllen(length); }; - mmapper.ptr.prototype.Mmap = function(fd, offset, length, prot, flags) { - var _key, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, addr, b, data, err, errno, fd, flags, length, m, offset, p, prot, sl, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; addr = $f.addr; b = $f.b; data = $f.data; err = $f.err; errno = $f.errno; fd = $f.fd; flags = $f.flags; length = $f.length; m = $f.m; offset = $f.offset; p = $f.p; prot = $f.prot; sl = $f.sl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - sl = [sl]; - data = sliceType.nil; - err = $ifaceNil; - m = this; - if (length <= 0) { - _tmp = sliceType.nil; - _tmp$1 = new Errno(22); - data = _tmp; - err = _tmp$1; - $s = -1; return [data, err]; - } - _r = m.mmap(0, ((length >>> 0)), prot, flags, fd, offset); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - addr = _tuple[0]; - errno = _tuple[1]; - if (!($interfaceIsEqual(errno, $ifaceNil))) { - _tmp$2 = sliceType.nil; - _tmp$3 = errno; - data = _tmp$2; - err = _tmp$3; - $s = -1; return [data, err]; - } - sl[0] = new structType.ptr(addr, length, length); - b = sl[0]; - p = $indexPtr(b.$array, b.$offset + (b.$capacity - 1 >> 0), ptrType$2); - $r = m.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(m.Mutex, "Unlock"), []]); - _key = p; (m.active || $throwRuntimeError("assignment to entry in nil map"))[ptrType$2.keyFor(_key)] = { k: _key, v: b }; - _tmp$4 = b; - _tmp$5 = $ifaceNil; - data = _tmp$4; - err = _tmp$5; - $s = -1; return [data, err]; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [data, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mmapper.ptr.prototype.Mmap }; } $f._key = _key; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.data = data; $f.err = err; $f.errno = errno; $f.fd = fd; $f.flags = flags; $f.length = length; $f.m = m; $f.offset = offset; $f.p = p; $f.prot = prot; $f.sl = sl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - mmapper.prototype.Mmap = function(fd, offset, length, prot, flags) { return this.$val.Mmap(fd, offset, length, prot, flags); }; - mmapper.ptr.prototype.Munmap = function(data) { - var _entry, _r, b, data, err, errno, m, p, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; b = $f.b; data = $f.data; err = $f.err; errno = $f.errno; m = $f.m; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - err = $ifaceNil; - m = this; - if ((data.$length === 0) || !((data.$length === data.$capacity))) { - err = new Errno(22); - $s = -1; return err; - } - p = $indexPtr(data.$array, data.$offset + (data.$capacity - 1 >> 0), ptrType$2); - $r = m.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(m.Mutex, "Unlock"), []]); - b = (_entry = m.active[ptrType$2.keyFor(p)], _entry !== undefined ? _entry.v : sliceType.nil); - if (b === sliceType.nil || !($indexPtr(b.$array, b.$offset + 0, ptrType$2) === $indexPtr(data.$array, data.$offset + 0, ptrType$2))) { - err = new Errno(22); - $s = -1; return err; - } - _r = m.munmap((($sliceToArray(b))), ((b.$length >>> 0))); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - errno = _r; - if (!($interfaceIsEqual(errno, $ifaceNil))) { - err = errno; - $s = -1; return err; - } - delete m.active[ptrType$2.keyFor(p)]; - err = $ifaceNil; - $s = -1; return err; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mmapper.ptr.prototype.Munmap }; } $f._entry = _entry; $f._r = _r; $f.b = b; $f.data = data; $f.err = err; $f.errno = errno; $f.m = m; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - mmapper.prototype.Munmap = function(data) { return this.$val.Munmap(data); }; - Errno.prototype.Error = function() { - var e, s; - e = this.$val; - if (0 <= ((e >> 0)) && ((e >> 0)) < 133) { - s = ((e < 0 || e >= errors.length) ? ($throwRuntimeError("index out of range"), undefined) : errors[e]); - if (!(s === "")) { - return s; - } - } - return "errno " + itoa(((e >> 0))); - }; - $ptrType(Errno).prototype.Error = function() { return new Errno(this.$get()).Error(); }; - Errno.prototype.Temporary = function() { - var e; - e = this.$val; - return (e === 4) || (e === 24) || new Errno(e).Timeout(); - }; - $ptrType(Errno).prototype.Temporary = function() { return new Errno(this.$get()).Temporary(); }; - Errno.prototype.Timeout = function() { - var e; - e = this.$val; - return (e === 11) || (e === 11) || (e === 110); - }; - $ptrType(Errno).prototype.Timeout = function() { return new Errno(this.$get()).Timeout(); }; - errnoErr = function(e) { - var _1, e; - _1 = e; - if (_1 === (0)) { - return $ifaceNil; - } else if (_1 === (11)) { - return errEAGAIN; - } else if (_1 === (22)) { - return errEINVAL; - } else if (_1 === (2)) { - return errENOENT; - } - return new Errno(e); - }; - Read = function(fd, p) { - var _tuple, err, fd, n, p; - n = 0; - err = $ifaceNil; - _tuple = read(fd, p); - n = _tuple[0]; - err = _tuple[1]; - if (false) { - if (n > 0) { - race.WriteRange(($sliceToArray(p)), n); - } - if ($interfaceIsEqual(err, $ifaceNil)) { - race.Acquire(((ioSync$24ptr || (ioSync$24ptr = new ptrType$23(function() { return ioSync; }, function($v) { ioSync = $v; }))))); - } - } - if (false && n > 0) { - msanWrite(($sliceToArray(p)), n); - } - return [n, err]; - }; - $pkg.Read = Read; - Write = function(fd, p) { - var _tuple, err, fd, n, p; - n = 0; - err = $ifaceNil; - if (false) { - race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$23(function() { return ioSync; }, function($v) { ioSync = $v; }))))); - } - _tuple = write(fd, p); - n = _tuple[0]; - err = _tuple[1]; - if (false && n > 0) { - race.ReadRange(($sliceToArray(p)), n); - } - if (false && n > 0) { - msanRead(($sliceToArray(p)), n); - } - return [n, err]; - }; - $pkg.Write = Write; - Bind = function(fd, sa) { - var _r, _tuple, err, fd, n, ptr, sa, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; ptr = $f.ptr; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - err = $ifaceNil; - _r = sa.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - ptr = _tuple[0]; - n = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - err = err; - $s = -1; return err; - } - err = bind(fd, ptr, n); - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: Bind }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.ptr = ptr; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Bind = Bind; - GetsockoptInt = function(fd, level, opt) { - var _tmp, _tmp$1, err, fd, level, n, n$24ptr, opt, vallen, vallen$24ptr, value; - value = 0; - err = $ifaceNil; - n = 0; - vallen = 4; - err = getsockopt(fd, level, opt, ((n$24ptr || (n$24ptr = new ptrType$4(function() { return n; }, function($v) { n = $v; })))), (vallen$24ptr || (vallen$24ptr = new ptrType$19(function() { return vallen; }, function($v) { vallen = $v; })))); - _tmp = ((n >> 0)); - _tmp$1 = err; - value = _tmp; - err = _tmp$1; - return [value, err]; - }; - $pkg.GetsockoptInt = GetsockoptInt; - Recvfrom = function(fd, p, flags) { - var _tuple, _tuple$1, err, fd, flags, from, len, len$24ptr, n, p, rsa; - n = 0; - from = $ifaceNil; - err = $ifaceNil; - rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$10.zero()), arrayType$11.zero()); - len = 112; - _tuple = recvfrom(fd, p, flags, rsa, (len$24ptr || (len$24ptr = new ptrType$19(function() { return len; }, function($v) { len = $v; })))); - n = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [n, from, err]; - } - if (!((rsa.Addr.Family === 0))) { - _tuple$1 = anyToSockaddr(rsa); - from = _tuple$1[0]; - err = _tuple$1[1]; - } - return [n, from, err]; - }; - $pkg.Recvfrom = Recvfrom; - Sendto = function(fd, p, flags, to) { - var _r, _tuple, err, fd, flags, n, p, ptr, to, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; flags = $f.flags; n = $f.n; p = $f.p; ptr = $f.ptr; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - err = $ifaceNil; - _r = to.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - ptr = _tuple[0]; - n = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - err = err; - $s = -1; return err; - } - err = sendto(fd, p, flags, ptr, n); - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: Sendto }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.flags = flags; $f.n = n; $f.p = p; $f.ptr = ptr; $f.to = to; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Sendto = Sendto; - SetsockoptByte = function(fd, level, opt, value) { - var err, fd, level, opt, value, value$24ptr; - err = $ifaceNil; - err = setsockopt(fd, level, opt, ((value$24ptr || (value$24ptr = new ptrType$2(function() { return value; }, function($v) { value = $v; })))), 1); - return err; - }; - $pkg.SetsockoptByte = SetsockoptByte; - SetsockoptInt = function(fd, level, opt, value) { - var err, fd, level, n, n$24ptr, opt, value; - err = $ifaceNil; - n = ((value >> 0)); - err = setsockopt(fd, level, opt, ((n$24ptr || (n$24ptr = new ptrType$4(function() { return n; }, function($v) { n = $v; })))), 4); - return err; - }; - $pkg.SetsockoptInt = SetsockoptInt; - SetsockoptInet4Addr = function(fd, level, opt, value) { - var err, fd, level, opt, value; - err = $ifaceNil; - err = setsockopt(fd, level, opt, ($sliceToArray(new sliceType(value))), 4); - return err; - }; - $pkg.SetsockoptInet4Addr = SetsockoptInet4Addr; - SetsockoptIPMreq = function(fd, level, opt, mreq) { - var _array, _struct, _view, err, fd, level, mreq, opt; - err = $ifaceNil; - _array = new Uint8Array(8); - err = setsockopt(fd, level, opt, (_array), 8); - _struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Interface = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)); - return err; - }; - $pkg.SetsockoptIPMreq = SetsockoptIPMreq; - SetsockoptIPv6Mreq = function(fd, level, opt, mreq) { - var _array, _struct, _view, err, fd, level, mreq, opt; - err = $ifaceNil; - _array = new Uint8Array(20); - err = setsockopt(fd, level, opt, (_array), 20); - _struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Interface = _view.getUint32(16, true); - return err; - }; - $pkg.SetsockoptIPv6Mreq = SetsockoptIPv6Mreq; - SetsockoptLinger = function(fd, level, opt, l) { - var _array, _struct, _view, err, fd, l, level, opt; - err = $ifaceNil; - _array = new Uint8Array(8); - err = setsockopt(fd, level, opt, (_array), 8); - _struct = l, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Onoff = _view.getInt32(0, true), _struct.Linger = _view.getInt32(4, true); - return err; - }; - $pkg.SetsockoptLinger = SetsockoptLinger; - Socket = function(domain, typ, proto) { - var _tmp, _tmp$1, _tuple, domain, err, fd, proto, typ; - fd = 0; - err = $ifaceNil; - if ((domain === 10) && $pkg.SocketDisableIPv6) { - _tmp = -1; - _tmp$1 = new Errno(97); - fd = _tmp; - err = _tmp$1; - return [fd, err]; - } - _tuple = socket(domain, typ, proto); - fd = _tuple[0]; - err = _tuple[1]; - return [fd, err]; - }; - $pkg.Socket = Socket; - fchmodat = function(dirfd, path, mode) { - var _p0, _tuple, _tuple$1, dirfd, e1, err, mode, path; - err = $ifaceNil; - _p0 = ptrType$2.nil; - _tuple = BytePtrFromString(path); - _p0 = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - _tuple$1 = Syscall(268, ((dirfd >>> 0)), ((_p0)), ((mode >>> 0))); - e1 = _tuple$1[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - openat = function(dirfd, path, flags, mode) { - var _p0, _tuple, _tuple$1, dirfd, e1, err, fd, flags, mode, path, r0; - fd = 0; - err = $ifaceNil; - _p0 = ptrType$2.nil; - _tuple = BytePtrFromString(path); - _p0 = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [fd, err]; - } - _tuple$1 = Syscall6(257, ((dirfd >>> 0)), ((_p0)), ((flags >>> 0)), ((mode >>> 0)), 0, 0); - r0 = _tuple$1[0]; - e1 = _tuple$1[2]; - fd = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [fd, err]; - }; - Close = function(fd) { - var _tuple, e1, err, fd; - err = $ifaceNil; - _tuple = Syscall(3, ((fd >>> 0)), 0, 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Close = Close; - Dup = function(oldfd) { - var _tuple, e1, err, fd, oldfd, r0; - fd = 0; - err = $ifaceNil; - _tuple = Syscall(32, ((oldfd >>> 0)), 0, 0); - r0 = _tuple[0]; - e1 = _tuple[2]; - fd = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [fd, err]; - }; - $pkg.Dup = Dup; - Fchdir = function(fd) { - var _tuple, e1, err, fd; - err = $ifaceNil; - _tuple = Syscall(81, ((fd >>> 0)), 0, 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Fchdir = Fchdir; - Fchmod = function(fd, mode) { - var _tuple, e1, err, fd, mode; - err = $ifaceNil; - _tuple = Syscall(91, ((fd >>> 0)), ((mode >>> 0)), 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Fchmod = Fchmod; - fcntl = function(fd, cmd, arg) { - var _tuple, arg, cmd, e1, err, fd, r0, val; - val = 0; - err = $ifaceNil; - _tuple = Syscall(72, ((fd >>> 0)), ((cmd >>> 0)), ((arg >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - val = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [val, err]; - }; - Fsync = function(fd) { - var _tuple, e1, err, fd; - err = $ifaceNil; - _tuple = Syscall(74, ((fd >>> 0)), 0, 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Fsync = Fsync; - Getdents = function(fd, buf) { - var _p0, _tuple, buf, e1, err, fd, n, r0; - n = 0; - err = $ifaceNil; - _p0 = 0; - if (buf.$length > 0) { - _p0 = ($sliceToArray(buf)); - } else { - _p0 = (new Uint8Array(0)); - } - _tuple = Syscall(217, ((fd >>> 0)), (_p0), ((buf.$length >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - $pkg.Getdents = Getdents; - read = function(fd, p) { - var _p0, _tuple, e1, err, fd, n, p, r0; - n = 0; - err = $ifaceNil; - _p0 = 0; - if (p.$length > 0) { - _p0 = ($sliceToArray(p)); - } else { - _p0 = (new Uint8Array(0)); - } - _tuple = Syscall(0, ((fd >>> 0)), (_p0), ((p.$length >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - write = function(fd, p) { - var _p0, _tuple, e1, err, fd, n, p, r0; - n = 0; - err = $ifaceNil; - _p0 = 0; - if (p.$length > 0) { - _p0 = ($sliceToArray(p)); - } else { - _p0 = (new Uint8Array(0)); - } - _tuple = Syscall(1, ((fd >>> 0)), (_p0), ((p.$length >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - munmap = function(addr, length) { - var _tuple, addr, e1, err, length; - err = $ifaceNil; - _tuple = Syscall(11, (addr), (length), 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - Fchown = function(fd, uid, gid) { - var _tuple, e1, err, fd, gid, uid; - err = $ifaceNil; - _tuple = Syscall(93, ((fd >>> 0)), ((uid >>> 0)), ((gid >>> 0))); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Fchown = Fchown; - Fstat = function(fd, stat) { - var _array, _struct, _tuple, _view, e1, err, fd, stat; - err = $ifaceNil; - _array = new Uint8Array(144); - _tuple = Syscall(5, ((fd >>> 0)), ((_array)), 0); - _struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength)); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Fstat = Fstat; - Ftruncate = function(fd, length) { - var _tuple, e1, err, fd, length; - err = $ifaceNil; - _tuple = Syscall(77, ((fd >>> 0)), ((length.$low >>> 0)), 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Ftruncate = Ftruncate; - Pread = function(fd, p, offset) { - var _p0, _tuple, e1, err, fd, n, offset, p, r0; - n = 0; - err = $ifaceNil; - _p0 = 0; - if (p.$length > 0) { - _p0 = ($sliceToArray(p)); - } else { - _p0 = (new Uint8Array(0)); - } - _tuple = Syscall6(17, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((offset.$low >>> 0)), 0, 0); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - $pkg.Pread = Pread; - Pwrite = function(fd, p, offset) { - var _p0, _tuple, e1, err, fd, n, offset, p, r0; - n = 0; - err = $ifaceNil; - _p0 = 0; - if (p.$length > 0) { - _p0 = ($sliceToArray(p)); - } else { - _p0 = (new Uint8Array(0)); - } - _tuple = Syscall6(18, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((offset.$low >>> 0)), 0, 0); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - $pkg.Pwrite = Pwrite; - Seek = function(fd, offset, whence) { - var _tuple, e1, err, fd, off, offset, r0, whence; - off = new $Int64(0, 0); - err = $ifaceNil; - _tuple = Syscall(8, ((fd >>> 0)), ((offset.$low >>> 0)), ((whence >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - off = (new $Int64(0, r0.constructor === Number ? r0 : 1)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [off, err]; - }; - $pkg.Seek = Seek; - Shutdown = function(fd, how) { - var _tuple, e1, err, fd, how; - err = $ifaceNil; - _tuple = Syscall(48, ((fd >>> 0)), ((how >>> 0)), 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - $pkg.Shutdown = Shutdown; - accept = function(s, rsa, addrlen) { - var _array, _struct, _tuple, _view, addrlen, e1, err, fd, r0, rsa, s; - fd = 0; - err = $ifaceNil; - _array = new Uint8Array(112); - _tuple = Syscall(43, ((s >>> 0)), ((_array)), ((addrlen))); - _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); - r0 = _tuple[0]; - e1 = _tuple[2]; - fd = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [fd, err]; - }; - accept4 = function(s, rsa, addrlen, flags) { - var _array, _struct, _tuple, _view, addrlen, e1, err, fd, flags, r0, rsa, s; - fd = 0; - err = $ifaceNil; - _array = new Uint8Array(112); - _tuple = Syscall6(288, ((s >>> 0)), ((_array)), ((addrlen)), ((flags >>> 0)), 0, 0); - _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); - r0 = _tuple[0]; - e1 = _tuple[2]; - fd = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [fd, err]; - }; - bind = function(s, addr, addrlen) { - var _tuple, addr, addrlen, e1, err, s; - err = $ifaceNil; - _tuple = Syscall(49, ((s >>> 0)), (addr), ((addrlen >>> 0))); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - fstatat = function(fd, path, stat, flags) { - var _array, _p0, _struct, _tuple, _tuple$1, _view, e1, err, fd, flags, path, stat; - err = $ifaceNil; - _p0 = ptrType$2.nil; - _tuple = BytePtrFromString(path); - _p0 = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - _array = new Uint8Array(144); - _tuple$1 = Syscall6(262, ((fd >>> 0)), ((_p0)), ((_array)), ((flags >>> 0)), 0, 0); - _struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength)); - e1 = _tuple$1[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - getsockopt = function(s, level, name, val, vallen) { - var _tuple, e1, err, level, name, s, val, vallen; - err = $ifaceNil; - _tuple = Syscall6(55, ((s >>> 0)), ((level >>> 0)), ((name >>> 0)), (val), ((vallen)), 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - setsockopt = function(s, level, name, val, vallen) { - var _tuple, e1, err, level, name, s, val, vallen; - err = $ifaceNil; - _tuple = Syscall6(54, ((s >>> 0)), ((level >>> 0)), ((name >>> 0)), (val), (vallen), 0); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - socket = function(domain, typ, proto) { - var _tuple, domain, e1, err, fd, proto, r0, typ; - fd = 0; - err = $ifaceNil; - _tuple = RawSyscall(41, ((domain >>> 0)), ((typ >>> 0)), ((proto >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - fd = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [fd, err]; - }; - getsockname = function(fd, rsa, addrlen) { - var _array, _struct, _tuple, _view, addrlen, e1, err, fd, rsa; - err = $ifaceNil; - _array = new Uint8Array(112); - _tuple = RawSyscall(51, ((fd >>> 0)), ((_array)), ((addrlen))); - _struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - recvfrom = function(fd, p, flags, from, fromlen) { - var _array, _p0, _struct, _tuple, _view, e1, err, fd, flags, from, fromlen, n, p, r0; - n = 0; - err = $ifaceNil; - _p0 = 0; - if (p.$length > 0) { - _p0 = ($sliceToArray(p)); - } else { - _p0 = (new Uint8Array(0)); - } - _array = new Uint8Array(112); - _tuple = Syscall6(45, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((flags >>> 0)), ((_array)), ((fromlen))); - _struct = from, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength)); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - sendto = function(s, buf, flags, to, addrlen) { - var _p0, _tuple, addrlen, buf, e1, err, flags, s, to; - err = $ifaceNil; - _p0 = 0; - if (buf.$length > 0) { - _p0 = ($sliceToArray(buf)); - } else { - _p0 = (new Uint8Array(0)); - } - _tuple = Syscall6(44, ((s >>> 0)), (_p0), ((buf.$length >>> 0)), ((flags >>> 0)), (to), ((addrlen >>> 0))); - e1 = _tuple[2]; - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return err; - }; - recvmsg = function(s, msg, flags) { - var _array, _struct, _tuple, _view, e1, err, flags, msg, n, r0, s; - n = 0; - err = $ifaceNil; - _array = new Uint8Array(48); - _tuple = Syscall(47, ((s >>> 0)), ((_array)), ((flags >>> 0))); - _struct = msg, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Namelen = _view.getUint32(4, true), _struct.Pad_cgo_0 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Iovlen = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Controllen = new $Uint64(_view.getUint32(36, true), _view.getUint32(32, true)), _struct.Flags = _view.getInt32(40, true), _struct.Pad_cgo_1 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - sendmsg = function(s, msg, flags) { - var _array, _struct, _tuple, _view, e1, err, flags, msg, n, r0, s; - n = 0; - err = $ifaceNil; - _array = new Uint8Array(48); - _tuple = Syscall(46, ((s >>> 0)), ((_array)), ((flags >>> 0))); - _struct = msg, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Namelen = _view.getUint32(4, true), _struct.Pad_cgo_0 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Iovlen = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Controllen = new $Uint64(_view.getUint32(36, true), _view.getUint32(32, true)), _struct.Flags = _view.getInt32(40, true), _struct.Pad_cgo_1 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)); - r0 = _tuple[0]; - e1 = _tuple[2]; - n = ((r0 >> 0)); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [n, err]; - }; - mmap = function(addr, length, prot, flags, fd, offset) { - var _tuple, addr, e1, err, fd, flags, length, offset, prot, r0, xaddr; - xaddr = 0; - err = $ifaceNil; - _tuple = Syscall6(9, (addr), (length), ((prot >>> 0)), ((flags >>> 0)), ((fd >>> 0)), ((offset.$low >>> 0))); - r0 = _tuple[0]; - e1 = _tuple[2]; - xaddr = (r0); - if (!((e1 === 0))) { - err = errnoErr(e1); - } - return [xaddr, err]; - }; - ptrType$24.methods = [{prop: "toWireFormat", name: "toWireFormat", pkg: "syscall", typ: $funcType([], [sliceType], false)}]; - ptrType$25.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; - ptrType$12.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; - ptrType$26.methods = [{prop: "Mmap", name: "Mmap", pkg: "", typ: $funcType([$Int, $Int64, $Int, $Int, $Int], [sliceType, $error], false)}, {prop: "Munmap", name: "Munmap", pkg: "", typ: $funcType([sliceType], [$error], false)}]; - Errno.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$27.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; - ptrType$28.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; - ptrType$29.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]; - ptrType$30.methods = [{prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64, $Int64], false)}, {prop: "Nano", name: "Nano", pkg: "", typ: $funcType([], [$Int64], false)}]; - ptrType$20.methods = [{prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}]; - ptrType$32.methods = [{prop: "SetControllen", name: "SetControllen", pkg: "", typ: $funcType([$Int], [], false)}]; - RawConn.init([{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$1], [$error], false)}]); - NetlinkRouteRequest.init("", [{prop: "Header", name: "Header", embedded: false, exported: true, typ: NlMsghdr, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: RtGenmsg, tag: ""}]); - NetlinkMessage.init("", [{prop: "Header", name: "Header", embedded: false, exported: true, typ: NlMsghdr, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: sliceType, tag: ""}]); - NetlinkRouteAttr.init("", [{prop: "Attr", name: "Attr", embedded: false, exported: true, typ: RtAttr, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: sliceType, tag: ""}]); - SockaddrLinklayer.init("syscall", [{prop: "Protocol", name: "Protocol", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ifindex", name: "Ifindex", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Hatype", name: "Hatype", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pkttype", name: "Pkttype", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Halen", name: "Halen", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$1, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrLinklayer, tag: ""}]); - SockaddrNetlink.init("syscall", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Groups", name: "Groups", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrNetlink, tag: ""}]); - mmapper.init("syscall", [{prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "active", name: "active", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "mmap", name: "mmap", embedded: false, exported: false, typ: funcType$2, tag: ""}, {prop: "munmap", name: "munmap", embedded: false, exported: false, typ: funcType$3, tag: ""}]); - Sockaddr.init([{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]); - SockaddrInet4.init("syscall", [{prop: "Port", name: "Port", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrInet4, tag: ""}]); - SockaddrInet6.init("syscall", [{prop: "Port", name: "Port", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrInet6, tag: ""}]); - SockaddrUnix.init("syscall", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: RawSockaddrUnix, tag: ""}]); - Timespec.init("", [{prop: "Sec", name: "Sec", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Nsec", name: "Nsec", embedded: false, exported: true, typ: $Int64, tag: ""}]); - Stat_t.init("", [{prop: "Dev", name: "Dev", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Ino", name: "Ino", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Nlink", name: "Nlink", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Mode", name: "Mode", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Uid", name: "Uid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Gid", name: "Gid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "X__pad0", name: "X__pad0", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Rdev", name: "Rdev", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Size", name: "Size", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blksize", name: "Blksize", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blocks", name: "Blocks", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Atim", name: "Atim", embedded: false, exported: true, typ: Timespec, tag: ""}, {prop: "Mtim", name: "Mtim", embedded: false, exported: true, typ: Timespec, tag: ""}, {prop: "Ctim", name: "Ctim", embedded: false, exported: true, typ: Timespec, tag: ""}, {prop: "X__unused", name: "X__unused", embedded: false, exported: true, typ: arrayType$5, tag: ""}]); - RawSockaddrInet4.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Zero", name: "Zero", embedded: false, exported: true, typ: arrayType$1, tag: ""}]); - RawSockaddrInet6.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Flowinfo", name: "Flowinfo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "Scope_id", name: "Scope_id", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - RawSockaddrUnix.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: arrayType$8, tag: ""}]); - RawSockaddrLinklayer.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Protocol", name: "Protocol", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ifindex", name: "Ifindex", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hatype", name: "Hatype", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pkttype", name: "Pkttype", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Halen", name: "Halen", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$1, tag: ""}]); - RawSockaddrNetlink.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Groups", name: "Groups", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - RawSockaddr.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: arrayType$10, tag: ""}]); - RawSockaddrAny.init("", [{prop: "Addr", name: "Addr", embedded: false, exported: true, typ: RawSockaddr, tag: ""}, {prop: "Pad", name: "Pad", embedded: false, exported: true, typ: arrayType$11, tag: ""}]); - Linger.init("", [{prop: "Onoff", name: "Onoff", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Linger", name: "Linger", embedded: false, exported: true, typ: $Int32, tag: ""}]); - Iovec.init("", [{prop: "Base", name: "Base", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: $Uint64, tag: ""}]); - IPMreq.init("", [{prop: "Multiaddr", name: "Multiaddr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Interface", name: "Interface", embedded: false, exported: true, typ: arrayType$9, tag: ""}]); - IPMreqn.init("", [{prop: "Multiaddr", name: "Multiaddr", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Address", name: "Address", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Ifindex", name: "Ifindex", embedded: false, exported: true, typ: $Int32, tag: ""}]); - IPv6Mreq.init("", [{prop: "Multiaddr", name: "Multiaddr", embedded: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "Interface", name: "Interface", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - Msghdr.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Namelen", name: "Namelen", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Pad_cgo_0", name: "Pad_cgo_0", embedded: false, exported: true, typ: arrayType$9, tag: ""}, {prop: "Iov", name: "Iov", embedded: false, exported: true, typ: ptrType$20, tag: ""}, {prop: "Iovlen", name: "Iovlen", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Control", name: "Control", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Controllen", name: "Controllen", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Pad_cgo_1", name: "Pad_cgo_1", embedded: false, exported: true, typ: arrayType$9, tag: ""}]); - NlMsghdr.init("", [{prop: "Len", name: "Len", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Seq", name: "Seq", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - RtGenmsg.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint8, tag: ""}]); - RtAttr.init("", [{prop: "Len", name: "Len", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $Uint16, tag: ""}]); - IfInfomsg.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "X__ifi_pad", name: "X__ifi_pad", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Change", name: "Change", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - IfAddrmsg.init("", [{prop: "Family", name: "Family", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Prefixlen", name: "Prefixlen", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Scope", name: "Scope", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Uint32, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - lineBuffer = sliceType.nil; - syscallModule = null; - $pkg.ForkLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0); - $pkg.SocketDisableIPv6 = false; - ioSync = new $Int64(0, 0); - warningPrinted = false; - alreadyTriedToLoad = false; - minusOne = -1; - envs = runtime_envs(); - $pkg.Stdin = 0; - $pkg.Stdout = 1; - $pkg.Stderr = 2; - errEAGAIN = new Errno(11); - errEINVAL = new Errno(22); - errENOENT = new Errno(2); - errors = $toNativeArray($kindString, ["", "operation not permitted", "no such file or directory", "no such process", "interrupted system call", "input/output error", "no such device or address", "argument list too long", "exec format error", "bad file descriptor", "no child processes", "resource temporarily unavailable", "cannot allocate memory", "permission denied", "bad address", "block device required", "device or resource busy", "file exists", "invalid cross-device link", "no such device", "not a directory", "is a directory", "invalid argument", "too many open files in system", "too many open files", "inappropriate ioctl for device", "text file busy", "file too large", "no space left on device", "illegal seek", "read-only file system", "too many links", "broken pipe", "numerical argument out of domain", "numerical result out of range", "resource deadlock avoided", "file name too long", "no locks available", "function not implemented", "directory not empty", "too many levels of symbolic links", "", "no message of desired type", "identifier removed", "channel number out of range", "level 2 not synchronized", "level 3 halted", "level 3 reset", "link number out of range", "protocol driver not attached", "no CSI structure available", "level 2 halted", "invalid exchange", "invalid request descriptor", "exchange full", "no anode", "invalid request code", "invalid slot", "", "bad font file format", "device not a stream", "no data available", "timer expired", "out of streams resources", "machine is not on the network", "package not installed", "object is remote", "link has been severed", "advertise error", "srmount error", "communication error on send", "protocol error", "multihop attempted", "RFS specific error", "bad message", "value too large for defined data type", "name not unique on network", "file descriptor in bad state", "remote address changed", "can not access a needed shared library", "accessing a corrupted shared library", ".lib section in a.out corrupted", "attempting to link in too many shared libraries", "cannot exec a shared library directly", "invalid or incomplete multibyte or wide character", "interrupted system call should be restarted", "streams pipe error", "too many users", "socket operation on non-socket", "destination address required", "message too long", "protocol wrong type for socket", "protocol not available", "protocol not supported", "socket type not supported", "operation not supported", "protocol family not supported", "address family not supported by protocol", "address already in use", "cannot assign requested address", "network is down", "network is unreachable", "network dropped connection on reset", "software caused connection abort", "connection reset by peer", "no buffer space available", "transport endpoint is already connected", "transport endpoint is not connected", "cannot send after transport endpoint shutdown", "too many references: cannot splice", "connection timed out", "connection refused", "host is down", "no route to host", "operation already in progress", "operation now in progress", "stale NFS file handle", "structure needs cleaning", "not a XENIX named type file", "no XENIX semaphores available", "is a named type file", "remote I/O error", "disk quota exceeded", "no medium found", "wrong medium type", "operation canceled", "required key not available", "key has expired", "key has been revoked", "key was rejected by service", "owner died", "state not recoverable", "operation not possible due to RF-kill"]); - mapper = new mmapper.ptr(new sync.Mutex.ptr(0, 0), {}, mmap, munmap); - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/gopherjs/gopherjs/nosync"] = (function() { - var $pkg = {}, $init, Mutex, Once, Pool, ptrType$1, funcType$1, ptrType$4, sliceType, ptrType$5, funcType$2; - Mutex = $pkg.Mutex = $newType(0, $kindStruct, "nosync.Mutex", true, "github.com/gopherjs/gopherjs/nosync", true, function(locked_) { - this.$val = this; - if (arguments.length === 0) { - this.locked = false; - return; - } - this.locked = locked_; - }); - Once = $pkg.Once = $newType(0, $kindStruct, "nosync.Once", true, "github.com/gopherjs/gopherjs/nosync", true, function(doing_, done_) { - this.$val = this; - if (arguments.length === 0) { - this.doing = false; - this.done = false; - return; - } - this.doing = doing_; - this.done = done_; - }); - Pool = $pkg.Pool = $newType(0, $kindStruct, "nosync.Pool", true, "github.com/gopherjs/gopherjs/nosync", true, function(store_, New_) { - this.$val = this; - if (arguments.length === 0) { - this.store = sliceType.nil; - this.New = $throwNilPointerError; - return; - } - this.store = store_; - this.New = New_; - }); - ptrType$1 = $ptrType(Mutex); - funcType$1 = $funcType([], [], false); - ptrType$4 = $ptrType(Once); - sliceType = $sliceType($emptyInterface); - ptrType$5 = $ptrType(Pool); - funcType$2 = $funcType([], [$emptyInterface], false); - Mutex.ptr.prototype.Lock = function() { - var m; - m = this; - if (m.locked) { - $panic(new $String("nosync: mutex is already locked")); - } - m.locked = true; - }; - Mutex.prototype.Lock = function() { return this.$val.Lock(); }; - Mutex.ptr.prototype.Unlock = function() { - var m; - m = this; - if (!m.locked) { - $panic(new $String("nosync: unlock of unlocked mutex")); - } - m.locked = false; - }; - Mutex.prototype.Unlock = function() { return this.$val.Unlock(); }; - Once.ptr.prototype.Do = function(f) { - var f, o, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - o = [o]; - o[0] = this; - if (o[0].done) { - $s = -1; return; - } - if (o[0].doing) { - $panic(new $String("nosync: Do called within f")); - } - o[0].doing = true; - $deferred.push([(function(o) { return function() { - o[0].doing = false; - o[0].done = true; - }; })(o), []]); - $r = f(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Once.prototype.Do = function(f) { return this.$val.Do(f); }; - Pool.ptr.prototype.Get = function() { - var _r, p, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - /* */ if (p.store.$length === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (p.store.$length === 0) { */ case 1: - /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!(p.New === $throwNilPointerError)) { */ case 3: - _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 4: - $s = -1; return $ifaceNil; - /* } */ case 2: - x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); - $s = -1; return x$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - Pool.prototype.Get = function() { return this.$val.Get(); }; - Pool.ptr.prototype.Put = function(x) { - var p, x; - p = this; - if ($interfaceIsEqual(x, $ifaceNil)) { - return; - } - p.store = $append(p.store, x); - }; - Pool.prototype.Put = function(x) { return this.$val.Put(x); }; - ptrType$1.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; - ptrType$4.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$1], [], false)}]; - ptrType$5.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}]; - Mutex.init("github.com/gopherjs/gopherjs/nosync", [{prop: "locked", name: "locked", embedded: false, exported: false, typ: $Bool, tag: ""}]); - Once.init("github.com/gopherjs/gopherjs/nosync", [{prop: "doing", name: "doing", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: $Bool, tag: ""}]); - Pool.init("github.com/gopherjs/gopherjs/nosync", [{prop: "store", name: "store", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: funcType$2, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["time"] = (function() { - var $pkg = {}, $init, errors, js, nosync, runtime, syscall, runtimeTimer, ParseError, Timer, Ticker, Time, Month, Weekday, Duration, Location, zone, zoneTrans, sliceType, sliceType$1, ptrType, sliceType$2, arrayType, sliceType$3, arrayType$1, arrayType$2, ptrType$2, chanType, arrayType$3, funcType$1, ptrType$3, ptrType$4, ptrType$5, chanType$1, ptrType$6, ptrType$7, zoneSources, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, months, days, daysBefore, startNano, utcLoc, utcLoc$24ptr, localLoc, localLoc$24ptr, localOnce, errLocation, badData, x, init, initLocal, runtimeNano, now, startTimer, stopTimer, indexByte, startsWithLowerCase, nextStdChunk, match, lookup, appendInt, atoi, formatNano, quote, isDigit, getnum, cutspace, skip, Parse, parse, parseTimeZone, parseGMT, parseSignedOffset, parseNanoseconds, leadingInt, when, NewTimer, sendTime, NewTicker, absWeekday, absClock, fmtFrac, fmtInt, lessThanHalf, Until, absDate, daysIn, Now, unixTime, Unix, isLeap, norm, Date, div, FixedZone; - errors = $packages["errors"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; - runtime = $packages["runtime"]; - syscall = $packages["syscall"]; - runtimeTimer = $pkg.runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", true, "time", false, function(i_, when_, period_, f_, arg_, timeout_, active_) { - this.$val = this; - if (arguments.length === 0) { - this.i = 0; - this.when = new $Int64(0, 0); - this.period = new $Int64(0, 0); - this.f = $throwNilPointerError; - this.arg = $ifaceNil; - this.timeout = null; - this.active = false; - return; - } - this.i = i_; - this.when = when_; - this.period = period_; - this.f = f_; - this.arg = arg_; - this.timeout = timeout_; - this.active = active_; - }); - ParseError = $pkg.ParseError = $newType(0, $kindStruct, "time.ParseError", true, "time", true, function(Layout_, Value_, LayoutElem_, ValueElem_, Message_) { - this.$val = this; - if (arguments.length === 0) { - this.Layout = ""; - this.Value = ""; - this.LayoutElem = ""; - this.ValueElem = ""; - this.Message = ""; - return; - } - this.Layout = Layout_; - this.Value = Value_; - this.LayoutElem = LayoutElem_; - this.ValueElem = ValueElem_; - this.Message = Message_; - }); - Timer = $pkg.Timer = $newType(0, $kindStruct, "time.Timer", true, "time", true, function(C_, r_) { - this.$val = this; - if (arguments.length === 0) { - this.C = $chanNil; - this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false); - return; - } - this.C = C_; - this.r = r_; - }); - Ticker = $pkg.Ticker = $newType(0, $kindStruct, "time.Ticker", true, "time", true, function(C_, r_) { - this.$val = this; - if (arguments.length === 0) { - this.C = $chanNil; - this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false); - return; - } - this.C = C_; - this.r = r_; - }); - Time = $pkg.Time = $newType(0, $kindStruct, "time.Time", true, "time", true, function(wall_, ext_, loc_) { - this.$val = this; - if (arguments.length === 0) { - this.wall = new $Uint64(0, 0); - this.ext = new $Int64(0, 0); - this.loc = ptrType$2.nil; - return; - } - this.wall = wall_; - this.ext = ext_; - this.loc = loc_; - }); - Month = $pkg.Month = $newType(4, $kindInt, "time.Month", true, "time", true, null); - Weekday = $pkg.Weekday = $newType(4, $kindInt, "time.Weekday", true, "time", true, null); - Duration = $pkg.Duration = $newType(8, $kindInt64, "time.Duration", true, "time", true, null); - Location = $pkg.Location = $newType(0, $kindStruct, "time.Location", true, "time", true, function(name_, zone_, tx_, cacheStart_, cacheEnd_, cacheZone_) { - this.$val = this; - if (arguments.length === 0) { - this.name = ""; - this.zone = sliceType.nil; - this.tx = sliceType$1.nil; - this.cacheStart = new $Int64(0, 0); - this.cacheEnd = new $Int64(0, 0); - this.cacheZone = ptrType.nil; - return; - } - this.name = name_; - this.zone = zone_; - this.tx = tx_; - this.cacheStart = cacheStart_; - this.cacheEnd = cacheEnd_; - this.cacheZone = cacheZone_; - }); - zone = $pkg.zone = $newType(0, $kindStruct, "time.zone", true, "time", false, function(name_, offset_, isDST_) { - this.$val = this; - if (arguments.length === 0) { - this.name = ""; - this.offset = 0; - this.isDST = false; - return; - } - this.name = name_; - this.offset = offset_; - this.isDST = isDST_; - }); - zoneTrans = $pkg.zoneTrans = $newType(0, $kindStruct, "time.zoneTrans", true, "time", false, function(when_, index_, isstd_, isutc_) { - this.$val = this; - if (arguments.length === 0) { - this.when = new $Int64(0, 0); - this.index = 0; - this.isstd = false; - this.isutc = false; - return; - } - this.when = when_; - this.index = index_; - this.isstd = isstd_; - this.isutc = isutc_; - }); - sliceType = $sliceType(zone); - sliceType$1 = $sliceType(zoneTrans); - ptrType = $ptrType(zone); - sliceType$2 = $sliceType($String); - arrayType = $arrayType($Uint8, 20); - sliceType$3 = $sliceType($Uint8); - arrayType$1 = $arrayType($Uint8, 9); - arrayType$2 = $arrayType($Uint8, 64); - ptrType$2 = $ptrType(Location); - chanType = $chanType(Time, false, false); - arrayType$3 = $arrayType($Uint8, 32); - funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false); - ptrType$3 = $ptrType(js.Object); - ptrType$4 = $ptrType(ParseError); - ptrType$5 = $ptrType(Timer); - chanType$1 = $chanType(Time, false, true); - ptrType$6 = $ptrType(Ticker); - ptrType$7 = $ptrType(Time); - init = function() { - $unused(Unix(new $Int64(0, 0), new $Int64(0, 0))); - }; - initLocal = function() { - var d, i, j, s; - d = new ($global.Date)(); - s = $internalize(d, $String); - i = indexByte(s, 40); - j = indexByte(s, 41); - if ((i === -1) || (j === -1)) { - localLoc.name = "UTC"; - return; - } - localLoc.name = $substring(s, (i + 1 >> 0), j); - localLoc.zone = new sliceType([new zone.ptr(localLoc.name, $imul(($parseInt(d.getTimezoneOffset()) >> 0), -60), false)]); - }; - runtimeNano = function() { - return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000)); - }; - now = function() { - var _tmp, _tmp$1, _tmp$2, mono, n, nsec, sec, x$1; - sec = new $Int64(0, 0); - nsec = 0; - mono = new $Int64(0, 0); - n = runtimeNano(); - _tmp = $div64(n, new $Int64(0, 1000000000), false); - _tmp$1 = (((x$1 = $div64(n, new $Int64(0, 1000000000), true), x$1.$low + ((x$1.$high >> 31) * 4294967296)) >> 0)); - _tmp$2 = n; - sec = _tmp; - nsec = _tmp$1; - mono = _tmp$2; - return [sec, nsec, mono]; - }; - startTimer = function(t) { - var diff, t, x$1, x$2; - t.active = true; - diff = $div64(((x$1 = t.when, x$2 = runtimeNano(), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low))), new $Int64(0, 1000000), false); - if ((diff.$high > 0 || (diff.$high === 0 && diff.$low > 2147483647))) { - return; - } - if ((diff.$high < 0 || (diff.$high === 0 && diff.$low < 0))) { - diff = new $Int64(0, 0); - } - t.timeout = $setTimeout((function() { - var x$3, x$4, x$5; - t.active = false; - if (!((x$3 = t.period, (x$3.$high === 0 && x$3.$low === 0)))) { - t.when = (x$4 = t.when, x$5 = t.period, new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); - startTimer(t); - } - $go(t.f, [t.arg, 0]); - }), $externalize(new $Int64(diff.$high + 0, diff.$low + 1), $Int64)); - }; - stopTimer = function(t) { - var t, wasActive; - $global.clearTimeout(t.timeout); - wasActive = t.active; - t.active = false; - return wasActive; - }; - indexByte = function(s, c) { - var c, s; - return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0; - }; - startsWithLowerCase = function(str) { - var c, str; - if (str.length === 0) { - return false; - } - c = str.charCodeAt(0); - return 97 <= c && c <= 122; - }; - nextStdChunk = function(layout) { - var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$6, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$7, _tmp$70, _tmp$71, _tmp$72, _tmp$73, _tmp$74, _tmp$75, _tmp$76, _tmp$77, _tmp$78, _tmp$79, _tmp$8, _tmp$80, _tmp$81, _tmp$82, _tmp$83, _tmp$84, _tmp$85, _tmp$86, _tmp$9, c, ch, i, j, layout, prefix, std, std$1, suffix, x$1; - prefix = ""; - std = 0; - suffix = ""; - i = 0; - while (true) { - if (!(i < layout.length)) { break; } - c = ((layout.charCodeAt(i) >> 0)); - _1 = c; - if (_1 === (74)) { - if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Jan") { - if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "January") { - _tmp = $substring(layout, 0, i); - _tmp$1 = 257; - _tmp$2 = $substring(layout, (i + 7 >> 0)); - prefix = _tmp; - std = _tmp$1; - suffix = _tmp$2; - return [prefix, std, suffix]; - } - if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) { - _tmp$3 = $substring(layout, 0, i); - _tmp$4 = 258; - _tmp$5 = $substring(layout, (i + 3 >> 0)); - prefix = _tmp$3; - std = _tmp$4; - suffix = _tmp$5; - return [prefix, std, suffix]; - } - } - } else if (_1 === (77)) { - if (layout.length >= (i + 3 >> 0)) { - if ($substring(layout, i, (i + 3 >> 0)) === "Mon") { - if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Monday") { - _tmp$6 = $substring(layout, 0, i); - _tmp$7 = 261; - _tmp$8 = $substring(layout, (i + 6 >> 0)); - prefix = _tmp$6; - std = _tmp$7; - suffix = _tmp$8; - return [prefix, std, suffix]; - } - if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) { - _tmp$9 = $substring(layout, 0, i); - _tmp$10 = 262; - _tmp$11 = $substring(layout, (i + 3 >> 0)); - prefix = _tmp$9; - std = _tmp$10; - suffix = _tmp$11; - return [prefix, std, suffix]; - } - } - if ($substring(layout, i, (i + 3 >> 0)) === "MST") { - _tmp$12 = $substring(layout, 0, i); - _tmp$13 = 21; - _tmp$14 = $substring(layout, (i + 3 >> 0)); - prefix = _tmp$12; - std = _tmp$13; - suffix = _tmp$14; - return [prefix, std, suffix]; - } - } - } else if (_1 === (48)) { - if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) { - _tmp$15 = $substring(layout, 0, i); - _tmp$16 = (x$1 = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x$1 < 0 || x$1 >= std0x.length) ? ($throwRuntimeError("index out of range"), undefined) : std0x[x$1])); - _tmp$17 = $substring(layout, (i + 2 >> 0)); - prefix = _tmp$15; - std = _tmp$16; - suffix = _tmp$17; - return [prefix, std, suffix]; - } - } else if (_1 === (49)) { - if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) { - _tmp$18 = $substring(layout, 0, i); - _tmp$19 = 522; - _tmp$20 = $substring(layout, (i + 2 >> 0)); - prefix = _tmp$18; - std = _tmp$19; - suffix = _tmp$20; - return [prefix, std, suffix]; - } - _tmp$21 = $substring(layout, 0, i); - _tmp$22 = 259; - _tmp$23 = $substring(layout, (i + 1 >> 0)); - prefix = _tmp$21; - std = _tmp$22; - suffix = _tmp$23; - return [prefix, std, suffix]; - } else if (_1 === (50)) { - if (layout.length >= (i + 4 >> 0) && $substring(layout, i, (i + 4 >> 0)) === "2006") { - _tmp$24 = $substring(layout, 0, i); - _tmp$25 = 273; - _tmp$26 = $substring(layout, (i + 4 >> 0)); - prefix = _tmp$24; - std = _tmp$25; - suffix = _tmp$26; - return [prefix, std, suffix]; - } - _tmp$27 = $substring(layout, 0, i); - _tmp$28 = 263; - _tmp$29 = $substring(layout, (i + 1 >> 0)); - prefix = _tmp$27; - std = _tmp$28; - suffix = _tmp$29; - return [prefix, std, suffix]; - } else if (_1 === (95)) { - if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) { - if (layout.length >= (i + 5 >> 0) && $substring(layout, (i + 1 >> 0), (i + 5 >> 0)) === "2006") { - _tmp$30 = $substring(layout, 0, (i + 1 >> 0)); - _tmp$31 = 273; - _tmp$32 = $substring(layout, (i + 5 >> 0)); - prefix = _tmp$30; - std = _tmp$31; - suffix = _tmp$32; - return [prefix, std, suffix]; - } - _tmp$33 = $substring(layout, 0, i); - _tmp$34 = 264; - _tmp$35 = $substring(layout, (i + 2 >> 0)); - prefix = _tmp$33; - std = _tmp$34; - suffix = _tmp$35; - return [prefix, std, suffix]; - } - } else if (_1 === (51)) { - _tmp$36 = $substring(layout, 0, i); - _tmp$37 = 523; - _tmp$38 = $substring(layout, (i + 1 >> 0)); - prefix = _tmp$36; - std = _tmp$37; - suffix = _tmp$38; - return [prefix, std, suffix]; - } else if (_1 === (52)) { - _tmp$39 = $substring(layout, 0, i); - _tmp$40 = 525; - _tmp$41 = $substring(layout, (i + 1 >> 0)); - prefix = _tmp$39; - std = _tmp$40; - suffix = _tmp$41; - return [prefix, std, suffix]; - } else if (_1 === (53)) { - _tmp$42 = $substring(layout, 0, i); - _tmp$43 = 527; - _tmp$44 = $substring(layout, (i + 1 >> 0)); - prefix = _tmp$42; - std = _tmp$43; - suffix = _tmp$44; - return [prefix, std, suffix]; - } else if (_1 === (80)) { - if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) { - _tmp$45 = $substring(layout, 0, i); - _tmp$46 = 531; - _tmp$47 = $substring(layout, (i + 2 >> 0)); - prefix = _tmp$45; - std = _tmp$46; - suffix = _tmp$47; - return [prefix, std, suffix]; - } - } else if (_1 === (112)) { - if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) { - _tmp$48 = $substring(layout, 0, i); - _tmp$49 = 532; - _tmp$50 = $substring(layout, (i + 2 >> 0)); - prefix = _tmp$48; - std = _tmp$49; - suffix = _tmp$50; - return [prefix, std, suffix]; - } - } else if (_1 === (45)) { - if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "-070000") { - _tmp$51 = $substring(layout, 0, i); - _tmp$52 = 28; - _tmp$53 = $substring(layout, (i + 7 >> 0)); - prefix = _tmp$51; - std = _tmp$52; - suffix = _tmp$53; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "-07:00:00") { - _tmp$54 = $substring(layout, 0, i); - _tmp$55 = 31; - _tmp$56 = $substring(layout, (i + 9 >> 0)); - prefix = _tmp$54; - std = _tmp$55; - suffix = _tmp$56; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "-0700") { - _tmp$57 = $substring(layout, 0, i); - _tmp$58 = 27; - _tmp$59 = $substring(layout, (i + 5 >> 0)); - prefix = _tmp$57; - std = _tmp$58; - suffix = _tmp$59; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "-07:00") { - _tmp$60 = $substring(layout, 0, i); - _tmp$61 = 30; - _tmp$62 = $substring(layout, (i + 6 >> 0)); - prefix = _tmp$60; - std = _tmp$61; - suffix = _tmp$62; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "-07") { - _tmp$63 = $substring(layout, 0, i); - _tmp$64 = 29; - _tmp$65 = $substring(layout, (i + 3 >> 0)); - prefix = _tmp$63; - std = _tmp$64; - suffix = _tmp$65; - return [prefix, std, suffix]; - } - } else if (_1 === (90)) { - if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "Z070000") { - _tmp$66 = $substring(layout, 0, i); - _tmp$67 = 23; - _tmp$68 = $substring(layout, (i + 7 >> 0)); - prefix = _tmp$66; - std = _tmp$67; - suffix = _tmp$68; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "Z07:00:00") { - _tmp$69 = $substring(layout, 0, i); - _tmp$70 = 26; - _tmp$71 = $substring(layout, (i + 9 >> 0)); - prefix = _tmp$69; - std = _tmp$70; - suffix = _tmp$71; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "Z0700") { - _tmp$72 = $substring(layout, 0, i); - _tmp$73 = 22; - _tmp$74 = $substring(layout, (i + 5 >> 0)); - prefix = _tmp$72; - std = _tmp$73; - suffix = _tmp$74; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Z07:00") { - _tmp$75 = $substring(layout, 0, i); - _tmp$76 = 25; - _tmp$77 = $substring(layout, (i + 6 >> 0)); - prefix = _tmp$75; - std = _tmp$76; - suffix = _tmp$77; - return [prefix, std, suffix]; - } - if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Z07") { - _tmp$78 = $substring(layout, 0, i); - _tmp$79 = 24; - _tmp$80 = $substring(layout, (i + 3 >> 0)); - prefix = _tmp$78; - std = _tmp$79; - suffix = _tmp$80; - return [prefix, std, suffix]; - } - } else if (_1 === (46)) { - if ((i + 1 >> 0) < layout.length && ((layout.charCodeAt((i + 1 >> 0)) === 48) || (layout.charCodeAt((i + 1 >> 0)) === 57))) { - ch = layout.charCodeAt((i + 1 >> 0)); - j = i + 1 >> 0; - while (true) { - if (!(j < layout.length && (layout.charCodeAt(j) === ch))) { break; } - j = j + (1) >> 0; - } - if (!isDigit(layout, j)) { - std$1 = 32; - if (layout.charCodeAt((i + 1 >> 0)) === 57) { - std$1 = 33; - } - std$1 = std$1 | ((((j - ((i + 1 >> 0)) >> 0)) << 16 >> 0)); - _tmp$81 = $substring(layout, 0, i); - _tmp$82 = std$1; - _tmp$83 = $substring(layout, j); - prefix = _tmp$81; - std = _tmp$82; - suffix = _tmp$83; - return [prefix, std, suffix]; - } - } - } - i = i + (1) >> 0; - } - _tmp$84 = layout; - _tmp$85 = 0; - _tmp$86 = ""; - prefix = _tmp$84; - std = _tmp$85; - suffix = _tmp$86; - return [prefix, std, suffix]; - }; - match = function(s1, s2) { - var c1, c2, i, s1, s2; - i = 0; - while (true) { - if (!(i < s1.length)) { break; } - c1 = s1.charCodeAt(i); - c2 = s2.charCodeAt(i); - if (!((c1 === c2))) { - c1 = (c1 | (32)) >>> 0; - c2 = (c2 | (32)) >>> 0; - if (!((c1 === c2)) || c1 < 97 || c1 > 122) { - return false; - } - } - i = i + (1) >> 0; - } - return true; - }; - lookup = function(tab, val) { - var _i, _ref, i, tab, v, val; - _ref = tab; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (val.length >= v.length && match($substring(val, 0, v.length), v)) { - return [i, $substring(val, v.length), $ifaceNil]; - } - _i++; - } - return [-1, val, errBad]; - }; - appendInt = function(b, x$1, width) { - var _q, b, buf, i, q, u, w, width, x$1; - u = ((x$1 >>> 0)); - if (x$1 < 0) { - b = $append(b, 45); - u = ((-x$1 >>> 0)); - } - buf = arrayType.zero(); - i = 20; - while (true) { - if (!(u >= 10)) { break; } - i = i - (1) >> 0; - q = (_q = u / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + u >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24))); - u = q; - } - i = i - (1) >> 0; - ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + u >>> 0) << 24 >>> 24))); - w = 20 - i >> 0; - while (true) { - if (!(w < width)) { break; } - b = $append(b, 48); - w = w + (1) >> 0; - } - return $appendSlice(b, $subslice(new sliceType$3(buf), i)); - }; - atoi = function(s) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, neg, q, rem, s, x$1; - x$1 = 0; - err = $ifaceNil; - neg = false; - if (!(s === "") && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) { - neg = s.charCodeAt(0) === 45; - s = $substring(s, 1); - } - _tuple = leadingInt(s); - q = _tuple[0]; - rem = _tuple[1]; - err = _tuple[2]; - x$1 = (((q.$low + ((q.$high >> 31) * 4294967296)) >> 0)); - if (!($interfaceIsEqual(err, $ifaceNil)) || !(rem === "")) { - _tmp = 0; - _tmp$1 = atoiError; - x$1 = _tmp; - err = _tmp$1; - return [x$1, err]; - } - if (neg) { - x$1 = -x$1; - } - _tmp$2 = x$1; - _tmp$3 = $ifaceNil; - x$1 = _tmp$2; - err = _tmp$3; - return [x$1, err]; - }; - formatNano = function(b, nanosec, n, trim) { - var _q, _r, b, buf, n, nanosec, start, trim, u, x$1; - u = nanosec; - buf = arrayType$1.zero(); - start = 9; - while (true) { - if (!(start > 0)) { break; } - start = start - (1) >> 0; - ((start < 0 || start >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[start] = ((((_r = u % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24))); - u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - } - if (n > 9) { - n = 9; - } - if (trim) { - while (true) { - if (!(n > 0 && ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x$1])) === 48))) { break; } - n = n - (1) >> 0; - } - if (n === 0) { - return b; - } - } - b = $append(b, 46); - return $appendSlice(b, $subslice(new sliceType$3(buf), 0, n)); - }; - Time.ptr.prototype.String = function() { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, m0, m1, m2, s, sign, t, wid, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; buf = $f.buf; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; s = $f.s; sign = $f.sign; t = $f.t; wid = $f.wid; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).Format("2006-01-02 15:04:05.999999999 -0700 MST"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - s = _r; - if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - m2 = ((x$3 = t.ext, new $Uint64(x$3.$high, x$3.$low))); - sign = 43; - if ((x$4 = t.ext, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 0)))) { - sign = 45; - m2 = new $Uint64(-m2.$high, -m2.$low); - } - _tmp = $div64(m2, new $Uint64(0, 1000000000), false); - _tmp$1 = $div64(m2, new $Uint64(0, 1000000000), true); - m1 = _tmp; - m2 = _tmp$1; - _tmp$2 = $div64(m1, new $Uint64(0, 1000000000), false); - _tmp$3 = $div64(m1, new $Uint64(0, 1000000000), true); - m0 = _tmp$2; - m1 = _tmp$3; - buf = sliceType$3.nil; - buf = $appendSlice(buf, " m="); - buf = $append(buf, sign); - wid = 0; - if (!((m0.$high === 0 && m0.$low === 0))) { - buf = appendInt(buf, ((m0.$low >> 0)), 0); - wid = 9; - } - buf = appendInt(buf, ((m1.$low >> 0)), wid); - buf = $append(buf, 46); - buf = appendInt(buf, ((m2.$low >> 0)), 9); - s = s + (($bytesToString(buf))); - } - $s = -1; return s; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.String }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.buf = buf; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.s = s; $f.sign = sign; $f.t = t; $f.wid = wid; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.String = function() { return this.$val.String(); }; - Time.ptr.prototype.Format = function(layout) { - var _r, b, buf, layout, max, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; buf = $f.buf; layout = $f.layout; max = $f.max; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - b = sliceType$3.nil; - max = layout.length + 10 >> 0; - if (max < 64) { - buf = arrayType$2.zero(); - b = $subslice(new sliceType$3(buf), 0, 0); - } else { - b = $makeSlice(sliceType$3, 0, max); - } - _r = $clone(t, Time).AppendFormat(b, layout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - b = _r; - $s = -1; return ($bytesToString(b)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Format }; } $f._r = _r; $f.b = b; $f.buf = buf; $f.layout = layout; $f.max = max; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Format = function(layout) { return this.$val.Format(layout); }; - Time.ptr.prototype.AppendFormat = function(b, layout) { - var _1, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, _tuple$3, abs, absoffset, b, day, hour, hr, hr$1, layout, m, min, month, name, offset, prefix, s, sec, std, suffix, t, y, year, zone$1, zone$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; abs = $f.abs; absoffset = $f.absoffset; b = $f.b; day = $f.day; hour = $f.hour; hr = $f.hr; hr$1 = $f.hr$1; layout = $f.layout; m = $f.m; min = $f.min; month = $f.month; name = $f.name; offset = $f.offset; prefix = $f.prefix; s = $f.s; sec = $f.sec; std = $f.std; suffix = $f.suffix; t = $f.t; y = $f.y; year = $f.year; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - name = _tuple[0]; - offset = _tuple[1]; - abs = _tuple[2]; - year = -1; - month = 0; - day = 0; - hour = -1; - min = 0; - sec = 0; - while (true) { - if (!(!(layout === ""))) { break; } - _tuple$1 = nextStdChunk(layout); - prefix = _tuple$1[0]; - std = _tuple$1[1]; - suffix = _tuple$1[2]; - if (!(prefix === "")) { - b = $appendSlice(b, prefix); - } - if (std === 0) { - break; - } - layout = suffix; - if (year < 0 && !(((std & 256) === 0))) { - _tuple$2 = absDate(abs, true); - year = _tuple$2[0]; - month = _tuple$2[1]; - day = _tuple$2[2]; - } - if (hour < 0 && !(((std & 512) === 0))) { - _tuple$3 = absClock(abs); - hour = _tuple$3[0]; - min = _tuple$3[1]; - sec = _tuple$3[2]; - } - switch (0) { default: - _1 = std & 65535; - if (_1 === (274)) { - y = year; - if (y < 0) { - y = -y; - } - b = appendInt(b, (_r$1 = y % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")), 2); - } else if (_1 === (273)) { - b = appendInt(b, year, 4); - } else if (_1 === (258)) { - b = $appendSlice(b, $substring(new Month(month).String(), 0, 3)); - } else if (_1 === (257)) { - m = new Month(month).String(); - b = $appendSlice(b, m); - } else if (_1 === (259)) { - b = appendInt(b, ((month >> 0)), 0); - } else if (_1 === (260)) { - b = appendInt(b, ((month >> 0)), 2); - } else if (_1 === (262)) { - b = $appendSlice(b, $substring(new Weekday(absWeekday(abs)).String(), 0, 3)); - } else if (_1 === (261)) { - s = new Weekday(absWeekday(abs)).String(); - b = $appendSlice(b, s); - } else if (_1 === (263)) { - b = appendInt(b, day, 0); - } else if (_1 === (264)) { - if (day < 10) { - b = $append(b, 32); - } - b = appendInt(b, day, 0); - } else if (_1 === (265)) { - b = appendInt(b, day, 2); - } else if (_1 === (522)) { - b = appendInt(b, hour, 2); - } else if (_1 === (523)) { - hr = (_r$2 = hour % 12, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")); - if (hr === 0) { - hr = 12; - } - b = appendInt(b, hr, 0); - } else if (_1 === (524)) { - hr$1 = (_r$3 = hour % 12, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")); - if (hr$1 === 0) { - hr$1 = 12; - } - b = appendInt(b, hr$1, 2); - } else if (_1 === (525)) { - b = appendInt(b, min, 0); - } else if (_1 === (526)) { - b = appendInt(b, min, 2); - } else if (_1 === (527)) { - b = appendInt(b, sec, 0); - } else if (_1 === (528)) { - b = appendInt(b, sec, 2); - } else if (_1 === (531)) { - if (hour >= 12) { - b = $appendSlice(b, "PM"); - } else { - b = $appendSlice(b, "AM"); - } - } else if (_1 === (532)) { - if (hour >= 12) { - b = $appendSlice(b, "pm"); - } else { - b = $appendSlice(b, "am"); - } - } else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (30)) || (_1 === (28)) || (_1 === (29)) || (_1 === (31))) { - if ((offset === 0) && ((std === 22) || (std === 25) || (std === 23) || (std === 24) || (std === 26))) { - b = $append(b, 90); - break; - } - zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - absoffset = offset; - if (zone$1 < 0) { - b = $append(b, 45); - zone$1 = -zone$1; - absoffset = -absoffset; - } else { - b = $append(b, 43); - } - b = appendInt(b, (_q$1 = zone$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2); - if ((std === 25) || (std === 30) || (std === 26) || (std === 31)) { - b = $append(b, 58); - } - if (!((std === 29)) && !((std === 24))) { - b = appendInt(b, (_r$4 = zone$1 % 60, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")), 2); - } - if ((std === 23) || (std === 28) || (std === 31) || (std === 26)) { - if ((std === 31) || (std === 26)) { - b = $append(b, 58); - } - b = appendInt(b, (_r$5 = absoffset % 60, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")), 2); - } - } else if (_1 === (21)) { - if (!(name === "")) { - b = $appendSlice(b, name); - break; - } - zone$2 = (_q$2 = offset / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")); - if (zone$2 < 0) { - b = $append(b, 45); - zone$2 = -zone$2; - } else { - b = $append(b, 43); - } - b = appendInt(b, (_q$3 = zone$2 / 60, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")), 2); - b = appendInt(b, (_r$6 = zone$2 % 60, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")), 2); - } else if ((_1 === (32)) || (_1 === (33))) { - b = formatNano(b, (($clone(t, Time).Nanosecond() >>> 0)), std >> 16 >> 0, (std & 65535) === 33); - } - } - } - $s = -1; return b; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AppendFormat }; } $f._1 = _1; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.abs = abs; $f.absoffset = absoffset; $f.b = b; $f.day = day; $f.hour = hour; $f.hr = hr; $f.hr$1 = hr$1; $f.layout = layout; $f.m = m; $f.min = min; $f.month = month; $f.name = name; $f.offset = offset; $f.prefix = prefix; $f.s = s; $f.sec = sec; $f.std = std; $f.suffix = suffix; $f.t = t; $f.y = y; $f.year = year; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.AppendFormat = function(b, layout) { return this.$val.AppendFormat(b, layout); }; - quote = function(s) { - var s; - return "\"" + s + "\""; - }; - ParseError.ptr.prototype.Error = function() { - var e; - e = this; - if (e.Message === "") { - return "parsing time " + quote(e.Value) + " as " + quote(e.Layout) + ": cannot parse " + quote(e.ValueElem) + " as " + quote(e.LayoutElem); - } - return "parsing time " + quote(e.Value) + e.Message; - }; - ParseError.prototype.Error = function() { return this.$val.Error(); }; - isDigit = function(s, i) { - var c, i, s; - if (s.length <= i) { - return false; - } - c = s.charCodeAt(i); - return 48 <= c && c <= 57; - }; - getnum = function(s, fixed) { - var fixed, s; - if (!isDigit(s, 0)) { - return [0, s, errBad]; - } - if (!isDigit(s, 1)) { - if (fixed) { - return [0, s, errBad]; - } - return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), $substring(s, 1), $ifaceNil]; - } - return [($imul((((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), 10)) + (((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0)) >> 0, $substring(s, 2), $ifaceNil]; - }; - cutspace = function(s) { - var s; - while (true) { - if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; } - s = $substring(s, 1); - } - return s; - }; - skip = function(value, prefix) { - var prefix, value; - while (true) { - if (!(prefix.length > 0)) { break; } - if (prefix.charCodeAt(0) === 32) { - if (value.length > 0 && !((value.charCodeAt(0) === 32))) { - return [value, errBad]; - } - prefix = cutspace(prefix); - value = cutspace(value); - continue; - } - if ((value.length === 0) || !((value.charCodeAt(0) === prefix.charCodeAt(0)))) { - return [value, errBad]; - } - prefix = $substring(prefix, 1); - value = $substring(value, 1); - } - return [value, $ifaceNil]; - }; - Parse = function(layout, value) { - var _r, layout, value, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; layout = $f.layout; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = parse(layout, value, $pkg.UTC, $pkg.Local); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._r = _r; $f.layout = layout; $f.value = value; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Parse = Parse; - parse = function(layout, value, defaultLocation, local) { - var _1, _2, _3, _4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, alayout, amSet, avalue, day, defaultLocation, err, hour, hour$1, hr, i, layout, local, min, min$1, mm, month, n, n$1, name, ndigit, nsec, offset, offset$1, ok, ok$1, p, pmSet, prefix, rangeErrString, sec, seconds, sign, ss, std, stdstr, suffix, t, t$1, value, x$1, x$2, year, z, zoneName, zoneOffset, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$39 = $f._tmp$39; _tmp$4 = $f._tmp$4; _tmp$40 = $f._tmp$40; _tmp$41 = $f._tmp$41; _tmp$42 = $f._tmp$42; _tmp$43 = $f._tmp$43; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$21 = $f._tuple$21; _tuple$22 = $f._tuple$22; _tuple$23 = $f._tuple$23; _tuple$24 = $f._tuple$24; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; alayout = $f.alayout; amSet = $f.amSet; avalue = $f.avalue; day = $f.day; defaultLocation = $f.defaultLocation; err = $f.err; hour = $f.hour; hour$1 = $f.hour$1; hr = $f.hr; i = $f.i; layout = $f.layout; local = $f.local; min = $f.min; min$1 = $f.min$1; mm = $f.mm; month = $f.month; n = $f.n; n$1 = $f.n$1; name = $f.name; ndigit = $f.ndigit; nsec = $f.nsec; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; pmSet = $f.pmSet; prefix = $f.prefix; rangeErrString = $f.rangeErrString; sec = $f.sec; seconds = $f.seconds; sign = $f.sign; ss = $f.ss; std = $f.std; stdstr = $f.stdstr; suffix = $f.suffix; t = $f.t; t$1 = $f.t$1; value = $f.value; x$1 = $f.x$1; x$2 = $f.x$2; year = $f.year; z = $f.z; zoneName = $f.zoneName; zoneOffset = $f.zoneOffset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tmp = layout; - _tmp$1 = value; - alayout = _tmp; - avalue = _tmp$1; - rangeErrString = ""; - amSet = false; - pmSet = false; - year = 0; - month = 1; - day = 1; - hour = 0; - min = 0; - sec = 0; - nsec = 0; - z = ptrType$2.nil; - zoneOffset = -1; - zoneName = ""; - while (true) { - err = $ifaceNil; - _tuple = nextStdChunk(layout); - prefix = _tuple[0]; - std = _tuple[1]; - suffix = _tuple[2]; - stdstr = $substring(layout, prefix.length, (layout.length - suffix.length >> 0)); - _tuple$1 = skip(value, prefix); - value = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, prefix, value, "")]; - } - if (std === 0) { - if (!((value.length === 0))) { - $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, "", value, ": extra text: " + value)]; - } - break; - } - layout = suffix; - p = ""; - switch (0) { default: - _1 = std & 65535; - if (_1 === (274)) { - if (value.length < 2) { - err = errBad; - break; - } - _tmp$2 = $substring(value, 0, 2); - _tmp$3 = $substring(value, 2); - p = _tmp$2; - value = _tmp$3; - _tuple$2 = atoi(p); - year = _tuple$2[0]; - err = _tuple$2[1]; - if (year >= 69) { - year = year + (1900) >> 0; - } else { - year = year + (2000) >> 0; - } - } else if (_1 === (273)) { - if (value.length < 4 || !isDigit(value, 0)) { - err = errBad; - break; - } - _tmp$4 = $substring(value, 0, 4); - _tmp$5 = $substring(value, 4); - p = _tmp$4; - value = _tmp$5; - _tuple$3 = atoi(p); - year = _tuple$3[0]; - err = _tuple$3[1]; - } else if (_1 === (258)) { - _tuple$4 = lookup(shortMonthNames, value); - month = _tuple$4[0]; - value = _tuple$4[1]; - err = _tuple$4[2]; - month = month + (1) >> 0; - } else if (_1 === (257)) { - _tuple$5 = lookup(longMonthNames, value); - month = _tuple$5[0]; - value = _tuple$5[1]; - err = _tuple$5[2]; - month = month + (1) >> 0; - } else if ((_1 === (259)) || (_1 === (260))) { - _tuple$6 = getnum(value, std === 260); - month = _tuple$6[0]; - value = _tuple$6[1]; - err = _tuple$6[2]; - if (month <= 0 || 12 < month) { - rangeErrString = "month"; - } - } else if (_1 === (262)) { - _tuple$7 = lookup(shortDayNames, value); - value = _tuple$7[1]; - err = _tuple$7[2]; - } else if (_1 === (261)) { - _tuple$8 = lookup(longDayNames, value); - value = _tuple$8[1]; - err = _tuple$8[2]; - } else if ((_1 === (263)) || (_1 === (264)) || (_1 === (265))) { - if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) { - value = $substring(value, 1); - } - _tuple$9 = getnum(value, std === 265); - day = _tuple$9[0]; - value = _tuple$9[1]; - err = _tuple$9[2]; - if (day < 0) { - rangeErrString = "day"; - } - } else if (_1 === (522)) { - _tuple$10 = getnum(value, false); - hour = _tuple$10[0]; - value = _tuple$10[1]; - err = _tuple$10[2]; - if (hour < 0 || 24 <= hour) { - rangeErrString = "hour"; - } - } else if ((_1 === (523)) || (_1 === (524))) { - _tuple$11 = getnum(value, std === 524); - hour = _tuple$11[0]; - value = _tuple$11[1]; - err = _tuple$11[2]; - if (hour < 0 || 12 < hour) { - rangeErrString = "hour"; - } - } else if ((_1 === (525)) || (_1 === (526))) { - _tuple$12 = getnum(value, std === 526); - min = _tuple$12[0]; - value = _tuple$12[1]; - err = _tuple$12[2]; - if (min < 0 || 60 <= min) { - rangeErrString = "minute"; - } - } else if ((_1 === (527)) || (_1 === (528))) { - _tuple$13 = getnum(value, std === 528); - sec = _tuple$13[0]; - value = _tuple$13[1]; - err = _tuple$13[2]; - if (sec < 0 || 60 <= sec) { - rangeErrString = "second"; - break; - } - if (value.length >= 2 && (value.charCodeAt(0) === 46) && isDigit(value, 1)) { - _tuple$14 = nextStdChunk(layout); - std = _tuple$14[1]; - std = std & (65535); - if ((std === 32) || (std === 33)) { - break; - } - n = 2; - while (true) { - if (!(n < value.length && isDigit(value, n))) { break; } - n = n + (1) >> 0; - } - _tuple$15 = parseNanoseconds(value, n); - nsec = _tuple$15[0]; - rangeErrString = _tuple$15[1]; - err = _tuple$15[2]; - value = $substring(value, n); - } - } else if (_1 === (531)) { - if (value.length < 2) { - err = errBad; - break; - } - _tmp$6 = $substring(value, 0, 2); - _tmp$7 = $substring(value, 2); - p = _tmp$6; - value = _tmp$7; - _2 = p; - if (_2 === ("PM")) { - pmSet = true; - } else if (_2 === ("AM")) { - amSet = true; - } else { - err = errBad; - } - } else if (_1 === (532)) { - if (value.length < 2) { - err = errBad; - break; - } - _tmp$8 = $substring(value, 0, 2); - _tmp$9 = $substring(value, 2); - p = _tmp$8; - value = _tmp$9; - _3 = p; - if (_3 === ("pm")) { - pmSet = true; - } else if (_3 === ("am")) { - amSet = true; - } else { - err = errBad; - } - } else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (29)) || (_1 === (30)) || (_1 === (28)) || (_1 === (31))) { - if (((std === 22) || (std === 24) || (std === 25)) && value.length >= 1 && (value.charCodeAt(0) === 90)) { - value = $substring(value, 1); - z = $pkg.UTC; - break; - } - _tmp$10 = ""; - _tmp$11 = ""; - _tmp$12 = ""; - _tmp$13 = ""; - sign = _tmp$10; - hour$1 = _tmp$11; - min$1 = _tmp$12; - seconds = _tmp$13; - if ((std === 25) || (std === 30)) { - if (value.length < 6) { - err = errBad; - break; - } - if (!((value.charCodeAt(3) === 58))) { - err = errBad; - break; - } - _tmp$14 = $substring(value, 0, 1); - _tmp$15 = $substring(value, 1, 3); - _tmp$16 = $substring(value, 4, 6); - _tmp$17 = "00"; - _tmp$18 = $substring(value, 6); - sign = _tmp$14; - hour$1 = _tmp$15; - min$1 = _tmp$16; - seconds = _tmp$17; - value = _tmp$18; - } else if ((std === 29) || (std === 24)) { - if (value.length < 3) { - err = errBad; - break; - } - _tmp$19 = $substring(value, 0, 1); - _tmp$20 = $substring(value, 1, 3); - _tmp$21 = "00"; - _tmp$22 = "00"; - _tmp$23 = $substring(value, 3); - sign = _tmp$19; - hour$1 = _tmp$20; - min$1 = _tmp$21; - seconds = _tmp$22; - value = _tmp$23; - } else if ((std === 26) || (std === 31)) { - if (value.length < 9) { - err = errBad; - break; - } - if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) { - err = errBad; - break; - } - _tmp$24 = $substring(value, 0, 1); - _tmp$25 = $substring(value, 1, 3); - _tmp$26 = $substring(value, 4, 6); - _tmp$27 = $substring(value, 7, 9); - _tmp$28 = $substring(value, 9); - sign = _tmp$24; - hour$1 = _tmp$25; - min$1 = _tmp$26; - seconds = _tmp$27; - value = _tmp$28; - } else if ((std === 23) || (std === 28)) { - if (value.length < 7) { - err = errBad; - break; - } - _tmp$29 = $substring(value, 0, 1); - _tmp$30 = $substring(value, 1, 3); - _tmp$31 = $substring(value, 3, 5); - _tmp$32 = $substring(value, 5, 7); - _tmp$33 = $substring(value, 7); - sign = _tmp$29; - hour$1 = _tmp$30; - min$1 = _tmp$31; - seconds = _tmp$32; - value = _tmp$33; - } else { - if (value.length < 5) { - err = errBad; - break; - } - _tmp$34 = $substring(value, 0, 1); - _tmp$35 = $substring(value, 1, 3); - _tmp$36 = $substring(value, 3, 5); - _tmp$37 = "00"; - _tmp$38 = $substring(value, 5); - sign = _tmp$34; - hour$1 = _tmp$35; - min$1 = _tmp$36; - seconds = _tmp$37; - value = _tmp$38; - } - _tmp$39 = 0; - _tmp$40 = 0; - _tmp$41 = 0; - hr = _tmp$39; - mm = _tmp$40; - ss = _tmp$41; - _tuple$16 = atoi(hour$1); - hr = _tuple$16[0]; - err = _tuple$16[1]; - if ($interfaceIsEqual(err, $ifaceNil)) { - _tuple$17 = atoi(min$1); - mm = _tuple$17[0]; - err = _tuple$17[1]; - } - if ($interfaceIsEqual(err, $ifaceNil)) { - _tuple$18 = atoi(seconds); - ss = _tuple$18[0]; - err = _tuple$18[1]; - } - zoneOffset = ($imul(((($imul(hr, 60)) + mm >> 0)), 60)) + ss >> 0; - _4 = sign.charCodeAt(0); - if (_4 === (43)) { - } else if (_4 === (45)) { - zoneOffset = -zoneOffset; - } else { - err = errBad; - } - } else if (_1 === (21)) { - if (value.length >= 3 && $substring(value, 0, 3) === "UTC") { - z = $pkg.UTC; - value = $substring(value, 3); - break; - } - _tuple$19 = parseTimeZone(value); - n$1 = _tuple$19[0]; - ok = _tuple$19[1]; - if (!ok) { - err = errBad; - break; - } - _tmp$42 = $substring(value, 0, n$1); - _tmp$43 = $substring(value, n$1); - zoneName = _tmp$42; - value = _tmp$43; - } else if (_1 === (32)) { - ndigit = 1 + ((std >> 16 >> 0)) >> 0; - if (value.length < ndigit) { - err = errBad; - break; - } - _tuple$20 = parseNanoseconds(value, ndigit); - nsec = _tuple$20[0]; - rangeErrString = _tuple$20[1]; - err = _tuple$20[2]; - value = $substring(value, ndigit); - } else if (_1 === (33)) { - if (value.length < 2 || !((value.charCodeAt(0) === 46)) || value.charCodeAt(1) < 48 || 57 < value.charCodeAt(1)) { - break; - } - i = 0; - while (true) { - if (!(i < 9 && (i + 1 >> 0) < value.length && 48 <= value.charCodeAt((i + 1 >> 0)) && value.charCodeAt((i + 1 >> 0)) <= 57)) { break; } - i = i + (1) >> 0; - } - _tuple$21 = parseNanoseconds(value, 1 + i >> 0); - nsec = _tuple$21[0]; - rangeErrString = _tuple$21[1]; - err = _tuple$21[2]; - value = $substring(value, (1 + i >> 0)); - } - } - if (!(rangeErrString === "")) { - $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, stdstr, value, ": " + rangeErrString + " out of range")]; - } - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, stdstr, value, "")]; - } - } - if (pmSet && hour < 12) { - hour = hour + (12) >> 0; - } else if (amSet && (hour === 12)) { - hour = 0; - } - if (day < 1 || day > daysIn(((month >> 0)), year)) { - $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, "", value, ": day out of range")]; - } - /* */ if (!(z === ptrType$2.nil)) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!(z === ptrType$2.nil)) { */ case 1: - _r = Date(year, ((month >> 0)), day, hour, min, sec, nsec, z); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return [_r, $ifaceNil]; - /* } */ case 2: - /* */ if (!((zoneOffset === -1))) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (!((zoneOffset === -1))) { */ case 4: - _r$1 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - t = $clone(_r$1, Time); - t.addSec((x$1 = (new $Int64(0, zoneOffset)), new $Int64(-x$1.$high, -x$1.$low))); - _r$2 = local.lookup(t.unixSec()); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$22 = _r$2; - name = _tuple$22[0]; - offset = _tuple$22[1]; - if ((offset === zoneOffset) && (zoneName === "" || name === zoneName)) { - t.setLoc(local); - $s = -1; return [t, $ifaceNil]; - } - t.setLoc(FixedZone(zoneName, zoneOffset)); - $s = -1; return [t, $ifaceNil]; - /* } */ case 5: - /* */ if (!(zoneName === "")) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (!(zoneName === "")) { */ case 8: - _r$3 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - t$1 = $clone(_r$3, Time); - _r$4 = local.lookupName(zoneName, t$1.unixSec()); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple$23 = _r$4; - offset$1 = _tuple$23[0]; - ok$1 = _tuple$23[1]; - if (ok$1) { - t$1.addSec((x$2 = (new $Int64(0, offset$1)), new $Int64(-x$2.$high, -x$2.$low))); - t$1.setLoc(local); - $s = -1; return [t$1, $ifaceNil]; - } - if (zoneName.length > 3 && $substring(zoneName, 0, 3) === "GMT") { - _tuple$24 = atoi($substring(zoneName, 3)); - offset$1 = _tuple$24[0]; - offset$1 = $imul(offset$1, (3600)); - } - t$1.setLoc(FixedZone(zoneName, offset$1)); - $s = -1; return [t$1, $ifaceNil]; - /* } */ case 9: - _r$5 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, defaultLocation); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $s = -1; return [_r$5, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$39 = _tmp$39; $f._tmp$4 = _tmp$4; $f._tmp$40 = _tmp$40; $f._tmp$41 = _tmp$41; $f._tmp$42 = _tmp$42; $f._tmp$43 = _tmp$43; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$21 = _tuple$21; $f._tuple$22 = _tuple$22; $f._tuple$23 = _tuple$23; $f._tuple$24 = _tuple$24; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.alayout = alayout; $f.amSet = amSet; $f.avalue = avalue; $f.day = day; $f.defaultLocation = defaultLocation; $f.err = err; $f.hour = hour; $f.hour$1 = hour$1; $f.hr = hr; $f.i = i; $f.layout = layout; $f.local = local; $f.min = min; $f.min$1 = min$1; $f.mm = mm; $f.month = month; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.ndigit = ndigit; $f.nsec = nsec; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.pmSet = pmSet; $f.prefix = prefix; $f.rangeErrString = rangeErrString; $f.sec = sec; $f.seconds = seconds; $f.sign = sign; $f.ss = ss; $f.std = std; $f.stdstr = stdstr; $f.suffix = suffix; $f.t = t; $f.t$1 = t$1; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.year = year; $f.z = z; $f.zoneName = zoneName; $f.zoneOffset = zoneOffset; $f.$s = $s; $f.$r = $r; return $f; - }; - parseTimeZone = function(value) { - var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, length, nUpper, ok, ok$1, value; - length = 0; - ok = false; - if (value.length < 3) { - _tmp = 0; - _tmp$1 = false; - length = _tmp; - ok = _tmp$1; - return [length, ok]; - } - if (value.length >= 4 && ($substring(value, 0, 4) === "ChST" || $substring(value, 0, 4) === "MeST")) { - _tmp$2 = 4; - _tmp$3 = true; - length = _tmp$2; - ok = _tmp$3; - return [length, ok]; - } - if ($substring(value, 0, 3) === "GMT") { - length = parseGMT(value); - _tmp$4 = length; - _tmp$5 = true; - length = _tmp$4; - ok = _tmp$5; - return [length, ok]; - } - if ((value.charCodeAt(0) === 43) || (value.charCodeAt(0) === 45)) { - length = parseSignedOffset(value); - ok$1 = length > 0; - _tmp$6 = length; - _tmp$7 = ok$1; - length = _tmp$6; - ok = _tmp$7; - return [length, ok]; - } - nUpper = 0; - nUpper = 0; - while (true) { - if (!(nUpper < 6)) { break; } - if (nUpper >= value.length) { - break; - } - c = value.charCodeAt(nUpper); - if (c < 65 || 90 < c) { - break; - } - nUpper = nUpper + (1) >> 0; - } - _1 = nUpper; - if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (6))) { - _tmp$8 = 0; - _tmp$9 = false; - length = _tmp$8; - ok = _tmp$9; - return [length, ok]; - } else if (_1 === (5)) { - if (value.charCodeAt(4) === 84) { - _tmp$10 = 5; - _tmp$11 = true; - length = _tmp$10; - ok = _tmp$11; - return [length, ok]; - } - } else if (_1 === (4)) { - if ((value.charCodeAt(3) === 84) || $substring(value, 0, 4) === "WITA") { - _tmp$12 = 4; - _tmp$13 = true; - length = _tmp$12; - ok = _tmp$13; - return [length, ok]; - } - } else if (_1 === (3)) { - _tmp$14 = 3; - _tmp$15 = true; - length = _tmp$14; - ok = _tmp$15; - return [length, ok]; - } - _tmp$16 = 0; - _tmp$17 = false; - length = _tmp$16; - ok = _tmp$17; - return [length, ok]; - }; - parseGMT = function(value) { - var value; - value = $substring(value, 3); - if (value.length === 0) { - return 3; - } - return 3 + parseSignedOffset(value) >> 0; - }; - parseSignedOffset = function(value) { - var _tuple, err, rem, sign, value, x$1; - sign = value.charCodeAt(0); - if (!((sign === 45)) && !((sign === 43))) { - return 0; - } - _tuple = leadingInt($substring(value, 1)); - x$1 = _tuple[0]; - rem = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil)) || $substring(value, 1) === rem) { - return 0; - } - if (sign === 45) { - x$1 = new $Int64(-x$1.$high, -x$1.$low); - } - if ((x$1.$high < -1 || (x$1.$high === -1 && x$1.$low < 4294967273)) || (0 < x$1.$high || (0 === x$1.$high && 23 < x$1.$low))) { - return 0; - } - return value.length - rem.length >> 0; - }; - parseNanoseconds = function(value, nbytes) { - var _tuple, err, i, nbytes, ns, rangeErrString, scaleDigits, value; - ns = 0; - rangeErrString = ""; - err = $ifaceNil; - if (!((value.charCodeAt(0) === 46))) { - err = errBad; - return [ns, rangeErrString, err]; - } - _tuple = atoi($substring(value, 1, nbytes)); - ns = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [ns, rangeErrString, err]; - } - if (ns < 0 || 1000000000 <= ns) { - rangeErrString = "fractional second"; - return [ns, rangeErrString, err]; - } - scaleDigits = 10 - nbytes >> 0; - i = 0; - while (true) { - if (!(i < scaleDigits)) { break; } - ns = $imul(ns, (10)); - i = i + (1) >> 0; - } - return [ns, rangeErrString, err]; - }; - leadingInt = function(s) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, c, err, i, rem, s, x$1, x$2, x$3, x$4; - x$1 = new $Int64(0, 0); - rem = ""; - err = $ifaceNil; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - c = s.charCodeAt(i); - if (c < 48 || c > 57) { - break; - } - if ((x$1.$high > 214748364 || (x$1.$high === 214748364 && x$1.$low > 3435973836))) { - _tmp = new $Int64(0, 0); - _tmp$1 = ""; - _tmp$2 = errLeadingInt; - x$1 = _tmp; - rem = _tmp$1; - err = _tmp$2; - return [x$1, rem, err]; - } - x$1 = (x$2 = (x$3 = $mul64(x$1, new $Int64(0, 10)), x$4 = (new $Int64(0, c)), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), new $Int64(x$2.$high - 0, x$2.$low - 48)); - if ((x$1.$high < 0 || (x$1.$high === 0 && x$1.$low < 0))) { - _tmp$3 = new $Int64(0, 0); - _tmp$4 = ""; - _tmp$5 = errLeadingInt; - x$1 = _tmp$3; - rem = _tmp$4; - err = _tmp$5; - return [x$1, rem, err]; - } - i = i + (1) >> 0; - } - _tmp$6 = x$1; - _tmp$7 = $substring(s, i); - _tmp$8 = $ifaceNil; - x$1 = _tmp$6; - rem = _tmp$7; - err = _tmp$8; - return [x$1, rem, err]; - }; - when = function(d) { - var d, t, x$1, x$2; - if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { - return runtimeNano(); - } - t = (x$1 = runtimeNano(), x$2 = (new $Int64(d.$high, d.$low)), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); - if ((t.$high < 0 || (t.$high === 0 && t.$low < 0))) { - t = new $Int64(2147483647, 4294967295); - } - return t; - }; - Timer.ptr.prototype.Stop = function() { - var t; - t = this; - if (t.r.f === $throwNilPointerError) { - $panic(new $String("time: Stop called on uninitialized Timer")); - } - return stopTimer(t.r); - }; - Timer.prototype.Stop = function() { return this.$val.Stop(); }; - NewTimer = function(d) { - var c, d, t; - c = new $Chan(Time, 1); - t = new Timer.ptr(c, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), sendTime, new chanType(c), null, false)); - startTimer(t.r); - return t; - }; - $pkg.NewTimer = NewTimer; - Timer.ptr.prototype.Reset = function(d) { - var active, d, t, w; - t = this; - if (t.r.f === $throwNilPointerError) { - $panic(new $String("time: Reset called on uninitialized Timer")); - } - w = when(d); - active = stopTimer(t.r); - t.r.when = w; - startTimer(t.r); - return active; - }; - Timer.prototype.Reset = function(d) { return this.$val.Reset(d); }; - sendTime = function(c, seq) { - var _selection, c, seq, $r; - /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; c = $f.c; seq = $f.seq; $r = $f.$r; } - _selection = $select([[$assertType(c, chanType), $clone(Now(), Time)], []]); - if (_selection[0] === 0) { - } else if (_selection[0] === 1) { - } - /* */ if ($f === undefined) { $f = { $blk: sendTime }; } $f._selection = _selection; $f.c = c; $f.seq = seq; $f.$r = $r; return $f; - }; - NewTicker = function(d) { - var c, d, t; - if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { - $panic(errors.New("non-positive interval for NewTicker")); - } - c = new $Chan(Time, 1); - t = new Ticker.ptr(c, new runtimeTimer.ptr(0, when(d), (new $Int64(d.$high, d.$low)), sendTime, new chanType(c), null, false)); - startTimer(t.r); - return t; - }; - $pkg.NewTicker = NewTicker; - Ticker.ptr.prototype.Stop = function() { - var t; - t = this; - stopTimer(t.r); - }; - Ticker.prototype.Stop = function() { return this.$val.Stop(); }; - Time.ptr.prototype.nsec = function() { - var t, x$1; - t = this; - return (((x$1 = t.wall, new $Uint64(x$1.$high & 0, (x$1.$low & 1073741823) >>> 0)).$low >> 0)); - }; - Time.prototype.nsec = function() { return this.$val.nsec(); }; - Time.ptr.prototype.sec = function() { - var t, x$1, x$2, x$3, x$4; - t = this; - if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - return (x$3 = ((x$4 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$4.$high, x$4.$low))), new $Int64(13 + x$3.$high, 3618733952 + x$3.$low)); - } - return t.ext; - }; - Time.prototype.sec = function() { return this.$val.sec(); }; - Time.ptr.prototype.unixSec = function() { - var t, x$1; - t = this; - return (x$1 = t.sec(), new $Int64(x$1.$high + -15, x$1.$low + 2288912640)); - }; - Time.prototype.unixSec = function() { return this.$val.unixSec(); }; - Time.ptr.prototype.addSec = function(d) { - var d, dsec, sec, t, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - t = this; - if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - sec = ((x$3 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$3.$high, x$3.$low))); - dsec = new $Int64(sec.$high + d.$high, sec.$low + d.$low); - if ((0 < dsec.$high || (0 === dsec.$high && 0 <= dsec.$low)) && (dsec.$high < 1 || (dsec.$high === 1 && dsec.$low <= 4294967295))) { - t.wall = (x$4 = (x$5 = (x$6 = t.wall, new $Uint64(x$6.$high & 0, (x$6.$low & 1073741823) >>> 0)), x$7 = $shiftLeft64((new $Uint64(dsec.$high, dsec.$low)), 30), new $Uint64(x$5.$high | x$7.$high, (x$5.$low | x$7.$low) >>> 0)), new $Uint64(x$4.$high | 2147483648, (x$4.$low | 0) >>> 0)); - return; - } - t.stripMono(); - } - t.ext = (x$8 = t.ext, x$9 = d, new $Int64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)); - }; - Time.prototype.addSec = function(d) { return this.$val.addSec(d); }; - Time.ptr.prototype.setLoc = function(loc) { - var loc, t; - t = this; - if (loc === utcLoc) { - loc = ptrType$2.nil; - } - t.stripMono(); - t.loc = loc; - }; - Time.prototype.setLoc = function(loc) { return this.$val.setLoc(loc); }; - Time.ptr.prototype.stripMono = function() { - var t, x$1, x$2, x$3, x$4; - t = this; - if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - t.ext = t.sec(); - t.wall = (x$3 = t.wall, x$4 = new $Uint64(0, 1073741823), new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)); - } - }; - Time.prototype.stripMono = function() { return this.$val.stripMono(); }; - Time.ptr.prototype.After = function(u) { - var t, ts, u, us, x$1, x$2, x$3, x$4, x$5, x$6; - t = this; - if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - return (x$5 = t.ext, x$6 = u.ext, (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low))); - } - ts = t.sec(); - us = u.sec(); - return (ts.$high > us.$high || (ts.$high === us.$high && ts.$low > us.$low)) || (ts.$high === us.$high && ts.$low === us.$low) && t.nsec() > u.nsec(); - }; - Time.prototype.After = function(u) { return this.$val.After(u); }; - Time.ptr.prototype.Before = function(u) { - var t, u, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - t = this; - if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - return (x$5 = t.ext, x$6 = u.ext, (x$5.$high < x$6.$high || (x$5.$high === x$6.$high && x$5.$low < x$6.$low))); - } - return (x$7 = t.sec(), x$8 = u.sec(), (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low < x$8.$low))) || (x$9 = t.sec(), x$10 = u.sec(), (x$9.$high === x$10.$high && x$9.$low === x$10.$low)) && t.nsec() < u.nsec(); - }; - Time.prototype.Before = function(u) { return this.$val.Before(u); }; - Time.ptr.prototype.Equal = function(u) { - var t, u, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; - t = this; - if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - return (x$5 = t.ext, x$6 = u.ext, (x$5.$high === x$6.$high && x$5.$low === x$6.$low)); - } - return (x$7 = t.sec(), x$8 = u.sec(), (x$7.$high === x$8.$high && x$7.$low === x$8.$low)) && (t.nsec() === u.nsec()); - }; - Time.prototype.Equal = function(u) { return this.$val.Equal(u); }; - Month.prototype.String = function() { - var buf, m, n, x$1; - m = this.$val; - if (1 <= m && m <= 12) { - return (x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= months.length) ? ($throwRuntimeError("index out of range"), undefined) : months[x$1])); - } - buf = $makeSlice(sliceType$3, 20); - n = fmtInt(buf, (new $Uint64(0, m))); - return "%!Month(" + ($bytesToString($subslice(buf, n))) + ")"; - }; - $ptrType(Month).prototype.String = function() { return new Month(this.$get()).String(); }; - Weekday.prototype.String = function() { - var buf, d, n; - d = this.$val; - if (0 <= d && d <= 6) { - return ((d < 0 || d >= days.length) ? ($throwRuntimeError("index out of range"), undefined) : days[d]); - } - buf = $makeSlice(sliceType$3, 20); - n = fmtInt(buf, (new $Uint64(0, d))); - return "%!Weekday(" + ($bytesToString($subslice(buf, n))) + ")"; - }; - $ptrType(Weekday).prototype.String = function() { return new Weekday(this.$get()).String(); }; - Time.ptr.prototype.IsZero = function() { - var t, x$1; - t = this; - return (x$1 = t.sec(), (x$1.$high === 0 && x$1.$low === 0)) && (t.nsec() === 0); - }; - Time.prototype.IsZero = function() { return this.$val.IsZero(); }; - Time.ptr.prototype.abs = function() { - var _r, _r$1, _tuple, l, offset, sec, t, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; l = $f.l; offset = $f.offset; sec = $f.sec; t = $f.t; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - l = t.loc; - /* */ if (l === ptrType$2.nil || l === localLoc) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (l === ptrType$2.nil || l === localLoc) { */ case 1: - _r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - l = _r; - /* } */ case 2: - sec = t.unixSec(); - /* */ if (!(l === utcLoc)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (!(l === utcLoc)) { */ case 4: - /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 6: - sec = (x$3 = (new $Int64(0, l.cacheZone.offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low)); - $s = 8; continue; - /* } else { */ case 7: - _r$1 = l.lookup(sec); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - offset = _tuple[1]; - sec = (x$4 = (new $Int64(0, offset)), new $Int64(sec.$high + x$4.$high, sec.$low + x$4.$low)); - /* } */ case 8: - /* } */ case 5: - $s = -1; return ((x$5 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$5.$high, x$5.$low))); - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.abs }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.l = l; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.abs = function() { return this.$val.abs(); }; - Time.ptr.prototype.locabs = function() { - var _r, _r$1, _tuple, abs, l, name, offset, sec, t, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; abs = $f.abs; l = $f.l; name = $f.name; offset = $f.offset; sec = $f.sec; t = $f.t; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - name = ""; - offset = 0; - abs = new $Uint64(0, 0); - t = this; - l = t.loc; - /* */ if (l === ptrType$2.nil || l === localLoc) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (l === ptrType$2.nil || l === localLoc) { */ case 1: - _r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - l = _r; - /* } */ case 2: - sec = t.unixSec(); - /* */ if (!(l === utcLoc)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (!(l === utcLoc)) { */ case 4: - /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 7: - name = l.cacheZone.name; - offset = l.cacheZone.offset; - $s = 9; continue; - /* } else { */ case 8: - _r$1 = l.lookup(sec); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - name = _tuple[0]; - offset = _tuple[1]; - /* } */ case 9: - sec = (x$3 = (new $Int64(0, offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low)); - $s = 6; continue; - /* } else { */ case 5: - name = "UTC"; - /* } */ case 6: - abs = ((x$4 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$4.$high, x$4.$low))); - $s = -1; return [name, offset, abs]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.locabs }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.abs = abs; $f.l = l; $f.name = name; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.locabs = function() { return this.$val.locabs(); }; - Time.ptr.prototype.Date = function() { - var _r, _tuple, day, month, t, year, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; day = $f.day; month = $f.month; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - year = 0; - month = 0; - day = 0; - t = this; - _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - year = _tuple[0]; - month = _tuple[1]; - day = _tuple[2]; - $s = -1; return [year, month, day]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Date }; } $f._r = _r; $f._tuple = _tuple; $f.day = day; $f.month = month; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Date = function() { return this.$val.Date(); }; - Time.ptr.prototype.Year = function() { - var _r, _tuple, t, year, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - year = _tuple[0]; - $s = -1; return year; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Year }; } $f._r = _r; $f._tuple = _tuple; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Year = function() { return this.$val.Year(); }; - Time.ptr.prototype.Month = function() { - var _r, _tuple, month, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; month = $f.month; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - month = _tuple[1]; - $s = -1; return month; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Month }; } $f._r = _r; $f._tuple = _tuple; $f.month = month; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Month = function() { return this.$val.Month(); }; - Time.ptr.prototype.Day = function() { - var _r, _tuple, day, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; day = $f.day; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - day = _tuple[2]; - $s = -1; return day; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Day }; } $f._r = _r; $f._tuple = _tuple; $f.day = day; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Day = function() { return this.$val.Day(); }; - Time.ptr.prototype.Weekday = function() { - var _r, _r$1, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = absWeekday(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Weekday }; } $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Weekday = function() { return this.$val.Weekday(); }; - absWeekday = function(abs) { - var _q, abs, sec; - sec = $div64((new $Uint64(abs.$high + 0, abs.$low + 86400)), new $Uint64(0, 604800), true); - return (((_q = ((sec.$low >> 0)) / 86400, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); - }; - Time.ptr.prototype.ISOWeek = function() { - var _q, _r, _r$1, _r$2, _r$3, _r$4, _tuple, day, dec31wday, jan1wday, month, t, wday, week, yday, year, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; day = $f.day; dec31wday = $f.dec31wday; jan1wday = $f.jan1wday; month = $f.month; t = $f.t; wday = $f.wday; week = $f.week; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - year = 0; - week = 0; - t = this; - _r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - year = _tuple[0]; - month = _tuple[1]; - day = _tuple[2]; - yday = _tuple[3]; - _r$2 = $clone(t, Time).Weekday(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - wday = (_r$1 = (((_r$2 + 6 >> 0) >> 0)) % 7, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); - week = (_q = (((yday - wday >> 0) + 7 >> 0)) / 7, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - jan1wday = (_r$3 = (((wday - yday >> 0) + 371 >> 0)) % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")); - if (1 <= jan1wday && jan1wday <= 3) { - week = week + (1) >> 0; - } - if (week === 0) { - year = year - (1) >> 0; - week = 52; - if ((jan1wday === 4) || ((jan1wday === 5) && isLeap(year))) { - week = week + (1) >> 0; - } - } - if ((month === 12) && day >= 29 && wday < 3) { - dec31wday = (_r$4 = (((wday + 31 >> 0) - day >> 0)) % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); - if (0 <= dec31wday && dec31wday <= 2) { - year = year + (1) >> 0; - week = 1; - } - } - $s = -1; return [year, week]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.ISOWeek }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.day = day; $f.dec31wday = dec31wday; $f.jan1wday = jan1wday; $f.month = month; $f.t = t; $f.wday = wday; $f.week = week; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.ISOWeek = function() { return this.$val.ISOWeek(); }; - Time.ptr.prototype.Clock = function() { - var _r, _r$1, _tuple, hour, min, sec, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; hour = $f.hour; min = $f.min; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - hour = 0; - min = 0; - sec = 0; - t = this; - _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = absClock(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - hour = _tuple[0]; - min = _tuple[1]; - sec = _tuple[2]; - $s = -1; return [hour, min, sec]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Clock }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.hour = hour; $f.min = min; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Clock = function() { return this.$val.Clock(); }; - absClock = function(abs) { - var _q, _q$1, abs, hour, min, sec; - hour = 0; - min = 0; - sec = 0; - sec = (($div64(abs, new $Uint64(0, 86400), true).$low >> 0)); - hour = (_q = sec / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - sec = sec - (($imul(hour, 3600))) >> 0; - min = (_q$1 = sec / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); - sec = sec - (($imul(min, 60))) >> 0; - return [hour, min, sec]; - }; - Time.ptr.prototype.Hour = function() { - var _q, _r, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return (_q = (($div64(_r, new $Uint64(0, 86400), true).$low >> 0)) / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Hour }; } $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Hour = function() { return this.$val.Hour(); }; - Time.ptr.prototype.Minute = function() { - var _q, _r, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return (_q = (($div64(_r, new $Uint64(0, 3600), true).$low >> 0)) / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Minute }; } $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Minute = function() { return this.$val.Minute(); }; - Time.ptr.prototype.Second = function() { - var _r, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return (($div64(_r, new $Uint64(0, 60), true).$low >> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Second }; } $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Second = function() { return this.$val.Second(); }; - Time.ptr.prototype.Nanosecond = function() { - var t; - t = this; - return ((t.nsec() >> 0)); - }; - Time.prototype.Nanosecond = function() { return this.$val.Nanosecond(); }; - Time.ptr.prototype.YearDay = function() { - var _r, _tuple, t, yday, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; t = $f.t; yday = $f.yday; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - yday = _tuple[3]; - $s = -1; return yday + 1 >> 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.YearDay }; } $f._r = _r; $f._tuple = _tuple; $f.t = t; $f.yday = yday; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.YearDay = function() { return this.$val.YearDay(); }; - Duration.prototype.String = function() { - var _tuple, _tuple$1, buf, d, neg, prec, u, w; - d = this; - buf = arrayType$3.zero(); - w = 32; - u = (new $Uint64(d.$high, d.$low)); - neg = (d.$high < 0 || (d.$high === 0 && d.$low < 0)); - if (neg) { - u = new $Uint64(-u.$high, -u.$low); - } - if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000000))) { - prec = 0; - w = w - (1) >> 0; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115); - w = w - (1) >> 0; - if ((u.$high === 0 && u.$low === 0)) { - return "0s"; - } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) { - prec = 0; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 110); - } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000))) { - prec = 3; - w = w - (1) >> 0; - $copyString($subslice(new sliceType$3(buf), w), "\xC2\xB5"); - } else { - prec = 6; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109); - } - _tuple = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, prec); - w = _tuple[0]; - u = _tuple[1]; - w = fmtInt($subslice(new sliceType$3(buf), 0, w), u); - } else { - w = w - (1) >> 0; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115); - _tuple$1 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, 9); - w = _tuple$1[0]; - u = _tuple$1[1]; - w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true)); - u = $div64(u, (new $Uint64(0, 60)), false); - if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) { - w = w - (1) >> 0; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109); - w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true)); - u = $div64(u, (new $Uint64(0, 60)), false); - if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) { - w = w - (1) >> 0; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 104); - w = fmtInt($subslice(new sliceType$3(buf), 0, w), u); - } - } - } - if (neg) { - w = w - (1) >> 0; - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); - } - return ($bytesToString($subslice(new sliceType$3(buf), w))); - }; - $ptrType(Duration).prototype.String = function() { return this.$get().String(); }; - fmtFrac = function(buf, v, prec) { - var _tmp, _tmp$1, buf, digit, i, nv, nw, prec, print, v, w; - nw = 0; - nv = new $Uint64(0, 0); - w = buf.$length; - print = false; - i = 0; - while (true) { - if (!(i < prec)) { break; } - digit = $div64(v, new $Uint64(0, 10), true); - print = print || !((digit.$high === 0 && digit.$low === 0)); - if (print) { - w = w - (1) >> 0; - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = (((digit.$low << 24 >>> 24)) + 48 << 24 >>> 24)); - } - v = $div64(v, (new $Uint64(0, 10)), false); - i = i + (1) >> 0; - } - if (print) { - w = w - (1) >> 0; - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); - } - _tmp = w; - _tmp$1 = v; - nw = _tmp; - nv = _tmp$1; - return [nw, nv]; - }; - fmtInt = function(buf, v) { - var buf, v, w; - w = buf.$length; - if ((v.$high === 0 && v.$low === 0)) { - w = w - (1) >> 0; - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48); - } else { - while (true) { - if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } - w = w - (1) >> 0; - ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = ((($div64(v, new $Uint64(0, 10), true).$low << 24 >>> 24)) + 48 << 24 >>> 24)); - v = $div64(v, (new $Uint64(0, 10)), false); - } - } - return w; - }; - Duration.prototype.Nanoseconds = function() { - var d; - d = this; - return (new $Int64(d.$high, d.$low)); - }; - $ptrType(Duration).prototype.Nanoseconds = function() { return this.$get().Nanoseconds(); }; - Duration.prototype.Seconds = function() { - var d, nsec, sec; - d = this; - sec = $div64(d, new Duration(0, 1000000000), false); - nsec = $div64(d, new Duration(0, 1000000000), true); - return ($flatten64(sec)) + ($flatten64(nsec)) / 1e+09; - }; - $ptrType(Duration).prototype.Seconds = function() { return this.$get().Seconds(); }; - Duration.prototype.Minutes = function() { - var d, min, nsec; - d = this; - min = $div64(d, new Duration(13, 4165425152), false); - nsec = $div64(d, new Duration(13, 4165425152), true); - return ($flatten64(min)) + ($flatten64(nsec)) / 6e+10; - }; - $ptrType(Duration).prototype.Minutes = function() { return this.$get().Minutes(); }; - Duration.prototype.Hours = function() { - var d, hour, nsec; - d = this; - hour = $div64(d, new Duration(838, 817405952), false); - nsec = $div64(d, new Duration(838, 817405952), true); - return ($flatten64(hour)) + ($flatten64(nsec)) / 3.6e+12; - }; - $ptrType(Duration).prototype.Hours = function() { return this.$get().Hours(); }; - Duration.prototype.Truncate = function(m) { - var d, m, x$1; - d = this; - if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) { - return d; - } - return (x$1 = $div64(d, m, true), new Duration(d.$high - x$1.$high, d.$low - x$1.$low)); - }; - $ptrType(Duration).prototype.Truncate = function(m) { return this.$get().Truncate(m); }; - lessThanHalf = function(x$1, y) { - var x$1, x$2, x$3, x$4, x$5, y; - return (x$2 = (x$3 = (new $Uint64(x$1.$high, x$1.$low)), x$4 = (new $Uint64(x$1.$high, x$1.$low)), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), x$5 = (new $Uint64(y.$high, y.$low)), (x$2.$high < x$5.$high || (x$2.$high === x$5.$high && x$2.$low < x$5.$low))); - }; - Duration.prototype.Round = function(m) { - var d, d1, d1$1, m, r, x$1, x$2; - d = this; - if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) { - return d; - } - r = $div64(d, m, true); - if ((d.$high < 0 || (d.$high === 0 && d.$low < 0))) { - r = new Duration(-r.$high, -r.$low); - if (lessThanHalf(r, m)) { - return new Duration(d.$high + r.$high, d.$low + r.$low); - } - d1 = (x$1 = new Duration(d.$high - m.$high, d.$low - m.$low), new Duration(x$1.$high + r.$high, x$1.$low + r.$low)); - if ((d1.$high < d.$high || (d1.$high === d.$high && d1.$low < d.$low))) { - return d1; - } - return new Duration(-2147483648, 0); - } - if (lessThanHalf(r, m)) { - return new Duration(d.$high - r.$high, d.$low - r.$low); - } - d1$1 = (x$2 = new Duration(d.$high + m.$high, d.$low + m.$low), new Duration(x$2.$high - r.$high, x$2.$low - r.$low)); - if ((d1$1.$high > d.$high || (d1$1.$high === d.$high && d1$1.$low > d.$low))) { - return d1$1; - } - return new Duration(2147483647, 4294967295); - }; - $ptrType(Duration).prototype.Round = function(m) { return this.$get().Round(m); }; - Time.ptr.prototype.Add = function(d) { - var d, dsec, nsec, t, te, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - t = this; - dsec = ((x$1 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$1.$high, x$1.$low))); - nsec = t.nsec() + (((x$2 = $div64(d, new Duration(0, 1000000000), true), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)) >> 0; - if (nsec >= 1000000000) { - dsec = (x$3 = new $Int64(0, 1), new $Int64(dsec.$high + x$3.$high, dsec.$low + x$3.$low)); - nsec = nsec - (1000000000) >> 0; - } else if (nsec < 0) { - dsec = (x$4 = new $Int64(0, 1), new $Int64(dsec.$high - x$4.$high, dsec.$low - x$4.$low)); - nsec = nsec + (1000000000) >> 0; - } - t.wall = (x$5 = (x$6 = t.wall, new $Uint64(x$6.$high & ~0, (x$6.$low & ~1073741823) >>> 0)), x$7 = (new $Uint64(0, nsec)), new $Uint64(x$5.$high | x$7.$high, (x$5.$low | x$7.$low) >>> 0)); - t.addSec(dsec); - if (!((x$8 = (x$9 = t.wall, new $Uint64(x$9.$high & 2147483648, (x$9.$low & 0) >>> 0)), (x$8.$high === 0 && x$8.$low === 0)))) { - te = (x$10 = t.ext, x$11 = (new $Int64(d.$high, d.$low)), new $Int64(x$10.$high + x$11.$high, x$10.$low + x$11.$low)); - if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (x$12 = t.ext, (te.$high > x$12.$high || (te.$high === x$12.$high && te.$low > x$12.$low))) || (d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (x$13 = t.ext, (te.$high < x$13.$high || (te.$high === x$13.$high && te.$low < x$13.$low)))) { - t.stripMono(); - } else { - t.ext = te; - } - } - return t; - }; - Time.prototype.Add = function(d) { return this.$val.Add(d); }; - Time.ptr.prototype.Sub = function(u) { - var d, d$1, t, te, u, ue, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - t = this; - if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - te = t.ext; - ue = u.ext; - d = ((x$5 = new $Int64(te.$high - ue.$high, te.$low - ue.$low), new Duration(x$5.$high, x$5.$low))); - if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (te.$high > ue.$high || (te.$high === ue.$high && te.$low > ue.$low))) { - return new Duration(2147483647, 4294967295); - } - if ((d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (te.$high < ue.$high || (te.$high === ue.$high && te.$low < ue.$low))) { - return new Duration(-2147483648, 0); - } - return d; - } - d$1 = (x$6 = $mul64(((x$7 = (x$8 = t.sec(), x$9 = u.sec(), new $Int64(x$8.$high - x$9.$high, x$8.$low - x$9.$low)), new Duration(x$7.$high, x$7.$low))), new Duration(0, 1000000000)), x$10 = (new Duration(0, (t.nsec() - u.nsec() >> 0))), new Duration(x$6.$high + x$10.$high, x$6.$low + x$10.$low)); - if ($clone($clone(u, Time).Add(d$1), Time).Equal($clone(t, Time))) { - return d$1; - } else if ($clone(t, Time).Before($clone(u, Time))) { - return new Duration(-2147483648, 0); - } else { - return new Duration(2147483647, 4294967295); - } - }; - Time.prototype.Sub = function(u) { return this.$val.Sub(u); }; - Until = function(t) { - var now$1, t, x$1, x$2, x$3; - now$1 = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil); - if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { - Time.copy(now$1, new Time.ptr(new $Uint64(2147483648, 0), (x$3 = runtimeNano(), new $Int64(x$3.$high - startNano.$high, x$3.$low - startNano.$low)), ptrType$2.nil)); - } else { - Time.copy(now$1, Now()); - } - return $clone(t, Time).Sub($clone(now$1, Time)); - }; - $pkg.Until = Until; - Time.ptr.prototype.AddDate = function(years, months$1, days$1) { - var _r, _r$1, _r$2, _tuple, _tuple$1, day, days$1, hour, min, month, months$1, sec, t, year, years, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; day = $f.day; days$1 = $f.days$1; hour = $f.hour; min = $f.min; month = $f.month; months$1 = $f.months$1; sec = $f.sec; t = $f.t; year = $f.year; years = $f.years; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - year = _tuple[0]; - month = _tuple[1]; - day = _tuple[2]; - _r$1 = $clone(t, Time).Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - hour = _tuple$1[0]; - min = _tuple$1[1]; - sec = _tuple$1[2]; - _r$2 = Date(year + years >> 0, month + ((months$1 >> 0)) >> 0, day + days$1 >> 0, hour, min, sec, ((t.nsec() >> 0)), $clone(t, Time).Location()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AddDate }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.day = day; $f.days$1 = days$1; $f.hour = hour; $f.min = min; $f.month = month; $f.months$1 = months$1; $f.sec = sec; $f.t = t; $f.year = year; $f.years = years; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.AddDate = function(years, months$1, days$1) { return this.$val.AddDate(years, months$1, days$1); }; - Time.ptr.prototype.date = function(full) { - var _r, _r$1, _tuple, day, full, month, t, yday, year, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; day = $f.day; full = $f.full; month = $f.month; t = $f.t; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - year = 0; - month = 0; - day = 0; - yday = 0; - t = this; - _r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = absDate(_r, full); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - year = _tuple[0]; - month = _tuple[1]; - day = _tuple[2]; - yday = _tuple[3]; - $s = -1; return [year, month, day, yday]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.date }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.day = day; $f.full = full; $f.month = month; $f.t = t; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.date = function(full) { return this.$val.date(full); }; - absDate = function(abs, full) { - var _q, abs, begin, d, day, end, full, month, n, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, yday, year; - year = 0; - month = 0; - day = 0; - yday = 0; - d = $div64(abs, new $Uint64(0, 86400), false); - n = $div64(d, new $Uint64(0, 146097), false); - y = $mul64(new $Uint64(0, 400), n); - d = (x$1 = $mul64(new $Uint64(0, 146097), n), new $Uint64(d.$high - x$1.$high, d.$low - x$1.$low)); - n = $div64(d, new $Uint64(0, 36524), false); - n = (x$2 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$2.$high, n.$low - x$2.$low)); - y = (x$3 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high + x$3.$high, y.$low + x$3.$low)); - d = (x$4 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high - x$4.$high, d.$low - x$4.$low)); - n = $div64(d, new $Uint64(0, 1461), false); - y = (x$5 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high + x$5.$high, y.$low + x$5.$low)); - d = (x$6 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high - x$6.$high, d.$low - x$6.$low)); - n = $div64(d, new $Uint64(0, 365), false); - n = (x$7 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$7.$high, n.$low - x$7.$low)); - y = (x$8 = n, new $Uint64(y.$high + x$8.$high, y.$low + x$8.$low)); - d = (x$9 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high - x$9.$high, d.$low - x$9.$low)); - year = (((x$10 = (x$11 = (new $Int64(y.$high, y.$low)), new $Int64(x$11.$high + -69, x$11.$low + 4075721025)), x$10.$low + ((x$10.$high >> 31) * 4294967296)) >> 0)); - yday = ((d.$low >> 0)); - if (!full) { - return [year, month, day, yday]; - } - day = yday; - if (isLeap(year)) { - if (day > 59) { - day = day - (1) >> 0; - } else if ((day === 59)) { - month = 2; - day = 29; - return [year, month, day, yday]; - } - } - month = (((_q = day / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); - end = (((x$12 = month + 1 >> 0, ((x$12 < 0 || x$12 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$12])) >> 0)); - begin = 0; - if (day >= end) { - month = month + (1) >> 0; - begin = end; - } else { - begin = ((((month < 0 || month >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[month]) >> 0)); - } - month = month + (1) >> 0; - day = (day - begin >> 0) + 1 >> 0; - return [year, month, day, yday]; - }; - daysIn = function(m, year) { - var m, x$1, year; - if ((m === 2) && isLeap(year)) { - return 29; - } - return (((((m < 0 || m >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[m]) - (x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$1])) >> 0) >> 0)); - }; - Now = function() { - var _tuple, mono, nsec, sec, x$1, x$2, x$3, x$4, x$5, x$6; - _tuple = now(); - sec = _tuple[0]; - nsec = _tuple[1]; - mono = _tuple[2]; - mono = (x$1 = startNano, new $Int64(mono.$high - x$1.$high, mono.$low - x$1.$low)); - sec = (x$2 = new $Int64(0, 2682288000), new $Int64(sec.$high + x$2.$high, sec.$low + x$2.$low)); - if (!((x$3 = $shiftRightUint64((new $Uint64(sec.$high, sec.$low)), 33), (x$3.$high === 0 && x$3.$low === 0)))) { - return new Time.ptr((new $Uint64(0, nsec)), new $Int64(sec.$high + 13, sec.$low + 3618733952), $pkg.Local); - } - return new Time.ptr((x$4 = (x$5 = $shiftLeft64((new $Uint64(sec.$high, sec.$low)), 30), new $Uint64(2147483648 | x$5.$high, (0 | x$5.$low) >>> 0)), x$6 = (new $Uint64(0, nsec)), new $Uint64(x$4.$high | x$6.$high, (x$4.$low | x$6.$low) >>> 0)), mono, $pkg.Local); - }; - $pkg.Now = Now; - unixTime = function(sec, nsec) { - var nsec, sec; - return new Time.ptr((new $Uint64(0, nsec)), new $Int64(sec.$high + 14, sec.$low + 2006054656), $pkg.Local); - }; - Time.ptr.prototype.UTC = function() { - var t; - t = this; - t.setLoc(utcLoc); - return t; - }; - Time.prototype.UTC = function() { return this.$val.UTC(); }; - Time.ptr.prototype.Local = function() { - var t; - t = this; - t.setLoc($pkg.Local); - return t; - }; - Time.prototype.Local = function() { return this.$val.Local(); }; - Time.ptr.prototype.In = function(loc) { - var loc, t; - t = this; - if (loc === ptrType$2.nil) { - $panic(new $String("time: missing Location in call to Time.In")); - } - t.setLoc(loc); - return t; - }; - Time.prototype.In = function(loc) { return this.$val.In(loc); }; - Time.ptr.prototype.Location = function() { - var l, t; - t = this; - l = t.loc; - if (l === ptrType$2.nil) { - l = $pkg.UTC; - } - return l; - }; - Time.prototype.Location = function() { return this.$val.Location(); }; - Time.ptr.prototype.Zone = function() { - var _r, _tuple, name, offset, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; name = $f.name; offset = $f.offset; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - name = ""; - offset = 0; - t = this; - _r = t.loc.lookup(t.unixSec()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - name = _tuple[0]; - offset = _tuple[1]; - $s = -1; return [name, offset]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Zone }; } $f._r = _r; $f._tuple = _tuple; $f.name = name; $f.offset = offset; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.Zone = function() { return this.$val.Zone(); }; - Time.ptr.prototype.Unix = function() { - var t; - t = this; - return t.unixSec(); - }; - Time.prototype.Unix = function() { return this.$val.Unix(); }; - Time.ptr.prototype.UnixNano = function() { - var t, x$1, x$2; - t = this; - return (x$1 = $mul64((t.unixSec()), new $Int64(0, 1000000000)), x$2 = (new $Int64(0, t.nsec())), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); - }; - Time.prototype.UnixNano = function() { return this.$val.UnixNano(); }; - Time.ptr.prototype.MarshalBinary = function() { - var _q, _r, _r$1, _tuple, enc, nsec, offset, offsetMin, sec, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; enc = $f.enc; nsec = $f.nsec; offset = $f.offset; offsetMin = $f.offsetMin; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - offsetMin = 0; - /* */ if ($clone(t, Time).Location() === $pkg.UTC) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ($clone(t, Time).Location() === $pkg.UTC) { */ case 1: - offsetMin = -1; - $s = 3; continue; - /* } else { */ case 2: - _r = $clone(t, Time).Zone(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - offset = _tuple[1]; - if (!(((_r$1 = offset % 60, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0))) { - $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: zone offset has fractional minute")]; - } - offset = (_q = offset / (60), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - if (offset < -32768 || (offset === -1) || offset > 32767) { - $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: unexpected zone offset")]; - } - offsetMin = ((offset << 16 >> 16)); - /* } */ case 3: - sec = t.sec(); - nsec = t.nsec(); - enc = new sliceType$3([1, (($shiftRightInt64(sec, 56).$low << 24 >>> 24)), (($shiftRightInt64(sec, 48).$low << 24 >>> 24)), (($shiftRightInt64(sec, 40).$low << 24 >>> 24)), (($shiftRightInt64(sec, 32).$low << 24 >>> 24)), (($shiftRightInt64(sec, 24).$low << 24 >>> 24)), (($shiftRightInt64(sec, 16).$low << 24 >>> 24)), (($shiftRightInt64(sec, 8).$low << 24 >>> 24)), ((sec.$low << 24 >>> 24)), (((nsec >> 24 >> 0) << 24 >>> 24)), (((nsec >> 16 >> 0) << 24 >>> 24)), (((nsec >> 8 >> 0) << 24 >>> 24)), ((nsec << 24 >>> 24)), (((offsetMin >> 8 << 16 >> 16) << 24 >>> 24)), ((offsetMin << 24 >>> 24))]); - $s = -1; return [enc, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalBinary }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.enc = enc; $f.nsec = nsec; $f.offset = offset; $f.offsetMin = offsetMin; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); }; - Time.ptr.prototype.UnmarshalBinary = function(data) { - var _r, _tuple, buf, data, localoff, nsec, offset, sec, t, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; data = $f.data; localoff = $f.localoff; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; t = $f.t; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - buf = data; - if (buf.$length === 0) { - $s = -1; return errors.New("Time.UnmarshalBinary: no data"); - } - if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) { - $s = -1; return errors.New("Time.UnmarshalBinary: unsupported version"); - } - if (!((buf.$length === 15))) { - $s = -1; return errors.New("Time.UnmarshalBinary: invalid length"); - } - buf = $subslice(buf, 1); - sec = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (x$7 = (new $Int64(0, (7 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 7]))), x$8 = $shiftLeft64((new $Int64(0, (6 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 6]))), 8), new $Int64(x$7.$high | x$8.$high, (x$7.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Int64(0, (5 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 5]))), 16), new $Int64(x$6.$high | x$9.$high, (x$6.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Int64(0, (4 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 4]))), 24), new $Int64(x$5.$high | x$10.$high, (x$5.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Int64(0, (3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]))), 32), new $Int64(x$4.$high | x$11.$high, (x$4.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Int64(0, (2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]))), 40), new $Int64(x$3.$high | x$12.$high, (x$3.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Int64(0, (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]))), 48), new $Int64(x$2.$high | x$13.$high, (x$2.$low | x$13.$low) >>> 0)), x$14 = $shiftLeft64((new $Int64(0, (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))), 56), new $Int64(x$1.$high | x$14.$high, (x$1.$low | x$14.$low) >>> 0)); - buf = $subslice(buf, 8); - nsec = (((((3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]) >> 0)) | ((((2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]) >> 0)) << 8 >> 0)) | ((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) >> 0)) << 16 >> 0)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >> 0)) << 24 >> 0); - buf = $subslice(buf, 4); - offset = $imul(((((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) << 16 >> 16)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) << 16 >> 16)) << 8 << 16 >> 16)) >> 0)), 60); - Time.copy(t, new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil)); - t.wall = (new $Uint64(0, nsec)); - t.ext = sec; - /* */ if (offset === -60) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (offset === -60) { */ case 1: - t.setLoc(utcLoc); - $s = 3; continue; - /* } else { */ case 2: - _r = $pkg.Local.lookup(t.unixSec()); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - localoff = _tuple[1]; - if (offset === localoff) { - t.setLoc($pkg.Local); - } else { - t.setLoc(FixedZone("", offset)); - } - /* } */ case 3: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalBinary }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.data = data; $f.localoff = localoff; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.UnmarshalBinary = function(data) { return this.$val.UnmarshalBinary(data); }; - Time.ptr.prototype.GobEncode = function() { - var _r, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobEncode }; } $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.GobEncode = function() { return this.$val.GobEncode(); }; - Time.ptr.prototype.GobDecode = function(data) { - var _r, data, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = t.UnmarshalBinary(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobDecode }; } $f._r = _r; $f.data = data; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.GobDecode = function(data) { return this.$val.GobDecode(data); }; - Time.ptr.prototype.MarshalJSON = function() { - var _r, _r$1, b, t, y, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - y = _r; - if (y < 0 || y >= 10000) { - $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")]; - } - b = $makeSlice(sliceType$3, 0, 37); - b = $append(b, 34); - _r$1 = $clone(t, Time).AppendFormat(b, "2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - b = _r$1; - b = $append(b, 34); - $s = -1; return [b, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalJSON }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); }; - Time.ptr.prototype.UnmarshalJSON = function(data) { - var _r, _tuple, data, err, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - if (($bytesToString(data)) === "null") { - $s = -1; return $ifaceNil; - } - err = $ifaceNil; - _r = Parse("\"2006-01-02T15:04:05Z07:00\"", ($bytesToString(data))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - Time.copy(t, _tuple[0]); - err = _tuple[1]; - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalJSON }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.UnmarshalJSON = function(data) { return this.$val.UnmarshalJSON(data); }; - Time.ptr.prototype.MarshalText = function() { - var _r, _r$1, b, t, y, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - _r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - y = _r; - if (y < 0 || y >= 10000) { - $s = -1; return [sliceType$3.nil, errors.New("Time.MarshalText: year outside of range [0,9999]")]; - } - b = $makeSlice(sliceType$3, 0, 35); - _r$1 = $clone(t, Time).AppendFormat(b, "2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return [_r$1, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalText }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.MarshalText = function() { return this.$val.MarshalText(); }; - Time.ptr.prototype.UnmarshalText = function(data) { - var _r, _tuple, data, err, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this; - err = $ifaceNil; - _r = Parse("2006-01-02T15:04:05Z07:00", ($bytesToString(data))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - Time.copy(t, _tuple[0]); - err = _tuple[1]; - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalText }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Time.prototype.UnmarshalText = function(data) { return this.$val.UnmarshalText(data); }; - Unix = function(sec, nsec) { - var n, nsec, sec, x$1, x$2, x$3, x$4; - if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0)) || (nsec.$high > 0 || (nsec.$high === 0 && nsec.$low >= 1000000000))) { - n = $div64(nsec, new $Int64(0, 1000000000), false); - sec = (x$1 = n, new $Int64(sec.$high + x$1.$high, sec.$low + x$1.$low)); - nsec = (x$2 = $mul64(n, new $Int64(0, 1000000000)), new $Int64(nsec.$high - x$2.$high, nsec.$low - x$2.$low)); - if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0))) { - nsec = (x$3 = new $Int64(0, 1000000000), new $Int64(nsec.$high + x$3.$high, nsec.$low + x$3.$low)); - sec = (x$4 = new $Int64(0, 1), new $Int64(sec.$high - x$4.$high, sec.$low - x$4.$low)); - } - } - return unixTime(sec, (((nsec.$low + ((nsec.$high >> 31) * 4294967296)) >> 0))); - }; - $pkg.Unix = Unix; - isLeap = function(year) { - var _r, _r$1, _r$2, year; - return ((_r = year % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) && (!(((_r$1 = year % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0)) || ((_r$2 = year % 400, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0)); - }; - norm = function(hi, lo, base) { - var _q, _q$1, _tmp, _tmp$1, base, hi, lo, n, n$1, nhi, nlo; - nhi = 0; - nlo = 0; - if (lo < 0) { - n = (_q = ((-lo - 1 >> 0)) / base, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; - hi = hi - (n) >> 0; - lo = lo + (($imul(n, base))) >> 0; - } - if (lo >= base) { - n$1 = (_q$1 = lo / base, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); - hi = hi + (n$1) >> 0; - lo = lo - (($imul(n$1, base))) >> 0; - } - _tmp = hi; - _tmp$1 = lo; - nhi = _tmp; - nlo = _tmp$1; - return [nhi, nlo]; - }; - Date = function(year, month, day, hour, min, sec, nsec, loc) { - var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, abs, d, day, end, hour, loc, m, min, month, n, nsec, offset, sec, start, t, unix, utc, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, year, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; abs = $f.abs; d = $f.d; day = $f.day; end = $f.end; hour = $f.hour; loc = $f.loc; m = $f.m; min = $f.min; month = $f.month; n = $f.n; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; start = $f.start; t = $f.t; unix = $f.unix; utc = $f.utc; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (loc === ptrType$2.nil) { - $panic(new $String("time: missing Location in call to Date")); - } - m = ((month >> 0)) - 1 >> 0; - _tuple = norm(year, m, 12); - year = _tuple[0]; - m = _tuple[1]; - month = ((m >> 0)) + 1 >> 0; - _tuple$1 = norm(sec, nsec, 1000000000); - sec = _tuple$1[0]; - nsec = _tuple$1[1]; - _tuple$2 = norm(min, sec, 60); - min = _tuple$2[0]; - sec = _tuple$2[1]; - _tuple$3 = norm(hour, min, 60); - hour = _tuple$3[0]; - min = _tuple$3[1]; - _tuple$4 = norm(day, hour, 24); - day = _tuple$4[0]; - hour = _tuple$4[1]; - y = ((x$1 = (x$2 = (new $Int64(0, year)), new $Int64(x$2.$high - -69, x$2.$low - 4075721025)), new $Uint64(x$1.$high, x$1.$low))); - n = $div64(y, new $Uint64(0, 400), false); - y = (x$3 = $mul64(new $Uint64(0, 400), n), new $Uint64(y.$high - x$3.$high, y.$low - x$3.$low)); - d = $mul64(new $Uint64(0, 146097), n); - n = $div64(y, new $Uint64(0, 100), false); - y = (x$4 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high - x$4.$high, y.$low - x$4.$low)); - d = (x$5 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high + x$5.$high, d.$low + x$5.$low)); - n = $div64(y, new $Uint64(0, 4), false); - y = (x$6 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high - x$6.$high, y.$low - x$6.$low)); - d = (x$7 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high + x$7.$high, d.$low + x$7.$low)); - n = y; - d = (x$8 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high + x$8.$high, d.$low + x$8.$low)); - d = (x$9 = (new $Uint64(0, (x$10 = month - 1 >> 0, ((x$10 < 0 || x$10 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$10])))), new $Uint64(d.$high + x$9.$high, d.$low + x$9.$low)); - if (isLeap(year) && month >= 3) { - d = (x$11 = new $Uint64(0, 1), new $Uint64(d.$high + x$11.$high, d.$low + x$11.$low)); - } - d = (x$12 = (new $Uint64(0, (day - 1 >> 0))), new $Uint64(d.$high + x$12.$high, d.$low + x$12.$low)); - abs = $mul64(d, new $Uint64(0, 86400)); - abs = (x$13 = (new $Uint64(0, ((($imul(hour, 3600)) + ($imul(min, 60)) >> 0) + sec >> 0))), new $Uint64(abs.$high + x$13.$high, abs.$low + x$13.$low)); - unix = (x$14 = (new $Int64(abs.$high, abs.$low)), new $Int64(x$14.$high + -2147483647, x$14.$low + 3844486912)); - _r = loc.lookup(unix); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$5 = _r; - offset = _tuple$5[1]; - start = _tuple$5[2]; - end = _tuple$5[3]; - /* */ if (!((offset === 0))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!((offset === 0))) { */ case 2: - utc = (x$15 = (new $Int64(0, offset)), new $Int64(unix.$high - x$15.$high, unix.$low - x$15.$low)); - /* */ if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { $s = 5; continue; } - /* */ if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { */ case 5: - _r$1 = loc.lookup(new $Int64(start.$high - 0, start.$low - 1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$6 = _r$1; - offset = _tuple$6[1]; - $s = 7; continue; - /* } else if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 6: - _r$2 = loc.lookup(end); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$7 = _r$2; - offset = _tuple$7[1]; - /* } */ case 7: - case 4: - unix = (x$16 = (new $Int64(0, offset)), new $Int64(unix.$high - x$16.$high, unix.$low - x$16.$low)); - /* } */ case 3: - t = $clone(unixTime(unix, ((nsec >> 0))), Time); - t.setLoc(loc); - $s = -1; return t; - /* */ } return; } if ($f === undefined) { $f = { $blk: Date }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.abs = abs; $f.d = d; $f.day = day; $f.end = end; $f.hour = hour; $f.loc = loc; $f.m = m; $f.min = min; $f.month = month; $f.n = n; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.start = start; $f.t = t; $f.unix = unix; $f.utc = utc; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Date = Date; - Time.ptr.prototype.Truncate = function(d) { - var _tuple, d, r, t; - t = this; - t.stripMono(); - if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { - return t; - } - _tuple = div($clone(t, Time), d); - r = _tuple[1]; - return $clone(t, Time).Add(new Duration(-r.$high, -r.$low)); - }; - Time.prototype.Truncate = function(d) { return this.$val.Truncate(d); }; - Time.ptr.prototype.Round = function(d) { - var _tuple, d, r, t; - t = this; - t.stripMono(); - if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { - return t; - } - _tuple = div($clone(t, Time), d); - r = _tuple[1]; - if (lessThanHalf(r, d)) { - return $clone(t, Time).Add(new Duration(-r.$high, -r.$low)); - } - return $clone(t, Time).Add(new Duration(d.$high - r.$high, d.$low - r.$low)); - }; - Time.prototype.Round = function(d) { return this.$val.Round(d); }; - div = function(t, d) { - var _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, d0, d1, d1$1, neg, nsec, qmod2, r, sec, sec$1, t, tmp, u0, u0x, u1, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - qmod2 = 0; - r = new Duration(0, 0); - neg = false; - nsec = t.nsec(); - sec = t.sec(); - if ((sec.$high < 0 || (sec.$high === 0 && sec.$low < 0))) { - neg = true; - sec = new $Int64(-sec.$high, -sec.$low); - nsec = -nsec; - if (nsec < 0) { - nsec = nsec + (1000000000) >> 0; - sec = (x$1 = new $Int64(0, 1), new $Int64(sec.$high - x$1.$high, sec.$low - x$1.$low)); - } - } - if ((d.$high < 0 || (d.$high === 0 && d.$low < 1000000000)) && (x$2 = $div64(new Duration(0, 1000000000), (new Duration(d.$high + d.$high, d.$low + d.$low)), true), (x$2.$high === 0 && x$2.$low === 0))) { - qmod2 = (((_q = nsec / (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) & 1; - r = (new Duration(0, (_r = nsec % (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), _r === _r ? _r : $throwRuntimeError("integer divide by zero")))); - } else if ((x$3 = $div64(d, new Duration(0, 1000000000), true), (x$3.$high === 0 && x$3.$low === 0))) { - d1 = ((x$4 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$4.$high, x$4.$low))); - qmod2 = (((x$5 = $div64(sec, d1, false), x$5.$low + ((x$5.$high >> 31) * 4294967296)) >> 0)) & 1; - r = (x$6 = $mul64(((x$7 = $div64(sec, d1, true), new Duration(x$7.$high, x$7.$low))), new Duration(0, 1000000000)), x$8 = (new Duration(0, nsec)), new Duration(x$6.$high + x$8.$high, x$6.$low + x$8.$low)); - } else { - sec$1 = (new $Uint64(sec.$high, sec.$low)); - tmp = $mul64(($shiftRightUint64(sec$1, 32)), new $Uint64(0, 1000000000)); - u1 = $shiftRightUint64(tmp, 32); - u0 = $shiftLeft64(tmp, 32); - tmp = $mul64((new $Uint64(sec$1.$high & 0, (sec$1.$low & 4294967295) >>> 0)), new $Uint64(0, 1000000000)); - _tmp = u0; - _tmp$1 = new $Uint64(u0.$high + tmp.$high, u0.$low + tmp.$low); - u0x = _tmp; - u0 = _tmp$1; - if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) { - u1 = (x$9 = new $Uint64(0, 1), new $Uint64(u1.$high + x$9.$high, u1.$low + x$9.$low)); - } - _tmp$2 = u0; - _tmp$3 = (x$10 = (new $Uint64(0, nsec)), new $Uint64(u0.$high + x$10.$high, u0.$low + x$10.$low)); - u0x = _tmp$2; - u0 = _tmp$3; - if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) { - u1 = (x$11 = new $Uint64(0, 1), new $Uint64(u1.$high + x$11.$high, u1.$low + x$11.$low)); - } - d1$1 = (new $Uint64(d.$high, d.$low)); - while (true) { - if (!(!((x$12 = $shiftRightUint64(d1$1, 63), (x$12.$high === 0 && x$12.$low === 1))))) { break; } - d1$1 = $shiftLeft64(d1$1, (1)); - } - d0 = new $Uint64(0, 0); - while (true) { - qmod2 = 0; - if ((u1.$high > d1$1.$high || (u1.$high === d1$1.$high && u1.$low > d1$1.$low)) || (u1.$high === d1$1.$high && u1.$low === d1$1.$low) && (u0.$high > d0.$high || (u0.$high === d0.$high && u0.$low >= d0.$low))) { - qmod2 = 1; - _tmp$4 = u0; - _tmp$5 = new $Uint64(u0.$high - d0.$high, u0.$low - d0.$low); - u0x = _tmp$4; - u0 = _tmp$5; - if ((u0.$high > u0x.$high || (u0.$high === u0x.$high && u0.$low > u0x.$low))) { - u1 = (x$13 = new $Uint64(0, 1), new $Uint64(u1.$high - x$13.$high, u1.$low - x$13.$low)); - } - u1 = (x$14 = d1$1, new $Uint64(u1.$high - x$14.$high, u1.$low - x$14.$low)); - } - if ((d1$1.$high === 0 && d1$1.$low === 0) && (x$15 = (new $Uint64(d.$high, d.$low)), (d0.$high === x$15.$high && d0.$low === x$15.$low))) { - break; - } - d0 = $shiftRightUint64(d0, (1)); - d0 = (x$16 = $shiftLeft64((new $Uint64(d1$1.$high & 0, (d1$1.$low & 1) >>> 0)), 63), new $Uint64(d0.$high | x$16.$high, (d0.$low | x$16.$low) >>> 0)); - d1$1 = $shiftRightUint64(d1$1, (1)); - } - r = (new Duration(u0.$high, u0.$low)); - } - if (neg && !((r.$high === 0 && r.$low === 0))) { - qmod2 = (qmod2 ^ (1)) >> 0; - r = new Duration(d.$high - r.$high, d.$low - r.$low); - } - return [qmod2, r]; - }; - Location.ptr.prototype.get = function() { - var l, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - if (l === ptrType$2.nil) { - $s = -1; return utcLoc; - } - /* */ if (l === localLoc) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (l === localLoc) { */ case 1: - $r = localOnce.Do(initLocal); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - $s = -1; return l; - /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.get }; } $f.l = l; $f.$s = $s; $f.$r = $r; return $f; - }; - Location.prototype.get = function() { return this.$val.get(); }; - Location.ptr.prototype.String = function() { - var _r, l, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r.name; - /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.String }; } $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f; - }; - Location.prototype.String = function() { return this.$val.String(); }; - FixedZone = function(name, offset) { - var l, name, offset, x$1; - l = new Location.ptr(name, new sliceType([new zone.ptr(name, offset, false)]), new sliceType$1([new zoneTrans.ptr(new $Int64(-2147483648, 0), 0, false, false)]), new $Int64(-2147483648, 0), new $Int64(2147483647, 4294967295), ptrType.nil); - l.cacheZone = (x$1 = l.zone, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); - return l; - }; - $pkg.FixedZone = FixedZone; - Location.ptr.prototype.lookup = function(sec) { - var _q, _r, end, hi, l, lim, lo, m, name, offset, sec, start, tx, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, zone$1, zone$2, zone$3, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; end = $f.end; hi = $f.hi; l = $f.l; lim = $f.lim; lo = $f.lo; m = $f.m; name = $f.name; offset = $f.offset; sec = $f.sec; start = $f.start; tx = $f.tx; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; zone$1 = $f.zone$1; zone$2 = $f.zone$2; zone$3 = $f.zone$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - name = ""; - offset = 0; - start = new $Int64(0, 0); - end = new $Int64(0, 0); - l = this; - _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - l = _r; - if (l.zone.$length === 0) { - name = "UTC"; - offset = 0; - start = new $Int64(-2147483648, 0); - end = new $Int64(2147483647, 4294967295); - $s = -1; return [name, offset, start, end]; - } - zone$1 = l.cacheZone; - if (!(zone$1 === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { - name = zone$1.name; - offset = zone$1.offset; - start = l.cacheStart; - end = l.cacheEnd; - $s = -1; return [name, offset, start, end]; - } - if ((l.tx.$length === 0) || (x$3 = (x$4 = l.tx, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).when, (sec.$high < x$3.$high || (sec.$high === x$3.$high && sec.$low < x$3.$low)))) { - zone$2 = (x$5 = l.zone, x$6 = l.lookupFirstZone(), ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])); - name = zone$2.name; - offset = zone$2.offset; - start = new $Int64(-2147483648, 0); - if (l.tx.$length > 0) { - end = (x$7 = l.tx, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).when; - } else { - end = new $Int64(2147483647, 4294967295); - } - $s = -1; return [name, offset, start, end]; - } - tx = l.tx; - end = new $Int64(2147483647, 4294967295); - lo = 0; - hi = tx.$length; - while (true) { - if (!((hi - lo >> 0) > 1)) { break; } - m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - lim = ((m < 0 || m >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + m]).when; - if ((sec.$high < lim.$high || (sec.$high === lim.$high && sec.$low < lim.$low))) { - end = lim; - hi = m; - } else { - lo = m; - } - } - zone$3 = (x$8 = l.zone, x$9 = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).index, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])); - name = zone$3.name; - offset = zone$3.offset; - start = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).when; - $s = -1; return [name, offset, start, end]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookup }; } $f._q = _q; $f._r = _r; $f.end = end; $f.hi = hi; $f.l = l; $f.lim = lim; $f.lo = lo; $f.m = m; $f.name = name; $f.offset = offset; $f.sec = sec; $f.start = start; $f.tx = tx; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.zone$3 = zone$3; $f.$s = $s; $f.$r = $r; return $f; - }; - Location.prototype.lookup = function(sec) { return this.$val.lookup(sec); }; - Location.ptr.prototype.lookupFirstZone = function() { - var _i, _ref, l, x$1, x$2, x$3, x$4, x$5, x$6, zi, zi$1; - l = this; - if (!l.firstZoneUsed()) { - return 0; - } - if (l.tx.$length > 0 && (x$1 = l.zone, x$2 = (x$3 = l.tx, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).index, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).isDST) { - zi = (((x$4 = l.tx, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).index >> 0)) - 1 >> 0; - while (true) { - if (!(zi >= 0)) { break; } - if (!(x$5 = l.zone, ((zi < 0 || zi >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + zi])).isDST) { - return zi; - } - zi = zi - (1) >> 0; - } - } - _ref = l.zone; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - zi$1 = _i; - if (!(x$6 = l.zone, ((zi$1 < 0 || zi$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + zi$1])).isDST) { - return zi$1; - } - _i++; - } - return 0; - }; - Location.prototype.lookupFirstZone = function() { return this.$val.lookupFirstZone(); }; - Location.ptr.prototype.firstZoneUsed = function() { - var _i, _ref, l, tx; - l = this; - _ref = l.tx; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - tx = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), zoneTrans); - if (tx.index === 0) { - return true; - } - _i++; - } - return false; - }; - Location.prototype.firstZoneUsed = function() { return this.$val.firstZoneUsed(); }; - Location.ptr.prototype.lookupName = function(name, unix) { - var _i, _i$1, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, i, i$1, l, nam, name, offset, offset$1, ok, unix, x$1, x$2, x$3, zone$1, zone$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; i = $f.i; i$1 = $f.i$1; l = $f.l; nam = $f.nam; name = $f.name; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; unix = $f.unix; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - offset = 0; - ok = false; - l = this; - _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - l = _r; - _ref = l.zone; - _i = 0; - /* while (true) { */ case 2: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } - i = _i; - zone$1 = (x$1 = l.zone, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); - /* */ if (zone$1.name === name) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (zone$1.name === name) { */ case 4: - _r$1 = l.lookup((x$2 = (new $Int64(0, zone$1.offset)), new $Int64(unix.$high - x$2.$high, unix.$low - x$2.$low))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - nam = _tuple[0]; - offset$1 = _tuple[1]; - if (nam === zone$1.name) { - _tmp = offset$1; - _tmp$1 = true; - offset = _tmp; - ok = _tmp$1; - $s = -1; return [offset, ok]; - } - /* } */ case 5: - _i++; - /* } */ $s = 2; continue; case 3: - _ref$1 = l.zone; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$1 = _i$1; - zone$2 = (x$3 = l.zone, ((i$1 < 0 || i$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$1])); - if (zone$2.name === name) { - _tmp$2 = zone$2.offset; - _tmp$3 = true; - offset = _tmp$2; - ok = _tmp$3; - $s = -1; return [offset, ok]; - } - _i$1++; - } - $s = -1; return [offset, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookupName }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.i = i; $f.i$1 = i$1; $f.l = l; $f.nam = nam; $f.name = name; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.unix = unix; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f; - }; - Location.prototype.lookupName = function(name, unix) { return this.$val.lookupName(name, unix); }; - ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$5.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}]; - ptrType$6.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}]; - Time.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "AppendFormat", name: "AppendFormat", pkg: "", typ: $funcType([sliceType$3, $String], [sliceType$3], false)}, {prop: "After", name: "After", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Before", name: "Before", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "abs", name: "abs", pkg: "time", typ: $funcType([], [$Uint64], false)}, {prop: "locabs", name: "locabs", pkg: "time", typ: $funcType([], [$String, $Int, $Uint64], false)}, {prop: "Date", name: "Date", pkg: "", typ: $funcType([], [$Int, Month, $Int], false)}, {prop: "Year", name: "Year", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Month", name: "Month", pkg: "", typ: $funcType([], [Month], false)}, {prop: "Day", name: "Day", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Weekday", name: "Weekday", pkg: "", typ: $funcType([], [Weekday], false)}, {prop: "ISOWeek", name: "ISOWeek", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "Clock", name: "Clock", pkg: "", typ: $funcType([], [$Int, $Int, $Int], false)}, {prop: "Hour", name: "Hour", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Minute", name: "Minute", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Second", name: "Second", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Nanosecond", name: "Nanosecond", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "YearDay", name: "YearDay", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([Time], [Duration], false)}, {prop: "AddDate", name: "AddDate", pkg: "", typ: $funcType([$Int, $Int, $Int], [Time], false)}, {prop: "date", name: "date", pkg: "time", typ: $funcType([$Bool], [$Int, Month, $Int, $Int], false)}, {prop: "UTC", name: "UTC", pkg: "", typ: $funcType([], [Time], false)}, {prop: "Local", name: "Local", pkg: "", typ: $funcType([], [Time], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([ptrType$2], [Time], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "Zone", name: "Zone", pkg: "", typ: $funcType([], [$String, $Int], false)}, {prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixNano", name: "UnixNano", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Time], false)}]; - ptrType$7.methods = [{prop: "nsec", name: "nsec", pkg: "time", typ: $funcType([], [$Int32], false)}, {prop: "sec", name: "sec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "unixSec", name: "unixSec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "addSec", name: "addSec", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "setLoc", name: "setLoc", pkg: "time", typ: $funcType([ptrType$2], [], false)}, {prop: "stripMono", name: "stripMono", pkg: "time", typ: $funcType([], [], false)}, {prop: "setMono", name: "setMono", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "mono", name: "mono", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$3], [$error], false)}]; - Month.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - Weekday.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - Duration.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seconds", name: "Seconds", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Minutes", name: "Minutes", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Hours", name: "Hours", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Duration], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Duration], false)}]; - ptrType$2.methods = [{prop: "get", name: "get", pkg: "time", typ: $funcType([], [ptrType$2], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "lookup", name: "lookup", pkg: "time", typ: $funcType([$Int64], [$String, $Int, $Int64, $Int64], false)}, {prop: "lookupFirstZone", name: "lookupFirstZone", pkg: "time", typ: $funcType([], [$Int], false)}, {prop: "firstZoneUsed", name: "firstZoneUsed", pkg: "time", typ: $funcType([], [$Bool], false)}, {prop: "lookupName", name: "lookupName", pkg: "time", typ: $funcType([$String, $Int64], [$Int, $Bool], false)}]; - runtimeTimer.init("time", [{prop: "i", name: "i", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "when", name: "when", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "period", name: "period", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "f", name: "f", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "timeout", name: "timeout", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "active", name: "active", embedded: false, exported: false, typ: $Bool, tag: ""}]); - ParseError.init("", [{prop: "Layout", name: "Layout", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Message", name: "Message", embedded: false, exported: true, typ: $String, tag: ""}]); - Timer.init("time", [{prop: "C", name: "C", embedded: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: runtimeTimer, tag: ""}]); - Ticker.init("time", [{prop: "C", name: "C", embedded: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: runtimeTimer, tag: ""}]); - Time.init("time", [{prop: "wall", name: "wall", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "ext", name: "ext", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "loc", name: "loc", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); - Location.init("time", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "zone", name: "zone", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "tx", name: "tx", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "cacheStart", name: "cacheStart", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", embedded: false, exported: false, typ: ptrType, tag: ""}]); - zone.init("time", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", embedded: false, exported: false, typ: $Bool, tag: ""}]); - zoneTrans.init("time", [{prop: "when", name: "when", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", embedded: false, exported: false, typ: $Bool, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = nosync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - localLoc = new Location.ptr("", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil); - localOnce = new nosync.Once.ptr(false, false); - zoneSources = new sliceType$2([runtime.GOROOT() + "/lib/time/zoneinfo.zip"]); - std0x = $toNativeArray($kindInt, [260, 265, 524, 526, 528, 274]); - longDayNames = new sliceType$2(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); - shortDayNames = new sliceType$2(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]); - shortMonthNames = new sliceType$2(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]); - longMonthNames = new sliceType$2(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]); - atoiError = errors.New("time: invalid number"); - errBad = errors.New("bad value for field"); - errLeadingInt = errors.New("time: bad [0-9]*"); - months = $toNativeArray($kindString, ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]); - days = $toNativeArray($kindString, ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); - daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]); - startNano = (x = runtimeNano(), new $Int64(x.$high - 0, x.$low - 1)); - utcLoc = new Location.ptr("UTC", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil); - $pkg.UTC = utcLoc; - $pkg.Local = localLoc; - errLocation = errors.New("time: invalid location name"); - badData = errors.New("malformed time zone information"); - $unused(new sliceType$2(["/usr/share/zoneinfo/", "/usr/share/lib/zoneinfo/", "/usr/lib/locale/TZ/", runtime.GOROOT() + "/lib/time/zoneinfo.zip"])); - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/poll"] = (function() { - var $pkg = {}, $init, errors, io, runtime, atomic, syscall, time, pollDesc, TimeoutError, fdMutex, FD, ptrType, chanType, sliceType, ptrType$1, ptrType$2, arrayType, sliceType$2, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$3, ptrType$12, funcType, funcType$1, ptrType$13, ptrType$14, ptrType$15, ptrType$16, sliceType$4, ptrType$17, semWaiters, tryDupCloexec, tryDupCloexec$24ptr, runtime_Semacquire, runtime_Semrelease, errClosing, consume, fcntl, DupCloseOnExec, dupCloseOnExecOld, writev, accept; - errors = $packages["errors"]; - io = $packages["io"]; - runtime = $packages["runtime"]; - atomic = $packages["sync/atomic"]; - syscall = $packages["syscall"]; - time = $packages["time"]; - pollDesc = $pkg.pollDesc = $newType(0, $kindStruct, "poll.pollDesc", true, "internal/poll", false, function(closing_) { - this.$val = this; - if (arguments.length === 0) { - this.closing = false; - return; - } - this.closing = closing_; - }); - TimeoutError = $pkg.TimeoutError = $newType(0, $kindStruct, "poll.TimeoutError", true, "internal/poll", true, function() { - this.$val = this; - if (arguments.length === 0) { - return; - } - }); - fdMutex = $pkg.fdMutex = $newType(0, $kindStruct, "poll.fdMutex", true, "internal/poll", false, function(state_, rsema_, wsema_) { - this.$val = this; - if (arguments.length === 0) { - this.state = new $Uint64(0, 0); - this.rsema = 0; - this.wsema = 0; - return; - } - this.state = state_; - this.rsema = rsema_; - this.wsema = wsema_; - }); - FD = $pkg.FD = $newType(0, $kindStruct, "poll.FD", true, "internal/poll", true, function(fdmu_, Sysfd_, pd_, iovecs_, csema_, isBlocking_, IsStream_, ZeroReadIsEOF_, isFile_) { - this.$val = this; - if (arguments.length === 0) { - this.fdmu = new fdMutex.ptr(new $Uint64(0, 0), 0, 0); - this.Sysfd = 0; - this.pd = new pollDesc.ptr(false); - this.iovecs = ptrType$6.nil; - this.csema = 0; - this.isBlocking = 0; - this.IsStream = false; - this.ZeroReadIsEOF = false; - this.isFile = false; - return; - } - this.fdmu = fdmu_; - this.Sysfd = Sysfd_; - this.pd = pd_; - this.iovecs = iovecs_; - this.csema = csema_; - this.isBlocking = isBlocking_; - this.IsStream = IsStream_; - this.ZeroReadIsEOF = ZeroReadIsEOF_; - this.isFile = isFile_; - }); - ptrType = $ptrType($Uint32); - chanType = $chanType($Bool, false, false); - sliceType = $sliceType(chanType); - ptrType$1 = $ptrType($Uint64); - ptrType$2 = $ptrType($Int32); - arrayType = $arrayType($Uint8, 4); - sliceType$2 = $sliceType(syscall.Iovec); - ptrType$6 = $ptrType(sliceType$2); - ptrType$7 = $ptrType($Uint8); - ptrType$8 = $ptrType(FD); - ptrType$9 = $ptrType(pollDesc); - ptrType$10 = $ptrType(TimeoutError); - ptrType$11 = $ptrType(fdMutex); - sliceType$3 = $sliceType($Uint8); - ptrType$12 = $ptrType(syscall.Stat_t); - funcType = $funcType([$Uintptr], [], false); - funcType$1 = $funcType([$Uintptr], [$Bool], false); - ptrType$13 = $ptrType(syscall.Linger); - ptrType$14 = $ptrType(syscall.IPMreqn); - ptrType$15 = $ptrType(syscall.IPMreq); - ptrType$16 = $ptrType(syscall.IPv6Mreq); - sliceType$4 = $sliceType(sliceType$3); - ptrType$17 = $ptrType(sliceType$4); - pollDesc.ptr.prototype.init = function(fd) { - var fd, pd; - pd = this; - return $ifaceNil; - }; - pollDesc.prototype.init = function(fd) { return this.$val.init(fd); }; - pollDesc.ptr.prototype.close = function() { - var pd; - pd = this; - }; - pollDesc.prototype.close = function() { return this.$val.close(); }; - pollDesc.ptr.prototype.evict = function() { - var pd; - pd = this; - pd.closing = true; - }; - pollDesc.prototype.evict = function() { return this.$val.evict(); }; - pollDesc.ptr.prototype.prepare = function(mode, isFile) { - var isFile, mode, pd; - pd = this; - if (pd.closing) { - return errClosing(isFile); - } - return $ifaceNil; - }; - pollDesc.prototype.prepare = function(mode, isFile) { return this.$val.prepare(mode, isFile); }; - pollDesc.ptr.prototype.prepareRead = function(isFile) { - var isFile, pd; - pd = this; - return pd.prepare(114, isFile); - }; - pollDesc.prototype.prepareRead = function(isFile) { return this.$val.prepareRead(isFile); }; - pollDesc.ptr.prototype.prepareWrite = function(isFile) { - var isFile, pd; - pd = this; - return pd.prepare(119, isFile); - }; - pollDesc.prototype.prepareWrite = function(isFile) { return this.$val.prepareWrite(isFile); }; - pollDesc.ptr.prototype.wait = function(mode, isFile) { - var isFile, mode, pd; - pd = this; - if (pd.closing) { - return errClosing(isFile); - } - return $pkg.ErrTimeout; - }; - pollDesc.prototype.wait = function(mode, isFile) { return this.$val.wait(mode, isFile); }; - pollDesc.ptr.prototype.waitRead = function(isFile) { - var isFile, pd; - pd = this; - return pd.wait(114, isFile); - }; - pollDesc.prototype.waitRead = function(isFile) { return this.$val.waitRead(isFile); }; - pollDesc.ptr.prototype.waitWrite = function(isFile) { - var isFile, pd; - pd = this; - return pd.wait(119, isFile); - }; - pollDesc.prototype.waitWrite = function(isFile) { return this.$val.waitWrite(isFile); }; - pollDesc.ptr.prototype.pollable = function() { - return true; - }; - pollDesc.prototype.pollable = function() { return this.$val.pollable(); }; - FD.ptr.prototype.SetDeadline = function(t) { - var t; - return $ifaceNil; - }; - FD.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; - FD.ptr.prototype.SetReadDeadline = function(t) { - var t; - return $ifaceNil; - }; - FD.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; - FD.ptr.prototype.SetWriteDeadline = function(t) { - var t; - return $ifaceNil; - }; - FD.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; - runtime_Semacquire = function(s) { - var _entry, _key, _r, ch, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r = $f._r; ch = $f.ch; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ if (s.$get() === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (s.$get() === 0) { */ case 1: - ch = new $Chan($Bool, 0); - _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType.keyFor(_key)] = { k: _key, v: $append((_entry = semWaiters[ptrType.keyFor(s)], _entry !== undefined ? _entry.v : sliceType.nil), ch) }; - _r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r[0]; - /* } */ case 2: - s.$set(s.$get() - (1) >>> 0); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semacquire }; } $f._entry = _entry; $f._key = _key; $f._r = _r; $f.ch = ch; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - runtime_Semrelease = function(s) { - var _entry, _key, ch, s, w, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; ch = $f.ch; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s.$set(s.$get() + (1) >>> 0); - w = (_entry = semWaiters[ptrType.keyFor(s)], _entry !== undefined ? _entry.v : sliceType.nil); - if (w.$length === 0) { - $s = -1; return; - } - ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]); - w = $subslice(w, 1); - _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType.keyFor(_key)] = { k: _key, v: w }; - if (w.$length === 0) { - delete semWaiters[ptrType.keyFor(s)]; - } - $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f._entry = _entry; $f._key = _key; $f.ch = ch; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; - }; - errClosing = function(isFile) { - var isFile; - if (isFile) { - return $pkg.ErrFileClosing; - } - return $pkg.ErrNetClosing; - }; - TimeoutError.ptr.prototype.Error = function() { - var e; - e = this; - return "i/o timeout"; - }; - TimeoutError.prototype.Error = function() { return this.$val.Error(); }; - TimeoutError.ptr.prototype.Timeout = function() { - var e; - e = this; - return true; - }; - TimeoutError.prototype.Timeout = function() { return this.$val.Timeout(); }; - TimeoutError.ptr.prototype.Temporary = function() { - var e; - e = this; - return true; - }; - TimeoutError.prototype.Temporary = function() { return this.$val.Temporary(); }; - consume = function(v, n) { - var ln0, n, v, x, x$1, x$2, x$3; - while (true) { - if (!(v.$get().$length > 0)) { break; } - ln0 = (new $Int64(0, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).$length)); - if ((ln0.$high > n.$high || (ln0.$high === n.$high && ln0.$low > n.$low))) { - (x$2 = v.$get(), (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = v.$get(), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $flatten64(n)))); - return; - } - n = (x$3 = ln0, new $Int64(n.$high - x$3.$high, n.$low - x$3.$low)); - v.$set($subslice((v.$get()), 1)); - } - }; - FD.ptr.prototype.Fsync = function() { - var err, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Fsync(fd.Sysfd); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fsync }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Fsync = function() { return this.$val.Fsync(); }; - fcntl = function(fd, cmd, arg) { - var _tuple, arg, cmd, e, fd, r; - _tuple = syscall.Syscall(72, ((fd >>> 0)), ((cmd >>> 0)), ((arg >>> 0))); - r = _tuple[0]; - e = _tuple[2]; - if (!((e === 0))) { - return [((r >> 0)), new syscall.Errno((e))]; - } - return [((r >> 0)), $ifaceNil]; - }; - fdMutex.ptr.prototype.incref = function() { - var mu, new$1, old, x, x$1; - mu = this; - while (true) { - old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); - if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { - return false; - } - new$1 = new $Uint64(old.$high + 0, old.$low + 8); - if ((x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { - $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); - } - if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { - return true; - } - } - }; - fdMutex.prototype.incref = function() { return this.$val.incref(); }; - fdMutex.ptr.prototype.increfAndClose = function() { - var mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; mu = $f.mu; new$1 = $f.new$1; old = $f.old; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - mu = this; - /* while (true) { */ case 1: - old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); - if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { - $s = -1; return false; - } - new$1 = (x$1 = new $Uint64(old.$high | 0, (old.$low | 1) >>> 0), new $Uint64(x$1.$high + 0, x$1.$low + 8)); - if ((x$2 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$2.$high === 0 && x$2.$low === 0))) { - $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); - } - new$1 = (x$3 = new $Uint64(2147483647, 4286578688), new $Uint64(new$1.$high & ~x$3.$high, (new$1.$low & ~x$3.$low) >>> 0)); - /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: - /* while (true) { */ case 5: - /* if (!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { break; } */ if(!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { $s = 6; continue; } - old = (x$5 = new $Uint64(0, 8388608), new $Uint64(old.$high - x$5.$high, old.$low - x$5.$low)); - $r = runtime_Semrelease((mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ $s = 5; continue; case 6: - /* while (true) { */ case 8: - /* if (!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { break; } */ if(!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { $s = 9; continue; } - old = (x$7 = new $Uint64(2048, 0), new $Uint64(old.$high - x$7.$high, old.$low - x$7.$low)); - $r = runtime_Semrelease((mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ $s = 8; continue; case 9: - $s = -1; return true; - /* } */ case 4: - /* } */ $s = 1; continue; case 2: - $s = -1; return false; - /* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.increfAndClose }; } $f.mu = mu; $f.new$1 = new$1; $f.old = old; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; - }; - fdMutex.prototype.increfAndClose = function() { return this.$val.increfAndClose(); }; - fdMutex.ptr.prototype.decref = function() { - var mu, new$1, old, x, x$1; - mu = this; - while (true) { - old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); - if ((x = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x.$high === 0 && x.$low === 0))) { - $panic(new $String("inconsistent poll.fdMutex")); - } - new$1 = new $Uint64(old.$high - 0, old.$low - 8); - if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { - return (x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$1.$high === 0 && x$1.$low === 1)); - } - } - }; - fdMutex.prototype.decref = function() { return this.$val.decref(); }; - fdMutex.ptr.prototype.rwlock = function(read) { - var _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; mu = $f.mu; mutexBit = $f.mutexBit; mutexMask = $f.mutexMask; mutexSema = $f.mutexSema; mutexWait = $f.mutexWait; new$1 = $f.new$1; old = $f.old; read = $f.read; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - mu = this; - _tmp = new $Uint64(0, 0); - _tmp$1 = new $Uint64(0, 0); - _tmp$2 = new $Uint64(0, 0); - mutexBit = _tmp; - mutexWait = _tmp$1; - mutexMask = _tmp$2; - mutexSema = ptrType.nil; - if (read) { - mutexBit = new $Uint64(0, 2); - mutexWait = new $Uint64(0, 8388608); - mutexMask = new $Uint64(2047, 4286578688); - mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))); - } else { - mutexBit = new $Uint64(0, 4); - mutexWait = new $Uint64(2048, 0); - mutexMask = new $Uint64(2147481600, 0); - mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))); - } - /* while (true) { */ case 1: - old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); - if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { - $s = -1; return false; - } - new$1 = new $Uint64(0, 0); - if ((x$1 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { - new$1 = (x$2 = new $Uint64(old.$high | mutexBit.$high, (old.$low | mutexBit.$low) >>> 0), new $Uint64(x$2.$high + 0, x$2.$low + 8)); - if ((x$3 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$3.$high === 0 && x$3.$low === 0))) { - $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); - } - } else { - new$1 = new $Uint64(old.$high + mutexWait.$high, old.$low + mutexWait.$low); - if ((x$4 = new $Uint64(new$1.$high & mutexMask.$high, (new$1.$low & mutexMask.$low) >>> 0), (x$4.$high === 0 && x$4.$low === 0))) { - $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); - } - } - /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: - if ((x$5 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0))) { - $s = -1; return true; - } - $r = runtime_Semacquire(mutexSema); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 4: - /* } */ $s = 1; continue; case 2: - $s = -1; return false; - /* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.rwlock }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.mu = mu; $f.mutexBit = mutexBit; $f.mutexMask = mutexMask; $f.mutexSema = mutexSema; $f.mutexWait = mutexWait; $f.new$1 = new$1; $f.old = old; $f.read = read; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - fdMutex.prototype.rwlock = function(read) { return this.$val.rwlock(read); }; - fdMutex.ptr.prototype.rwunlock = function(read) { - var _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; mu = $f.mu; mutexBit = $f.mutexBit; mutexMask = $f.mutexMask; mutexSema = $f.mutexSema; mutexWait = $f.mutexWait; new$1 = $f.new$1; old = $f.old; read = $f.read; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - mu = this; - _tmp = new $Uint64(0, 0); - _tmp$1 = new $Uint64(0, 0); - _tmp$2 = new $Uint64(0, 0); - mutexBit = _tmp; - mutexWait = _tmp$1; - mutexMask = _tmp$2; - mutexSema = ptrType.nil; - if (read) { - mutexBit = new $Uint64(0, 2); - mutexWait = new $Uint64(0, 8388608); - mutexMask = new $Uint64(2047, 4286578688); - mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))); - } else { - mutexBit = new $Uint64(0, 4); - mutexWait = new $Uint64(2048, 0); - mutexMask = new $Uint64(2147481600, 0); - mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))); - } - /* while (true) { */ case 1: - old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); - if ((x = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x.$high === 0 && x.$low === 0)) || (x$1 = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { - $panic(new $String("inconsistent poll.fdMutex")); - } - new$1 = (x$2 = new $Uint64(old.$high & ~mutexBit.$high, (old.$low & ~mutexBit.$low) >>> 0), new $Uint64(x$2.$high - 0, x$2.$low - 8)); - if (!((x$3 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) { - new$1 = (x$4 = mutexWait, new $Uint64(new$1.$high - x$4.$high, new$1.$low - x$4.$low)); - } - /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: - /* */ if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { */ case 5: - $r = runtime_Semrelease(mutexSema); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 6: - $s = -1; return (x$6 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$6.$high === 0 && x$6.$low === 1)); - /* } */ case 4: - /* } */ $s = 1; continue; case 2: - $s = -1; return false; - /* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.rwunlock }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.mu = mu; $f.mutexBit = mutexBit; $f.mutexMask = mutexMask; $f.mutexSema = mutexSema; $f.mutexWait = mutexWait; $f.new$1 = new$1; $f.old = old; $f.read = read; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f; - }; - fdMutex.prototype.rwunlock = function(read) { return this.$val.rwunlock(read); }; - FD.ptr.prototype.incref = function() { - var fd; - fd = this; - if (!fd.fdmu.incref()) { - return errClosing(fd.isFile); - } - return $ifaceNil; - }; - FD.prototype.incref = function() { return this.$val.incref(); }; - FD.ptr.prototype.decref = function() { - var _r, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - /* */ if (fd.fdmu.decref()) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (fd.fdmu.decref()) { */ case 1: - _r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.decref }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.decref = function() { return this.$val.decref(); }; - FD.ptr.prototype.readLock = function() { - var _r, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - _r = fd.fdmu.rwlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!_r) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!_r) { */ case 1: - $s = -1; return errClosing(fd.isFile); - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.readLock }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.readLock = function() { return this.$val.readLock(); }; - FD.ptr.prototype.readUnlock = function() { - var _r, _r$1, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - _r = fd.fdmu.rwunlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_r) { */ case 1: - _r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - /* } */ case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.readUnlock }; } $f._r = _r; $f._r$1 = _r$1; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.readUnlock = function() { return this.$val.readUnlock(); }; - FD.ptr.prototype.writeLock = function() { - var _r, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - _r = fd.fdmu.rwlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!_r) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!_r) { */ case 1: - $s = -1; return errClosing(fd.isFile); - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.writeLock }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.writeLock = function() { return this.$val.writeLock(); }; - FD.ptr.prototype.writeUnlock = function() { - var _r, _r$1, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - _r = fd.fdmu.rwunlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (_r) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (_r) { */ case 1: - _r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - /* } */ case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.writeUnlock }; } $f._r = _r; $f._r$1 = _r$1; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.writeUnlock = function() { return this.$val.writeUnlock(); }; - FD.ptr.prototype.eofError = function(n, err) { - var err, fd, n; - fd = this; - if ((n === 0) && $interfaceIsEqual(err, $ifaceNil) && fd.ZeroReadIsEOF) { - return io.EOF; - } - return err; - }; - FD.prototype.eofError = function(n, err) { return this.$val.eofError(n, err); }; - FD.ptr.prototype.Fchmod = function(mode) { - var err, fd, mode, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; mode = $f.mode; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Fchmod(fd.Sysfd, mode); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchmod }; } $f.err = err; $f.fd = fd; $f.mode = mode; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Fchmod = function(mode) { return this.$val.Fchmod(mode); }; - FD.ptr.prototype.Fchown = function(uid, gid) { - var err, fd, gid, uid, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; gid = $f.gid; uid = $f.uid; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Fchown(fd.Sysfd, uid, gid); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchown }; } $f.err = err; $f.fd = fd; $f.gid = gid; $f.uid = uid; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Fchown = function(uid, gid) { return this.$val.Fchown(uid, gid); }; - FD.ptr.prototype.Ftruncate = function(size) { - var err, fd, size, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; size = $f.size; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Ftruncate(fd.Sysfd, size); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Ftruncate }; } $f.err = err; $f.fd = fd; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Ftruncate = function(size) { return this.$val.Ftruncate(size); }; - FD.ptr.prototype.Init = function(net, pollable) { - var err, fd, net, pollable; - fd = this; - if (net === "file") { - fd.isFile = true; - } - if (!pollable) { - fd.isBlocking = 1; - return $ifaceNil; - } - err = fd.pd.init(fd); - if (!($interfaceIsEqual(err, $ifaceNil))) { - fd.isBlocking = 1; - } - return err; - }; - FD.prototype.Init = function(net, pollable) { return this.$val.Init(net, pollable); }; - FD.ptr.prototype.destroy = function() { - var _r, err, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - fd.pd.close(); - _r = $pkg.CloseFunc(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - fd.Sysfd = -1; - $r = runtime_Semrelease((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.destroy }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.destroy = function() { return this.$val.destroy(); }; - FD.ptr.prototype.Close = function() { - var _r, _r$1, err, fd, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - _r = fd.fdmu.increfAndClose(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!_r) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!_r) { */ case 1: - $s = -1; return errClosing(fd.isFile); - /* } */ case 2: - fd.pd.evict(); - _r$1 = fd.decref(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err = _r$1; - /* */ if (fd.isBlocking === 0) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (fd.isBlocking === 0) { */ case 5: - $r = runtime_Semacquire((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 6: - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Close }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.Close = function() { return this.$val.Close(); }; - FD.ptr.prototype.Shutdown = function(how) { - var err, fd, how, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; how = $f.how; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Shutdown(fd.Sysfd, how); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Shutdown }; } $f.err = err; $f.fd = fd; $f.how = how; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Shutdown = function(how) { return this.$val.Shutdown(how); }; - FD.ptr.prototype.SetBlocking = function() { - var err, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - atomic.StoreUint32((fd.$ptr_isBlocking || (fd.$ptr_isBlocking = new ptrType(function() { return this.$target.isBlocking; }, function($v) { this.$target.isBlocking = $v; }, fd))), 1); - $s = -1; return syscall.SetNonblock(fd.Sysfd, false); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetBlocking }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetBlocking = function() { return this.$val.SetBlocking(); }; - FD.ptr.prototype.Read = function(p) { - var _r, _tuple, err, err$1, err$2, fd, n, p, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - $deferred.push([$methodVal(fd, "readUnlock"), []]); - if (p.$length === 0) { - $s = -1; return [0, $ifaceNil]; - } - err$1 = fd.pd.prepareRead(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [0, err$1]; - } - if (fd.IsStream && p.$length > 1073741824) { - p = $subslice(p, 0, 1073741824); - } - while (true) { - _tuple = syscall.Read(fd.Sysfd, p); - n = _tuple[0]; - err$2 = _tuple[1]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - n = 0; - if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { - err$2 = fd.pd.waitRead(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - continue; - } - } - if (false && $interfaceIsEqual(err$2, new syscall.Errno(4))) { - continue; - } - } - err$2 = fd.eofError(n, err$2); - $s = -1; return [n, err$2]; - } - $s = -1; return [0, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Read }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Read = function(p) { return this.$val.Read(p); }; - FD.ptr.prototype.Pread = function(p, off) { - var _r, _tuple, err, err$1, fd, n, off, p, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; off = $f.off; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - if (fd.IsStream && p.$length > 1073741824) { - p = $subslice(p, 0, 1073741824); - } - _tuple = syscall.Pread(fd.Sysfd, p, off); - n = _tuple[0]; - err$1 = _tuple[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - n = 0; - } - _r = fd.decref(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - err$1 = fd.eofError(n, err$1); - $s = -1; return [n, err$1]; - /* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Pread }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.off = off; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.prototype.Pread = function(p, off) { return this.$val.Pread(p, off); }; - FD.ptr.prototype.ReadFrom = function(p) { - var _r, _tuple, err, err$1, err$2, fd, n, p, sa, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, $ifaceNil, err]; - } - $deferred.push([$methodVal(fd, "readUnlock"), []]); - err$1 = fd.pd.prepareRead(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [0, $ifaceNil, err$1]; - } - while (true) { - _tuple = syscall.Recvfrom(fd.Sysfd, p, 0); - n = _tuple[0]; - sa = _tuple[1]; - err$2 = _tuple[2]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - n = 0; - if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { - err$2 = fd.pd.waitRead(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - continue; - } - } - } - err$2 = fd.eofError(n, err$2); - $s = -1; return [n, sa, err$2]; - } - $s = -1; return [0, $ifaceNil, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadFrom }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.ReadFrom = function(p) { return this.$val.ReadFrom(p); }; - FD.ptr.prototype.ReadMsg = function(p, oob) { - var _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, 0, 0, $ifaceNil, err]; - } - $deferred.push([$methodVal(fd, "readUnlock"), []]); - err$1 = fd.pd.prepareRead(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [0, 0, 0, $ifaceNil, err$1]; - } - while (true) { - _tuple = syscall.Recvmsg(fd.Sysfd, p, oob, 0); - n = _tuple[0]; - oobn = _tuple[1]; - flags = _tuple[2]; - sa = _tuple[3]; - err$2 = _tuple[4]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { - err$2 = fd.pd.waitRead(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - continue; - } - } - } - err$2 = fd.eofError(n, err$2); - $s = -1; return [n, oobn, flags, sa, err$2]; - } - $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadMsg }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.ReadMsg = function(p, oob) { return this.$val.ReadMsg(p, oob); }; - FD.ptr.prototype.Write = function(p) { - var _r, _tuple, err, err$1, err$2, fd, max, n, nn, p, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; max = $f.max; n = $f.n; nn = $f.nn; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - $deferred.push([$methodVal(fd, "writeUnlock"), []]); - err$1 = fd.pd.prepareWrite(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [0, err$1]; - } - nn = 0; - while (true) { - max = p.$length; - if (fd.IsStream && (max - nn >> 0) > 1073741824) { - max = nn + 1073741824 >> 0; - } - _tuple = syscall.Write(fd.Sysfd, $subslice(p, nn, max)); - n = _tuple[0]; - err$2 = _tuple[1]; - if (n > 0) { - nn = nn + (n) >> 0; - } - if (nn === p.$length) { - $s = -1; return [nn, err$2]; - } - if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { - err$2 = fd.pd.waitWrite(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - continue; - } - } - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return [nn, err$2]; - } - if (n === 0) { - $s = -1; return [nn, io.ErrUnexpectedEOF]; - } - } - $s = -1; return [0, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Write }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.max = max; $f.n = n; $f.nn = nn; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Write = function(p) { return this.$val.Write(p); }; - FD.ptr.prototype.Pwrite = function(p, off) { - var _tuple, err, err$1, fd, max, n, nn, off, p, x, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; fd = $f.fd; max = $f.max; n = $f.n; nn = $f.nn; off = $f.off; p = $f.p; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - $deferred.push([$methodVal(fd, "decref"), []]); - nn = 0; - while (true) { - max = p.$length; - if (fd.IsStream && (max - nn >> 0) > 1073741824) { - max = nn + 1073741824 >> 0; - } - _tuple = syscall.Pwrite(fd.Sysfd, $subslice(p, nn, max), (x = (new $Int64(0, nn)), new $Int64(off.$high + x.$high, off.$low + x.$low))); - n = _tuple[0]; - err$1 = _tuple[1]; - if (n > 0) { - nn = nn + (n) >> 0; - } - if (nn === p.$length) { - $s = -1; return [nn, err$1]; - } - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [nn, err$1]; - } - if (n === 0) { - $s = -1; return [nn, io.ErrUnexpectedEOF]; - } - } - $s = -1; return [0, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Pwrite }; } $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.max = max; $f.n = n; $f.nn = nn; $f.off = off; $f.p = p; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Pwrite = function(p, off) { return this.$val.Pwrite(p, off); }; - FD.ptr.prototype.WriteTo = function(p, sa) { - var _r, _r$1, err, err$1, err$2, fd, p, sa, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - $deferred.push([$methodVal(fd, "writeUnlock"), []]); - err$1 = fd.pd.prepareWrite(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [0, err$1]; - } - /* while (true) { */ case 2: - _r$1 = syscall.Sendto(fd.Sysfd, p, 0, sa); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err$2 = _r$1; - if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { - err$2 = fd.pd.waitWrite(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - /* continue; */ $s = 2; continue; - } - } - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return [0, err$2]; - } - $s = -1; return [p.$length, $ifaceNil]; - /* } */ $s = 2; continue; case 3: - $s = -1; return [0, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteTo }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.WriteTo = function(p, sa) { return this.$val.WriteTo(p, sa); }; - FD.ptr.prototype.WriteMsg = function(p, oob, sa) { - var _r, _r$1, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; oob = $f.oob; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, 0, err]; - } - $deferred.push([$methodVal(fd, "writeUnlock"), []]); - err$1 = fd.pd.prepareWrite(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [0, 0, err$1]; - } - /* while (true) { */ case 2: - _r$1 = syscall.SendmsgN(fd.Sysfd, p, oob, sa, 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - n = _tuple[0]; - err$2 = _tuple[1]; - if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { - err$2 = fd.pd.waitWrite(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - /* continue; */ $s = 2; continue; - } - } - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return [n, 0, err$2]; - } - $s = -1; return [n, oob.$length, err$2]; - /* } */ $s = 2; continue; case 3: - $s = -1; return [0, 0, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteMsg }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.oob = oob; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.WriteMsg = function(p, oob, sa) { return this.$val.WriteMsg(p, oob, sa); }; - FD.ptr.prototype.Accept = function() { - var _1, _r, _r$1, _tuple, err, err$1, err$2, errcall, fd, rsa, s, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; errcall = $f.errcall; fd = $f.fd; rsa = $f.rsa; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [-1, $ifaceNil, "", err]; - } - $deferred.push([$methodVal(fd, "readUnlock"), []]); - err$1 = fd.pd.prepareRead(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [-1, $ifaceNil, "", err$1]; - } - /* while (true) { */ case 2: - _r$1 = accept(fd.Sysfd); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - s = _tuple[0]; - rsa = _tuple[1]; - errcall = _tuple[2]; - err$2 = _tuple[3]; - if ($interfaceIsEqual(err$2, $ifaceNil)) { - $s = -1; return [s, rsa, "", err$2]; - } - _1 = err$2; - if ($interfaceIsEqual(_1, new syscall.Errno((11)))) { - if (fd.pd.pollable()) { - err$2 = fd.pd.waitRead(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - /* continue; */ $s = 2; continue; - } - } - } else if ($interfaceIsEqual(_1, new syscall.Errno((103)))) { - /* continue; */ $s = 2; continue; - } - $s = -1; return [-1, $ifaceNil, errcall, err$2]; - /* } */ $s = 2; continue; case 3: - $s = -1; return [0, $ifaceNil, "", $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Accept }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.errcall = errcall; $f.fd = fd; $f.rsa = rsa; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Accept = function() { return this.$val.Accept(); }; - FD.ptr.prototype.Seek = function(offset, whence) { - var err, fd, offset, whence, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; offset = $f.offset; whence = $f.whence; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [new $Int64(0, 0), err]; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Seek(fd.Sysfd, offset, whence); - /* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Seek }; } $f.err = err; $f.fd = fd; $f.offset = offset; $f.whence = whence; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); }; - FD.ptr.prototype.ReadDirent = function(buf) { - var _tuple, buf, err, err$1, fd, n, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - $deferred.push([$methodVal(fd, "decref"), []]); - while (true) { - _tuple = syscall.ReadDirent(fd.Sysfd, buf); - n = _tuple[0]; - err$1 = _tuple[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - n = 0; - if ($interfaceIsEqual(err$1, new syscall.Errno(11)) && fd.pd.pollable()) { - err$1 = fd.pd.waitRead(fd.isFile); - if ($interfaceIsEqual(err$1, $ifaceNil)) { - continue; - } - } - } - $s = -1; return [n, err$1]; - } - $s = -1; return [0, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadDirent }; } $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.ReadDirent = function(buf) { return this.$val.ReadDirent(buf); }; - FD.ptr.prototype.Fchdir = function() { - var err, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Fchdir(fd.Sysfd); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchdir }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Fchdir = function() { return this.$val.Fchdir(); }; - FD.ptr.prototype.Fstat = function(s) { - var err, fd, s, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.Fstat(fd.Sysfd, s); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fstat }; } $f.err = err; $f.fd = fd; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Fstat = function(s) { return this.$val.Fstat(s); }; - DupCloseOnExec = function(fd) { - var _1, _r, _tuple, e1, fd, r0, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; e1 = $f.e1; fd = $f.fd; r0 = $f.r0; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (atomic.LoadInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$2(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; })))) === 1) { - _tuple = fcntl(fd, 1030, 0); - r0 = _tuple[0]; - e1 = _tuple[1]; - if ($interfaceIsEqual(e1, $ifaceNil)) { - $s = -1; return [r0, "", $ifaceNil]; - } - _1 = $assertType(e1, syscall.Errno); - if ((_1 === (22)) || (_1 === (38))) { - atomic.StoreInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$2(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; }))), 0); - } else { - $s = -1; return [-1, "fcntl", e1]; - } - } - _r = dupCloseOnExecOld(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: DupCloseOnExec }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.e1 = e1; $f.fd = fd; $f.r0 = r0; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.DupCloseOnExec = DupCloseOnExec; - dupCloseOnExecOld = function(fd) { - var _tuple, err, fd, newfd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; err = $f.err; fd = $f.fd; newfd = $f.newfd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - $r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(syscall.ForkLock, "RUnlock"), []]); - _tuple = syscall.Dup(fd); - newfd = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [-1, "dup", err]; - } - syscall.CloseOnExec(newfd); - $s = -1; return [newfd, "", $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dupCloseOnExecOld }; } $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.newfd = newfd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.ptr.prototype.Dup = function() { - var _r, err, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [-1, "", err]; - } - $deferred.push([$methodVal(fd, "decref"), []]); - _r = DupCloseOnExec(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Dup }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Dup = function() { return this.$val.Dup(); }; - FD.ptr.prototype.WaitWrite = function() { - var fd; - fd = this; - return fd.pd.waitWrite(fd.isFile); - }; - FD.prototype.WaitWrite = function() { return this.$val.WaitWrite(); }; - FD.ptr.prototype.WriteOnce = function(p) { - var _r, err, fd, p, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [0, err]; - } - $deferred.push([$methodVal(fd, "writeUnlock"), []]); - $s = -1; return syscall.Write(fd.Sysfd, p); - /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteOnce }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.WriteOnce = function(p) { return this.$val.WriteOnce(p); }; - FD.ptr.prototype.RawControl = function(f) { - var err, f, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $r = f(((fd.Sysfd >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return $ifaceNil; - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawControl }; } $f.err = err; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.RawControl = function(f) { return this.$val.RawControl(f); }; - FD.ptr.prototype.RawRead = function(f) { - var _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "readUnlock"), []]); - err$1 = fd.pd.prepareRead(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return err$1; - } - /* while (true) { */ case 2: - _r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_r$1) { */ case 4: - $s = -1; return $ifaceNil; - /* } */ case 5: - err$2 = fd.pd.waitRead(fd.isFile); - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return err$2; - } - /* } */ $s = 2; continue; case 3: - $s = -1; return $ifaceNil; - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawRead }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.RawRead = function(f) { return this.$val.RawRead(f); }; - FD.ptr.prototype.RawWrite = function(f) { - var _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "writeUnlock"), []]); - err$1 = fd.pd.prepareWrite(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return err$1; - } - /* while (true) { */ case 2: - _r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_r$1) { */ case 4: - $s = -1; return $ifaceNil; - /* } */ case 5: - err$2 = fd.pd.waitWrite(fd.isFile); - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return err$2; - } - /* } */ $s = 2; continue; case 3: - $s = -1; return $ifaceNil; - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawWrite }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.RawWrite = function(f) { return this.$val.RawWrite(f); }; - writev = function(fd, iovecs) { - var _tuple, e, fd, iovecs, r; - _tuple = syscall.Syscall(20, ((fd >>> 0)), (($sliceToArray(iovecs))), ((iovecs.$length >>> 0))); - r = _tuple[0]; - e = _tuple[2]; - if (!((e === 0))) { - return [r, new syscall.Errno((e))]; - } - return [r, $ifaceNil]; - }; - accept = function(s) { - var _1, _r, _r$1, _r$2, _tuple, _tuple$1, err, ns, s, sa, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; ns = $f.ns; s = $f.s; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = $pkg.Accept4Func(s, 526336); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - ns = _tuple[0]; - sa = _tuple[1]; - err = _tuple[2]; - _1 = err; - if ($interfaceIsEqual(_1, $ifaceNil)) { - $s = -1; return [ns, sa, "", $ifaceNil]; - } else if ($interfaceIsEqual(_1, new syscall.Errno((38)))) { - } else if ($interfaceIsEqual(_1, new syscall.Errno((22)))) { - } else if ($interfaceIsEqual(_1, new syscall.Errno((13)))) { - } else if ($interfaceIsEqual(_1, new syscall.Errno((14)))) { - } else { - $s = -1; return [-1, sa, "accept4", err]; - } - _r$1 = $pkg.AcceptFunc(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - ns = _tuple$1[0]; - sa = _tuple$1[1]; - err = _tuple$1[2]; - if ($interfaceIsEqual(err, $ifaceNil)) { - syscall.CloseOnExec(ns); - } - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [-1, $ifaceNil, "accept", err]; - } - err = syscall.SetNonblock(ns, true); - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3: - _r$2 = $pkg.CloseFunc(ns); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$2; - $s = -1; return [-1, $ifaceNil, "setnonblock", err]; - /* } */ case 4: - $s = -1; return [ns, sa, "", $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: accept }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.ns = ns; $f.s = s; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f; - }; - FD.ptr.prototype.SetsockoptInt = function(level, name, arg) { - var arg, err, fd, level, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptInt(fd.Sysfd, level, name, arg); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptInt }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptInt = function(level, name, arg) { return this.$val.SetsockoptInt(level, name, arg); }; - FD.ptr.prototype.SetsockoptInet4Addr = function(level, name, arg) { - var arg, err, fd, level, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptInet4Addr(fd.Sysfd, level, name, $clone(arg, arrayType)); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptInet4Addr }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptInet4Addr = function(level, name, arg) { return this.$val.SetsockoptInet4Addr(level, name, arg); }; - FD.ptr.prototype.SetsockoptLinger = function(level, name, l) { - var err, fd, l, level, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; l = $f.l; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptLinger(fd.Sysfd, level, name, l); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptLinger }; } $f.err = err; $f.fd = fd; $f.l = l; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptLinger = function(level, name, l) { return this.$val.SetsockoptLinger(level, name, l); }; - FD.ptr.prototype.SetsockoptIPMreqn = function(level, name, mreq) { - var err, fd, level, mreq, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptIPMreqn(fd.Sysfd, level, name, mreq); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPMreqn }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptIPMreqn = function(level, name, mreq) { return this.$val.SetsockoptIPMreqn(level, name, mreq); }; - FD.ptr.prototype.SetsockoptByte = function(level, name, arg) { - var arg, err, fd, level, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptByte(fd.Sysfd, level, name, arg); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptByte }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptByte = function(level, name, arg) { return this.$val.SetsockoptByte(level, name, arg); }; - FD.ptr.prototype.SetsockoptIPMreq = function(level, name, mreq) { - var err, fd, level, mreq, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptIPMreq(fd.Sysfd, level, name, mreq); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPMreq }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptIPMreq = function(level, name, mreq) { return this.$val.SetsockoptIPMreq(level, name, mreq); }; - FD.ptr.prototype.SetsockoptIPv6Mreq = function(level, name, mreq) { - var err, fd, level, mreq, name, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - fd = this; - err = fd.incref(); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - $deferred.push([$methodVal(fd, "decref"), []]); - $s = -1; return syscall.SetsockoptIPv6Mreq(fd.Sysfd, level, name, mreq); - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPv6Mreq }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.SetsockoptIPv6Mreq = function(level, name, mreq) { return this.$val.SetsockoptIPv6Mreq(level, name, mreq); }; - FD.ptr.prototype.Writev = function(v) { - var _i, _r, _ref, _tuple, chunk, err, err$1, err$2, fd, iovecs, maxVec, n, v, wrote, x, x$1, x$2, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; chunk = $f.chunk; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; iovecs = $f.iovecs; maxVec = $f.maxVec; n = $f.n; v = $f.v; wrote = $f.wrote; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - iovecs = [iovecs]; - fd = this; - _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [new $Int64(0, 0), err]; - } - $deferred.push([$methodVal(fd, "writeUnlock"), []]); - err$1 = fd.pd.prepareWrite(fd.isFile); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [new $Int64(0, 0), err$1]; - } - iovecs[0] = sliceType$2.nil; - if (!(fd.iovecs === ptrType$6.nil)) { - iovecs[0] = fd.iovecs.$get(); - } - maxVec = 1024; - n = new $Int64(0, 0); - err$2 = $ifaceNil; - /* while (true) { */ case 2: - /* if (!(v.$get().$length > 0)) { break; } */ if(!(v.$get().$length > 0)) { $s = 3; continue; } - iovecs[0] = $subslice(iovecs[0], 0, 0); - _ref = v.$get(); - _i = 0; - /* while (true) { */ case 4: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } - chunk = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (chunk.$length === 0) { - _i++; - /* continue; */ $s = 4; continue; - } - iovecs[0] = $append(iovecs[0], new syscall.Iovec.ptr($indexPtr(chunk.$array, chunk.$offset + 0, ptrType$7), new $Uint64(0, 0))); - if (fd.IsStream && chunk.$length > 1073741824) { - (x = iovecs[0].$length - 1 >> 0, ((x < 0 || x >= iovecs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : iovecs[0].$array[iovecs[0].$offset + x])).SetLen(1073741824); - /* break; */ $s = 5; continue; - } - (x$1 = iovecs[0].$length - 1 >> 0, ((x$1 < 0 || x$1 >= iovecs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : iovecs[0].$array[iovecs[0].$offset + x$1])).SetLen(chunk.$length); - if (iovecs[0].$length === maxVec) { - /* break; */ $s = 5; continue; - } - _i++; - /* } */ $s = 4; continue; case 5: - if (iovecs[0].$length === 0) { - /* break; */ $s = 3; continue; - } - fd.iovecs = (iovecs.$ptr || (iovecs.$ptr = new ptrType$6(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, iovecs))); - wrote = 0; - _tuple = writev(fd.Sysfd, iovecs[0]); - wrote = _tuple[0]; - err$2 = _tuple[1]; - if (wrote === 4294967295) { - wrote = 0; - } - $r = $pkg.TestHookDidWritev(((wrote >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - n = (x$2 = (new $Int64(0, wrote.constructor === Number ? wrote : 1)), new $Int64(n.$high + x$2.$high, n.$low + x$2.$low)); - consume(v, (new $Int64(0, wrote.constructor === Number ? wrote : 1))); - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - if ($assertType(err$2, syscall.Errno) === 11) { - err$2 = fd.pd.waitWrite(fd.isFile); - if ($interfaceIsEqual(err$2, $ifaceNil)) { - /* continue; */ $s = 2; continue; - } - } - /* break; */ $s = 3; continue; - } - if ((n.$high === 0 && n.$low === 0)) { - err$2 = io.ErrUnexpectedEOF; - /* break; */ $s = 3; continue; - } - /* } */ $s = 2; continue; case 3: - $s = -1; return [n, err$2]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Writev }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.chunk = chunk; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.iovecs = iovecs; $f.maxVec = maxVec; $f.n = n; $f.v = v; $f.wrote = wrote; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - FD.prototype.Writev = function(v) { return this.$val.Writev(v); }; - ptrType$9.methods = [{prop: "init", name: "init", pkg: "internal/poll", typ: $funcType([ptrType$8], [$error], false)}, {prop: "close", name: "close", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "evict", name: "evict", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "prepare", name: "prepare", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "prepareRead", name: "prepareRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "prepareWrite", name: "prepareWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "wait", name: "wait", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitWrite", name: "waitWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitCanceled", name: "waitCanceled", pkg: "internal/poll", typ: $funcType([$Int], [], false)}, {prop: "pollable", name: "pollable", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}]; - ptrType$10.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$11.methods = [{prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "increfAndClose", name: "increfAndClose", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "rwlock", name: "rwlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}, {prop: "rwunlock", name: "rwunlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}]; - ptrType$8.methods = [{prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "Fsync", name: "Fsync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readLock", name: "readLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readUnlock", name: "readUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "writeLock", name: "writeLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "writeUnlock", name: "writeUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "eofError", name: "eofError", pkg: "internal/poll", typ: $funcType([$Int, $error], [$error], false)}, {prop: "Fchmod", name: "Fchmod", pkg: "", typ: $funcType([$Uint32], [$error], false)}, {prop: "Fchown", name: "Fchown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Ftruncate", name: "Ftruncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Init", name: "Init", pkg: "", typ: $funcType([$String, $Bool], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Shutdown", name: "Shutdown", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetBlocking", name: "SetBlocking", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Pread", name: "Pread", pkg: "", typ: $funcType([sliceType$3, $Int64], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$3], [$Int, syscall.Sockaddr, $error], false)}, {prop: "ReadMsg", name: "ReadMsg", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Pwrite", name: "Pwrite", pkg: "", typ: $funcType([sliceType$3, $Int64], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$3, syscall.Sockaddr], [$Int, $error], false)}, {prop: "WriteMsg", name: "WriteMsg", pkg: "", typ: $funcType([sliceType$3, sliceType$3, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [$Int, syscall.Sockaddr, $String, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadDirent", name: "ReadDirent", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Fchdir", name: "Fchdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Fstat", name: "Fstat", pkg: "", typ: $funcType([ptrType$12], [$error], false)}, {prop: "Dup", name: "Dup", pkg: "", typ: $funcType([], [$Int, $String, $error], false)}, {prop: "WaitWrite", name: "WaitWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteOnce", name: "WriteOnce", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "RawControl", name: "RawControl", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "RawRead", name: "RawRead", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "RawWrite", name: "RawWrite", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "SetsockoptInt", name: "SetsockoptInt", pkg: "", typ: $funcType([$Int, $Int, $Int], [$error], false)}, {prop: "SetsockoptInet4Addr", name: "SetsockoptInet4Addr", pkg: "", typ: $funcType([$Int, $Int, arrayType], [$error], false)}, {prop: "SetsockoptLinger", name: "SetsockoptLinger", pkg: "", typ: $funcType([$Int, $Int, ptrType$13], [$error], false)}, {prop: "SetsockoptIPMreqn", name: "SetsockoptIPMreqn", pkg: "", typ: $funcType([$Int, $Int, ptrType$14], [$error], false)}, {prop: "SetsockoptByte", name: "SetsockoptByte", pkg: "", typ: $funcType([$Int, $Int, $Uint8], [$error], false)}, {prop: "SetsockoptIPMreq", name: "SetsockoptIPMreq", pkg: "", typ: $funcType([$Int, $Int, ptrType$15], [$error], false)}, {prop: "SetsockoptIPv6Mreq", name: "SetsockoptIPv6Mreq", pkg: "", typ: $funcType([$Int, $Int, ptrType$16], [$error], false)}, {prop: "Writev", name: "Writev", pkg: "", typ: $funcType([ptrType$17], [$Int64, $error], false)}]; - pollDesc.init("internal/poll", [{prop: "closing", name: "closing", embedded: false, exported: false, typ: $Bool, tag: ""}]); - TimeoutError.init("", []); - fdMutex.init("internal/poll", [{prop: "state", name: "state", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", embedded: false, exported: false, typ: $Uint32, tag: ""}]); - FD.init("internal/poll", [{prop: "fdmu", name: "fdmu", embedded: false, exported: false, typ: fdMutex, tag: ""}, {prop: "Sysfd", name: "Sysfd", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "pd", name: "pd", embedded: false, exported: false, typ: pollDesc, tag: ""}, {prop: "iovecs", name: "iovecs", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "csema", name: "csema", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "isBlocking", name: "isBlocking", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "IsStream", name: "IsStream", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "ZeroReadIsEOF", name: "ZeroReadIsEOF", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "isFile", name: "isFile", embedded: false, exported: false, typ: $Bool, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - semWaiters = {}; - $pkg.ErrNetClosing = errors.New("use of closed network connection"); - $pkg.ErrFileClosing = errors.New("use of closed file"); - $pkg.ErrNoDeadline = errors.New("file type does not support deadline"); - $pkg.ErrTimeout = new TimeoutError.ptr(); - $pkg.TestHookDidWritev = (function(wrote) { - var wrote; - }); - tryDupCloexec = 1; - $pkg.Accept4Func = syscall.Accept4; - $pkg.CloseFunc = syscall.Close; - $pkg.AcceptFunc = syscall.Accept; - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/syscall/unix"] = (function() { - var $pkg = {}, $init, atomic, syscall, IsNonblock; - atomic = $packages["sync/atomic"]; - syscall = $packages["syscall"]; - IsNonblock = function(fd) { - var _tmp, _tmp$1, err, fd, nonblocking; - nonblocking = false; - err = $ifaceNil; - _tmp = false; - _tmp$1 = $ifaceNil; - nonblocking = _tmp; - err = _tmp$1; - return [nonblocking, err]; - }; - $pkg.IsNonblock = IsNonblock; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = atomic.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = syscall.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/testlog"] = (function() { - var $pkg = {}, $init, atomic, Interface, ptrType, logger, Logger, Open, Stat; - atomic = $packages["sync/atomic"]; - Interface = $pkg.Interface = $newType(8, $kindInterface, "testlog.Interface", true, "internal/testlog", true, null); - ptrType = $ptrType(Interface); - Logger = function() { - var impl; - impl = logger.Load(); - if ($interfaceIsEqual(impl, $ifaceNil)) { - return $ifaceNil; - } - return $assertType(impl, ptrType).$get(); - }; - $pkg.Logger = Logger; - Open = function(name) { - var log, name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - log = Logger(); - /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: - $r = log.Open(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Open }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Open = Open; - Stat = function(name) { - var log, name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - log = Logger(); - /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: - $r = log.Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Stat = Stat; - Interface.init([{prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Getenv", name: "Getenv", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([$String], [], false)}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = atomic.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - logger = new atomic.Value.ptr($ifaceNil); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["os"] = (function() { - var $pkg = {}, $init, errors, js, poll, unix, testlog, io, runtime, sync, atomic, syscall, time, dirInfo, timeout, PathError, SyscallError, LinkError, file, rawConn, File, FileInfo, FileMode, fileStat, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, sliceType$5, ptrType$12, arrayType$1, ptrType$13, funcType$1, ptrType$15, arrayType$6, ptrType$16, funcType$2, funcType$3, ptrType$18, errFinished, lstat, runtime_args, init, runtime_beforeExit, NewSyscallError, IsNotExist, underlyingError, wrapSyscallError, isNotExist, setStickyBit, Open, OpenFile, Chmod, sigpipe, syscallMode, chmod, fixLongPath, NewFile, newFile, epipecheck, openFileNolog, basename, init$1, Exit, newRawConn, Stat, Lstat, fillFileStatFromSys, timespecToTime, statNolog, lstatNolog; - errors = $packages["errors"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - poll = $packages["internal/poll"]; - unix = $packages["internal/syscall/unix"]; - testlog = $packages["internal/testlog"]; - io = $packages["io"]; - runtime = $packages["runtime"]; - sync = $packages["sync"]; - atomic = $packages["sync/atomic"]; - syscall = $packages["syscall"]; - time = $packages["time"]; - dirInfo = $pkg.dirInfo = $newType(0, $kindStruct, "os.dirInfo", true, "os", false, function(buf_, nbuf_, bufp_) { - this.$val = this; - if (arguments.length === 0) { - this.buf = sliceType$2.nil; - this.nbuf = 0; - this.bufp = 0; - return; - } - this.buf = buf_; - this.nbuf = nbuf_; - this.bufp = bufp_; - }); - timeout = $pkg.timeout = $newType(8, $kindInterface, "os.timeout", true, "os", false, null); - PathError = $pkg.PathError = $newType(0, $kindStruct, "os.PathError", true, "os", true, function(Op_, Path_, Err_) { - this.$val = this; - if (arguments.length === 0) { - this.Op = ""; - this.Path = ""; - this.Err = $ifaceNil; - return; - } - this.Op = Op_; - this.Path = Path_; - this.Err = Err_; - }); - SyscallError = $pkg.SyscallError = $newType(0, $kindStruct, "os.SyscallError", true, "os", true, function(Syscall_, Err_) { - this.$val = this; - if (arguments.length === 0) { - this.Syscall = ""; - this.Err = $ifaceNil; - return; - } - this.Syscall = Syscall_; - this.Err = Err_; - }); - LinkError = $pkg.LinkError = $newType(0, $kindStruct, "os.LinkError", true, "os", true, function(Op_, Old_, New_, Err_) { - this.$val = this; - if (arguments.length === 0) { - this.Op = ""; - this.Old = ""; - this.New = ""; - this.Err = $ifaceNil; - return; - } - this.Op = Op_; - this.Old = Old_; - this.New = New_; - this.Err = Err_; - }); - file = $pkg.file = $newType(0, $kindStruct, "os.file", true, "os", false, function(pfd_, name_, dirinfo_, nonblock_, stdoutOrErr_) { - this.$val = this; - if (arguments.length === 0) { - this.pfd = new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), 0, new poll.pollDesc.ptr(false), ptrType$12.nil, 0, 0, false, false, false); - this.name = ""; - this.dirinfo = ptrType$1.nil; - this.nonblock = false; - this.stdoutOrErr = false; - return; - } - this.pfd = pfd_; - this.name = name_; - this.dirinfo = dirinfo_; - this.nonblock = nonblock_; - this.stdoutOrErr = stdoutOrErr_; - }); - rawConn = $pkg.rawConn = $newType(0, $kindStruct, "os.rawConn", true, "os", false, function(file_) { - this.$val = this; - if (arguments.length === 0) { - this.file = ptrType.nil; - return; - } - this.file = file_; - }); - File = $pkg.File = $newType(0, $kindStruct, "os.File", true, "os", true, function(file_) { - this.$val = this; - if (arguments.length === 0) { - this.file = ptrType$13.nil; - return; - } - this.file = file_; - }); - FileInfo = $pkg.FileInfo = $newType(8, $kindInterface, "os.FileInfo", true, "os", true, null); - FileMode = $pkg.FileMode = $newType(4, $kindUint32, "os.FileMode", true, "os", true, null); - fileStat = $pkg.fileStat = $newType(0, $kindStruct, "os.fileStat", true, "os", false, function(name_, size_, mode_, modTime_, sys_) { - this.$val = this; - if (arguments.length === 0) { - this.name = ""; - this.size = new $Int64(0, 0); - this.mode = 0; - this.modTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil); - this.sys = new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero()); - return; - } - this.name = name_; - this.size = size_; - this.mode = mode_; - this.modTime = modTime_; - this.sys = sys_; - }); - sliceType = $sliceType($String); - ptrType = $ptrType(File); - sliceType$1 = $sliceType(FileInfo); - ptrType$1 = $ptrType(dirInfo); - sliceType$2 = $sliceType($Uint8); - ptrType$2 = $ptrType(PathError); - ptrType$3 = $ptrType(LinkError); - ptrType$4 = $ptrType(SyscallError); - sliceType$5 = $sliceType(syscall.Iovec); - ptrType$12 = $ptrType(sliceType$5); - arrayType$1 = $arrayType($Int64, 3); - ptrType$13 = $ptrType(file); - funcType$1 = $funcType([ptrType$13], [$error], false); - ptrType$15 = $ptrType(time.Location); - arrayType$6 = $arrayType($Uint8, 32); - ptrType$16 = $ptrType(fileStat); - funcType$2 = $funcType([$Uintptr], [], false); - funcType$3 = $funcType([$Uintptr], [$Bool], false); - ptrType$18 = $ptrType(rawConn); - runtime_args = function() { - return $pkg.Args; - }; - init = function() { - var argv, i, process; - process = $global.process; - if (!(process === undefined)) { - argv = process.argv; - $pkg.Args = $makeSlice(sliceType, ($parseInt(argv.length) - 1 >> 0)); - i = 0; - while (true) { - if (!(i < ($parseInt(argv.length) - 1 >> 0))) { break; } - ((i < 0 || i >= $pkg.Args.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Args.$array[$pkg.Args.$offset + i] = $internalize(argv[(i + 1 >> 0)], $String)); - i = i + (1) >> 0; - } - } - if ($pkg.Args.$length === 0) { - $pkg.Args = new sliceType(["?"]); - } - }; - runtime_beforeExit = function() { - }; - File.ptr.prototype.Readdir = function(n) { - var _r, f, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - if (f === ptrType.nil) { - $s = -1; return [sliceType$1.nil, $pkg.ErrInvalid]; - } - _r = f.readdir(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdir }; } $f._r = _r; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Readdir = function(n) { return this.$val.Readdir(n); }; - File.ptr.prototype.Readdirnames = function(n) { - var _r, _tmp, _tmp$1, _tuple, err, f, n, names, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - names = sliceType.nil; - err = $ifaceNil; - f = this; - if (f === ptrType.nil) { - _tmp = sliceType.nil; - _tmp$1 = $pkg.ErrInvalid; - names = _tmp; - err = _tmp$1; - $s = -1; return [names, err]; - } - _r = f.readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - names = _tuple[0]; - err = _tuple[1]; - $s = -1; return [names, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdirnames }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Readdirnames = function(n) { return this.$val.Readdirnames(n); }; - dirInfo.ptr.prototype.close = function() { - var d; - d = this; - }; - dirInfo.prototype.close = function() { return this.$val.close(); }; - File.ptr.prototype.readdirnames = function(n) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, d, err, errno, f, n, names, nb, nc, size, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; d = $f.d; err = $f.err; errno = $f.errno; f = $f.f; n = $f.n; names = $f.names; nb = $f.nb; nc = $f.nc; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - names = sliceType.nil; - err = $ifaceNil; - f = this; - if (f.file.dirinfo === ptrType$1.nil) { - f.file.dirinfo = new dirInfo.ptr(sliceType$2.nil, 0, 0); - f.file.dirinfo.buf = $makeSlice(sliceType$2, 8192); - } - d = f.file.dirinfo; - size = n; - if (size <= 0) { - size = 100; - n = -1; - } - names = $makeSlice(sliceType, 0, size); - /* while (true) { */ case 1: - /* if (!(!((n === 0)))) { break; } */ if(!(!((n === 0)))) { $s = 2; continue; } - /* */ if (d.bufp >= d.nbuf) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (d.bufp >= d.nbuf) { */ case 3: - d.bufp = 0; - errno = $ifaceNil; - _r = f.file.pfd.ReadDirent(d.buf); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - d.nbuf = _tuple[0]; - errno = _tuple[1]; - runtime.KeepAlive(f); - if (!($interfaceIsEqual(errno, $ifaceNil))) { - _tmp = names; - _tmp$1 = wrapSyscallError("readdirent", errno); - names = _tmp; - err = _tmp$1; - $s = -1; return [names, err]; - } - if (d.nbuf <= 0) { - /* break; */ $s = 2; continue; - } - /* } */ case 4: - _tmp$2 = 0; - _tmp$3 = 0; - nb = _tmp$2; - nc = _tmp$3; - _tuple$1 = syscall.ParseDirent($subslice(d.buf, d.bufp, d.nbuf), n, names); - nb = _tuple$1[0]; - nc = _tuple$1[1]; - names = _tuple$1[2]; - d.bufp = d.bufp + (nb) >> 0; - n = n - (nc) >> 0; - /* } */ $s = 1; continue; case 2: - if (n >= 0 && (names.$length === 0)) { - _tmp$4 = names; - _tmp$5 = io.EOF; - names = _tmp$4; - err = _tmp$5; - $s = -1; return [names, err]; - } - _tmp$6 = names; - _tmp$7 = $ifaceNil; - names = _tmp$6; - err = _tmp$7; - $s = -1; return [names, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdirnames }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.d = d; $f.err = err; $f.errno = errno; $f.f = f; $f.n = n; $f.names = names; $f.nb = nb; $f.nc = nc; $f.size = size; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.readdirnames = function(n) { return this.$val.readdirnames(n); }; - PathError.ptr.prototype.Error = function() { - var _r, e, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return e.Op + " " + e.Path + ": " + _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; - }; - PathError.prototype.Error = function() { return this.$val.Error(); }; - PathError.ptr.prototype.Timeout = function() { - var _r, _tuple, _v, e, ok, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _tuple = $assertType(e.Err, timeout, true); - t = _tuple[0]; - ok = _tuple[1]; - if (!(ok)) { _v = false; $s = 1; continue s; } - _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 1: - $s = -1; return _v; - /* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - PathError.prototype.Timeout = function() { return this.$val.Timeout(); }; - SyscallError.ptr.prototype.Error = function() { - var _r, e, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return e.Syscall + ": " + _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; - }; - SyscallError.prototype.Error = function() { return this.$val.Error(); }; - SyscallError.ptr.prototype.Timeout = function() { - var _r, _tuple, _v, e, ok, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _tuple = $assertType(e.Err, timeout, true); - t = _tuple[0]; - ok = _tuple[1]; - if (!(ok)) { _v = false; $s = 1; continue s; } - _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 1: - $s = -1; return _v; - /* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - SyscallError.prototype.Timeout = function() { return this.$val.Timeout(); }; - NewSyscallError = function(syscall$1, err) { - var err, syscall$1; - if ($interfaceIsEqual(err, $ifaceNil)) { - return $ifaceNil; - } - return new SyscallError.ptr(syscall$1, err); - }; - $pkg.NewSyscallError = NewSyscallError; - IsNotExist = function(err) { - var err; - return isNotExist(err); - }; - $pkg.IsNotExist = IsNotExist; - underlyingError = function(err) { - var _ref, err, err$1, err$2, err$3; - _ref = err; - if ($assertType(_ref, ptrType$2, true)[1]) { - err$1 = _ref.$val; - return err$1.Err; - } else if ($assertType(_ref, ptrType$3, true)[1]) { - err$2 = _ref.$val; - return err$2.Err; - } else if ($assertType(_ref, ptrType$4, true)[1]) { - err$3 = _ref.$val; - return err$3.Err; - } - return err; - }; - wrapSyscallError = function(name, err) { - var _tuple, err, name, ok; - _tuple = $assertType(err, syscall.Errno, true); - ok = _tuple[1]; - if (ok) { - err = NewSyscallError(name, err); - } - return err; - }; - isNotExist = function(err) { - var err; - err = underlyingError(err); - return $interfaceIsEqual(err, new syscall.Errno(2)) || $interfaceIsEqual(err, $pkg.ErrNotExist); - }; - File.ptr.prototype.Name = function() { - var f; - f = this; - return f.file.name; - }; - File.prototype.Name = function() { return this.$val.Name(); }; - LinkError.ptr.prototype.Error = function() { - var _r, e, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return e.Op + " " + e.Old + " " + e.New + ": " + _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: LinkError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; - }; - LinkError.prototype.Error = function() { return this.$val.Error(); }; - File.ptr.prototype.Read = function(b) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - err$1 = f.checkValid("read"); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err$1; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - _r = f.read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - e = _tuple[1]; - _tmp$2 = n; - _tmp$3 = f.wrapErr("read", e); - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Read = function(b) { return this.$val.Read(b); }; - File.ptr.prototype.ReadAt = function(b, off) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - err$1 = f.checkValid("read"); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err$1; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { - _tmp$2 = 0; - _tmp$3 = new PathError.ptr("readat", f.file.name, errors.New("negative offset")); - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - /* while (true) { */ case 1: - /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } - _r = f.pread(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - m = _tuple[0]; - e = _tuple[1]; - if (!($interfaceIsEqual(e, $ifaceNil))) { - err = f.wrapErr("read", e); - /* break; */ $s = 2; continue; - } - n = n + (m) >> 0; - b = $subslice(b, m); - off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low)); - /* } */ $s = 1; continue; case 2: - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.ReadAt }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); }; - File.ptr.prototype.Write = function(b) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - err$1 = f.checkValid("write"); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err$1; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - _r = f.write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - e = _tuple[1]; - if (n < 0) { - n = 0; - } - if (!((n === b.$length))) { - err = io.ErrShortWrite; - } - epipecheck(f, e); - if (!($interfaceIsEqual(e, $ifaceNil))) { - err = f.wrapErr("write", e); - } - _tmp$2 = n; - _tmp$3 = err; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Write = function(b) { return this.$val.Write(b); }; - File.ptr.prototype.WriteAt = function(b, off) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - err$1 = f.checkValid("write"); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err$1; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { - _tmp$2 = 0; - _tmp$3 = new PathError.ptr("writeat", f.file.name, errors.New("negative offset")); - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - /* while (true) { */ case 1: - /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } - _r = f.pwrite(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - m = _tuple[0]; - e = _tuple[1]; - if (!($interfaceIsEqual(e, $ifaceNil))) { - err = f.wrapErr("write", e); - /* break; */ $s = 2; continue; - } - n = n + (m) >> 0; - b = $subslice(b, m); - off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low)); - /* } */ $s = 1; continue; case 2: - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteAt }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.WriteAt = function(b, off) { return this.$val.WriteAt(b, off); }; - File.ptr.prototype.Seek = function(offset, whence) { - var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, err$1, f, offset, r, ret, whence, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; offset = $f.offset; r = $f.r; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - ret = new $Int64(0, 0); - err = $ifaceNil; - f = this; - err$1 = f.checkValid("seek"); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp = new $Int64(0, 0); - _tmp$1 = err$1; - ret = _tmp; - err = _tmp$1; - $s = -1; return [ret, err]; - } - _r = f.seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - r = _tuple[0]; - e = _tuple[1]; - if ($interfaceIsEqual(e, $ifaceNil) && !(f.file.dirinfo === ptrType$1.nil) && !((r.$high === 0 && r.$low === 0))) { - e = new syscall.Errno(21); - } - if (!($interfaceIsEqual(e, $ifaceNil))) { - _tmp$2 = new $Int64(0, 0); - _tmp$3 = f.wrapErr("seek", e); - ret = _tmp$2; - err = _tmp$3; - $s = -1; return [ret, err]; - } - _tmp$4 = r; - _tmp$5 = $ifaceNil; - ret = _tmp$4; - err = _tmp$5; - $s = -1; return [ret, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Seek }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.offset = offset; $f.r = r; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); }; - File.ptr.prototype.WriteString = function(s) { - var _r, _tuple, err, f, n, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - _r = f.Write((new sliceType$2($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteString }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.WriteString = function(s) { return this.$val.WriteString(s); }; - setStickyBit = function(name) { - var _arg, _arg$1, _r, _r$1, _r$2, _tuple, err, fi, name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; fi = $f.fi; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - fi = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _arg = name; - _r$1 = fi.Mode(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _arg$1 = (_r$1 | 1048576) >>> 0; - _r$2 = Chmod(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: setStickyBit }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.fi = fi; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - Open = function(name) { - var _r, name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = OpenFile(name, 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Open }; } $f._r = _r; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Open = Open; - OpenFile = function(name, flag, perm) { - var _r, flag, name, perm, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; flag = $f.flag; name = $f.name; perm = $f.perm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = testlog.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r = openFileNolog(name, flag, perm); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: OpenFile }; } $f._r = _r; $f.flag = flag; $f.name = name; $f.perm = perm; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.OpenFile = OpenFile; - File.ptr.prototype.wrapErr = function(op, err) { - var err, f, op; - f = this; - if ($interfaceIsEqual(err, $ifaceNil) || $interfaceIsEqual(err, io.EOF)) { - return err; - } - if ($interfaceIsEqual(err, poll.ErrFileClosing)) { - err = $pkg.ErrClosed; - } - return new PathError.ptr(op, f.file.name, err); - }; - File.prototype.wrapErr = function(op, err) { return this.$val.wrapErr(op, err); }; - Chmod = function(name, mode) { - var mode, name; - return chmod(name, mode); - }; - $pkg.Chmod = Chmod; - File.ptr.prototype.Chmod = function(mode) { - var _r, f, mode, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; mode = $f.mode; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - _r = f.chmod(mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chmod }; } $f._r = _r; $f.f = f; $f.mode = mode; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Chmod = function(mode) { return this.$val.Chmod(mode); }; - File.ptr.prototype.SetDeadline = function(t) { - var f, t; - f = this; - return f.setDeadline($clone(t, time.Time)); - }; - File.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; - File.ptr.prototype.SetReadDeadline = function(t) { - var f, t; - f = this; - return f.setReadDeadline($clone(t, time.Time)); - }; - File.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; - File.ptr.prototype.SetWriteDeadline = function(t) { - var f, t; - f = this; - return f.setWriteDeadline($clone(t, time.Time)); - }; - File.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; - File.ptr.prototype.SyscallConn = function() { - var _returncast, err, f; - f = this; - err = f.checkValid("SyscallConn"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [$ifaceNil, err]; - } - _returncast = newRawConn(f); - return [_returncast[0], _returncast[1]]; - }; - File.prototype.SyscallConn = function() { return this.$val.SyscallConn(); }; - sigpipe = function() { - $throwRuntimeError("native function not implemented: os.sigpipe"); - }; - syscallMode = function(i) { - var i, o; - o = 0; - o = (o | (((new FileMode(i).Perm() >>> 0)))) >>> 0; - if (!((((i & 8388608) >>> 0) === 0))) { - o = (o | (2048)) >>> 0; - } - if (!((((i & 4194304) >>> 0) === 0))) { - o = (o | (1024)) >>> 0; - } - if (!((((i & 1048576) >>> 0) === 0))) { - o = (o | (512)) >>> 0; - } - return o; - }; - chmod = function(name, mode) { - var e, mode, name; - e = syscall.Chmod(fixLongPath(name), syscallMode(mode)); - if (!($interfaceIsEqual(e, $ifaceNil))) { - return new PathError.ptr("chmod", name, e); - } - return $ifaceNil; - }; - File.ptr.prototype.chmod = function(mode) { - var _r, e, err, f, mode, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; mode = $f.mode; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - err = f.checkValid("chmod"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = f.file.pfd.Fchmod(syscallMode(mode)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - e = _r; - if (!($interfaceIsEqual(e, $ifaceNil))) { - $s = -1; return f.wrapErr("chmod", e); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.chmod }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.mode = mode; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.chmod = function(mode) { return this.$val.chmod(mode); }; - File.ptr.prototype.Chown = function(uid, gid) { - var _r, e, err, f, gid, uid, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; gid = $f.gid; uid = $f.uid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - err = f.checkValid("chown"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = f.file.pfd.Fchown(uid, gid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - e = _r; - if (!($interfaceIsEqual(e, $ifaceNil))) { - $s = -1; return f.wrapErr("chown", e); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chown }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.gid = gid; $f.uid = uid; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Chown = function(uid, gid) { return this.$val.Chown(uid, gid); }; - File.ptr.prototype.Truncate = function(size) { - var _r, e, err, f, size, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - err = f.checkValid("truncate"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = f.file.pfd.Ftruncate(size); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - e = _r; - if (!($interfaceIsEqual(e, $ifaceNil))) { - $s = -1; return f.wrapErr("truncate", e); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Truncate }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.size = size; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Truncate = function(size) { return this.$val.Truncate(size); }; - File.ptr.prototype.Sync = function() { - var _r, e, err, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - err = f.checkValid("sync"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = f.file.pfd.Fsync(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - e = _r; - if (!($interfaceIsEqual(e, $ifaceNil))) { - $s = -1; return f.wrapErr("sync", e); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Sync }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Sync = function() { return this.$val.Sync(); }; - File.ptr.prototype.Chdir = function() { - var _r, e, err, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - err = f.checkValid("chdir"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = f.file.pfd.Fchdir(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - e = _r; - if (!($interfaceIsEqual(e, $ifaceNil))) { - $s = -1; return f.wrapErr("chdir", e); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chdir }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Chdir = function() { return this.$val.Chdir(); }; - File.ptr.prototype.setDeadline = function(t) { - var err, f, t; - f = this; - err = f.checkValid("SetDeadline"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - return f.file.pfd.SetDeadline($clone(t, time.Time)); - }; - File.prototype.setDeadline = function(t) { return this.$val.setDeadline(t); }; - File.ptr.prototype.setReadDeadline = function(t) { - var err, f, t; - f = this; - err = f.checkValid("SetReadDeadline"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - return f.file.pfd.SetReadDeadline($clone(t, time.Time)); - }; - File.prototype.setReadDeadline = function(t) { return this.$val.setReadDeadline(t); }; - File.ptr.prototype.setWriteDeadline = function(t) { - var err, f, t; - f = this; - err = f.checkValid("SetWriteDeadline"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - return f.file.pfd.SetWriteDeadline($clone(t, time.Time)); - }; - File.prototype.setWriteDeadline = function(t) { return this.$val.setWriteDeadline(t); }; - File.ptr.prototype.checkValid = function(op) { - var f, op; - f = this; - if (f === ptrType.nil) { - return $pkg.ErrInvalid; - } - return $ifaceNil; - }; - File.prototype.checkValid = function(op) { return this.$val.checkValid(op); }; - fixLongPath = function(path) { - var path; - return path; - }; - File.ptr.prototype.Fd = function() { - var _r, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - if (f === ptrType.nil) { - $s = -1; return 4294967295; - } - /* */ if (f.file.nonblock) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (f.file.nonblock) { */ case 1: - _r = f.file.pfd.SetBlocking(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - /* } */ case 2: - $s = -1; return ((f.file.pfd.Sysfd >>> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Fd }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Fd = function() { return this.$val.Fd(); }; - NewFile = function(fd, name) { - var _tuple, err, fd, kind, name, nb; - kind = 0; - _tuple = unix.IsNonblock(((fd >> 0))); - nb = _tuple[0]; - err = _tuple[1]; - if ($interfaceIsEqual(err, $ifaceNil) && nb) { - kind = 3; - } - return newFile(fd, name, kind); - }; - $pkg.NewFile = NewFile; - newFile = function(fd, name, kind) { - var _1, err, err$1, err$2, err$3, f, fd, fdi, kind, name, pollable, st; - fdi = ((fd >> 0)); - if (fdi < 0) { - return ptrType.nil; - } - f = new File.ptr(new file.ptr(new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), fdi, new poll.pollDesc.ptr(false), ptrType$12.nil, 0, 0, true, true, false), name, ptrType$1.nil, false, (fdi === 1) || (fdi === 2))); - pollable = (kind === 1) || (kind === 2) || (kind === 3); - if (kind === 1) { - st = new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero()); - _1 = "linux"; - if (_1 === ("freebsd")) { - pollable = false; - } else if (_1 === ("dragonfly") || _1 === ("netbsd") || _1 === ("openbsd")) { - err = syscall.Fstat(fdi, st); - if ($interfaceIsEqual(err, $ifaceNil) && (((st.Mode & 61440) >>> 0) === 32768)) { - pollable = false; - } - } else if (_1 === ("darwin")) { - err$1 = syscall.Fstat(fdi, st); - if ($interfaceIsEqual(err$1, $ifaceNil) && ((((st.Mode & 61440) >>> 0) === 4096) || (((st.Mode & 61440) >>> 0) === 32768))) { - pollable = false; - } - } - } - err$2 = f.file.pfd.Init("file", pollable); - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - } else if (pollable) { - err$3 = syscall.SetNonblock(fdi, true); - if ($interfaceIsEqual(err$3, $ifaceNil)) { - f.file.nonblock = true; - } - } - runtime.SetFinalizer(f.file, new funcType$1($methodExpr(ptrType$13, "close"))); - return f; - }; - epipecheck = function(file$1, e) { - var e, file$1; - if ($interfaceIsEqual(e, new syscall.Errno(32)) && file$1.file.stdoutOrErr) { - sigpipe(); - } - }; - openFileNolog = function(name, flag, perm) { - var _r, _r$1, _tuple, _tuple$1, e, err, flag, name, perm, r, setSticky, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; err = $f.err; flag = $f.flag; name = $f.name; perm = $f.perm; r = $f.r; setSticky = $f.setSticky; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - setSticky = false; - /* */ if (false && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (false && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { */ case 1: - _r = Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - err = _tuple[1]; - if (IsNotExist(err)) { - setSticky = true; - } - /* } */ case 2: - r = 0; - /* while (true) { */ case 4: - e = $ifaceNil; - _tuple$1 = syscall.Open(name, flag | 524288, syscallMode(perm)); - r = _tuple$1[0]; - e = _tuple$1[1]; - if ($interfaceIsEqual(e, $ifaceNil)) { - /* break; */ $s = 5; continue; - } - if (false && $interfaceIsEqual(e, new syscall.Errno(4))) { - /* continue; */ $s = 4; continue; - } - $s = -1; return [ptrType.nil, new PathError.ptr("open", name, e)]; - /* } */ $s = 4; continue; case 5: - /* */ if (setSticky) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (setSticky) { */ case 6: - _r$1 = setStickyBit(name); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - /* } */ case 7: - if (false) { - syscall.CloseOnExec(r); - } - $s = -1; return [newFile(((r >>> 0)), name, 1), $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: openFileNolog }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.err = err; $f.flag = flag; $f.name = name; $f.perm = perm; $f.r = r; $f.setSticky = setSticky; $f.$s = $s; $f.$r = $r; return $f; - }; - File.ptr.prototype.Close = function() { - var _r, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - if (f === ptrType.nil) { - $s = -1; return $pkg.ErrInvalid; - } - _r = f.file.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Close }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Close = function() { return this.$val.Close(); }; - file.ptr.prototype.close = function() { - var _r, e, err, file$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; file$1 = $f.file$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - file$1 = this; - if (file$1 === ptrType$13.nil) { - $s = -1; return new syscall.Errno(22); - } - if (!(file$1.dirinfo === ptrType$1.nil)) { - file$1.dirinfo.close(); - } - err = $ifaceNil; - _r = file$1.pfd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - e = _r; - if (!($interfaceIsEqual(e, $ifaceNil))) { - if ($interfaceIsEqual(e, poll.ErrFileClosing)) { - e = $pkg.ErrClosed; - } - err = new PathError.ptr("close", file$1.name, e); - } - runtime.SetFinalizer(file$1, $ifaceNil); - $s = -1; return err; - /* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.close }; } $f._r = _r; $f.e = e; $f.err = err; $f.file$1 = file$1; $f.$s = $s; $f.$r = $r; return $f; - }; - file.prototype.close = function() { return this.$val.close(); }; - File.ptr.prototype.read = function(b) { - var _r, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - _r = f.file.pfd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - runtime.KeepAlive(f); - _tmp = n; - _tmp$1 = err; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.read = function(b) { return this.$val.read(b); }; - File.ptr.prototype.pread = function(b, off) { - var _r, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - _r = f.file.pfd.Pread(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - runtime.KeepAlive(f); - _tmp = n; - _tmp$1 = err; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.pread }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.off = off; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.pread = function(b, off) { return this.$val.pread(b, off); }; - File.ptr.prototype.write = function(b) { - var _r, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - _r = f.file.pfd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - runtime.KeepAlive(f); - _tmp = n; - _tmp$1 = err; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.write = function(b) { return this.$val.write(b); }; - File.ptr.prototype.pwrite = function(b, off) { - var _r, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - f = this; - _r = f.file.pfd.Pwrite(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - runtime.KeepAlive(f); - _tmp = n; - _tmp$1 = err; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.pwrite }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.off = off; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.pwrite = function(b, off) { return this.$val.pwrite(b, off); }; - File.ptr.prototype.seek = function(offset, whence) { - var _r, _tmp, _tmp$1, _tuple, err, f, offset, ret, whence, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; offset = $f.offset; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - ret = new $Int64(0, 0); - err = $ifaceNil; - f = this; - _r = f.file.pfd.Seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - ret = _tuple[0]; - err = _tuple[1]; - runtime.KeepAlive(f); - _tmp = ret; - _tmp$1 = err; - ret = _tmp; - err = _tmp$1; - $s = -1; return [ret, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.seek }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.offset = offset; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.seek = function(offset, whence) { return this.$val.seek(offset, whence); }; - File.ptr.prototype.readdir = function(n) { - var _i, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, dirname, err, f, fi, filename, fip, lerr, n, names, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dirname = $f.dirname; err = $f.err; f = $f.f; fi = $f.fi; filename = $f.filename; fip = $f.fip; lerr = $f.lerr; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fi = sliceType$1.nil; - err = $ifaceNil; - f = this; - dirname = f.file.name; - if (dirname === "") { - dirname = "."; - } - _r = f.Readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - names = _tuple[0]; - err = _tuple[1]; - fi = $makeSlice(sliceType$1, 0, names.$length); - _ref = names; - _i = 0; - /* while (true) { */ case 2: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } - filename = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - _r$1 = lstat(dirname + "/" + filename); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - fip = _tuple$1[0]; - lerr = _tuple$1[1]; - if (IsNotExist(lerr)) { - _i++; - /* continue; */ $s = 2; continue; - } - if (!($interfaceIsEqual(lerr, $ifaceNil))) { - _tmp = fi; - _tmp$1 = lerr; - fi = _tmp; - err = _tmp$1; - $s = -1; return [fi, err]; - } - fi = $append(fi, fip); - _i++; - /* } */ $s = 2; continue; case 3: - if ((fi.$length === 0) && $interfaceIsEqual(err, $ifaceNil) && n > 0) { - err = io.EOF; - } - _tmp$2 = fi; - _tmp$3 = err; - fi = _tmp$2; - err = _tmp$3; - $s = -1; return [fi, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdir }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dirname = dirname; $f.err = err; $f.f = f; $f.fi = fi; $f.filename = filename; $f.fip = fip; $f.lerr = lerr; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.readdir = function(n) { return this.$val.readdir(n); }; - basename = function(name) { - var i, name; - i = name.length - 1 >> 0; - while (true) { - if (!(i > 0 && (name.charCodeAt(i) === 47))) { break; } - name = $substring(name, 0, i); - i = i - (1) >> 0; - } - i = i - (1) >> 0; - while (true) { - if (!(i >= 0)) { break; } - if (name.charCodeAt(i) === 47) { - name = $substring(name, (i + 1 >> 0)); - break; - } - i = i - (1) >> 0; - } - return name; - }; - init$1 = function() { - if (false) { - return; - } - $pkg.Args = runtime_args(); - }; - Exit = function(code) { - var code; - if (code === 0) { - runtime_beforeExit(); - } - syscall.Exit(code); - }; - $pkg.Exit = Exit; - rawConn.ptr.prototype.Control = function(f) { - var _r, c, err, err$1, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; err$1 = $f.err$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - err = c.file.checkValid("SyscallConn.Control"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = c.file.file.pfd.RawControl(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err$1 = _r; - runtime.KeepAlive(c.file); - $s = -1; return err$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Control }; } $f._r = _r; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - rawConn.prototype.Control = function(f) { return this.$val.Control(f); }; - rawConn.ptr.prototype.Read = function(f) { - var _r, c, err, err$1, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; err$1 = $f.err$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - err = c.file.checkValid("SyscallConn.Read"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = c.file.file.pfd.RawRead(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err$1 = _r; - runtime.KeepAlive(c.file); - $s = -1; return err$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Read }; } $f._r = _r; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - rawConn.prototype.Read = function(f) { return this.$val.Read(f); }; - rawConn.ptr.prototype.Write = function(f) { - var _r, c, err, err$1, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; err$1 = $f.err$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - err = c.file.checkValid("SyscallConn.Write"); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r = c.file.file.pfd.RawWrite(f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err$1 = _r; - runtime.KeepAlive(c.file); - $s = -1; return err$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Write }; } $f._r = _r; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - rawConn.prototype.Write = function(f) { return this.$val.Write(f); }; - newRawConn = function(file$1) { - var file$1; - return [new rawConn.ptr(file$1), $ifaceNil]; - }; - Stat = function(name) { - var name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return statNolog(name); - /* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Stat = Stat; - Lstat = function(name) { - var name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return lstatNolog(name); - /* */ } return; } if ($f === undefined) { $f = { $blk: Lstat }; } $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Lstat = Lstat; - fillFileStatFromSys = function(fs, name) { - var _1, fs, name; - fs.name = basename(name); - fs.size = fs.sys.Size; - time.Time.copy(fs.modTime, timespecToTime($clone(fs.sys.Mtim, syscall.Timespec))); - fs.mode = ((((fs.sys.Mode & 511) >>> 0) >>> 0)); - _1 = (fs.sys.Mode & 61440) >>> 0; - if (_1 === (24576)) { - fs.mode = (fs.mode | (67108864)) >>> 0; - } else if (_1 === (8192)) { - fs.mode = (fs.mode | (69206016)) >>> 0; - } else if (_1 === (16384)) { - fs.mode = (fs.mode | (2147483648)) >>> 0; - } else if (_1 === (4096)) { - fs.mode = (fs.mode | (33554432)) >>> 0; - } else if (_1 === (40960)) { - fs.mode = (fs.mode | (134217728)) >>> 0; - } else if (_1 === (32768)) { - } else if (_1 === (49152)) { - fs.mode = (fs.mode | (16777216)) >>> 0; - } - if (!((((fs.sys.Mode & 1024) >>> 0) === 0))) { - fs.mode = (fs.mode | (4194304)) >>> 0; - } - if (!((((fs.sys.Mode & 2048) >>> 0) === 0))) { - fs.mode = (fs.mode | (8388608)) >>> 0; - } - if (!((((fs.sys.Mode & 512) >>> 0) === 0))) { - fs.mode = (fs.mode | (1048576)) >>> 0; - } - }; - timespecToTime = function(ts) { - var ts; - return time.Unix((ts.Sec), (ts.Nsec)); - }; - File.ptr.prototype.Stat = function() { - var _r, err, f, fs, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; f = $f.f; fs = $f.fs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fs = [fs]; - f = this; - if (f === ptrType.nil) { - $s = -1; return [$ifaceNil, $pkg.ErrInvalid]; - } - fs[0] = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero())); - _r = f.file.pfd.Fstat(fs[0].sys); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [$ifaceNil, new PathError.ptr("stat", f.file.name, err)]; - } - fillFileStatFromSys(fs[0], f.file.name); - $s = -1; return [fs[0], $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Stat }; } $f._r = _r; $f.err = err; $f.f = f; $f.fs = fs; $f.$s = $s; $f.$r = $r; return $f; - }; - File.prototype.Stat = function() { return this.$val.Stat(); }; - statNolog = function(name) { - var err, fs, name; - fs = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero())); - err = syscall.Stat(name, fs.sys); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [$ifaceNil, new PathError.ptr("stat", name, err)]; - } - fillFileStatFromSys(fs, name); - return [fs, $ifaceNil]; - }; - lstatNolog = function(name) { - var err, fs, name; - fs = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$1.zero())); - err = syscall.Lstat(name, fs.sys); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [$ifaceNil, new PathError.ptr("lstat", name, err)]; - } - fillFileStatFromSys(fs, name); - return [fs, $ifaceNil]; - }; - FileMode.prototype.String = function() { - var _i, _i$1, _ref, _ref$1, _rune, _rune$1, buf, c, c$1, i, i$1, m, w, y, y$1; - m = this.$val; - buf = arrayType$6.zero(); - w = 0; - _ref = "dalTLDpSugct?"; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - i = _i; - c = _rune[0]; - if (!((((m & (((y = (((31 - i >> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c << 24 >>> 24))); - w = w + (1) >> 0; - } - _i += _rune[1]; - } - if (w === 0) { - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); - w = w + (1) >> 0; - } - _ref$1 = "rwxrwxrwx"; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.length)) { break; } - _rune$1 = $decodeRune(_ref$1, _i$1); - i$1 = _i$1; - c$1 = _rune$1[0]; - if (!((((m & (((y$1 = (((8 - i$1 >> 0) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0) === 0))) { - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c$1 << 24 >>> 24))); - } else { - ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); - } - w = w + (1) >> 0; - _i$1 += _rune$1[1]; - } - return ($bytesToString($subslice(new sliceType$2(buf), 0, w))); - }; - $ptrType(FileMode).prototype.String = function() { return new FileMode(this.$get()).String(); }; - FileMode.prototype.IsDir = function() { - var m; - m = this.$val; - return !((((m & 2147483648) >>> 0) === 0)); - }; - $ptrType(FileMode).prototype.IsDir = function() { return new FileMode(this.$get()).IsDir(); }; - FileMode.prototype.IsRegular = function() { - var m; - m = this.$val; - return ((m & 2401763328) >>> 0) === 0; - }; - $ptrType(FileMode).prototype.IsRegular = function() { return new FileMode(this.$get()).IsRegular(); }; - FileMode.prototype.Perm = function() { - var m; - m = this.$val; - return (m & 511) >>> 0; - }; - $ptrType(FileMode).prototype.Perm = function() { return new FileMode(this.$get()).Perm(); }; - fileStat.ptr.prototype.Name = function() { - var fs; - fs = this; - return fs.name; - }; - fileStat.prototype.Name = function() { return this.$val.Name(); }; - fileStat.ptr.prototype.IsDir = function() { - var fs; - fs = this; - return new FileMode(fs.Mode()).IsDir(); - }; - fileStat.prototype.IsDir = function() { return this.$val.IsDir(); }; - fileStat.ptr.prototype.Size = function() { - var fs; - fs = this; - return fs.size; - }; - fileStat.prototype.Size = function() { return this.$val.Size(); }; - fileStat.ptr.prototype.Mode = function() { - var fs; - fs = this; - return fs.mode; - }; - fileStat.prototype.Mode = function() { return this.$val.Mode(); }; - fileStat.ptr.prototype.ModTime = function() { - var fs; - fs = this; - return fs.modTime; - }; - fileStat.prototype.ModTime = function() { return this.$val.ModTime(); }; - fileStat.ptr.prototype.Sys = function() { - var fs; - fs = this; - return fs.sys; - }; - fileStat.prototype.Sys = function() { return this.$val.Sys(); }; - ptrType$1.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [], false)}]; - ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$13.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [$error], false)}]; - ptrType$18.methods = [{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType$2], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$3], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$3], [$error], false)}]; - ptrType.methods = [{prop: "Readdir", name: "Readdir", pkg: "", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Readdirnames", name: "Readdirnames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "readdirnames", name: "readdirnames", pkg: "os", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "wrapErr", name: "wrapErr", pkg: "os", typ: $funcType([$String, $error], [$error], false)}, {prop: "Chmod", name: "Chmod", pkg: "", typ: $funcType([FileMode], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "chmod", name: "chmod", pkg: "os", typ: $funcType([FileMode], [$error], false)}, {prop: "Chown", name: "Chown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Sync", name: "Sync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "setDeadline", name: "setDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setReadDeadline", name: "setReadDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setWriteDeadline", name: "setWriteDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "checkValid", name: "checkValid", pkg: "os", typ: $funcType([$String], [$error], false)}, {prop: "Fd", name: "Fd", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "seek", name: "seek", pkg: "os", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "readdir", name: "readdir", pkg: "os", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [FileInfo, $error], false)}]; - FileMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsRegular", name: "IsRegular", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([], [FileMode], false)}]; - ptrType$16.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]; - dirInfo.init("os", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "nbuf", name: "nbuf", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "bufp", name: "bufp", embedded: false, exported: false, typ: $Int, tag: ""}]); - timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); - PathError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); - SyscallError.init("", [{prop: "Syscall", name: "Syscall", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); - LinkError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Old", name: "Old", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); - file.init("os", [{prop: "pfd", name: "pfd", embedded: false, exported: false, typ: poll.FD, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "nonblock", name: "nonblock", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stdoutOrErr", name: "stdoutOrErr", embedded: false, exported: false, typ: $Bool, tag: ""}]); - rawConn.init("os", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType, tag: ""}]); - File.init("os", [{prop: "file", name: "file", embedded: true, exported: false, typ: ptrType$13, tag: ""}]); - FileInfo.init([{prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]); - fileStat.init("os", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: FileMode, tag: ""}, {prop: "modTime", name: "modTime", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "sys", name: "sys", embedded: false, exported: false, typ: syscall.Stat_t, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = poll.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = unix.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = testlog.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = syscall.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.Args = sliceType.nil; - $pkg.ErrInvalid = errors.New("invalid argument"); - $pkg.ErrPermission = errors.New("permission denied"); - $pkg.ErrExist = errors.New("file already exists"); - $pkg.ErrNotExist = errors.New("file does not exist"); - $pkg.ErrClosed = errors.New("file already closed"); - errFinished = errors.New("os: process already finished"); - $pkg.Stdin = NewFile(((syscall.Stdin >>> 0)), "/dev/stdin"); - $pkg.Stdout = NewFile(((syscall.Stdout >>> 0)), "/dev/stdout"); - $pkg.Stderr = NewFile(((syscall.Stderr >>> 0)), "/dev/stderr"); - lstat = Lstat; - init(); - init$1(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["fmt"] = (function() { - var $pkg = {}, $init, errors, fmtsort, io, math, os, reflect, strconv, sync, utf8, fmtFlags, fmt, State, Formatter, Stringer, GoStringer, buffer, pp, scanError, ss, ssave, sliceType, ptrType, ptrType$1, arrayType, arrayType$1, sliceType$1, sliceType$2, arrayType$2, ptrType$2, ptrType$5, ptrType$25, funcType, ppFree, space, ssFree, complexError, boolError, newPrinter, Sprintf, Errorf, Sprint, Fprintln, Println, Sprintln, getField, tooLarge, parsenum, intFromArg, parseArgNumber, isSpace, notSpace, indexRune; - errors = $packages["errors"]; - fmtsort = $packages["internal/fmtsort"]; - io = $packages["io"]; - math = $packages["math"]; - os = $packages["os"]; - reflect = $packages["reflect"]; - strconv = $packages["strconv"]; - sync = $packages["sync"]; - utf8 = $packages["unicode/utf8"]; - fmtFlags = $pkg.fmtFlags = $newType(0, $kindStruct, "fmt.fmtFlags", true, "fmt", false, function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, zero_, plusV_, sharpV_) { - this.$val = this; - if (arguments.length === 0) { - this.widPresent = false; - this.precPresent = false; - this.minus = false; - this.plus = false; - this.sharp = false; - this.space = false; - this.zero = false; - this.plusV = false; - this.sharpV = false; - return; - } - this.widPresent = widPresent_; - this.precPresent = precPresent_; - this.minus = minus_; - this.plus = plus_; - this.sharp = sharp_; - this.space = space_; - this.zero = zero_; - this.plusV = plusV_; - this.sharpV = sharpV_; - }); - fmt = $pkg.fmt = $newType(0, $kindStruct, "fmt.fmt", true, "fmt", false, function(buf_, fmtFlags_, wid_, prec_, intbuf_) { - this.$val = this; - if (arguments.length === 0) { - this.buf = ptrType$1.nil; - this.fmtFlags = new fmtFlags.ptr(false, false, false, false, false, false, false, false, false); - this.wid = 0; - this.prec = 0; - this.intbuf = arrayType.zero(); - return; - } - this.buf = buf_; - this.fmtFlags = fmtFlags_; - this.wid = wid_; - this.prec = prec_; - this.intbuf = intbuf_; - }); - State = $pkg.State = $newType(8, $kindInterface, "fmt.State", true, "fmt", true, null); - Formatter = $pkg.Formatter = $newType(8, $kindInterface, "fmt.Formatter", true, "fmt", true, null); - Stringer = $pkg.Stringer = $newType(8, $kindInterface, "fmt.Stringer", true, "fmt", true, null); - GoStringer = $pkg.GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", true, "fmt", true, null); - buffer = $pkg.buffer = $newType(12, $kindSlice, "fmt.buffer", true, "fmt", false, null); - pp = $pkg.pp = $newType(0, $kindStruct, "fmt.pp", true, "fmt", false, function(buf_, arg_, value_, fmt_, reordered_, goodArgNum_, panicking_, erroring_) { - this.$val = this; - if (arguments.length === 0) { - this.buf = buffer.nil; - this.arg = $ifaceNil; - this.value = new reflect.Value.ptr(ptrType.nil, 0, 0); - this.fmt = new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero()); - this.reordered = false; - this.goodArgNum = false; - this.panicking = false; - this.erroring = false; - return; - } - this.buf = buf_; - this.arg = arg_; - this.value = value_; - this.fmt = fmt_; - this.reordered = reordered_; - this.goodArgNum = goodArgNum_; - this.panicking = panicking_; - this.erroring = erroring_; - }); - scanError = $pkg.scanError = $newType(0, $kindStruct, "fmt.scanError", true, "fmt", false, function(err_) { - this.$val = this; - if (arguments.length === 0) { - this.err = $ifaceNil; - return; - } - this.err = err_; - }); - ss = $pkg.ss = $newType(0, $kindStruct, "fmt.ss", true, "fmt", false, function(rs_, buf_, count_, atEOF_, ssave_) { - this.$val = this; - if (arguments.length === 0) { - this.rs = $ifaceNil; - this.buf = buffer.nil; - this.count = 0; - this.atEOF = false; - this.ssave = new ssave.ptr(false, false, false, 0, 0, 0); - return; - } - this.rs = rs_; - this.buf = buf_; - this.count = count_; - this.atEOF = atEOF_; - this.ssave = ssave_; - }); - ssave = $pkg.ssave = $newType(0, $kindStruct, "fmt.ssave", true, "fmt", false, function(validSave_, nlIsEnd_, nlIsSpace_, argLimit_, limit_, maxWid_) { - this.$val = this; - if (arguments.length === 0) { - this.validSave = false; - this.nlIsEnd = false; - this.nlIsSpace = false; - this.argLimit = 0; - this.limit = 0; - this.maxWid = 0; - return; - } - this.validSave = validSave_; - this.nlIsEnd = nlIsEnd_; - this.nlIsSpace = nlIsSpace_; - this.argLimit = argLimit_; - this.limit = limit_; - this.maxWid = maxWid_; - }); - sliceType = $sliceType($emptyInterface); - ptrType = $ptrType(reflect.rtype); - ptrType$1 = $ptrType(buffer); - arrayType = $arrayType($Uint8, 68); - arrayType$1 = $arrayType($Uint16, 2); - sliceType$1 = $sliceType(arrayType$1); - sliceType$2 = $sliceType($Uint8); - arrayType$2 = $arrayType($Uint8, 5); - ptrType$2 = $ptrType(pp); - ptrType$5 = $ptrType(ss); - ptrType$25 = $ptrType(fmt); - funcType = $funcType([$Int32], [$Bool], false); - fmt.ptr.prototype.clearflags = function() { - var f; - f = this; - fmtFlags.copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false)); - }; - fmt.prototype.clearflags = function() { return this.$val.clearflags(); }; - fmt.ptr.prototype.init = function(buf) { - var buf, f; - f = this; - f.buf = buf; - f.clearflags(); - }; - fmt.prototype.init = function(buf) { return this.$val.init(buf); }; - fmt.ptr.prototype.writePadding = function(n) { - var _i, _ref, buf, f, i, n, newLen, oldLen, padByte, padding; - f = this; - if (n <= 0) { - return; - } - buf = f.buf.$get(); - oldLen = buf.$length; - newLen = oldLen + n >> 0; - if (newLen > buf.$capacity) { - buf = $makeSlice(buffer, (($imul(buf.$capacity, 2)) + n >> 0)); - $copySlice(buf, f.buf.$get()); - } - padByte = 32; - if (f.fmtFlags.zero) { - padByte = 48; - } - padding = $subslice(buf, oldLen, newLen); - _ref = padding; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - ((i < 0 || i >= padding.$length) ? ($throwRuntimeError("index out of range"), undefined) : padding.$array[padding.$offset + i] = padByte); - _i++; - } - f.buf.$set($subslice(buf, 0, newLen)); - }; - fmt.prototype.writePadding = function(n) { return this.$val.writePadding(n); }; - fmt.ptr.prototype.pad = function(b) { - var b, f, width; - f = this; - if (!f.fmtFlags.widPresent || (f.wid === 0)) { - f.buf.Write(b); - return; - } - width = f.wid - utf8.RuneCount(b) >> 0; - if (!f.fmtFlags.minus) { - f.writePadding(width); - f.buf.Write(b); - } else { - f.buf.Write(b); - f.writePadding(width); - } - }; - fmt.prototype.pad = function(b) { return this.$val.pad(b); }; - fmt.ptr.prototype.padString = function(s) { - var f, s, width; - f = this; - if (!f.fmtFlags.widPresent || (f.wid === 0)) { - f.buf.WriteString(s); - return; - } - width = f.wid - utf8.RuneCountInString(s) >> 0; - if (!f.fmtFlags.minus) { - f.writePadding(width); - f.buf.WriteString(s); - } else { - f.buf.WriteString(s); - f.writePadding(width); - } - }; - fmt.prototype.padString = function(s) { return this.$val.padString(s); }; - fmt.ptr.prototype.fmtBoolean = function(v) { - var f, v; - f = this; - if (v) { - f.padString("true"); - } else { - f.padString("false"); - } - }; - fmt.prototype.fmtBoolean = function(v) { return this.$val.fmtBoolean(v); }; - fmt.ptr.prototype.fmtUnicode = function(u) { - var buf, f, i, oldZero, prec, u, width; - f = this; - buf = $subslice(new sliceType$2(f.intbuf), 0); - prec = 4; - if (f.fmtFlags.precPresent && f.prec > 4) { - prec = f.prec; - width = (((2 + prec >> 0) + 2 >> 0) + 4 >> 0) + 1 >> 0; - if (width > buf.$length) { - buf = $makeSlice(sliceType$2, width); - } - } - i = buf.$length; - if (f.fmtFlags.sharp && (u.$high < 0 || (u.$high === 0 && u.$low <= 1114111)) && strconv.IsPrint(((u.$low >> 0)))) { - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39); - i = i - (utf8.RuneLen(((u.$low >> 0)))) >> 0; - utf8.EncodeRune($subslice(buf, i), ((u.$low >> 0))); - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39); - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32); - } - while (true) { - if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0)))); - prec = prec - (1) >> 0; - u = $shiftRightUint64(u, (4)); - } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(u))); - prec = prec - (1) >> 0; - while (true) { - if (!(prec > 0)) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); - prec = prec - (1) >> 0; - } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43); - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 85); - oldZero = f.fmtFlags.zero; - f.fmtFlags.zero = false; - f.pad($subslice(buf, i)); - f.fmtFlags.zero = oldZero; - }; - fmt.prototype.fmtUnicode = function(u) { return this.$val.fmtUnicode(u); }; - fmt.ptr.prototype.fmtInteger = function(u, base, isSigned, digits) { - var _1, _2, base, buf, digits, f, i, isSigned, negative, next, oldZero, oldZero$1, prec, u, width, x, x$1, x$2, x$3, x$4; - f = this; - negative = isSigned && (x = (new $Int64(u.$high, u.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0))); - if (negative) { - u = new $Uint64(-u.$high, -u.$low); - } - buf = $subslice(new sliceType$2(f.intbuf), 0); - if (f.fmtFlags.widPresent || f.fmtFlags.precPresent) { - width = (3 + f.wid >> 0) + f.prec >> 0; - if (width > buf.$length) { - buf = $makeSlice(sliceType$2, width); - } - } - prec = 0; - if (f.fmtFlags.precPresent) { - prec = f.prec; - if ((prec === 0) && (u.$high === 0 && u.$low === 0)) { - oldZero = f.fmtFlags.zero; - f.fmtFlags.zero = false; - f.writePadding(f.wid); - f.fmtFlags.zero = oldZero; - return; - } - } else if (f.fmtFlags.zero && f.fmtFlags.widPresent) { - prec = f.wid; - if (negative || f.fmtFlags.plus || f.fmtFlags.space) { - prec = prec - (1) >> 0; - } - } - i = buf.$length; - _1 = base; - if (_1 === (10)) { - while (true) { - if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 10)))) { break; } - i = i - (1) >> 0; - next = $div64(u, new $Uint64(0, 10), false); - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$1 = new $Uint64(0 + u.$high, 48 + u.$low), x$2 = $mul64(next, new $Uint64(0, 10)), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)).$low << 24 >>> 24))); - u = next; - } - } else if (_1 === (16)) { - while (true) { - if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0)))); - u = $shiftRightUint64(u, (4)); - } - } else if (_1 === (8)) { - while (true) { - if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 8)))) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$3 = new $Uint64(u.$high & 0, (u.$low & 7) >>> 0), new $Uint64(0 + x$3.$high, 48 + x$3.$low)).$low << 24 >>> 24))); - u = $shiftRightUint64(u, (3)); - } - } else if (_1 === (2)) { - while (true) { - if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 2)))) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$4 = new $Uint64(u.$high & 0, (u.$low & 1) >>> 0), new $Uint64(0 + x$4.$high, 48 + x$4.$low)).$low << 24 >>> 24))); - u = $shiftRightUint64(u, (1)); - } - } else { - $panic(new $String("fmt: unknown base; can't happen")); - } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(u))); - while (true) { - if (!(i > 0 && prec > (buf.$length - i >> 0))) { break; } - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); - } - if (f.fmtFlags.sharp) { - _2 = base; - if (_2 === (8)) { - if (!((((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 48))) { - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); - } - } else if (_2 === (16)) { - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt(16)); - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); - } - } - if (negative) { - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 45); - } else if (f.fmtFlags.plus) { - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43); - } else if (f.fmtFlags.space) { - i = i - (1) >> 0; - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32); - } - oldZero$1 = f.fmtFlags.zero; - f.fmtFlags.zero = false; - f.pad($subslice(buf, i)); - f.fmtFlags.zero = oldZero$1; - }; - fmt.prototype.fmtInteger = function(u, base, isSigned, digits) { return this.$val.fmtInteger(u, base, isSigned, digits); }; - fmt.ptr.prototype.truncateString = function(s) { - var _i, _ref, _rune, f, i, n, s; - f = this; - if (f.fmtFlags.precPresent) { - n = f.prec; - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - i = _i; - n = n - (1) >> 0; - if (n < 0) { - return $substring(s, 0, i); - } - _i += _rune[1]; - } - } - return s; - }; - fmt.prototype.truncateString = function(s) { return this.$val.truncateString(s); }; - fmt.ptr.prototype.truncate = function(b) { - var _tuple, b, f, i, n, wid; - f = this; - if (f.fmtFlags.precPresent) { - n = f.prec; - i = 0; - while (true) { - if (!(i < b.$length)) { break; } - n = n - (1) >> 0; - if (n < 0) { - return $subslice(b, 0, i); - } - wid = 1; - if (((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) >= 128) { - _tuple = utf8.DecodeRune($subslice(b, i)); - wid = _tuple[1]; - } - i = i + (wid) >> 0; - } - } - return b; - }; - fmt.prototype.truncate = function(b) { return this.$val.truncate(b); }; - fmt.ptr.prototype.fmtS = function(s) { - var f, s; - f = this; - s = f.truncateString(s); - f.padString(s); - }; - fmt.prototype.fmtS = function(s) { return this.$val.fmtS(s); }; - fmt.ptr.prototype.fmtBs = function(b) { - var b, f; - f = this; - b = f.truncate(b); - f.pad(b); - }; - fmt.prototype.fmtBs = function(b) { return this.$val.fmtBs(b); }; - fmt.ptr.prototype.fmtSbx = function(s, b, digits) { - var b, buf, c, digits, f, i, length, s, width; - f = this; - length = b.$length; - if (b === sliceType$2.nil) { - length = s.length; - } - if (f.fmtFlags.precPresent && f.prec < length) { - length = f.prec; - } - width = $imul(2, length); - if (width > 0) { - if (f.fmtFlags.space) { - if (f.fmtFlags.sharp) { - width = $imul(width, (2)); - } - width = width + ((length - 1 >> 0)) >> 0; - } else if (f.fmtFlags.sharp) { - width = width + (2) >> 0; - } - } else { - if (f.fmtFlags.widPresent) { - f.writePadding(f.wid); - } - return; - } - if (f.fmtFlags.widPresent && f.wid > width && !f.fmtFlags.minus) { - f.writePadding(f.wid - width >> 0); - } - buf = f.buf.$get(); - if (f.fmtFlags.sharp) { - buf = $append(buf, 48, digits.charCodeAt(16)); - } - c = 0; - i = 0; - while (true) { - if (!(i < length)) { break; } - if (f.fmtFlags.space && i > 0) { - buf = $append(buf, 32); - if (f.fmtFlags.sharp) { - buf = $append(buf, 48, digits.charCodeAt(16)); - } - } - if (!(b === sliceType$2.nil)) { - c = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]); - } else { - c = s.charCodeAt(i); - } - buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0))); - i = i + (1) >> 0; - } - f.buf.$set(buf); - if (f.fmtFlags.widPresent && f.wid > width && f.fmtFlags.minus) { - f.writePadding(f.wid - width >> 0); - } - }; - fmt.prototype.fmtSbx = function(s, b, digits) { return this.$val.fmtSbx(s, b, digits); }; - fmt.ptr.prototype.fmtSx = function(s, digits) { - var digits, f, s; - f = this; - f.fmtSbx(s, sliceType$2.nil, digits); - }; - fmt.prototype.fmtSx = function(s, digits) { return this.$val.fmtSx(s, digits); }; - fmt.ptr.prototype.fmtBx = function(b, digits) { - var b, digits, f; - f = this; - f.fmtSbx("", b, digits); - }; - fmt.prototype.fmtBx = function(b, digits) { return this.$val.fmtBx(b, digits); }; - fmt.ptr.prototype.fmtQ = function(s) { - var buf, f, s; - f = this; - s = f.truncateString(s); - if (f.fmtFlags.sharp && strconv.CanBackquote(s)) { - f.padString("`" + s + "`"); - return; - } - buf = $subslice(new sliceType$2(f.intbuf), 0, 0); - if (f.fmtFlags.plus) { - f.pad(strconv.AppendQuoteToASCII(buf, s)); - } else { - f.pad(strconv.AppendQuote(buf, s)); - } - }; - fmt.prototype.fmtQ = function(s) { return this.$val.fmtQ(s); }; - fmt.ptr.prototype.fmtC = function(c) { - var buf, c, f, r, w; - f = this; - r = ((c.$low >> 0)); - if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) { - r = 65533; - } - buf = $subslice(new sliceType$2(f.intbuf), 0, 0); - w = utf8.EncodeRune($subslice(buf, 0, 4), r); - f.pad($subslice(buf, 0, w)); - }; - fmt.prototype.fmtC = function(c) { return this.$val.fmtC(c); }; - fmt.ptr.prototype.fmtQc = function(c) { - var buf, c, f, r; - f = this; - r = ((c.$low >> 0)); - if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) { - r = 65533; - } - buf = $subslice(new sliceType$2(f.intbuf), 0, 0); - if (f.fmtFlags.plus) { - f.pad(strconv.AppendQuoteRuneToASCII(buf, r)); - } else { - f.pad(strconv.AppendQuoteRune(buf, r)); - } - }; - fmt.prototype.fmtQc = function(c) { return this.$val.fmtQc(c); }; - fmt.ptr.prototype.fmtFloat = function(v, size, verb, prec) { - var _1, _2, digits, f, hasDecimalPoint, i, num, oldZero, prec, size, tail, tailBuf, v, verb; - f = this; - if (f.fmtFlags.precPresent) { - prec = f.prec; - } - num = strconv.AppendFloat($subslice(new sliceType$2(f.intbuf), 0, 1), v, ((verb << 24 >>> 24)), prec, size); - if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 45) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 43)) { - num = $subslice(num, 1); - } else { - (0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 43); - } - if (f.fmtFlags.space && ((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43) && !f.fmtFlags.plus) { - (0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 32); - } - if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 73) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78)) { - oldZero = f.fmtFlags.zero; - f.fmtFlags.zero = false; - if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78) && !f.fmtFlags.space && !f.fmtFlags.plus) { - num = $subslice(num, 1); - } - f.pad(num); - f.fmtFlags.zero = oldZero; - return; - } - if (f.fmtFlags.sharp && !((verb === 98))) { - digits = 0; - _1 = verb; - if ((_1 === (118)) || (_1 === (103)) || (_1 === (71))) { - digits = prec; - if (digits === -1) { - digits = 6; - } - } - tailBuf = arrayType$2.zero(); - tail = $subslice(new sliceType$2(tailBuf), 0, 0); - hasDecimalPoint = false; - i = 1; - while (true) { - if (!(i < num.$length)) { break; } - _2 = ((i < 0 || i >= num.$length) ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + i]); - if (_2 === (46)) { - hasDecimalPoint = true; - } else if ((_2 === (101)) || (_2 === (69))) { - tail = $appendSlice(tail, $subslice(num, i)); - num = $subslice(num, 0, i); - } else { - digits = digits - (1) >> 0; - } - i = i + (1) >> 0; - } - if (!hasDecimalPoint) { - num = $append(num, 46); - } - while (true) { - if (!(digits > 0)) { break; } - num = $append(num, 48); - digits = digits - (1) >> 0; - } - num = $appendSlice(num, tail); - } - if (f.fmtFlags.plus || !(((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43))) { - if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) { - f.buf.WriteByte((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0])); - f.writePadding(f.wid - num.$length >> 0); - f.buf.Write($subslice(num, 1)); - return; - } - f.pad(num); - return; - } - f.pad($subslice(num, 1)); - }; - fmt.prototype.fmtFloat = function(v, size, verb, prec) { return this.$val.fmtFloat(v, size, verb, prec); }; - $ptrType(buffer).prototype.Write = function(p) { - var b, p; - b = this; - b.$set($appendSlice(b.$get(), p)); - }; - $ptrType(buffer).prototype.WriteString = function(s) { - var b, s; - b = this; - b.$set($appendSlice(b.$get(), s)); - }; - $ptrType(buffer).prototype.WriteByte = function(c) { - var b, c; - b = this; - b.$set($append(b.$get(), c)); - }; - $ptrType(buffer).prototype.WriteRune = function(r) { - var b, bp, n, r, w, x; - bp = this; - if (r < 128) { - bp.$set($append(bp.$get(), ((r << 24 >>> 24)))); - return; - } - b = bp.$get(); - n = b.$length; - while (true) { - if (!((n + 4 >> 0) > b.$capacity)) { break; } - b = $append(b, 0); - } - w = utf8.EncodeRune((x = $subslice(b, n, (n + 4 >> 0)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length)), r); - bp.$set($subslice(b, 0, (n + w >> 0))); - }; - newPrinter = function() { - var _r, p, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p = $assertType(_r, ptrType$2); - p.panicking = false; - p.erroring = false; - p.fmt.init((p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p)))); - $s = -1; return p; - /* */ } return; } if ($f === undefined) { $f = { $blk: newPrinter }; } $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.ptr.prototype.free = function() { - var p; - p = this; - if (p.buf.$capacity > 65536) { - return; - } - p.buf = $subslice(p.buf, 0, 0); - p.arg = $ifaceNil; - p.value = new reflect.Value.ptr(ptrType.nil, 0, 0); - ppFree.Put(p); - }; - pp.prototype.free = function() { return this.$val.free(); }; - pp.ptr.prototype.Width = function() { - var _tmp, _tmp$1, ok, p, wid; - wid = 0; - ok = false; - p = this; - _tmp = p.fmt.wid; - _tmp$1 = p.fmt.fmtFlags.widPresent; - wid = _tmp; - ok = _tmp$1; - return [wid, ok]; - }; - pp.prototype.Width = function() { return this.$val.Width(); }; - pp.ptr.prototype.Precision = function() { - var _tmp, _tmp$1, ok, p, prec; - prec = 0; - ok = false; - p = this; - _tmp = p.fmt.prec; - _tmp$1 = p.fmt.fmtFlags.precPresent; - prec = _tmp; - ok = _tmp$1; - return [prec, ok]; - }; - pp.prototype.Precision = function() { return this.$val.Precision(); }; - pp.ptr.prototype.Flag = function(b) { - var _1, b, p; - p = this; - _1 = b; - if (_1 === (45)) { - return p.fmt.fmtFlags.minus; - } else if (_1 === (43)) { - return p.fmt.fmtFlags.plus || p.fmt.fmtFlags.plusV; - } else if (_1 === (35)) { - return p.fmt.fmtFlags.sharp || p.fmt.fmtFlags.sharpV; - } else if (_1 === (32)) { - return p.fmt.fmtFlags.space; - } else if (_1 === (48)) { - return p.fmt.fmtFlags.zero; - } - return false; - }; - pp.prototype.Flag = function(b) { return this.$val.Flag(b); }; - pp.ptr.prototype.Write = function(b) { - var _tmp, _tmp$1, b, err, p, ret; - ret = 0; - err = $ifaceNil; - p = this; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(b); - _tmp = b.$length; - _tmp$1 = $ifaceNil; - ret = _tmp; - err = _tmp$1; - return [ret, err]; - }; - pp.prototype.Write = function(b) { return this.$val.Write(b); }; - pp.ptr.prototype.WriteString = function(s) { - var _tmp, _tmp$1, err, p, ret, s; - ret = 0; - err = $ifaceNil; - p = this; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(s); - _tmp = s.length; - _tmp$1 = $ifaceNil; - ret = _tmp; - err = _tmp$1; - return [ret, err]; - }; - pp.prototype.WriteString = function(s) { return this.$val.WriteString(s); }; - Sprintf = function(format, a) { - var _r, a, format, p, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; format = $f.format; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p = _r; - $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - s = ($bytesToString(p.buf)); - p.free(); - $s = -1; return s; - /* */ } return; } if ($f === undefined) { $f = { $blk: Sprintf }; } $f._r = _r; $f.a = a; $f.format = format; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Sprintf = Sprintf; - Errorf = function(format, a) { - var _r, _r$1, a, format, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; a = $f.a; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = Sprintf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = errors.New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.format = format; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Errorf = Errorf; - Sprint = function(a) { - var _r, a, p, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p = _r; - $r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - s = ($bytesToString(p.buf)); - p.free(); - $s = -1; return s; - /* */ } return; } if ($f === undefined) { $f = { $blk: Sprint }; } $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Sprint = Sprint; - Fprintln = function(w, a) { - var _r, _r$1, _tuple, a, err, n, p, w, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p = _r; - $r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r$1 = w.Write((x = p.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - n = _tuple[0]; - err = _tuple[1]; - p.free(); - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Fprintln }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Fprintln = Fprintln; - Println = function(a) { - var _r, _tuple, a, err, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - _r = Fprintln(os.Stdout, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Println }; } $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Println = Println; - Sprintln = function(a) { - var _r, a, p, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p = _r; - $r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - s = ($bytesToString(p.buf)); - p.free(); - $s = -1; return s; - /* */ } return; } if ($f === undefined) { $f = { $blk: Sprintln }; } $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Sprintln = Sprintln; - getField = function(v, i) { - var _r, _r$1, i, v, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = $clone(v, reflect.Value).Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - val = _r; - /* */ if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { */ case 2: - _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - /* } */ case 3: - $s = -1; return val; - /* */ } return; } if ($f === undefined) { $f = { $blk: getField }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - tooLarge = function(x) { - var x; - return x > 1000000 || x < -1000000; - }; - parsenum = function(s, start, end) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, end, isnum, newi, num, s, start; - num = 0; - isnum = false; - newi = 0; - if (start >= end) { - _tmp = 0; - _tmp$1 = false; - _tmp$2 = end; - num = _tmp; - isnum = _tmp$1; - newi = _tmp$2; - return [num, isnum, newi]; - } - newi = start; - while (true) { - if (!(newi < end && 48 <= s.charCodeAt(newi) && s.charCodeAt(newi) <= 57)) { break; } - if (tooLarge(num)) { - _tmp$3 = 0; - _tmp$4 = false; - _tmp$5 = end; - num = _tmp$3; - isnum = _tmp$4; - newi = _tmp$5; - return [num, isnum, newi]; - } - num = ($imul(num, 10)) + (((s.charCodeAt(newi) - 48 << 24 >>> 24) >> 0)) >> 0; - isnum = true; - newi = newi + (1) >> 0; - } - return [num, isnum, newi]; - }; - pp.ptr.prototype.unknownType = function(v) { - var _r, p, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - if (!$clone(v, reflect.Value).IsValid()) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - $s = -1; return; - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63); - _r = $clone(v, reflect.Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.unknownType }; } $f._r = _r; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.unknownType = function(v) { return this.$val.unknownType(v); }; - pp.ptr.prototype.badVerb = function(verb) { - var _r, _r$1, p, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - p.erroring = true; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40); - /* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 2; continue; } - /* */ if ($clone(p.value, reflect.Value).IsValid()) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 2: - _r = reflect.TypeOf(p.arg).String(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); - $r = p.printArg(p.arg, 118); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 5; continue; - /* } else if ($clone(p.value, reflect.Value).IsValid()) { */ case 3: - _r$1 = $clone(p.value, reflect.Value).Type().String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); - $r = p.printValue($clone(p.value, reflect.Value), 118, 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 5; continue; - /* } else { */ case 4: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - /* } */ case 5: - case 1: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); - p.erroring = false; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.badVerb }; } $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.badVerb = function(verb) { return this.$val.badVerb(verb); }; - pp.ptr.prototype.fmtBool = function(v, verb) { - var _1, p, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _1 = verb; - /* */ if ((_1 === (116)) || (_1 === (118))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if ((_1 === (116)) || (_1 === (118))) { */ case 2: - p.fmt.fmtBoolean(v); - $s = 4; continue; - /* } else { */ case 3: - $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 4: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBool }; } $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtBool = function(v, verb) { return this.$val.fmtBool(v, verb); }; - pp.ptr.prototype.fmt0x64 = function(v, leading0x) { - var leading0x, p, sharp, v; - p = this; - sharp = p.fmt.fmtFlags.sharp; - p.fmt.fmtFlags.sharp = leading0x; - p.fmt.fmtInteger(v, 16, false, "0123456789abcdefx"); - p.fmt.fmtFlags.sharp = sharp; - }; - pp.prototype.fmt0x64 = function(v, leading0x) { return this.$val.fmt0x64(v, leading0x); }; - pp.ptr.prototype.fmtInteger = function(v, isSigned, verb) { - var _1, isSigned, p, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; isSigned = $f.isSigned; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _1 = verb; - /* */ if (_1 === (118)) { $s = 2; continue; } - /* */ if (_1 === (100)) { $s = 3; continue; } - /* */ if (_1 === (98)) { $s = 4; continue; } - /* */ if (_1 === (111)) { $s = 5; continue; } - /* */ if (_1 === (120)) { $s = 6; continue; } - /* */ if (_1 === (88)) { $s = 7; continue; } - /* */ if (_1 === (99)) { $s = 8; continue; } - /* */ if (_1 === (113)) { $s = 9; continue; } - /* */ if (_1 === (85)) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (_1 === (118)) { */ case 2: - if (p.fmt.fmtFlags.sharpV && !isSigned) { - p.fmt0x64(v, true); - } else { - p.fmt.fmtInteger(v, 10, isSigned, "0123456789abcdefx"); - } - $s = 12; continue; - /* } else if (_1 === (100)) { */ case 3: - p.fmt.fmtInteger(v, 10, isSigned, "0123456789abcdefx"); - $s = 12; continue; - /* } else if (_1 === (98)) { */ case 4: - p.fmt.fmtInteger(v, 2, isSigned, "0123456789abcdefx"); - $s = 12; continue; - /* } else if (_1 === (111)) { */ case 5: - p.fmt.fmtInteger(v, 8, isSigned, "0123456789abcdefx"); - $s = 12; continue; - /* } else if (_1 === (120)) { */ case 6: - p.fmt.fmtInteger(v, 16, isSigned, "0123456789abcdefx"); - $s = 12; continue; - /* } else if (_1 === (88)) { */ case 7: - p.fmt.fmtInteger(v, 16, isSigned, "0123456789ABCDEFX"); - $s = 12; continue; - /* } else if (_1 === (99)) { */ case 8: - p.fmt.fmtC(v); - $s = 12; continue; - /* } else if (_1 === (113)) { */ case 9: - /* */ if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 13: - p.fmt.fmtQc(v); - $s = 15; continue; - /* } else { */ case 14: - $r = p.badVerb(verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 15: - $s = 12; continue; - /* } else if (_1 === (85)) { */ case 10: - p.fmt.fmtUnicode(v); - $s = 12; continue; - /* } else { */ case 11: - $r = p.badVerb(verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 12: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtInteger }; } $f._1 = _1; $f.isSigned = isSigned; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtInteger = function(v, isSigned, verb) { return this.$val.fmtInteger(v, isSigned, verb); }; - pp.ptr.prototype.fmtFloat = function(v, size, verb) { - var _1, p, size, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; size = $f.size; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _1 = verb; - /* */ if (_1 === (118)) { $s = 2; continue; } - /* */ if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { $s = 3; continue; } - /* */ if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { $s = 4; continue; } - /* */ if (_1 === (70)) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_1 === (118)) { */ case 2: - p.fmt.fmtFloat(v, size, 103, -1); - $s = 7; continue; - /* } else if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { */ case 3: - p.fmt.fmtFloat(v, size, verb, -1); - $s = 7; continue; - /* } else if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { */ case 4: - p.fmt.fmtFloat(v, size, verb, 6); - $s = 7; continue; - /* } else if (_1 === (70)) { */ case 5: - p.fmt.fmtFloat(v, size, 102, 6); - $s = 7; continue; - /* } else { */ case 6: - $r = p.badVerb(verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 7: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat }; } $f._1 = _1; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtFloat = function(v, size, verb) { return this.$val.fmtFloat(v, size, verb); }; - pp.ptr.prototype.fmtComplex = function(v, size, verb) { - var _1, _q, _q$1, oldPlus, p, size, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _q$1 = $f._q$1; oldPlus = $f.oldPlus; p = $f.p; size = $f.size; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _1 = verb; - /* */ if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { */ case 2: - oldPlus = p.fmt.fmtFlags.plus; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40); - $r = p.fmtFloat(v.$real, (_q = size / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - p.fmt.fmtFlags.plus = true; - $r = p.fmtFloat(v.$imag, (_q$1 = size / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("i)"); - p.fmt.fmtFlags.plus = oldPlus; - $s = 4; continue; - /* } else { */ case 3: - $r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 4: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex }; } $f._1 = _1; $f._q = _q; $f._q$1 = _q$1; $f.oldPlus = oldPlus; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtComplex = function(v, size, verb) { return this.$val.fmtComplex(v, size, verb); }; - pp.ptr.prototype.fmtString = function(v, verb) { - var _1, p, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _1 = verb; - /* */ if (_1 === (118)) { $s = 2; continue; } - /* */ if (_1 === (115)) { $s = 3; continue; } - /* */ if (_1 === (120)) { $s = 4; continue; } - /* */ if (_1 === (88)) { $s = 5; continue; } - /* */ if (_1 === (113)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (_1 === (118)) { */ case 2: - if (p.fmt.fmtFlags.sharpV) { - p.fmt.fmtQ(v); - } else { - p.fmt.fmtS(v); - } - $s = 8; continue; - /* } else if (_1 === (115)) { */ case 3: - p.fmt.fmtS(v); - $s = 8; continue; - /* } else if (_1 === (120)) { */ case 4: - p.fmt.fmtSx(v, "0123456789abcdefx"); - $s = 8; continue; - /* } else if (_1 === (88)) { */ case 5: - p.fmt.fmtSx(v, "0123456789ABCDEFX"); - $s = 8; continue; - /* } else if (_1 === (113)) { */ case 6: - p.fmt.fmtQ(v); - $s = 8; continue; - /* } else { */ case 7: - $r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 8: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtString }; } $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtString = function(v, verb) { return this.$val.fmtString(v, verb); }; - pp.ptr.prototype.fmtBytes = function(v, verb, typeString) { - var _1, _i, _i$1, _r, _ref, _ref$1, c, c$1, i, i$1, p, typeString, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; c = $f.c; c$1 = $f.c$1; i = $f.i; i$1 = $f.i$1; p = $f.p; typeString = $f.typeString; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _1 = verb; - /* */ if ((_1 === (118)) || (_1 === (100))) { $s = 2; continue; } - /* */ if (_1 === (115)) { $s = 3; continue; } - /* */ if (_1 === (120)) { $s = 4; continue; } - /* */ if (_1 === (88)) { $s = 5; continue; } - /* */ if (_1 === (113)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if ((_1 === (118)) || (_1 === (100))) { */ case 2: - if (p.fmt.fmtFlags.sharpV) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(typeString); - if (v === sliceType$2.nil) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); - $s = -1; return; - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); - _ref = v; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (i > 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); - } - p.fmt0x64((new $Uint64(0, c)), true); - _i++; - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); - } else { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91); - _ref$1 = v; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$1 = _i$1; - c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - if (i$1 > 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); - } - p.fmt.fmtInteger((new $Uint64(0, c$1)), 10, false, "0123456789abcdefx"); - _i$1++; - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93); - } - $s = 8; continue; - /* } else if (_1 === (115)) { */ case 3: - p.fmt.fmtBs(v); - $s = 8; continue; - /* } else if (_1 === (120)) { */ case 4: - p.fmt.fmtBx(v, "0123456789abcdefx"); - $s = 8; continue; - /* } else if (_1 === (88)) { */ case 5: - p.fmt.fmtBx(v, "0123456789ABCDEFX"); - $s = 8; continue; - /* } else if (_1 === (113)) { */ case 6: - p.fmt.fmtQ(($bytesToString(v))); - $s = 8; continue; - /* } else { */ case 7: - _r = reflect.ValueOf(v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = p.printValue($clone(_r, reflect.Value), verb, 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 8: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBytes }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.c = c; $f.c$1 = c$1; $f.i = i; $f.i$1 = i$1; $f.p = p; $f.typeString = typeString; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtBytes = function(v, verb, typeString) { return this.$val.fmtBytes(v, verb, typeString); }; - pp.ptr.prototype.fmtPointer = function(value, verb) { - var _1, _2, _r, p, u, value, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; p = $f.p; u = $f.u; value = $f.value; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - u = 0; - _1 = $clone(value, reflect.Value).Kind(); - /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { */ case 2: - u = $clone(value, reflect.Value).Pointer(); - $s = 4; continue; - /* } else { */ case 3: - $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 4: - case 1: - _2 = verb; - /* */ if (_2 === (118)) { $s = 7; continue; } - /* */ if (_2 === (112)) { $s = 8; continue; } - /* */ if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (_2 === (118)) { */ case 7: - /* */ if (p.fmt.fmtFlags.sharpV) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (p.fmt.fmtFlags.sharpV) { */ case 12: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40); - _r = $clone(value, reflect.Value).Type().String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(")("); - if (u === 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("nil"); - } else { - p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), true); - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); - $s = 14; continue; - /* } else { */ case 13: - if (u === 0) { - p.fmt.padString(""); - } else { - p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp); - } - /* } */ case 14: - $s = 11; continue; - /* } else if (_2 === (112)) { */ case 8: - p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp); - $s = 11; continue; - /* } else if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { */ case 9: - $r = p.fmtInteger((new $Uint64(0, u.constructor === Number ? u : 1)), false, verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 11; continue; - /* } else { */ case 10: - $r = p.badVerb(verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 11: - case 6: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtPointer }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f.p = p; $f.u = u; $f.value = value; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.fmtPointer = function(value, verb) { return this.$val.fmtPointer(value, verb); }; - pp.ptr.prototype.catchPanic = function(arg, verb, method) { - var _r, arg, err, method, oldFlags, p, v, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; arg = $f.arg; err = $f.err; method = $f.method; oldFlags = $f.oldFlags; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - err = $recover(); - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1: - _r = reflect.ValueOf(arg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - if (($clone(v, reflect.Value).Kind() === 22) && $clone(v, reflect.Value).IsNil()) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - $s = -1; return; - } - if (p.panicking) { - $panic(err); - } - oldFlags = $clone(p.fmt.fmtFlags, fmtFlags); - p.fmt.clearflags(); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(PANIC="); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(method); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(" method: "); - p.panicking = true; - $r = p.printArg(err, 118); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - p.panicking = false; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); - fmtFlags.copy(p.fmt.fmtFlags, oldFlags); - /* } */ case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.catchPanic }; } $f._r = _r; $f.arg = arg; $f.err = err; $f.method = method; $f.oldFlags = oldFlags; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.catchPanic = function(arg, verb, method) { return this.$val.catchPanic(arg, verb, method); }; - pp.ptr.prototype.handleMethods = function(verb) { - var _1, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, formatter, handled, ok, ok$1, p, stringer, v, v$1, verb, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; formatter = $f.formatter; handled = $f.handled; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; stringer = $f.stringer; v = $f.v; v$1 = $f.v$1; verb = $f.verb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - handled = false; - p = this; - if (p.erroring) { - $s = -1; return handled; - } - _tuple = $assertType(p.arg, Formatter, true); - formatter = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - handled = true; - $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "Format"]]); - $r = formatter.Format(p, verb); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return handled; - /* } */ case 2: - /* */ if (p.fmt.fmtFlags.sharpV) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (p.fmt.fmtFlags.sharpV) { */ case 4: - _tuple$1 = $assertType(p.arg, GoStringer, true); - stringer = _tuple$1[0]; - ok$1 = _tuple$1[1]; - /* */ if (ok$1) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (ok$1) { */ case 7: - handled = true; - $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "GoString"]]); - _r = stringer.GoString(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = p.fmt.fmtS(_r); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return handled; - /* } */ case 8: - $s = 6; continue; - /* } else { */ case 5: - _1 = verb; - /* */ if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { */ case 12: - _ref = p.arg; - /* */ if ($assertType(_ref, $error, true)[1]) { $s = 14; continue; } - /* */ if ($assertType(_ref, Stringer, true)[1]) { $s = 15; continue; } - /* */ $s = 16; continue; - /* if ($assertType(_ref, $error, true)[1]) { */ case 14: - v = _ref; - handled = true; - $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "Error"]]); - _r$1 = v.Error(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $r = p.fmtString(_r$1, verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return handled; - /* } else if ($assertType(_ref, Stringer, true)[1]) { */ case 15: - v$1 = _ref; - handled = true; - $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "String"]]); - _r$2 = v$1.String(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $r = p.fmtString(_r$2, verb); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return handled; - /* } */ case 16: - /* } */ case 13: - case 11: - /* } */ case 6: - handled = false; - $s = -1; return handled; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return handled; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pp.ptr.prototype.handleMethods }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.formatter = formatter; $f.handled = handled; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.stringer = stringer; $f.v = v; $f.v$1 = v$1; $f.verb = verb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - pp.prototype.handleMethods = function(verb) { return this.$val.handleMethods(verb); }; - pp.ptr.prototype.printArg = function(arg, verb) { - var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, arg, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$19, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, p, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; arg = $f.arg; f = $f.f; f$1 = $f.f$1; f$10 = $f.f$10; f$11 = $f.f$11; f$12 = $f.f$12; f$13 = $f.f$13; f$14 = $f.f$14; f$15 = $f.f$15; f$16 = $f.f$16; f$17 = $f.f$17; f$18 = $f.f$18; f$19 = $f.f$19; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; f$7 = $f.f$7; f$8 = $f.f$8; f$9 = $f.f$9; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - p.arg = arg; - p.value = new reflect.Value.ptr(ptrType.nil, 0, 0); - /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1: - _1 = verb; - /* */ if ((_1 === (84)) || (_1 === (118))) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if ((_1 === (84)) || (_1 === (118))) { */ case 4: - p.fmt.padString(""); - $s = 6; continue; - /* } else { */ case 5: - $r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 6: - case 3: - $s = -1; return; - /* } */ case 2: - _2 = verb; - /* */ if (_2 === (84)) { $s = 9; continue; } - /* */ if (_2 === (112)) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (_2 === (84)) { */ case 9: - _r = reflect.TypeOf(arg).String(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = p.fmt.fmtS(_r); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } else if (_2 === (112)) { */ case 10: - _r$1 = reflect.ValueOf(arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $r = p.fmtPointer($clone(_r$1, reflect.Value), 112); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 11: - case 8: - _ref = arg; - /* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 16; continue; } - /* */ if ($assertType(_ref, $Float32, true)[1]) { $s = 17; continue; } - /* */ if ($assertType(_ref, $Float64, true)[1]) { $s = 18; continue; } - /* */ if ($assertType(_ref, $Complex64, true)[1]) { $s = 19; continue; } - /* */ if ($assertType(_ref, $Complex128, true)[1]) { $s = 20; continue; } - /* */ if ($assertType(_ref, $Int, true)[1]) { $s = 21; continue; } - /* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 22; continue; } - /* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 23; continue; } - /* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 24; continue; } - /* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; } - /* */ if ($assertType(_ref, $Uint, true)[1]) { $s = 26; continue; } - /* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 27; continue; } - /* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 28; continue; } - /* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 29; continue; } - /* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 30; continue; } - /* */ if ($assertType(_ref, $Uintptr, true)[1]) { $s = 31; continue; } - /* */ if ($assertType(_ref, $String, true)[1]) { $s = 32; continue; } - /* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 33; continue; } - /* */ if ($assertType(_ref, reflect.Value, true)[1]) { $s = 34; continue; } - /* */ $s = 35; continue; - /* if ($assertType(_ref, $Bool, true)[1]) { */ case 16: - f = _ref.$val; - $r = p.fmtBool(f, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Float32, true)[1]) { */ case 17: - f$1 = _ref.$val; - $r = p.fmtFloat((f$1), 32, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Float64, true)[1]) { */ case 18: - f$2 = _ref.$val; - $r = p.fmtFloat(f$2, 64, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Complex64, true)[1]) { */ case 19: - f$3 = _ref.$val; - $r = p.fmtComplex((new $Complex128(f$3.$real, f$3.$imag)), 64, verb); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Complex128, true)[1]) { */ case 20: - f$4 = _ref.$val; - $r = p.fmtComplex(f$4, 128, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Int, true)[1]) { */ case 21: - f$5 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$5)), true, verb); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 22: - f$6 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$6)), true, verb); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 23: - f$7 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$7)), true, verb); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 24: - f$8 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$8)), true, verb); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25: - f$9 = _ref.$val; - $r = p.fmtInteger((new $Uint64(f$9.$high, f$9.$low)), true, verb); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Uint, true)[1]) { */ case 26: - f$10 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$10)), false, verb); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 27: - f$11 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$11)), false, verb); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 28: - f$12 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$12)), false, verb); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 29: - f$13 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$13)), false, verb); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 30: - f$14 = _ref.$val; - $r = p.fmtInteger(f$14, false, verb); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $Uintptr, true)[1]) { */ case 31: - f$15 = _ref.$val; - $r = p.fmtInteger((new $Uint64(0, f$15.constructor === Number ? f$15 : 1)), false, verb); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, $String, true)[1]) { */ case 32: - f$16 = _ref.$val; - $r = p.fmtString(f$16, verb); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 33: - f$17 = _ref.$val; - $r = p.fmtBytes(f$17, verb, "[]byte"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else if ($assertType(_ref, reflect.Value, true)[1]) { */ case 34: - f$18 = _ref.$val; - /* */ if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { $s = 55; continue; } - /* */ $s = 56; continue; - /* if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { */ case 55: - _r$2 = $clone(f$18, reflect.Value).Interface(); /* */ $s = 57; case 57: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - p.arg = _r$2; - _r$3 = p.handleMethods(verb); /* */ $s = 60; case 60: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (_r$3) { $s = 58; continue; } - /* */ $s = 59; continue; - /* if (_r$3) { */ case 58: - $s = -1; return; - /* } */ case 59: - /* } */ case 56: - $r = p.printValue($clone(f$18, reflect.Value), verb, 0); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 36; continue; - /* } else { */ case 35: - f$19 = _ref; - _r$4 = p.handleMethods(verb); /* */ $s = 64; case 64: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - /* */ if (!_r$4) { $s = 62; continue; } - /* */ $s = 63; continue; - /* if (!_r$4) { */ case 62: - _r$5 = reflect.ValueOf(f$19); /* */ $s = 65; case 65: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $r = p.printValue($clone(_r$5, reflect.Value), verb, 0); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 63: - /* } */ case 36: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printArg }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f.arg = arg; $f.f = f; $f.f$1 = f$1; $f.f$10 = f$10; $f.f$11 = f$11; $f.f$12 = f$12; $f.f$13 = f$13; $f.f$14 = f$14; $f.f$15 = f$15; $f.f$16 = f$16; $f.f$17 = f$17; $f.f$18 = f$18; $f.f$19 = f$19; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.f$7 = f$7; $f.f$8 = f$8; $f.f$9 = f$9; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.printArg = function(arg, verb) { return this.$val.printArg(arg, verb); }; - pp.ptr.prototype.printValue = function(value, verb, depth) { - var _1, _2, _3, _4, _arg, _arg$1, _arg$2, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, a, bytes, depth, f, i, i$1, i$2, i$3, i$4, key, name, p, sorted, t, value, value$1, verb, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; a = $f.a; bytes = $f.bytes; depth = $f.depth; f = $f.f; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; key = $f.key; name = $f.name; p = $f.p; sorted = $f.sorted; t = $f.t; value = $f.value; value$1 = $f.value$1; verb = $f.verb; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - /* */ if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { */ case 1: - _r = $clone(value, reflect.Value).Interface(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p.arg = _r; - _r$1 = p.handleMethods(verb); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_r$1) { */ case 4: - $s = -1; return; - /* } */ case 5: - /* } */ case 2: - p.arg = $ifaceNil; - p.value = value; - f = value; - _1 = $clone(value, reflect.Value).Kind(); - /* */ if (_1 === (0)) { $s = 8; continue; } - /* */ if (_1 === (1)) { $s = 9; continue; } - /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 10; continue; } - /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 11; continue; } - /* */ if (_1 === (13)) { $s = 12; continue; } - /* */ if (_1 === (14)) { $s = 13; continue; } - /* */ if (_1 === (15)) { $s = 14; continue; } - /* */ if (_1 === (16)) { $s = 15; continue; } - /* */ if (_1 === (24)) { $s = 16; continue; } - /* */ if (_1 === (21)) { $s = 17; continue; } - /* */ if (_1 === (25)) { $s = 18; continue; } - /* */ if (_1 === (20)) { $s = 19; continue; } - /* */ if ((_1 === (17)) || (_1 === (23))) { $s = 20; continue; } - /* */ if (_1 === (22)) { $s = 21; continue; } - /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { $s = 22; continue; } - /* */ $s = 23; continue; - /* if (_1 === (0)) { */ case 8: - /* */ if (depth === 0) { $s = 25; continue; } - /* */ $s = 26; continue; - /* if (depth === 0) { */ case 25: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - $s = 27; continue; - /* } else { */ case 26: - _2 = verb; - /* */ if (_2 === (118)) { $s = 29; continue; } - /* */ $s = 30; continue; - /* if (_2 === (118)) { */ case 29: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - $s = 31; continue; - /* } else { */ case 30: - $r = p.badVerb(verb); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 31: - case 28: - /* } */ case 27: - $s = 24; continue; - /* } else if (_1 === (1)) { */ case 9: - $r = p.fmtBool($clone(f, reflect.Value).Bool(), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 10: - $r = p.fmtInteger(((x = $clone(f, reflect.Value).Int(), new $Uint64(x.$high, x.$low))), true, verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 11: - $r = p.fmtInteger($clone(f, reflect.Value).Uint(), false, verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if (_1 === (13)) { */ case 12: - $r = p.fmtFloat($clone(f, reflect.Value).Float(), 32, verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if (_1 === (14)) { */ case 13: - $r = p.fmtFloat($clone(f, reflect.Value).Float(), 64, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if (_1 === (15)) { */ case 14: - $r = p.fmtComplex($clone(f, reflect.Value).Complex(), 64, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if (_1 === (16)) { */ case 15: - $r = p.fmtComplex($clone(f, reflect.Value).Complex(), 128, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if (_1 === (24)) { */ case 16: - _r$2 = $clone(f, reflect.Value).String(); /* */ $s = 40; case 40: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $r = p.fmtString(_r$2, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if (_1 === (21)) { */ case 17: - /* */ if (p.fmt.fmtFlags.sharpV) { $s = 42; continue; } - /* */ $s = 43; continue; - /* if (p.fmt.fmtFlags.sharpV) { */ case 42: - _r$3 = $clone(f, reflect.Value).Type().String(); /* */ $s = 45; case 45: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$3); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if ($clone(f, reflect.Value).IsNil()) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); - $s = -1; return; - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); - $s = 44; continue; - /* } else { */ case 43: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("map["); - /* } */ case 44: - _r$4 = fmtsort.Sort($clone(f, reflect.Value)); /* */ $s = 47; case 47: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - sorted = _r$4; - _ref = sorted.Key; - _i = 0; - /* while (true) { */ case 48: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 49; continue; } - i = _i; - key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (i > 0) { - if (p.fmt.fmtFlags.sharpV) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); - } else { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); - } - } - $r = p.printValue($clone(key, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58); - $r = p.printValue($clone((x$1 = sorted.Value, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), reflect.Value), verb, depth + 1 >> 0); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i++; - /* } */ $s = 48; continue; case 49: - if (p.fmt.fmtFlags.sharpV) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); - } else { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93); - } - $s = 24; continue; - /* } else if (_1 === (25)) { */ case 18: - /* */ if (p.fmt.fmtFlags.sharpV) { $s = 52; continue; } - /* */ $s = 53; continue; - /* if (p.fmt.fmtFlags.sharpV) { */ case 52: - _r$5 = $clone(f, reflect.Value).Type().String(); /* */ $s = 54; case 54: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$5); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 53: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); - i$1 = 0; - /* while (true) { */ case 56: - /* if (!(i$1 < $clone(f, reflect.Value).NumField())) { break; } */ if(!(i$1 < $clone(f, reflect.Value).NumField())) { $s = 57; continue; } - if (i$1 > 0) { - if (p.fmt.fmtFlags.sharpV) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); - } else { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); - } - } - /* */ if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { $s = 58; continue; } - /* */ $s = 59; continue; - /* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 58: - _r$6 = $clone(f, reflect.Value).Type().Field(i$1); /* */ $s = 60; case 60: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - name = _r$6.Name; - if (!(name === "")) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(name); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58); - } - /* } */ case 59: - _r$7 = getField($clone(f, reflect.Value), i$1); /* */ $s = 61; case 61: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $r = p.printValue($clone(_r$7, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$1 = i$1 + (1) >> 0; - /* } */ $s = 56; continue; case 57: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); - $s = 24; continue; - /* } else if (_1 === (20)) { */ case 19: - _r$8 = $clone(f, reflect.Value).Elem(); /* */ $s = 63; case 63: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - value$1 = _r$8; - /* */ if (!$clone(value$1, reflect.Value).IsValid()) { $s = 64; continue; } - /* */ $s = 65; continue; - /* if (!$clone(value$1, reflect.Value).IsValid()) { */ case 64: - /* */ if (p.fmt.fmtFlags.sharpV) { $s = 67; continue; } - /* */ $s = 68; continue; - /* if (p.fmt.fmtFlags.sharpV) { */ case 67: - _r$9 = $clone(f, reflect.Value).Type().String(); /* */ $s = 70; case 70: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$9); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); - $s = 69; continue; - /* } else { */ case 68: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - /* } */ case 69: - $s = 66; continue; - /* } else { */ case 65: - $r = p.printValue($clone(value$1, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 66: - $s = 24; continue; - /* } else if ((_1 === (17)) || (_1 === (23))) { */ case 20: - _3 = verb; - /* */ if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { $s = 74; continue; } - /* */ $s = 75; continue; - /* if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { */ case 74: - t = $clone(f, reflect.Value).Type(); - _r$10 = t.Elem(); /* */ $s = 78; case 78: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _r$11 = _r$10.Kind(); /* */ $s = 79; case 79: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - /* */ if (_r$11 === 8) { $s = 76; continue; } - /* */ $s = 77; continue; - /* if (_r$11 === 8) { */ case 76: - bytes = sliceType$2.nil; - /* */ if ($clone(f, reflect.Value).Kind() === 23) { $s = 80; continue; } - /* */ if ($clone(f, reflect.Value).CanAddr()) { $s = 81; continue; } - /* */ $s = 82; continue; - /* if ($clone(f, reflect.Value).Kind() === 23) { */ case 80: - _r$12 = $clone(f, reflect.Value).Bytes(); /* */ $s = 84; case 84: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - bytes = _r$12; - $s = 83; continue; - /* } else if ($clone(f, reflect.Value).CanAddr()) { */ case 81: - _r$13 = $clone(f, reflect.Value).Slice(0, $clone(f, reflect.Value).Len()); /* */ $s = 85; case 85: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - _r$14 = $clone(_r$13, reflect.Value).Bytes(); /* */ $s = 86; case 86: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - bytes = _r$14; - $s = 83; continue; - /* } else { */ case 82: - bytes = $makeSlice(sliceType$2, $clone(f, reflect.Value).Len()); - _ref$1 = bytes; - _i$1 = 0; - /* while (true) { */ case 87: - /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 88; continue; } - i$2 = _i$1; - _r$15 = $clone(f, reflect.Value).Index(i$2); /* */ $s = 89; case 89: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } - _r$16 = $clone(_r$15, reflect.Value).Uint(); /* */ $s = 90; case 90: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } - ((i$2 < 0 || i$2 >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i$2] = ((_r$16.$low << 24 >>> 24))); - _i$1++; - /* } */ $s = 87; continue; case 88: - /* } */ case 83: - _arg = bytes; - _arg$1 = verb; - _r$17 = t.String(); /* */ $s = 91; case 91: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } - _arg$2 = _r$17; - $r = p.fmtBytes(_arg, _arg$1, _arg$2); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 77: - /* } */ case 75: - case 73: - /* */ if (p.fmt.fmtFlags.sharpV) { $s = 93; continue; } - /* */ $s = 94; continue; - /* if (p.fmt.fmtFlags.sharpV) { */ case 93: - _r$18 = $clone(f, reflect.Value).Type().String(); /* */ $s = 96; case 96: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$18); /* */ $s = 97; case 97: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (($clone(f, reflect.Value).Kind() === 23) && $clone(f, reflect.Value).IsNil()) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)"); - $s = -1; return; - } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123); - i$3 = 0; - /* while (true) { */ case 98: - /* if (!(i$3 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$3 < $clone(f, reflect.Value).Len())) { $s = 99; continue; } - if (i$3 > 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); - } - _r$19 = $clone(f, reflect.Value).Index(i$3); /* */ $s = 100; case 100: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } - $r = p.printValue($clone(_r$19, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$3 = i$3 + (1) >> 0; - /* } */ $s = 98; continue; case 99: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125); - $s = 95; continue; - /* } else { */ case 94: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91); - i$4 = 0; - /* while (true) { */ case 102: - /* if (!(i$4 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$4 < $clone(f, reflect.Value).Len())) { $s = 103; continue; } - if (i$4 > 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); - } - _r$20 = $clone(f, reflect.Value).Index(i$4); /* */ $s = 104; case 104: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } - $r = p.printValue($clone(_r$20, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$4 = i$4 + (1) >> 0; - /* } */ $s = 102; continue; case 103: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93); - /* } */ case 95: - $s = 24; continue; - /* } else if (_1 === (22)) { */ case 21: - /* */ if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { $s = 106; continue; } - /* */ $s = 107; continue; - /* if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { */ case 106: - _r$21 = $clone(f, reflect.Value).Elem(); /* */ $s = 109; case 109: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } - a = _r$21; - _4 = $clone(a, reflect.Value).Kind(); - /* */ if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { $s = 110; continue; } - /* */ $s = 111; continue; - /* if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { */ case 110: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38); - $r = p.printValue($clone(a, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 112; case 112: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 111: - case 108: - /* } */ case 107: - $r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { */ case 22: - $r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 114; case 114: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 24; continue; - /* } else { */ case 23: - $r = p.unknownType($clone(f, reflect.Value)); /* */ $s = 115; case 115: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 24: - case 7: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printValue }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f.a = a; $f.bytes = bytes; $f.depth = depth; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.key = key; $f.name = name; $f.p = p; $f.sorted = sorted; $f.t = t; $f.value = value; $f.value$1 = value$1; $f.verb = verb; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.printValue = function(value, verb, depth) { return this.$val.printValue(value, verb, depth); }; - intFromArg = function(a, argNum) { - var _1, _r, _tuple, a, argNum, isInt, n, n$1, newArgNum, num, v, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; a = $f.a; argNum = $f.argNum; isInt = $f.isInt; n = $f.n; n$1 = $f.n$1; newArgNum = $f.newArgNum; num = $f.num; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - num = 0; - isInt = false; - newArgNum = 0; - newArgNum = argNum; - /* */ if (argNum < a.$length) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (argNum < a.$length) { */ case 1: - _tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), $Int, true); - num = _tuple[0]; - isInt = _tuple[1]; - /* */ if (!isInt) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!isInt) { */ case 3: - _r = reflect.ValueOf(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - _1 = $clone(v, reflect.Value).Kind(); - if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { - n = $clone(v, reflect.Value).Int(); - if ((x = (new $Int64(0, (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)))), (x.$high === n.$high && x.$low === n.$low))) { - num = (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)); - isInt = true; - } - } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { - n$1 = $clone(v, reflect.Value).Uint(); - if ((x$1 = (new $Int64(n$1.$high, n$1.$low)), (x$1.$high > 0 || (x$1.$high === 0 && x$1.$low >= 0))) && (x$2 = (new $Uint64(0, ((n$1.$low >> 0)))), (x$2.$high === n$1.$high && x$2.$low === n$1.$low))) { - num = ((n$1.$low >> 0)); - isInt = true; - } - } - case 5: - /* } */ case 4: - newArgNum = argNum + 1 >> 0; - if (tooLarge(num)) { - num = 0; - isInt = false; - } - /* } */ case 2: - $s = -1; return [num, isInt, newArgNum]; - /* */ } return; } if ($f === undefined) { $f = { $blk: intFromArg }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.argNum = argNum; $f.isInt = isInt; $f.n = n; $f.n$1 = n$1; $f.newArgNum = newArgNum; $f.num = num; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - parseArgNumber = function(format) { - var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, format, i, index, newi, ok, ok$1, wid, width; - index = 0; - wid = 0; - ok = false; - if (format.length < 3) { - _tmp = 0; - _tmp$1 = 1; - _tmp$2 = false; - index = _tmp; - wid = _tmp$1; - ok = _tmp$2; - return [index, wid, ok]; - } - i = 1; - while (true) { - if (!(i < format.length)) { break; } - if (format.charCodeAt(i) === 93) { - _tuple = parsenum(format, 1, i); - width = _tuple[0]; - ok$1 = _tuple[1]; - newi = _tuple[2]; - if (!ok$1 || !((newi === i))) { - _tmp$3 = 0; - _tmp$4 = i + 1 >> 0; - _tmp$5 = false; - index = _tmp$3; - wid = _tmp$4; - ok = _tmp$5; - return [index, wid, ok]; - } - _tmp$6 = width - 1 >> 0; - _tmp$7 = i + 1 >> 0; - _tmp$8 = true; - index = _tmp$6; - wid = _tmp$7; - ok = _tmp$8; - return [index, wid, ok]; - } - i = i + (1) >> 0; - } - _tmp$9 = 0; - _tmp$10 = 1; - _tmp$11 = false; - index = _tmp$9; - wid = _tmp$10; - ok = _tmp$11; - return [index, wid, ok]; - }; - pp.ptr.prototype.argNumber = function(argNum, format, i, numArgs) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, argNum, format, found, i, index, newArgNum, newi, numArgs, ok, p, wid; - newArgNum = 0; - newi = 0; - found = false; - p = this; - if (format.length <= i || !((format.charCodeAt(i) === 91))) { - _tmp = argNum; - _tmp$1 = i; - _tmp$2 = false; - newArgNum = _tmp; - newi = _tmp$1; - found = _tmp$2; - return [newArgNum, newi, found]; - } - p.reordered = true; - _tuple = parseArgNumber($substring(format, i)); - index = _tuple[0]; - wid = _tuple[1]; - ok = _tuple[2]; - if (ok && 0 <= index && index < numArgs) { - _tmp$3 = index; - _tmp$4 = i + wid >> 0; - _tmp$5 = true; - newArgNum = _tmp$3; - newi = _tmp$4; - found = _tmp$5; - return [newArgNum, newi, found]; - } - p.goodArgNum = false; - _tmp$6 = argNum; - _tmp$7 = i + wid >> 0; - _tmp$8 = ok; - newArgNum = _tmp$6; - newi = _tmp$7; - found = _tmp$8; - return [newArgNum, newi, found]; - }; - pp.prototype.argNumber = function(argNum, format, i, numArgs) { return this.$val.argNumber(argNum, format, i, numArgs); }; - pp.ptr.prototype.badArgNum = function(verb) { - var p, verb; - p = this; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(BADINDEX)"); - }; - pp.prototype.badArgNum = function(verb) { return this.$val.badArgNum(verb); }; - pp.ptr.prototype.missingArg = function(verb) { - var p, verb; - p = this; - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!"); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(MISSING)"); - }; - pp.prototype.missingArg = function(verb) { return this.$val.missingArg(verb); }; - pp.ptr.prototype.doPrintf = function(format, a) { - var _1, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, argNum, c, end, format, i, i$1, lasti, p, size, verb, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; a = $f.a; afterIndex = $f.afterIndex; arg = $f.arg; argNum = $f.argNum; c = $f.c; end = $f.end; format = $f.format; i = $f.i; i$1 = $f.i$1; lasti = $f.lasti; p = $f.p; size = $f.size; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - end = format.length; - argNum = 0; - afterIndex = false; - p.reordered = false; - i = 0; - /* while (true) { */ case 1: - /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 2; continue; } - p.goodArgNum = true; - lasti = i; - while (true) { - if (!(i < end && !((format.charCodeAt(i) === 37)))) { break; } - i = i + (1) >> 0; - } - if (i > lasti) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString($substring(format, lasti, i)); - } - if (i >= end) { - /* break; */ $s = 2; continue; - } - i = i + (1) >> 0; - p.fmt.clearflags(); - /* while (true) { */ case 3: - /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 4; continue; } - c = format.charCodeAt(i); - _1 = c; - /* */ if (_1 === (35)) { $s = 6; continue; } - /* */ if (_1 === (48)) { $s = 7; continue; } - /* */ if (_1 === (43)) { $s = 8; continue; } - /* */ if (_1 === (45)) { $s = 9; continue; } - /* */ if (_1 === (32)) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (_1 === (35)) { */ case 6: - p.fmt.fmtFlags.sharp = true; - $s = 12; continue; - /* } else if (_1 === (48)) { */ case 7: - p.fmt.fmtFlags.zero = !p.fmt.fmtFlags.minus; - $s = 12; continue; - /* } else if (_1 === (43)) { */ case 8: - p.fmt.fmtFlags.plus = true; - $s = 12; continue; - /* } else if (_1 === (45)) { */ case 9: - p.fmt.fmtFlags.minus = true; - p.fmt.fmtFlags.zero = false; - $s = 12; continue; - /* } else if (_1 === (32)) { */ case 10: - p.fmt.fmtFlags.space = true; - $s = 12; continue; - /* } else { */ case 11: - /* */ if (97 <= c && c <= 122 && argNum < a.$length) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (97 <= c && c <= 122 && argNum < a.$length) { */ case 13: - if (c === 118) { - p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; - p.fmt.fmtFlags.sharp = false; - p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; - p.fmt.fmtFlags.plus = false; - } - $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), ((c >> 0))); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - argNum = argNum + (1) >> 0; - i = i + (1) >> 0; - /* continue formatLoop; */ $s = 1; continue s; - /* } */ case 14: - /* break simpleFormat; */ $s = 4; continue s; - /* } */ case 12: - case 5: - i = i + (1) >> 0; - /* } */ $s = 3; continue; case 4: - _tuple = p.argNumber(argNum, format, i, a.$length); - argNum = _tuple[0]; - i = _tuple[1]; - afterIndex = _tuple[2]; - /* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 16; continue; } - /* */ $s = 17; continue; - /* if (i < end && (format.charCodeAt(i) === 42)) { */ case 16: - i = i + (1) >> 0; - _r = intFromArg(a, argNum); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - p.fmt.wid = _tuple$1[0]; - p.fmt.fmtFlags.widPresent = _tuple$1[1]; - argNum = _tuple$1[2]; - if (!p.fmt.fmtFlags.widPresent) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADWIDTH)"); - } - if (p.fmt.wid < 0) { - p.fmt.wid = -p.fmt.wid; - p.fmt.fmtFlags.minus = true; - p.fmt.fmtFlags.zero = false; - } - afterIndex = false; - $s = 18; continue; - /* } else { */ case 17: - _tuple$2 = parsenum(format, i, end); - p.fmt.wid = _tuple$2[0]; - p.fmt.fmtFlags.widPresent = _tuple$2[1]; - i = _tuple$2[2]; - if (afterIndex && p.fmt.fmtFlags.widPresent) { - p.goodArgNum = false; - } - /* } */ case 18: - /* */ if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { $s = 20; continue; } - /* */ $s = 21; continue; - /* if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { */ case 20: - i = i + (1) >> 0; - if (afterIndex) { - p.goodArgNum = false; - } - _tuple$3 = p.argNumber(argNum, format, i, a.$length); - argNum = _tuple$3[0]; - i = _tuple$3[1]; - afterIndex = _tuple$3[2]; - /* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 22; continue; } - /* */ $s = 23; continue; - /* if (i < end && (format.charCodeAt(i) === 42)) { */ case 22: - i = i + (1) >> 0; - _r$1 = intFromArg(a, argNum); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$4 = _r$1; - p.fmt.prec = _tuple$4[0]; - p.fmt.fmtFlags.precPresent = _tuple$4[1]; - argNum = _tuple$4[2]; - if (p.fmt.prec < 0) { - p.fmt.prec = 0; - p.fmt.fmtFlags.precPresent = false; - } - if (!p.fmt.fmtFlags.precPresent) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADPREC)"); - } - afterIndex = false; - $s = 24; continue; - /* } else { */ case 23: - _tuple$5 = parsenum(format, i, end); - p.fmt.prec = _tuple$5[0]; - p.fmt.fmtFlags.precPresent = _tuple$5[1]; - i = _tuple$5[2]; - if (!p.fmt.fmtFlags.precPresent) { - p.fmt.prec = 0; - p.fmt.fmtFlags.precPresent = true; - } - /* } */ case 24: - /* } */ case 21: - if (!afterIndex) { - _tuple$6 = p.argNumber(argNum, format, i, a.$length); - argNum = _tuple$6[0]; - i = _tuple$6[1]; - afterIndex = _tuple$6[2]; - } - if (i >= end) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(NOVERB)"); - /* break; */ $s = 2; continue; - } - _tmp = ((format.charCodeAt(i) >> 0)); - _tmp$1 = 1; - verb = _tmp; - size = _tmp$1; - if (verb >= 128) { - _tuple$7 = utf8.DecodeRuneInString($substring(format, i)); - verb = _tuple$7[0]; - size = _tuple$7[1]; - } - i = i + (size) >> 0; - /* */ if ((verb === 37)) { $s = 27; continue; } - /* */ if (!p.goodArgNum) { $s = 28; continue; } - /* */ if (argNum >= a.$length) { $s = 29; continue; } - /* */ if ((verb === 118)) { $s = 30; continue; } - /* */ $s = 31; continue; - /* if ((verb === 37)) { */ case 27: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(37); - $s = 32; continue; - /* } else if (!p.goodArgNum) { */ case 28: - p.badArgNum(verb); - $s = 32; continue; - /* } else if (argNum >= a.$length) { */ case 29: - p.missingArg(verb); - $s = 32; continue; - /* } else if ((verb === 118)) { */ case 30: - p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; - p.fmt.fmtFlags.sharp = false; - p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; - p.fmt.fmtFlags.plus = false; - $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - argNum = argNum + (1) >> 0; - $s = 32; continue; - /* } else { */ case 31: - $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - argNum = argNum + (1) >> 0; - /* } */ case 32: - case 26: - /* } */ $s = 1; continue; case 2: - /* */ if (!p.reordered && argNum < a.$length) { $s = 35; continue; } - /* */ $s = 36; continue; - /* if (!p.reordered && argNum < a.$length) { */ case 35: - p.fmt.clearflags(); - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(EXTRA "); - _ref = $subslice(a, argNum); - _i = 0; - /* while (true) { */ case 37: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 38; continue; } - i$1 = _i; - arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (i$1 > 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", "); - } - /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 39; continue; } - /* */ $s = 40; continue; - /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 39: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(""); - $s = 41; continue; - /* } else { */ case 40: - _r$2 = reflect.TypeOf(arg).String(); /* */ $s = 42; case 42: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61); - $r = p.printArg(arg, 118); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 41: - _i++; - /* } */ $s = 37; continue; case 38: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41); - /* } */ case 36: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintf }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.a = a; $f.afterIndex = afterIndex; $f.arg = arg; $f.argNum = argNum; $f.c = c; $f.end = end; $f.format = format; $f.i = i; $f.i$1 = i$1; $f.lasti = lasti; $f.p = p; $f.size = size; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.doPrintf = function(format, a) { return this.$val.doPrintf(format, a); }; - pp.ptr.prototype.doPrint = function(a) { - var _i, _r, _ref, _v, a, arg, argNum, isString, p, prevString, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _v = $f._v; a = $f.a; arg = $f.arg; argNum = $f.argNum; isString = $f.isString; p = $f.p; prevString = $f.prevString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - prevString = false; - _ref = a; - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } - argNum = _i; - arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 3; continue s; } - _r = reflect.TypeOf(arg).Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r === 24; case 3: - isString = _v; - if (argNum > 0 && !isString && !prevString) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); - } - $r = p.printArg(arg, 118); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - prevString = isString; - _i++; - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrint }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._v = _v; $f.a = a; $f.arg = arg; $f.argNum = argNum; $f.isString = isString; $f.p = p; $f.prevString = prevString; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.doPrint = function(a) { return this.$val.doPrint(a); }; - pp.ptr.prototype.doPrintln = function(a) { - var _i, _ref, a, arg, argNum, p, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; a = $f.a; arg = $f.arg; argNum = $f.argNum; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _ref = a; - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } - argNum = _i; - arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (argNum > 0) { - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32); - } - $r = p.printArg(arg, 118); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i++; - /* } */ $s = 1; continue; case 2: - (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(10); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintln }; } $f._i = _i; $f._ref = _ref; $f.a = a; $f.arg = arg; $f.argNum = argNum; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; - }; - pp.prototype.doPrintln = function(a) { return this.$val.doPrintln(a); }; - ss.ptr.prototype.Read = function(buf) { - var _tmp, _tmp$1, buf, err, n, s; - n = 0; - err = $ifaceNil; - s = this; - _tmp = 0; - _tmp$1 = errors.New("ScanState's Read should not be called. Use ReadRune"); - n = _tmp; - err = _tmp$1; - return [n, err]; - }; - ss.prototype.Read = function(buf) { return this.$val.Read(buf); }; - ss.ptr.prototype.ReadRune = function() { - var _r, _tuple, err, r, s, size, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = 0; - size = 0; - err = $ifaceNil; - s = this; - if (s.atEOF || s.count >= s.ssave.argLimit) { - err = io.EOF; - $s = -1; return [r, size, err]; - } - _r = s.rs.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - r = _tuple[0]; - size = _tuple[1]; - err = _tuple[2]; - if ($interfaceIsEqual(err, $ifaceNil)) { - s.count = s.count + (1) >> 0; - if (s.ssave.nlIsEnd && (r === 10)) { - s.atEOF = true; - } - } else if ($interfaceIsEqual(err, io.EOF)) { - s.atEOF = true; - } - $s = -1; return [r, size, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.ReadRune }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.size = size; $f.$s = $s; $f.$r = $r; return $f; - }; - ss.prototype.ReadRune = function() { return this.$val.ReadRune(); }; - ss.ptr.prototype.Width = function() { - var _tmp, _tmp$1, _tmp$2, _tmp$3, ok, s, wid; - wid = 0; - ok = false; - s = this; - if (s.ssave.maxWid === 1073741824) { - _tmp = 0; - _tmp$1 = false; - wid = _tmp; - ok = _tmp$1; - return [wid, ok]; - } - _tmp$2 = s.ssave.maxWid; - _tmp$3 = true; - wid = _tmp$2; - ok = _tmp$3; - return [wid, ok]; - }; - ss.prototype.Width = function() { return this.$val.Width(); }; - ss.ptr.prototype.getRune = function() { - var _r, _tuple, err, r, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = 0; - s = this; - _r = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - r = _tuple[0]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - if ($interfaceIsEqual(err, io.EOF)) { - r = -1; - $s = -1; return r; - } - s.error(err); - } - $s = -1; return r; - /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.getRune }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - ss.prototype.getRune = function() { return this.$val.getRune(); }; - ss.ptr.prototype.UnreadRune = function() { - var _r, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _r = s.rs.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - s.atEOF = false; - s.count = s.count - (1) >> 0; - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.UnreadRune }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - ss.prototype.UnreadRune = function() { return this.$val.UnreadRune(); }; - ss.ptr.prototype.error = function(err) { - var err, s, x; - s = this; - $panic((x = new scanError.ptr(err), new x.constructor.elem(x))); - }; - ss.prototype.error = function(err) { return this.$val.error(err); }; - ss.ptr.prototype.errorString = function(err) { - var err, s, x; - s = this; - $panic((x = new scanError.ptr(errors.New(err)), new x.constructor.elem(x))); - }; - ss.prototype.errorString = function(err) { return this.$val.errorString(err); }; - ss.ptr.prototype.Token = function(skipSpace, f) { - var _r, err, f, s, skipSpace, tok, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; f = $f.f; s = $f.s; skipSpace = $f.skipSpace; tok = $f.tok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - err = [err]; - tok = sliceType$2.nil; - err[0] = $ifaceNil; - s = this; - $deferred.push([(function(err) { return function() { - var _tuple, e, ok, se; - e = $recover(); - if (!($interfaceIsEqual(e, $ifaceNil))) { - _tuple = $assertType(e, scanError, true); - se = $clone(_tuple[0], scanError); - ok = _tuple[1]; - if (ok) { - err[0] = se.err; - } else { - $panic(e); - } - } - }; })(err), []]); - if (f === $throwNilPointerError) { - f = notSpace; - } - s.buf = $subslice(s.buf, 0, 0); - _r = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - tok = _r; - $s = -1; return [tok, err[0]]; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [tok, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ss.ptr.prototype.Token }; } $f._r = _r; $f.err = err; $f.f = f; $f.s = s; $f.skipSpace = skipSpace; $f.tok = tok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - ss.prototype.Token = function(skipSpace, f) { return this.$val.Token(skipSpace, f); }; - isSpace = function(r) { - var _i, _ref, r, rng, rx; - if (r >= 65536) { - return false; - } - rx = ((r << 16 >>> 16)); - _ref = space; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - rng = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$1); - if (rx < rng[0]) { - return false; - } - if (rx <= rng[1]) { - return true; - } - _i++; - } - return false; - }; - notSpace = function(r) { - var r; - return !isSpace(r); - }; - ss.ptr.prototype.free = function(old) { - var old, s; - s = this; - if (old.validSave) { - ssave.copy(s.ssave, old); - return; - } - if (s.buf.$capacity > 1024) { - return; - } - s.buf = $subslice(s.buf, 0, 0); - s.rs = $ifaceNil; - ssFree.Put(s); - }; - ss.prototype.free = function(old) { return this.$val.free(old); }; - ss.ptr.prototype.SkipSpace = function() { - var _r, _r$1, _r$2, _v, r, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - /* while (true) { */ case 1: - _r = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - r = _r; - if (r === -1) { - $s = -1; return; - } - if (!(r === 13)) { _v = false; $s = 6; continue s; } - _r$1 = s.peek("\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _v = _r$1; case 6: - /* */ if (_v) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (_v) { */ case 4: - /* continue; */ $s = 1; continue; - /* } */ case 5: - /* */ if (r === 10) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (r === 10) { */ case 8: - if (s.ssave.nlIsSpace) { - /* continue; */ $s = 1; continue; - } - s.errorString("unexpected newline"); - $s = -1; return; - /* } */ case 9: - /* */ if (!isSpace(r)) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (!isSpace(r)) { */ case 10: - _r$2 = s.UnreadRune(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$2; - /* break; */ $s = 2; continue; - /* } */ case 11: - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.SkipSpace }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - ss.prototype.SkipSpace = function() { return this.$val.SkipSpace(); }; - ss.ptr.prototype.token = function(skipSpace, f) { - var _r, _r$1, _r$2, f, r, s, skipSpace, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; f = $f.f; r = $f.r; s = $f.s; skipSpace = $f.skipSpace; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - /* */ if (skipSpace) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (skipSpace) { */ case 1: - $r = s.SkipSpace(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - /* while (true) { */ case 4: - _r = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - r = _r; - if (r === -1) { - /* break; */ $s = 5; continue; - } - _r$1 = f(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!_r$1) { */ case 7: - _r$2 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$2; - /* break; */ $s = 5; continue; - /* } */ case 8: - (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).WriteRune(r); - /* } */ $s = 4; continue; case 5: - $s = -1; return (x = s.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length)); - /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.token }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.f = f; $f.r = r; $f.s = s; $f.skipSpace = skipSpace; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - ss.prototype.token = function(skipSpace, f) { return this.$val.token(skipSpace, f); }; - indexRune = function(s, r) { - var _i, _ref, _rune, c, i, r, s; - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - i = _i; - c = _rune[0]; - if (c === r) { - return i; - } - _i += _rune[1]; - } - return -1; - }; - ss.ptr.prototype.peek = function(ok) { - var _r, _r$1, ok, r, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; ok = $f.ok; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - r = _r; - /* */ if (!((r === -1))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!((r === -1))) { */ case 2: - _r$1 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - /* } */ case 3: - $s = -1; return indexRune(ok, r) >= 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.peek }; } $f._r = _r; $f._r$1 = _r$1; $f.ok = ok; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - ss.prototype.peek = function(ok) { return this.$val.peek(ok); }; - ptrType$25.methods = [{prop: "clearflags", name: "clearflags", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "fmt", typ: $funcType([ptrType$1], [], false)}, {prop: "writePadding", name: "writePadding", pkg: "fmt", typ: $funcType([$Int], [], false)}, {prop: "pad", name: "pad", pkg: "fmt", typ: $funcType([sliceType$2], [], false)}, {prop: "padString", name: "padString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtBoolean", name: "fmtBoolean", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "fmtUnicode", name: "fmtUnicode", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Int, $Bool, $String], [], false)}, {prop: "truncateString", name: "truncateString", pkg: "fmt", typ: $funcType([$String], [$String], false)}, {prop: "truncate", name: "truncate", pkg: "fmt", typ: $funcType([sliceType$2], [sliceType$2], false)}, {prop: "fmtS", name: "fmtS", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtBs", name: "fmtBs", pkg: "fmt", typ: $funcType([sliceType$2], [], false)}, {prop: "fmtSbx", name: "fmtSbx", pkg: "fmt", typ: $funcType([$String, sliceType$2, $String], [], false)}, {prop: "fmtSx", name: "fmtSx", pkg: "fmt", typ: $funcType([$String, $String], [], false)}, {prop: "fmtBx", name: "fmtBx", pkg: "fmt", typ: $funcType([sliceType$2, $String], [], false)}, {prop: "fmtQ", name: "fmtQ", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtC", name: "fmtC", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtQc", name: "fmtQc", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32, $Int], [], false)}]; - ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [], false)}]; - ptrType$2.methods = [{prop: "free", name: "free", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "unknownType", name: "unknownType", pkg: "fmt", typ: $funcType([reflect.Value], [], false)}, {prop: "badVerb", name: "badVerb", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "fmtBool", name: "fmtBool", pkg: "fmt", typ: $funcType([$Bool, $Int32], [], false)}, {prop: "fmt0x64", name: "fmt0x64", pkg: "fmt", typ: $funcType([$Uint64, $Bool], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Bool, $Int32], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32], [], false)}, {prop: "fmtComplex", name: "fmtComplex", pkg: "fmt", typ: $funcType([$Complex128, $Int, $Int32], [], false)}, {prop: "fmtString", name: "fmtString", pkg: "fmt", typ: $funcType([$String, $Int32], [], false)}, {prop: "fmtBytes", name: "fmtBytes", pkg: "fmt", typ: $funcType([sliceType$2, $Int32, $String], [], false)}, {prop: "fmtPointer", name: "fmtPointer", pkg: "fmt", typ: $funcType([reflect.Value, $Int32], [], false)}, {prop: "catchPanic", name: "catchPanic", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32, $String], [], false)}, {prop: "handleMethods", name: "handleMethods", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "printArg", name: "printArg", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32], [], false)}, {prop: "printValue", name: "printValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [], false)}, {prop: "argNumber", name: "argNumber", pkg: "fmt", typ: $funcType([$Int, $String, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "badArgNum", name: "badArgNum", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "missingArg", name: "missingArg", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "doPrintf", name: "doPrintf", pkg: "fmt", typ: $funcType([$String, sliceType], [], false)}, {prop: "doPrint", name: "doPrint", pkg: "fmt", typ: $funcType([sliceType], [], false)}, {prop: "doPrintln", name: "doPrintln", pkg: "fmt", typ: $funcType([sliceType], [], false)}]; - ptrType$5.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "getRune", name: "getRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "mustReadRune", name: "mustReadRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "error", name: "error", pkg: "fmt", typ: $funcType([$error], [], false)}, {prop: "errorString", name: "errorString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType$2, $error], false)}, {prop: "free", name: "free", pkg: "fmt", typ: $funcType([ssave], [], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "token", name: "token", pkg: "fmt", typ: $funcType([$Bool, funcType], [sliceType$2], false)}, {prop: "consume", name: "consume", pkg: "fmt", typ: $funcType([$String, $Bool], [$Bool], false)}, {prop: "peek", name: "peek", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "notEOF", name: "notEOF", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "accept", name: "accept", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "okVerb", name: "okVerb", pkg: "fmt", typ: $funcType([$Int32, $String, $String], [$Bool], false)}, {prop: "scanBool", name: "scanBool", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "getBase", name: "getBase", pkg: "fmt", typ: $funcType([$Int32], [$Int, $String], false)}, {prop: "scanNumber", name: "scanNumber", pkg: "fmt", typ: $funcType([$String, $Bool], [$String], false)}, {prop: "scanRune", name: "scanRune", pkg: "fmt", typ: $funcType([$Int], [$Int64], false)}, {prop: "scanBasePrefix", name: "scanBasePrefix", pkg: "fmt", typ: $funcType([], [$Int, $String, $Bool], false)}, {prop: "scanInt", name: "scanInt", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Int64], false)}, {prop: "scanUint", name: "scanUint", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Uint64], false)}, {prop: "floatToken", name: "floatToken", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "complexTokens", name: "complexTokens", pkg: "fmt", typ: $funcType([], [$String, $String], false)}, {prop: "convertFloat", name: "convertFloat", pkg: "fmt", typ: $funcType([$String, $Int], [$Float64], false)}, {prop: "scanComplex", name: "scanComplex", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Complex128], false)}, {prop: "convertString", name: "convertString", pkg: "fmt", typ: $funcType([$Int32], [$String], false)}, {prop: "quotedString", name: "quotedString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "hexByte", name: "hexByte", pkg: "fmt", typ: $funcType([], [$Uint8, $Bool], false)}, {prop: "hexString", name: "hexString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "scanOne", name: "scanOne", pkg: "fmt", typ: $funcType([$Int32, $emptyInterface], [], false)}, {prop: "doScan", name: "doScan", pkg: "fmt", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "fmt", typ: $funcType([$String], [$Int], false)}, {prop: "doScanf", name: "doScanf", pkg: "fmt", typ: $funcType([$String, sliceType], [$Int, $error], false)}]; - fmtFlags.init("fmt", [{prop: "widPresent", name: "widPresent", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "minus", name: "minus", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "plus", name: "plus", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "space", name: "space", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "zero", name: "zero", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", embedded: false, exported: false, typ: $Bool, tag: ""}]); - fmt.init("fmt", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "fmtFlags", name: "fmtFlags", embedded: true, exported: false, typ: fmtFlags, tag: ""}, {prop: "wid", name: "wid", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prec", name: "prec", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "intbuf", name: "intbuf", embedded: false, exported: false, typ: arrayType, tag: ""}]); - State.init([{prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]); - Formatter.init([{prop: "Format", name: "Format", pkg: "", typ: $funcType([State, $Int32], [], false)}]); - Stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); - GoStringer.init([{prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]); - buffer.init($Uint8); - pp.init("fmt", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: buffer, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: reflect.Value, tag: ""}, {prop: "fmt", name: "fmt", embedded: false, exported: false, typ: fmt, tag: ""}, {prop: "reordered", name: "reordered", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "panicking", name: "panicking", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", embedded: false, exported: false, typ: $Bool, tag: ""}]); - scanError.init("fmt", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); - ss.init("fmt", [{prop: "rs", name: "rs", embedded: false, exported: false, typ: io.RuneScanner, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: buffer, tag: ""}, {prop: "count", name: "count", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "ssave", name: "ssave", embedded: true, exported: false, typ: ssave, tag: ""}]); - ssave.init("fmt", [{prop: "validSave", name: "validSave", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "limit", name: "limit", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", embedded: false, exported: false, typ: $Int, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = fmtsort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = os.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = reflect.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - ppFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() { - return new pp.ptr(buffer.nil, $ifaceNil, new reflect.Value.ptr(ptrType.nil, 0, 0), new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero()), false, false, false, false); - })); - space = new sliceType$1([$toNativeArray($kindUint16, [9, 13]), $toNativeArray($kindUint16, [32, 32]), $toNativeArray($kindUint16, [133, 133]), $toNativeArray($kindUint16, [160, 160]), $toNativeArray($kindUint16, [5760, 5760]), $toNativeArray($kindUint16, [8192, 8202]), $toNativeArray($kindUint16, [8232, 8233]), $toNativeArray($kindUint16, [8239, 8239]), $toNativeArray($kindUint16, [8287, 8287]), $toNativeArray($kindUint16, [12288, 12288])]); - ssFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() { - return new ss.ptr($ifaceNil, buffer.nil, 0, false, new ssave.ptr(false, false, false, 0, 0, 0)); - })); - complexError = errors.New("syntax error scanning complex number"); - boolError = errors.New("syntax error scanning boolean"); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["bytes"] = (function() { - var $pkg = {}, $init, errors, bytealg, io, unicode, utf8, Reader, sliceType, ptrType$2, errNegativeRead, IndexByte, Equal, HasPrefix, Repeat, Index, indexRabinKarp, hashStr, NewReader; - errors = $packages["errors"]; - bytealg = $packages["internal/bytealg"]; - io = $packages["io"]; - unicode = $packages["unicode"]; - utf8 = $packages["unicode/utf8"]; - Reader = $pkg.Reader = $newType(0, $kindStruct, "bytes.Reader", true, "bytes", true, function(s_, i_, prevRune_) { - this.$val = this; - if (arguments.length === 0) { - this.s = sliceType.nil; - this.i = new $Int64(0, 0); - this.prevRune = 0; - return; - } - this.s = s_; - this.i = i_; - this.prevRune = prevRune_; - }); - sliceType = $sliceType($Uint8); - ptrType$2 = $ptrType(Reader); - IndexByte = function(s, c) { - var _i, _ref, b, c, i, s; - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (b === c) { - return i; - } - _i++; - } - return -1; - }; - $pkg.IndexByte = IndexByte; - Equal = function(a, b) { - var _i, _ref, a, b, c, i; - if (!((a.$length === b.$length))) { - return false; - } - _ref = a; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { - return false; - } - _i++; - } - return true; - }; - $pkg.Equal = Equal; - HasPrefix = function(s, prefix) { - var prefix, s; - return s.$length >= prefix.$length && Equal($subslice(s, 0, prefix.$length), prefix); - }; - $pkg.HasPrefix = HasPrefix; - Repeat = function(b, count) { - var _q, b, bp, count, nb; - if (count < 0) { - $panic(new $String("bytes: negative Repeat count")); - } else if (count > 0 && !(((_q = ($imul(b.$length, count)) / count, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === b.$length))) { - $panic(new $String("bytes: Repeat count causes overflow")); - } - nb = $makeSlice(sliceType, ($imul(b.$length, count))); - bp = $copySlice(nb, b); - while (true) { - if (!(bp < nb.$length)) { break; } - $copySlice($subslice(nb, bp), $subslice(nb, 0, bp)); - bp = $imul(bp, (2)); - } - return nb; - }; - $pkg.Repeat = Repeat; - Index = function(s, sep) { - var c0, c0$1, c1, c1$1, fails, fails$1, i, i$1, j, n, o, o$1, r, s, sep, t, t$1, x, x$1; - n = sep.$length; - if ((n === 0)) { - return 0; - } else if ((n === 1)) { - return IndexByte(s, (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0])); - } else if ((n === s.$length)) { - if (Equal(sep, s)) { - return 0; - } - return -1; - } else if (n > s.$length) { - return -1; - } else if (n <= bytealg.MaxLen) { - if (s.$length <= 0) { - return bytealg.Index(s, sep); - } - c0 = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]); - c1 = (1 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 1]); - i = 0; - t = (s.$length - n >> 0) + 1 >> 0; - fails = 0; - while (true) { - if (!(i < t)) { break; } - if (!((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === c0))) { - o = IndexByte($subslice(s, i, t), c0); - if (o < 0) { - return -1; - } - i = i + (o) >> 0; - } - if (((x = i + 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) === c1) && Equal($subslice(s, i, (i + n >> 0)), sep)) { - return i; - } - fails = fails + (1) >> 0; - i = i + (1) >> 0; - if (fails > bytealg.Cutover(i)) { - r = bytealg.Index($subslice(s, i), sep); - if (r >= 0) { - return r + i >> 0; - } - return -1; - } - } - return -1; - } - c0$1 = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]); - c1$1 = (1 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 1]); - i$1 = 0; - fails$1 = 0; - t$1 = (s.$length - n >> 0) + 1 >> 0; - while (true) { - if (!(i$1 < t$1)) { break; } - if (!((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) === c0$1))) { - o$1 = IndexByte($subslice(s, i$1, t$1), c0$1); - if (o$1 < 0) { - break; - } - i$1 = i$1 + (o$1) >> 0; - } - if (((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1])) === c1$1) && Equal($subslice(s, i$1, (i$1 + n >> 0)), sep)) { - return i$1; - } - i$1 = i$1 + (1) >> 0; - fails$1 = fails$1 + (1) >> 0; - if (fails$1 >= (4 + (i$1 >> 4 >> 0) >> 0) && i$1 < t$1) { - j = indexRabinKarp($subslice(s, i$1), sep); - if (j < 0) { - return -1; - } - return i$1 + j >> 0; - } - } - return -1; - }; - $pkg.Index = Index; - indexRabinKarp = function(s, sep) { - var _tuple, h, hashsep, i, i$1, n, pow, s, sep, x; - _tuple = hashStr(sep); - hashsep = _tuple[0]; - pow = _tuple[1]; - n = sep.$length; - h = 0; - i = 0; - while (true) { - if (!(i < n)) { break; } - h = ($imul(h, 16777619) >>> 0) + ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >>> 0)) >>> 0; - i = i + (1) >> 0; - } - if ((h === hashsep) && Equal($subslice(s, 0, n), sep)) { - return 0; - } - i$1 = n; - while (true) { - if (!(i$1 < s.$length)) { break; } - h = $imul(h, (16777619)) >>> 0; - h = h + (((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) >>> 0))) >>> 0; - h = h - (($imul(pow, (((x = i$1 - n >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >>> 0))) >>> 0)) >>> 0; - i$1 = i$1 + (1) >> 0; - if ((h === hashsep) && Equal($subslice(s, (i$1 - n >> 0), i$1), sep)) { - return i$1 - n >> 0; - } - } - return -1; - }; - hashStr = function(sep) { - var _tmp, _tmp$1, hash, i, i$1, pow, sep, sq; - hash = 0; - i = 0; - while (true) { - if (!(i < sep.$length)) { break; } - hash = ($imul(hash, 16777619) >>> 0) + ((((i < 0 || i >= sep.$length) ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + i]) >>> 0)) >>> 0; - i = i + (1) >> 0; - } - _tmp = 1; - _tmp$1 = 16777619; - pow = _tmp; - sq = _tmp$1; - i$1 = sep.$length; - while (true) { - if (!(i$1 > 0)) { break; } - if (!(((i$1 & 1) === 0))) { - pow = $imul(pow, (sq)) >>> 0; - } - sq = $imul(sq, (sq)) >>> 0; - i$1 = (i$1 >> $min((1), 31)) >> 0; - } - return [hash, pow]; - }; - Reader.ptr.prototype.Len = function() { - var r, x, x$1, x$2, x$3, x$4; - r = this; - if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { - return 0; - } - return (((x$2 = (x$3 = (new $Int64(0, r.s.$length)), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); - }; - Reader.prototype.Len = function() { return this.$val.Len(); }; - Reader.ptr.prototype.Size = function() { - var r; - r = this; - return (new $Int64(0, r.s.$length)); - }; - Reader.prototype.Size = function() { return this.$val.Size(); }; - Reader.ptr.prototype.Read = function(b) { - var _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3; - n = 0; - err = $ifaceNil; - r = this; - if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { - _tmp = 0; - _tmp$1 = io.EOF; - n = _tmp; - err = _tmp$1; - return [n, err]; - } - r.prevRune = -1; - n = $copySlice(b, $subslice(r.s, $flatten64(r.i))); - r.i = (x$2 = r.i, x$3 = (new $Int64(0, n)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); - return [n, err]; - }; - Reader.prototype.Read = function(b) { return this.$val.Read(b); }; - Reader.ptr.prototype.ReadAt = function(b, off) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x; - n = 0; - err = $ifaceNil; - r = this; - if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { - _tmp = 0; - _tmp$1 = errors.New("bytes.Reader.ReadAt: negative offset"); - n = _tmp; - err = _tmp$1; - return [n, err]; - } - if ((x = (new $Int64(0, r.s.$length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) { - _tmp$2 = 0; - _tmp$3 = io.EOF; - n = _tmp$2; - err = _tmp$3; - return [n, err]; - } - n = $copySlice(b, $subslice(r.s, $flatten64(off))); - if (n < b.$length) { - err = io.EOF; - } - return [n, err]; - }; - Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); }; - Reader.ptr.prototype.ReadByte = function() { - var b, r, x, x$1, x$2, x$3, x$4, x$5; - r = this; - r.prevRune = -1; - if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { - return [0, io.EOF]; - } - b = (x$2 = r.s, x$3 = r.i, (($flatten64(x$3) < 0 || $flatten64(x$3) >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + $flatten64(x$3)])); - r.i = (x$4 = r.i, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); - return [b, $ifaceNil]; - }; - Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); }; - Reader.ptr.prototype.UnreadByte = function() { - var r, x, x$1, x$2; - r = this; - if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { - return errors.New("bytes.Reader.UnreadByte: at beginning of slice"); - } - r.prevRune = -1; - r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); - return $ifaceNil; - }; - Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); }; - Reader.ptr.prototype.ReadRune = function() { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; - ch = 0; - size = 0; - err = $ifaceNil; - r = this; - if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { - r.prevRune = -1; - _tmp = 0; - _tmp$1 = 0; - _tmp$2 = io.EOF; - ch = _tmp; - size = _tmp$1; - err = _tmp$2; - return [ch, size, err]; - } - r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); - c = (x$3 = r.s, x$4 = r.i, (($flatten64(x$4) < 0 || $flatten64(x$4) >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + $flatten64(x$4)])); - if (c < 128) { - r.i = (x$5 = r.i, x$6 = new $Int64(0, 1), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)); - _tmp$3 = ((c >> 0)); - _tmp$4 = 1; - _tmp$5 = $ifaceNil; - ch = _tmp$3; - size = _tmp$4; - err = _tmp$5; - return [ch, size, err]; - } - _tuple = utf8.DecodeRune($subslice(r.s, $flatten64(r.i))); - ch = _tuple[0]; - size = _tuple[1]; - r.i = (x$7 = r.i, x$8 = (new $Int64(0, size)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)); - return [ch, size, err]; - }; - Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); }; - Reader.ptr.prototype.UnreadRune = function() { - var r, x; - r = this; - if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { - return errors.New("bytes.Reader.UnreadRune: at beginning of slice"); - } - if (r.prevRune < 0) { - return errors.New("bytes.Reader.UnreadRune: previous operation was not ReadRune"); - } - r.i = (new $Int64(0, r.prevRune)); - r.prevRune = -1; - return $ifaceNil; - }; - Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); }; - Reader.ptr.prototype.Seek = function(offset, whence) { - var _1, abs, offset, r, whence, x, x$1; - r = this; - r.prevRune = -1; - abs = new $Int64(0, 0); - _1 = whence; - if (_1 === (0)) { - abs = offset; - } else if (_1 === (1)) { - abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); - } else if (_1 === (2)) { - abs = (x$1 = (new $Int64(0, r.s.$length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low)); - } else { - return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: invalid whence")]; - } - if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { - return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: negative position")]; - } - r.i = abs; - return [abs, $ifaceNil]; - }; - Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); }; - Reader.ptr.prototype.WriteTo = function(w) { - var _r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; m = $f.m; n = $f.n; r = $f.r; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = new $Int64(0, 0); - err = $ifaceNil; - r = this; - r.prevRune = -1; - if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { - _tmp = new $Int64(0, 0); - _tmp$1 = $ifaceNil; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - b = $subslice(r.s, $flatten64(r.i)); - _r = w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - m = _tuple[0]; - err = _tuple[1]; - if (m > b.$length) { - $panic(new $String("bytes.Reader.WriteTo: invalid Write count")); - } - r.i = (x$2 = r.i, x$3 = (new $Int64(0, m)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); - n = (new $Int64(0, m)); - if (!((m === b.$length)) && $interfaceIsEqual(err, $ifaceNil)) { - err = io.ErrShortWrite; - } - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f; - }; - Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); }; - Reader.ptr.prototype.Reset = function(b) { - var b, r; - r = this; - Reader.copy(r, new Reader.ptr(b, new $Int64(0, 0), -1)); - }; - Reader.prototype.Reset = function(b) { return this.$val.Reset(b); }; - NewReader = function(b) { - var b; - return new Reader.ptr(b, new $Int64(0, 0), -1); - }; - $pkg.NewReader = NewReader; - ptrType$2.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([sliceType], [], false)}]; - Reader.init("bytes", [{prop: "s", name: "s", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", embedded: false, exported: false, typ: $Int, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.ErrTooLarge = errors.New("bytes.Buffer: too large"); - errNegativeRead = errors.New("bytes.Buffer: reader returned negative count from Read"); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["encoding/binary"] = (function() { - var $pkg = {}, $init, errors, io, math, reflect, ByteOrder, littleEndian, bigEndian, decoder, encoder, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, sliceType$7, sliceType$8, ptrType$9, ptrType$10, overflow, Read, Write, Size, dataSize, sizeof, intDataSize; - errors = $packages["errors"]; - io = $packages["io"]; - math = $packages["math"]; - reflect = $packages["reflect"]; - ByteOrder = $pkg.ByteOrder = $newType(8, $kindInterface, "binary.ByteOrder", true, "encoding/binary", true, null); - littleEndian = $pkg.littleEndian = $newType(0, $kindStruct, "binary.littleEndian", true, "encoding/binary", false, function() { - this.$val = this; - if (arguments.length === 0) { - return; - } - }); - bigEndian = $pkg.bigEndian = $newType(0, $kindStruct, "binary.bigEndian", true, "encoding/binary", false, function() { - this.$val = this; - if (arguments.length === 0) { - return; - } - }); - decoder = $pkg.decoder = $newType(0, $kindStruct, "binary.decoder", true, "encoding/binary", false, function(order_, buf_, offset_) { - this.$val = this; - if (arguments.length === 0) { - this.order = $ifaceNil; - this.buf = sliceType.nil; - this.offset = 0; - return; - } - this.order = order_; - this.buf = buf_; - this.offset = offset_; - }); - encoder = $pkg.encoder = $newType(0, $kindStruct, "binary.encoder", true, "encoding/binary", false, function(order_, buf_, offset_) { - this.$val = this; - if (arguments.length === 0) { - this.order = $ifaceNil; - this.buf = sliceType.nil; - this.offset = 0; - return; - } - this.order = order_; - this.buf = buf_; - this.offset = offset_; - }); - sliceType = $sliceType($Uint8); - ptrType = $ptrType($Bool); - ptrType$1 = $ptrType($Int8); - ptrType$2 = $ptrType($Uint8); - ptrType$3 = $ptrType($Int16); - ptrType$4 = $ptrType($Uint16); - ptrType$5 = $ptrType($Int32); - ptrType$6 = $ptrType($Uint32); - ptrType$7 = $ptrType($Int64); - ptrType$8 = $ptrType($Uint64); - sliceType$1 = $sliceType($Bool); - sliceType$2 = $sliceType($Int8); - sliceType$3 = $sliceType($Int16); - sliceType$4 = $sliceType($Uint16); - sliceType$5 = $sliceType($Int32); - sliceType$6 = $sliceType($Uint32); - sliceType$7 = $sliceType($Int64); - sliceType$8 = $sliceType($Uint64); - ptrType$9 = $ptrType(decoder); - ptrType$10 = $ptrType(encoder); - littleEndian.ptr.prototype.Uint16 = function(b) { - var b; - $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); - return ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; - }; - littleEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); }; - littleEndian.ptr.prototype.PutUint16 = function(b, v) { - var b, v; - $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); - (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24))); - (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); - }; - littleEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); }; - littleEndian.ptr.prototype.Uint32 = function(b) { - var b; - $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); - return ((((((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0; - }; - littleEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); }; - littleEndian.ptr.prototype.PutUint32 = function(b, v) { - var b, v; - $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); - (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24))); - (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 >>> 0) << 24 >>> 24))); - (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 16 >>> 0) << 24 >>> 24))); - (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (((v >>> 24 >>> 0) << 24 >>> 24))); - }; - littleEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); }; - littleEndian.ptr.prototype.Uint64 = function(b) { - var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); - return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$7 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); - }; - littleEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); }; - littleEndian.ptr.prototype.PutUint64 = function(b, v) { - var b, v; - $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); - (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v.$low << 24 >>> 24))); - (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 8).$low << 24 >>> 24))); - (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 16).$low << 24 >>> 24))); - (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 24).$low << 24 >>> 24))); - (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 32).$low << 24 >>> 24))); - (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 40).$low << 24 >>> 24))); - (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 48).$low << 24 >>> 24))); - (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = (($shiftRightUint64(v, 56).$low << 24 >>> 24))); - }; - littleEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); }; - littleEndian.ptr.prototype.String = function() { - return "LittleEndian"; - }; - littleEndian.prototype.String = function() { return this.$val.String(); }; - littleEndian.ptr.prototype.GoString = function() { - return "binary.LittleEndian"; - }; - littleEndian.prototype.GoString = function() { return this.$val.GoString(); }; - bigEndian.ptr.prototype.Uint16 = function(b) { - var b; - $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); - return ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; - }; - bigEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); }; - bigEndian.ptr.prototype.PutUint16 = function(b, v) { - var b, v; - $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); - (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); - (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = ((v << 24 >>> 24))); - }; - bigEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); }; - bigEndian.ptr.prototype.Uint32 = function(b) { - var b; - $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); - return ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0; - }; - bigEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); }; - bigEndian.ptr.prototype.PutUint32 = function(b, v) { - var b, v; - $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); - (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 24 >>> 0) << 24 >>> 24))); - (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 16 >>> 0) << 24 >>> 24))); - (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 8 >>> 0) << 24 >>> 24))); - (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = ((v << 24 >>> 24))); - }; - bigEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); }; - bigEndian.ptr.prototype.Uint64 = function(b) { - var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); - return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); - }; - bigEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); }; - bigEndian.ptr.prototype.PutUint64 = function(b, v) { - var b, v; - $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); - (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24))); - (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24))); - (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24))); - (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24))); - (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24))); - (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24))); - (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24))); - (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = ((v.$low << 24 >>> 24))); - }; - bigEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); }; - bigEndian.ptr.prototype.String = function() { - return "BigEndian"; - }; - bigEndian.prototype.String = function() { return this.$val.String(); }; - bigEndian.ptr.prototype.GoString = function() { - return "binary.BigEndian"; - }; - bigEndian.prototype.GoString = function() { return this.$val.GoString(); }; - Read = function(r, order, data) { - var _1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _tuple, _tuple$1, bs, d, data, data$1, data$10, data$11, data$12, data$13, data$14, data$15, data$16, data$17, data$18, data$2, data$3, data$4, data$5, data$6, data$7, data$8, data$9, err, err$1, i, i$1, i$2, i$3, i$4, i$5, i$6, i$7, n, order, r, size, v, x, x$1, x$2, x$3, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _i$6 = $f._i$6; _i$7 = $f._i$7; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _ref$7 = $f._ref$7; _ref$8 = $f._ref$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bs = $f.bs; d = $f.d; data = $f.data; data$1 = $f.data$1; data$10 = $f.data$10; data$11 = $f.data$11; data$12 = $f.data$12; data$13 = $f.data$13; data$14 = $f.data$14; data$15 = $f.data$15; data$16 = $f.data$16; data$17 = $f.data$17; data$18 = $f.data$18; data$2 = $f.data$2; data$3 = $f.data$3; data$4 = $f.data$4; data$5 = $f.data$5; data$6 = $f.data$6; data$7 = $f.data$7; data$8 = $f.data$8; data$9 = $f.data$9; err = $f.err; err$1 = $f.err$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; i$5 = $f.i$5; i$6 = $f.i$6; i$7 = $f.i$7; n = $f.n; order = $f.order; r = $f.r; size = $f.size; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = intDataSize(data); - /* */ if (!((n === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((n === 0))) { */ case 1: - bs = $makeSlice(sliceType, n); - _r = io.ReadFull(r, bs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _ref = data; - /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 4; continue; } - /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 5; continue; } - /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 6; continue; } - /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 7; continue; } - /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 8; continue; } - /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 9; continue; } - /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 10; continue; } - /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 11; continue; } - /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 12; continue; } - /* */ if ($assertType(_ref, sliceType$1, true)[1]) { $s = 13; continue; } - /* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 14; continue; } - /* */ if ($assertType(_ref, sliceType, true)[1]) { $s = 15; continue; } - /* */ if ($assertType(_ref, sliceType$3, true)[1]) { $s = 16; continue; } - /* */ if ($assertType(_ref, sliceType$4, true)[1]) { $s = 17; continue; } - /* */ if ($assertType(_ref, sliceType$5, true)[1]) { $s = 18; continue; } - /* */ if ($assertType(_ref, sliceType$6, true)[1]) { $s = 19; continue; } - /* */ if ($assertType(_ref, sliceType$7, true)[1]) { $s = 20; continue; } - /* */ if ($assertType(_ref, sliceType$8, true)[1]) { $s = 21; continue; } - /* */ $s = 22; continue; - /* if ($assertType(_ref, ptrType, true)[1]) { */ case 4: - data$1 = _ref.$val; - data$1.$set(!(((0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0]) === 0))); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 5: - data$2 = _ref.$val; - data$2.$set((((0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0]) << 24 >> 24))); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 6: - data$3 = _ref.$val; - data$3.$set((0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0])); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 7: - data$4 = _ref.$val; - _r$1 = order.Uint16(bs); /* */ $s = 23; case 23: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - data$4.$set(((_r$1 << 16 >> 16))); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 8: - data$5 = _ref.$val; - _r$2 = order.Uint16(bs); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - data$5.$set(_r$2); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 9: - data$6 = _ref.$val; - _r$3 = order.Uint32(bs); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - data$6.$set(((_r$3 >> 0))); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 10: - data$7 = _ref.$val; - _r$4 = order.Uint32(bs); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - data$7.$set(_r$4); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 11: - data$8 = _ref.$val; - _r$5 = order.Uint64(bs); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - data$8.$set(((x = _r$5, new $Int64(x.$high, x.$low)))); - $s = 22; continue; - /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 12: - data$9 = _ref.$val; - _r$6 = order.Uint64(bs); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - data$9.$set(_r$6); - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$1, true)[1]) { */ case 13: - data$10 = _ref.$val; - _ref$1 = bs; - _i = 0; - while (true) { - if (!(_i < _ref$1.$length)) { break; } - i = _i; - x$1 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); - ((i < 0 || i >= data$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$10.$array[data$10.$offset + i] = !((x$1 === 0))); - _i++; - } - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 14: - data$11 = _ref.$val; - _ref$2 = bs; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$2.$length)) { break; } - i$1 = _i$1; - x$2 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); - ((i$1 < 0 || i$1 >= data$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$11.$array[data$11.$offset + i$1] = ((x$2 << 24 >> 24))); - _i$1++; - } - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType, true)[1]) { */ case 15: - data$12 = _ref.$val; - $copySlice(data$12, bs); - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$3, true)[1]) { */ case 16: - data$13 = _ref.$val; - _ref$3 = data$13; - _i$2 = 0; - /* while (true) { */ case 29: - /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 30; continue; } - i$2 = _i$2; - _r$7 = order.Uint16($subslice(bs, ($imul(2, i$2)))); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - ((i$2 < 0 || i$2 >= data$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$13.$array[data$13.$offset + i$2] = ((_r$7 << 16 >> 16))); - _i$2++; - /* } */ $s = 29; continue; case 30: - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$4, true)[1]) { */ case 17: - data$14 = _ref.$val; - _ref$4 = data$14; - _i$3 = 0; - /* while (true) { */ case 32: - /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 33; continue; } - i$3 = _i$3; - _r$8 = order.Uint16($subslice(bs, ($imul(2, i$3)))); /* */ $s = 34; case 34: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - ((i$3 < 0 || i$3 >= data$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$14.$array[data$14.$offset + i$3] = _r$8); - _i$3++; - /* } */ $s = 32; continue; case 33: - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$5, true)[1]) { */ case 18: - data$15 = _ref.$val; - _ref$5 = data$15; - _i$4 = 0; - /* while (true) { */ case 35: - /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 36; continue; } - i$4 = _i$4; - _r$9 = order.Uint32($subslice(bs, ($imul(4, i$4)))); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - ((i$4 < 0 || i$4 >= data$15.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$15.$array[data$15.$offset + i$4] = ((_r$9 >> 0))); - _i$4++; - /* } */ $s = 35; continue; case 36: - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$6, true)[1]) { */ case 19: - data$16 = _ref.$val; - _ref$6 = data$16; - _i$5 = 0; - /* while (true) { */ case 38: - /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 39; continue; } - i$5 = _i$5; - _r$10 = order.Uint32($subslice(bs, ($imul(4, i$5)))); /* */ $s = 40; case 40: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - ((i$5 < 0 || i$5 >= data$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$16.$array[data$16.$offset + i$5] = _r$10); - _i$5++; - /* } */ $s = 38; continue; case 39: - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$7, true)[1]) { */ case 20: - data$17 = _ref.$val; - _ref$7 = data$17; - _i$6 = 0; - /* while (true) { */ case 41: - /* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 42; continue; } - i$6 = _i$6; - _r$11 = order.Uint64($subslice(bs, ($imul(8, i$6)))); /* */ $s = 43; case 43: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - ((i$6 < 0 || i$6 >= data$17.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$17.$array[data$17.$offset + i$6] = ((x$3 = _r$11, new $Int64(x$3.$high, x$3.$low)))); - _i$6++; - /* } */ $s = 41; continue; case 42: - $s = 22; continue; - /* } else if ($assertType(_ref, sliceType$8, true)[1]) { */ case 21: - data$18 = _ref.$val; - _ref$8 = data$18; - _i$7 = 0; - /* while (true) { */ case 44: - /* if (!(_i$7 < _ref$8.$length)) { break; } */ if(!(_i$7 < _ref$8.$length)) { $s = 45; continue; } - i$7 = _i$7; - _r$12 = order.Uint64($subslice(bs, ($imul(8, i$7)))); /* */ $s = 46; case 46: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - ((i$7 < 0 || i$7 >= data$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : data$18.$array[data$18.$offset + i$7] = _r$12); - _i$7++; - /* } */ $s = 44; continue; case 45: - /* } */ case 22: - $s = -1; return $ifaceNil; - /* } */ case 2: - _r$13 = reflect.ValueOf(data); /* */ $s = 47; case 47: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - v = _r$13; - size = -1; - _1 = $clone(v, reflect.Value).Kind(); - /* */ if (_1 === (22)) { $s = 49; continue; } - /* */ if (_1 === (23)) { $s = 50; continue; } - /* */ $s = 51; continue; - /* if (_1 === (22)) { */ case 49: - _r$14 = $clone(v, reflect.Value).Elem(); /* */ $s = 52; case 52: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - v = _r$14; - _r$15 = dataSize($clone(v, reflect.Value)); /* */ $s = 53; case 53: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } - size = _r$15; - $s = 51; continue; - /* } else if (_1 === (23)) { */ case 50: - _r$16 = dataSize($clone(v, reflect.Value)); /* */ $s = 54; case 54: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } - size = _r$16; - /* } */ case 51: - case 48: - /* */ if (size < 0) { $s = 55; continue; } - /* */ $s = 56; continue; - /* if (size < 0) { */ case 55: - _r$17 = reflect.TypeOf(data).String(); /* */ $s = 57; case 57: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } - _r$18 = errors.New("binary.Read: invalid type " + _r$17); /* */ $s = 58; case 58: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } - $s = -1; return _r$18; - /* } */ case 56: - d = new decoder.ptr(order, $makeSlice(sliceType, size), 0); - _r$19 = io.ReadFull(r, d.buf); /* */ $s = 59; case 59: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } - _tuple$1 = _r$19; - err$1 = _tuple$1[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return err$1; - } - $r = d.value($clone(v, reflect.Value)); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Read }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._i$6 = _i$6; $f._i$7 = _i$7; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._ref$7 = _ref$7; $f._ref$8 = _ref$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bs = bs; $f.d = d; $f.data = data; $f.data$1 = data$1; $f.data$10 = data$10; $f.data$11 = data$11; $f.data$12 = data$12; $f.data$13 = data$13; $f.data$14 = data$14; $f.data$15 = data$15; $f.data$16 = data$16; $f.data$17 = data$17; $f.data$18 = data$18; $f.data$2 = data$2; $f.data$3 = data$3; $f.data$4 = data$4; $f.data$5 = data$5; $f.data$6 = data$6; $f.data$7 = data$7; $f.data$8 = data$8; $f.data$9 = data$9; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.i$5 = i$5; $f.i$6 = i$6; $f.i$7 = i$7; $f.n = n; $f.order = order; $f.r = r; $f.size = size; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Read = Read; - Write = function(w, order, data) { - var _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _tuple, _tuple$1, bs, buf, data, e, err, err$1, i, i$1, i$2, i$3, i$4, i$5, i$6, i$7, n, order, size, v, v$1, v$10, v$11, v$12, v$13, v$14, v$15, v$16, v$17, v$18, v$19, v$2, v$20, v$21, v$22, v$23, v$24, v$25, v$26, v$27, v$3, v$4, v$5, v$6, v$7, v$8, v$9, w, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _i$6 = $f._i$6; _i$7 = $f._i$7; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _ref$7 = $f._ref$7; _ref$8 = $f._ref$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bs = $f.bs; buf = $f.buf; data = $f.data; e = $f.e; err = $f.err; err$1 = $f.err$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; i$5 = $f.i$5; i$6 = $f.i$6; i$7 = $f.i$7; n = $f.n; order = $f.order; size = $f.size; v = $f.v; v$1 = $f.v$1; v$10 = $f.v$10; v$11 = $f.v$11; v$12 = $f.v$12; v$13 = $f.v$13; v$14 = $f.v$14; v$15 = $f.v$15; v$16 = $f.v$16; v$17 = $f.v$17; v$18 = $f.v$18; v$19 = $f.v$19; v$2 = $f.v$2; v$20 = $f.v$20; v$21 = $f.v$21; v$22 = $f.v$22; v$23 = $f.v$23; v$24 = $f.v$24; v$25 = $f.v$25; v$26 = $f.v$26; v$27 = $f.v$27; v$3 = $f.v$3; v$4 = $f.v$4; v$5 = $f.v$5; v$6 = $f.v$6; v$7 = $f.v$7; v$8 = $f.v$8; v$9 = $f.v$9; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = intDataSize(data); - /* */ if (!((n === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!((n === 0))) { */ case 1: - bs = $makeSlice(sliceType, n); - _ref = data; - /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 3; continue; } - /* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 4; continue; } - /* */ if ($assertType(_ref, sliceType$1, true)[1]) { $s = 5; continue; } - /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 6; continue; } - /* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 7; continue; } - /* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 8; continue; } - /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 9; continue; } - /* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 10; continue; } - /* */ if ($assertType(_ref, sliceType, true)[1]) { $s = 11; continue; } - /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 12; continue; } - /* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 13; continue; } - /* */ if ($assertType(_ref, sliceType$3, true)[1]) { $s = 14; continue; } - /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 15; continue; } - /* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 16; continue; } - /* */ if ($assertType(_ref, sliceType$4, true)[1]) { $s = 17; continue; } - /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 18; continue; } - /* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 19; continue; } - /* */ if ($assertType(_ref, sliceType$5, true)[1]) { $s = 20; continue; } - /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 21; continue; } - /* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 22; continue; } - /* */ if ($assertType(_ref, sliceType$6, true)[1]) { $s = 23; continue; } - /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 24; continue; } - /* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; } - /* */ if ($assertType(_ref, sliceType$7, true)[1]) { $s = 26; continue; } - /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 27; continue; } - /* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 28; continue; } - /* */ if ($assertType(_ref, sliceType$8, true)[1]) { $s = 29; continue; } - /* */ $s = 30; continue; - /* if ($assertType(_ref, ptrType, true)[1]) { */ case 3: - v = _ref.$val; - if (v.$get()) { - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 1); - } else { - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 0); - } - $s = 30; continue; - /* } else if ($assertType(_ref, $Bool, true)[1]) { */ case 4: - v$1 = _ref.$val; - if (v$1) { - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 1); - } else { - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = 0); - } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$1, true)[1]) { */ case 5: - v$2 = _ref.$val; - _ref$1 = v$2; - _i = 0; - while (true) { - if (!(_i < _ref$1.$length)) { break; } - i = _i; - x = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); - if (x) { - ((i < 0 || i >= bs.$length) ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + i] = 1); - } else { - ((i < 0 || i >= bs.$length) ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + i] = 0); - } - _i++; - } - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 6: - v$3 = _ref.$val; - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = ((v$3.$get() << 24 >>> 24))); - $s = 30; continue; - /* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 7: - v$4 = _ref.$val; - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = ((v$4 << 24 >>> 24))); - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 8: - v$5 = _ref.$val; - _ref$2 = v$5; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$2.$length)) { break; } - i$1 = _i$1; - x$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); - ((i$1 < 0 || i$1 >= bs.$length) ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + i$1] = ((x$1 << 24 >>> 24))); - _i$1++; - } - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 9: - v$6 = _ref.$val; - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = v$6.$get()); - $s = 30; continue; - /* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 10: - v$7 = _ref.$val; - (0 >= bs.$length ? ($throwRuntimeError("index out of range"), undefined) : bs.$array[bs.$offset + 0] = v$7); - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType, true)[1]) { */ case 11: - v$8 = _ref.$val; - bs = v$8; - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 12: - v$9 = _ref.$val; - $r = order.PutUint16(bs, ((v$9.$get() << 16 >>> 16))); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 13: - v$10 = _ref.$val; - $r = order.PutUint16(bs, ((v$10 << 16 >>> 16))); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$3, true)[1]) { */ case 14: - v$11 = _ref.$val; - _ref$3 = v$11; - _i$2 = 0; - /* while (true) { */ case 33: - /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 34; continue; } - i$2 = _i$2; - x$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); - $r = order.PutUint16($subslice(bs, ($imul(2, i$2))), ((x$2 << 16 >>> 16))); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i$2++; - /* } */ $s = 33; continue; case 34: - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 15: - v$12 = _ref.$val; - $r = order.PutUint16(bs, v$12.$get()); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 16: - v$13 = _ref.$val; - $r = order.PutUint16(bs, v$13); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$4, true)[1]) { */ case 17: - v$14 = _ref.$val; - _ref$4 = v$14; - _i$3 = 0; - /* while (true) { */ case 38: - /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 39; continue; } - i$3 = _i$3; - x$3 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); - $r = order.PutUint16($subslice(bs, ($imul(2, i$3))), x$3); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i$3++; - /* } */ $s = 38; continue; case 39: - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 18: - v$15 = _ref.$val; - $r = order.PutUint32(bs, ((v$15.$get() >>> 0))); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 19: - v$16 = _ref.$val; - $r = order.PutUint32(bs, ((v$16 >>> 0))); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$5, true)[1]) { */ case 20: - v$17 = _ref.$val; - _ref$5 = v$17; - _i$4 = 0; - /* while (true) { */ case 43: - /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 44; continue; } - i$4 = _i$4; - x$4 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); - $r = order.PutUint32($subslice(bs, ($imul(4, i$4))), ((x$4 >>> 0))); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i$4++; - /* } */ $s = 43; continue; case 44: - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 21: - v$18 = _ref.$val; - $r = order.PutUint32(bs, v$18.$get()); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 22: - v$19 = _ref.$val; - $r = order.PutUint32(bs, v$19); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$6, true)[1]) { */ case 23: - v$20 = _ref.$val; - _ref$6 = v$20; - _i$5 = 0; - /* while (true) { */ case 48: - /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 49; continue; } - i$5 = _i$5; - x$5 = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); - $r = order.PutUint32($subslice(bs, ($imul(4, i$5))), x$5); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i$5++; - /* } */ $s = 48; continue; case 49: - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 24: - v$21 = _ref.$val; - $r = order.PutUint64(bs, ((x$6 = v$21.$get(), new $Uint64(x$6.$high, x$6.$low)))); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25: - v$22 = _ref.$val; - $r = order.PutUint64(bs, (new $Uint64(v$22.$high, v$22.$low))); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$7, true)[1]) { */ case 26: - v$23 = _ref.$val; - _ref$7 = v$23; - _i$6 = 0; - /* while (true) { */ case 53: - /* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 54; continue; } - i$6 = _i$6; - x$7 = ((_i$6 < 0 || _i$6 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$6]); - $r = order.PutUint64($subslice(bs, ($imul(8, i$6))), (new $Uint64(x$7.$high, x$7.$low))); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i$6++; - /* } */ $s = 53; continue; case 54: - $s = 30; continue; - /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 27: - v$24 = _ref.$val; - $r = order.PutUint64(bs, v$24.$get()); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 28: - v$25 = _ref.$val; - $r = order.PutUint64(bs, v$25); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 30; continue; - /* } else if ($assertType(_ref, sliceType$8, true)[1]) { */ case 29: - v$26 = _ref.$val; - _ref$8 = v$26; - _i$7 = 0; - /* while (true) { */ case 58: - /* if (!(_i$7 < _ref$8.$length)) { break; } */ if(!(_i$7 < _ref$8.$length)) { $s = 59; continue; } - i$7 = _i$7; - x$8 = ((_i$7 < 0 || _i$7 >= _ref$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$8.$array[_ref$8.$offset + _i$7]); - $r = order.PutUint64($subslice(bs, ($imul(8, i$7))), x$8); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i$7++; - /* } */ $s = 58; continue; case 59: - /* } */ case 30: - _r = w.Write(bs); /* */ $s = 61; case 61: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - err = _tuple[1]; - $s = -1; return err; - /* } */ case 2: - _r$1 = reflect.ValueOf(data); /* */ $s = 62; case 62: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = reflect.Indirect($clone(_r$1, reflect.Value)); /* */ $s = 63; case 63: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v$27 = _r$2; - _r$3 = dataSize($clone(v$27, reflect.Value)); /* */ $s = 64; case 64: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - size = _r$3; - /* */ if (size < 0) { $s = 65; continue; } - /* */ $s = 66; continue; - /* if (size < 0) { */ case 65: - _r$4 = reflect.TypeOf(data).String(); /* */ $s = 67; case 67: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$5 = errors.New("binary.Write: invalid type " + _r$4); /* */ $s = 68; case 68: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $s = -1; return _r$5; - /* } */ case 66: - buf = $makeSlice(sliceType, size); - e = new encoder.ptr(order, buf, 0); - $r = e.value($clone(v$27, reflect.Value)); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r$6 = w.Write(buf); /* */ $s = 70; case 70: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _tuple$1 = _r$6; - err$1 = _tuple$1[1]; - $s = -1; return err$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Write }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._i$6 = _i$6; $f._i$7 = _i$7; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._ref$7 = _ref$7; $f._ref$8 = _ref$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bs = bs; $f.buf = buf; $f.data = data; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.i$5 = i$5; $f.i$6 = i$6; $f.i$7 = i$7; $f.n = n; $f.order = order; $f.size = size; $f.v = v; $f.v$1 = v$1; $f.v$10 = v$10; $f.v$11 = v$11; $f.v$12 = v$12; $f.v$13 = v$13; $f.v$14 = v$14; $f.v$15 = v$15; $f.v$16 = v$16; $f.v$17 = v$17; $f.v$18 = v$18; $f.v$19 = v$19; $f.v$2 = v$2; $f.v$20 = v$20; $f.v$21 = v$21; $f.v$22 = v$22; $f.v$23 = v$23; $f.v$24 = v$24; $f.v$25 = v$25; $f.v$26 = v$26; $f.v$27 = v$27; $f.v$3 = v$3; $f.v$4 = v$4; $f.v$5 = v$5; $f.v$6 = v$6; $f.v$7 = v$7; $f.v$8 = v$8; $f.v$9 = v$9; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Write = Write; - Size = function(v) { - var _r, _r$1, _r$2, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = reflect.Indirect($clone(_r, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = dataSize($clone(_r$1, reflect.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: Size }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Size = Size; - dataSize = function(v) { - var _r, _r$1, _r$2, s, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ if ($clone(v, reflect.Value).Kind() === 23) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ($clone(v, reflect.Value).Kind() === 23) { */ case 1: - _r = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = sizeof(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - s = _r$1; - if (s >= 0) { - $s = -1; return $imul(s, $clone(v, reflect.Value).Len()); - } - $s = -1; return -1; - /* } */ case 2: - _r$2 = sizeof($clone(v, reflect.Value).Type()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: dataSize }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - sizeof = function(t) { - var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, i, n, s, s$1, sum, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; i = $f.i; n = $f.n; s = $f.s; s$1 = $f.s$1; sum = $f.sum; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = t.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _1 = _r; - /* */ if (_1 === (17)) { $s = 3; continue; } - /* */ if (_1 === (25)) { $s = 4; continue; } - /* */ if ((_1 === (1)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (13)) || (_1 === (14)) || (_1 === (15)) || (_1 === (16))) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_1 === (17)) { */ case 3: - _r$1 = t.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = sizeof(_r$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - s = _r$2; - /* */ if (s >= 0) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (s >= 0) { */ case 9: - _r$3 = t.Len(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $s = -1; return $imul(s, _r$3); - /* } */ case 10: - $s = 6; continue; - /* } else if (_1 === (25)) { */ case 4: - sum = 0; - _tmp = 0; - _r$4 = t.NumField(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tmp$1 = _r$4; - i = _tmp; - n = _tmp$1; - /* while (true) { */ case 13: - /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 14; continue; } - _r$5 = t.Field(i); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$6 = sizeof(_r$5.Type); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - s$1 = _r$6; - if (s$1 < 0) { - $s = -1; return -1; - } - sum = sum + (s$1) >> 0; - i = i + (1) >> 0; - /* } */ $s = 13; continue; case 14: - $s = -1; return sum; - /* } else if ((_1 === (1)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (13)) || (_1 === (14)) || (_1 === (15)) || (_1 === (16))) { */ case 5: - _r$7 = t.Size(); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $s = -1; return ((_r$7 >> 0)); - /* } */ case 6: - case 1: - $s = -1; return -1; - /* */ } return; } if ($f === undefined) { $f = { $blk: sizeof }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.i = i; $f.n = n; $f.s = s; $f.s$1 = s$1; $f.sum = sum; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.ptr.prototype.bool = function() { - var d, x, x$1, x$2; - d = this; - x$2 = (x = d.buf, x$1 = d.offset, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - d.offset = d.offset + (1) >> 0; - return !((x$2 === 0)); - }; - decoder.prototype.bool = function() { return this.$val.bool(); }; - encoder.ptr.prototype.bool = function(x) { - var e, x, x$1, x$2, x$3, x$4; - e = this; - if (x) { - (x$1 = e.buf, x$2 = e.offset, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = 1)); - } else { - (x$3 = e.buf, x$4 = e.offset, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4] = 0)); - } - e.offset = e.offset + (1) >> 0; - }; - encoder.prototype.bool = function(x) { return this.$val.bool(x); }; - decoder.ptr.prototype.uint8 = function() { - var d, x, x$1, x$2; - d = this; - x$2 = (x = d.buf, x$1 = d.offset, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - d.offset = d.offset + (1) >> 0; - return x$2; - }; - decoder.prototype.uint8 = function() { return this.$val.uint8(); }; - encoder.ptr.prototype.uint8 = function(x) { - var e, x, x$1, x$2; - e = this; - (x$1 = e.buf, x$2 = e.offset, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = x)); - e.offset = e.offset + (1) >> 0; - }; - encoder.prototype.uint8 = function(x) { return this.$val.uint8(x); }; - decoder.ptr.prototype.uint16 = function() { - var _r, d, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = d.order.Uint16($subslice(d.buf, d.offset, (d.offset + 2 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - x = _r; - d.offset = d.offset + (2) >> 0; - $s = -1; return x; - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.uint16 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.uint16 = function() { return this.$val.uint16(); }; - encoder.ptr.prototype.uint16 = function(x) { - var e, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - $r = e.order.PutUint16($subslice(e.buf, e.offset, (e.offset + 2 >> 0)), x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - e.offset = e.offset + (2) >> 0; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.uint16 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.uint16 = function(x) { return this.$val.uint16(x); }; - decoder.ptr.prototype.uint32 = function() { - var _r, d, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = d.order.Uint32($subslice(d.buf, d.offset, (d.offset + 4 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - x = _r; - d.offset = d.offset + (4) >> 0; - $s = -1; return x; - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.uint32 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.uint32 = function() { return this.$val.uint32(); }; - encoder.ptr.prototype.uint32 = function(x) { - var e, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - $r = e.order.PutUint32($subslice(e.buf, e.offset, (e.offset + 4 >> 0)), x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - e.offset = e.offset + (4) >> 0; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.uint32 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.uint32 = function(x) { return this.$val.uint32(x); }; - decoder.ptr.prototype.uint64 = function() { - var _r, d, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = d.order.Uint64($subslice(d.buf, d.offset, (d.offset + 8 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - x = _r; - d.offset = d.offset + (8) >> 0; - $s = -1; return x; - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.uint64 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.uint64 = function() { return this.$val.uint64(); }; - encoder.ptr.prototype.uint64 = function(x) { - var e, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - $r = e.order.PutUint64($subslice(e.buf, e.offset, (e.offset + 8 >> 0)), x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - e.offset = e.offset + (8) >> 0; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.uint64 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.uint64 = function(x) { return this.$val.uint64(x); }; - decoder.ptr.prototype.int8 = function() { - var d; - d = this; - return ((d.uint8() << 24 >> 24)); - }; - decoder.prototype.int8 = function() { return this.$val.int8(); }; - encoder.ptr.prototype.int8 = function(x) { - var e, x; - e = this; - e.uint8(((x << 24 >>> 24))); - }; - encoder.prototype.int8 = function(x) { return this.$val.int8(x); }; - decoder.ptr.prototype.int16 = function() { - var _r, d, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = d.uint16(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return ((_r << 16 >> 16)); - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.int16 }; } $f._r = _r; $f.d = d; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.int16 = function() { return this.$val.int16(); }; - encoder.ptr.prototype.int16 = function(x) { - var e, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - $r = e.uint16(((x << 16 >>> 16))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.int16 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.int16 = function(x) { return this.$val.int16(x); }; - decoder.ptr.prototype.int32 = function() { - var _r, d, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = d.uint32(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return ((_r >> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.int32 }; } $f._r = _r; $f.d = d; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.int32 = function() { return this.$val.int32(); }; - encoder.ptr.prototype.int32 = function(x) { - var e, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - $r = e.uint32(((x >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.int32 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.int32 = function(x) { return this.$val.int32(x); }; - decoder.ptr.prototype.int64 = function() { - var _r, d, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = d.uint64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return ((x = _r, new $Int64(x.$high, x.$low))); - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.int64 }; } $f._r = _r; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.int64 = function() { return this.$val.int64(); }; - encoder.ptr.prototype.int64 = function(x) { - var e, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - $r = e.uint64((new $Uint64(x.$high, x.$low))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.int64 }; } $f.e = e; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.int64 = function(x) { return this.$val.int64(x); }; - decoder.ptr.prototype.value = function(v) { - var _1, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, d, i, i$1, i$2, l, l$1, l$2, t, v, v$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; d = $f.d; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; l = $f.l; l$1 = $f.l$1; l$2 = $f.l$2; t = $f.t; v = $f.v; v$1 = $f.v$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _1 = $clone(v, reflect.Value).Kind(); - /* */ if (_1 === (17)) { $s = 2; continue; } - /* */ if (_1 === (25)) { $s = 3; continue; } - /* */ if (_1 === (23)) { $s = 4; continue; } - /* */ if (_1 === (1)) { $s = 5; continue; } - /* */ if (_1 === (3)) { $s = 6; continue; } - /* */ if (_1 === (4)) { $s = 7; continue; } - /* */ if (_1 === (5)) { $s = 8; continue; } - /* */ if (_1 === (6)) { $s = 9; continue; } - /* */ if (_1 === (8)) { $s = 10; continue; } - /* */ if (_1 === (9)) { $s = 11; continue; } - /* */ if (_1 === (10)) { $s = 12; continue; } - /* */ if (_1 === (11)) { $s = 13; continue; } - /* */ if (_1 === (13)) { $s = 14; continue; } - /* */ if (_1 === (14)) { $s = 15; continue; } - /* */ if (_1 === (15)) { $s = 16; continue; } - /* */ if (_1 === (16)) { $s = 17; continue; } - /* */ $s = 18; continue; - /* if (_1 === (17)) { */ case 2: - l = $clone(v, reflect.Value).Len(); - i = 0; - /* while (true) { */ case 19: - /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 20; continue; } - _r = $clone(v, reflect.Value).Index(i); /* */ $s = 21; case 21: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = d.value($clone(_r, reflect.Value)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i + (1) >> 0; - /* } */ $s = 19; continue; case 20: - $s = 18; continue; - /* } else if (_1 === (25)) { */ case 3: - t = $clone(v, reflect.Value).Type(); - l$1 = $clone(v, reflect.Value).NumField(); - i$1 = 0; - /* while (true) { */ case 23: - /* if (!(i$1 < l$1)) { break; } */ if(!(i$1 < l$1)) { $s = 24; continue; } - _r$1 = $clone(v, reflect.Value).Field(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v$1 = _r$1; - if ($clone(v$1, reflect.Value).CanSet()) { _v = true; $s = 29; continue s; } - _r$2 = t.Field(i$1); /* */ $s = 30; case 30: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v = !(_r$2.Name === "_"); case 29: - /* */ if (_v) { $s = 26; continue; } - /* */ $s = 27; continue; - /* if (_v) { */ case 26: - $r = d.value($clone(v$1, reflect.Value)); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 28; continue; - /* } else { */ case 27: - $r = d.skip($clone(v$1, reflect.Value)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 28: - i$1 = i$1 + (1) >> 0; - /* } */ $s = 23; continue; case 24: - $s = 18; continue; - /* } else if (_1 === (23)) { */ case 4: - l$2 = $clone(v, reflect.Value).Len(); - i$2 = 0; - /* while (true) { */ case 33: - /* if (!(i$2 < l$2)) { break; } */ if(!(i$2 < l$2)) { $s = 34; continue; } - _r$3 = $clone(v, reflect.Value).Index(i$2); /* */ $s = 35; case 35: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $r = d.value($clone(_r$3, reflect.Value)); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$2 = i$2 + (1) >> 0; - /* } */ $s = 33; continue; case 34: - $s = 18; continue; - /* } else if (_1 === (1)) { */ case 5: - $clone(v, reflect.Value).SetBool(d.bool()); - $s = 18; continue; - /* } else if (_1 === (3)) { */ case 6: - $clone(v, reflect.Value).SetInt((new $Int64(0, d.int8()))); - $s = 18; continue; - /* } else if (_1 === (4)) { */ case 7: - _r$4 = d.int16(); /* */ $s = 37; case 37: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetInt((new $Int64(0, _r$4))); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (5)) { */ case 8: - _r$5 = d.int32(); /* */ $s = 39; case 39: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetInt((new $Int64(0, _r$5))); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (6)) { */ case 9: - _r$6 = d.int64(); /* */ $s = 41; case 41: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetInt(_r$6); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (8)) { */ case 10: - $clone(v, reflect.Value).SetUint((new $Uint64(0, d.uint8()))); - $s = 18; continue; - /* } else if (_1 === (9)) { */ case 11: - _r$7 = d.uint16(); /* */ $s = 43; case 43: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetUint((new $Uint64(0, _r$7))); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (10)) { */ case 12: - _r$8 = d.uint32(); /* */ $s = 45; case 45: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetUint((new $Uint64(0, _r$8))); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (11)) { */ case 13: - _r$9 = d.uint64(); /* */ $s = 47; case 47: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetUint(_r$9); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (13)) { */ case 14: - _r$10 = d.uint32(); /* */ $s = 49; case 49: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _r$11 = math.Float32frombits(_r$10); /* */ $s = 50; case 50: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetFloat((_r$11)); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (14)) { */ case 15: - _r$12 = d.uint64(); /* */ $s = 52; case 52: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - _r$13 = math.Float64frombits(_r$12); /* */ $s = 53; case 53: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).SetFloat(_r$13); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (15)) { */ case 16: - _r$14 = d.uint32(); /* */ $s = 55; case 55: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - _r$15 = math.Float32frombits(_r$14); /* */ $s = 56; case 56: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } - _arg = (_r$15); - _r$16 = d.uint32(); /* */ $s = 57; case 57: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } - _r$17 = math.Float32frombits(_r$16); /* */ $s = 58; case 58: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } - _arg$1 = (_r$17); - $r = $clone(v, reflect.Value).SetComplex(new $Complex128(_arg, _arg$1)); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 18; continue; - /* } else if (_1 === (16)) { */ case 17: - _r$18 = d.uint64(); /* */ $s = 60; case 60: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } - _r$19 = math.Float64frombits(_r$18); /* */ $s = 61; case 61: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } - _arg$2 = _r$19; - _r$20 = d.uint64(); /* */ $s = 62; case 62: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } - _r$21 = math.Float64frombits(_r$20); /* */ $s = 63; case 63: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } - _arg$3 = _r$21; - $r = $clone(v, reflect.Value).SetComplex(new $Complex128(_arg$2, _arg$3)); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 18: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.value }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f.d = d; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.l = l; $f.l$1 = l$1; $f.l$2 = l$2; $f.t = t; $f.v = v; $f.v$1 = v$1; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.value = function(v) { return this.$val.value(v); }; - encoder.ptr.prototype.value = function(v) { - var _1, _2, _3, _4, _5, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, e, i, i$1, i$2, l, l$1, l$2, t, v, v$1, x, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _v = $f._v; e = $f.e; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; l = $f.l; l$1 = $f.l$1; l$2 = $f.l$2; t = $f.t; v = $f.v; v$1 = $f.v$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _1 = $clone(v, reflect.Value).Kind(); - /* */ if (_1 === (17)) { $s = 2; continue; } - /* */ if (_1 === (25)) { $s = 3; continue; } - /* */ if (_1 === (23)) { $s = 4; continue; } - /* */ if (_1 === (1)) { $s = 5; continue; } - /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 6; continue; } - /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 7; continue; } - /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 8; continue; } - /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (_1 === (17)) { */ case 2: - l = $clone(v, reflect.Value).Len(); - i = 0; - /* while (true) { */ case 11: - /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 12; continue; } - _r = $clone(v, reflect.Value).Index(i); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $r = e.value($clone(_r, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i + (1) >> 0; - /* } */ $s = 11; continue; case 12: - $s = 10; continue; - /* } else if (_1 === (25)) { */ case 3: - t = $clone(v, reflect.Value).Type(); - l$1 = $clone(v, reflect.Value).NumField(); - i$1 = 0; - /* while (true) { */ case 15: - /* if (!(i$1 < l$1)) { break; } */ if(!(i$1 < l$1)) { $s = 16; continue; } - _r$1 = $clone(v, reflect.Value).Field(i$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v$1 = _r$1; - if ($clone(v$1, reflect.Value).CanSet()) { _v = true; $s = 21; continue s; } - _r$2 = t.Field(i$1); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _v = !(_r$2.Name === "_"); case 21: - /* */ if (_v) { $s = 18; continue; } - /* */ $s = 19; continue; - /* if (_v) { */ case 18: - $r = e.value($clone(v$1, reflect.Value)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 20; continue; - /* } else { */ case 19: - $r = e.skip($clone(v$1, reflect.Value)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 20: - i$1 = i$1 + (1) >> 0; - /* } */ $s = 15; continue; case 16: - $s = 10; continue; - /* } else if (_1 === (23)) { */ case 4: - l$2 = $clone(v, reflect.Value).Len(); - i$2 = 0; - /* while (true) { */ case 25: - /* if (!(i$2 < l$2)) { break; } */ if(!(i$2 < l$2)) { $s = 26; continue; } - _r$3 = $clone(v, reflect.Value).Index(i$2); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $r = e.value($clone(_r$3, reflect.Value)); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i$2 = i$2 + (1) >> 0; - /* } */ $s = 25; continue; case 26: - $s = 10; continue; - /* } else if (_1 === (1)) { */ case 5: - e.bool($clone(v, reflect.Value).Bool()); - $s = 10; continue; - /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 6: - _r$4 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _2 = _r$4; - /* */ if (_2 === (3)) { $s = 31; continue; } - /* */ if (_2 === (4)) { $s = 32; continue; } - /* */ if (_2 === (5)) { $s = 33; continue; } - /* */ if (_2 === (6)) { $s = 34; continue; } - /* */ $s = 35; continue; - /* if (_2 === (3)) { */ case 31: - e.int8((((x = $clone(v, reflect.Value).Int(), x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24))); - $s = 35; continue; - /* } else if (_2 === (4)) { */ case 32: - $r = e.int16((((x$1 = $clone(v, reflect.Value).Int(), x$1.$low + ((x$1.$high >> 31) * 4294967296)) << 16 >> 16))); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 35; continue; - /* } else if (_2 === (5)) { */ case 33: - $r = e.int32((((x$2 = $clone(v, reflect.Value).Int(), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0))); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 35; continue; - /* } else if (_2 === (6)) { */ case 34: - $r = e.int64($clone(v, reflect.Value).Int()); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 35: - case 29: - $s = 10; continue; - /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 7: - _r$5 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 40; case 40: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _3 = _r$5; - /* */ if (_3 === (8)) { $s = 41; continue; } - /* */ if (_3 === (9)) { $s = 42; continue; } - /* */ if (_3 === (10)) { $s = 43; continue; } - /* */ if (_3 === (11)) { $s = 44; continue; } - /* */ $s = 45; continue; - /* if (_3 === (8)) { */ case 41: - e.uint8((($clone(v, reflect.Value).Uint().$low << 24 >>> 24))); - $s = 45; continue; - /* } else if (_3 === (9)) { */ case 42: - $r = e.uint16((($clone(v, reflect.Value).Uint().$low << 16 >>> 16))); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 45; continue; - /* } else if (_3 === (10)) { */ case 43: - $r = e.uint32((($clone(v, reflect.Value).Uint().$low >>> 0))); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 45; continue; - /* } else if (_3 === (11)) { */ case 44: - $r = e.uint64($clone(v, reflect.Value).Uint()); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 45: - case 39: - $s = 10; continue; - /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 8: - _r$6 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 50; case 50: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _4 = _r$6; - /* */ if (_4 === (13)) { $s = 51; continue; } - /* */ if (_4 === (14)) { $s = 52; continue; } - /* */ $s = 53; continue; - /* if (_4 === (13)) { */ case 51: - $r = e.uint32(math.Float32bits(($fround($clone(v, reflect.Value).Float())))); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 53; continue; - /* } else if (_4 === (14)) { */ case 52: - $r = e.uint64(math.Float64bits($clone(v, reflect.Value).Float())); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 53: - case 49: - $s = 10; continue; - /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 9: - _r$7 = $clone(v, reflect.Value).Type().Kind(); /* */ $s = 57; case 57: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _5 = _r$7; - /* */ if (_5 === (15)) { $s = 58; continue; } - /* */ if (_5 === (16)) { $s = 59; continue; } - /* */ $s = 60; continue; - /* if (_5 === (15)) { */ case 58: - x$3 = $clone(v, reflect.Value).Complex(); - $r = e.uint32(math.Float32bits(($fround(x$3.$real)))); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = e.uint32(math.Float32bits(($fround(x$3.$imag)))); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 60; continue; - /* } else if (_5 === (16)) { */ case 59: - x$4 = $clone(v, reflect.Value).Complex(); - $r = e.uint64(math.Float64bits(x$4.$real)); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = e.uint64(math.Float64bits(x$4.$imag)); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 60: - case 56: - /* } */ case 10: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.value }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._v = _v; $f.e = e; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.l = l; $f.l$1 = l$1; $f.l$2 = l$2; $f.t = t; $f.v = v; $f.v$1 = v$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.value = function(v) { return this.$val.value(v); }; - decoder.ptr.prototype.skip = function(v) { - var _r, d, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - d = this; - _r = dataSize($clone(v, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - d.offset = d.offset + (_r) >> 0; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.skip }; } $f._r = _r; $f.d = d; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - decoder.prototype.skip = function(v) { return this.$val.skip(v); }; - encoder.ptr.prototype.skip = function(v) { - var _i, _r, _ref, e, i, n, v, zero, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; e = $f.e; i = $f.i; n = $f.n; v = $f.v; zero = $f.zero; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _r = dataSize($clone(v, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - n = _r; - zero = $subslice(e.buf, e.offset, (e.offset + n >> 0)); - _ref = zero; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - ((i < 0 || i >= zero.$length) ? ($throwRuntimeError("index out of range"), undefined) : zero.$array[zero.$offset + i] = 0); - _i++; - } - e.offset = e.offset + (n) >> 0; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: encoder.ptr.prototype.skip }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.e = e; $f.i = i; $f.n = n; $f.v = v; $f.zero = zero; $f.$s = $s; $f.$r = $r; return $f; - }; - encoder.prototype.skip = function(v) { return this.$val.skip(v); }; - intDataSize = function(data) { - var _ref, data, data$1, data$10, data$11, data$12, data$13, data$2, data$3, data$4, data$5, data$6, data$7, data$8, data$9; - _ref = data; - if ($assertType(_ref, $Bool, true)[1] || $assertType(_ref, $Int8, true)[1] || $assertType(_ref, $Uint8, true)[1] || $assertType(_ref, ptrType, true)[1] || $assertType(_ref, ptrType$1, true)[1] || $assertType(_ref, ptrType$2, true)[1]) { - data$1 = _ref; - return 1; - } else if ($assertType(_ref, sliceType$1, true)[1]) { - data$2 = _ref.$val; - return data$2.$length; - } else if ($assertType(_ref, sliceType$2, true)[1]) { - data$3 = _ref.$val; - return data$3.$length; - } else if ($assertType(_ref, sliceType, true)[1]) { - data$4 = _ref.$val; - return data$4.$length; - } else if ($assertType(_ref, $Int16, true)[1] || $assertType(_ref, $Uint16, true)[1] || $assertType(_ref, ptrType$3, true)[1] || $assertType(_ref, ptrType$4, true)[1]) { - data$5 = _ref; - return 2; - } else if ($assertType(_ref, sliceType$3, true)[1]) { - data$6 = _ref.$val; - return $imul(2, data$6.$length); - } else if ($assertType(_ref, sliceType$4, true)[1]) { - data$7 = _ref.$val; - return $imul(2, data$7.$length); - } else if ($assertType(_ref, $Int32, true)[1] || $assertType(_ref, $Uint32, true)[1] || $assertType(_ref, ptrType$5, true)[1] || $assertType(_ref, ptrType$6, true)[1]) { - data$8 = _ref; - return 4; - } else if ($assertType(_ref, sliceType$5, true)[1]) { - data$9 = _ref.$val; - return $imul(4, data$9.$length); - } else if ($assertType(_ref, sliceType$6, true)[1]) { - data$10 = _ref.$val; - return $imul(4, data$10.$length); - } else if ($assertType(_ref, $Int64, true)[1] || $assertType(_ref, $Uint64, true)[1] || $assertType(_ref, ptrType$7, true)[1] || $assertType(_ref, ptrType$8, true)[1]) { - data$11 = _ref; - return 8; - } else if ($assertType(_ref, sliceType$7, true)[1]) { - data$12 = _ref.$val; - return $imul(8, data$12.$length); - } else if ($assertType(_ref, sliceType$8, true)[1]) { - data$13 = _ref.$val; - return $imul(8, data$13.$length); - } - return 0; - }; - littleEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]; - bigEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$9.methods = [{prop: "bool", name: "bool", pkg: "encoding/binary", typ: $funcType([], [$Bool], false)}, {prop: "uint8", name: "uint8", pkg: "encoding/binary", typ: $funcType([], [$Uint8], false)}, {prop: "uint16", name: "uint16", pkg: "encoding/binary", typ: $funcType([], [$Uint16], false)}, {prop: "uint32", name: "uint32", pkg: "encoding/binary", typ: $funcType([], [$Uint32], false)}, {prop: "uint64", name: "uint64", pkg: "encoding/binary", typ: $funcType([], [$Uint64], false)}, {prop: "int8", name: "int8", pkg: "encoding/binary", typ: $funcType([], [$Int8], false)}, {prop: "int16", name: "int16", pkg: "encoding/binary", typ: $funcType([], [$Int16], false)}, {prop: "int32", name: "int32", pkg: "encoding/binary", typ: $funcType([], [$Int32], false)}, {prop: "int64", name: "int64", pkg: "encoding/binary", typ: $funcType([], [$Int64], false)}, {prop: "value", name: "value", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}, {prop: "skip", name: "skip", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}]; - ptrType$10.methods = [{prop: "bool", name: "bool", pkg: "encoding/binary", typ: $funcType([$Bool], [], false)}, {prop: "uint8", name: "uint8", pkg: "encoding/binary", typ: $funcType([$Uint8], [], false)}, {prop: "uint16", name: "uint16", pkg: "encoding/binary", typ: $funcType([$Uint16], [], false)}, {prop: "uint32", name: "uint32", pkg: "encoding/binary", typ: $funcType([$Uint32], [], false)}, {prop: "uint64", name: "uint64", pkg: "encoding/binary", typ: $funcType([$Uint64], [], false)}, {prop: "int8", name: "int8", pkg: "encoding/binary", typ: $funcType([$Int8], [], false)}, {prop: "int16", name: "int16", pkg: "encoding/binary", typ: $funcType([$Int16], [], false)}, {prop: "int32", name: "int32", pkg: "encoding/binary", typ: $funcType([$Int32], [], false)}, {prop: "int64", name: "int64", pkg: "encoding/binary", typ: $funcType([$Int64], [], false)}, {prop: "value", name: "value", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}, {prop: "skip", name: "skip", pkg: "encoding/binary", typ: $funcType([reflect.Value], [], false)}]; - ByteOrder.init([{prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}]); - littleEndian.init("", []); - bigEndian.init("", []); - decoder.init("encoding/binary", [{prop: "order", name: "order", embedded: false, exported: false, typ: ByteOrder, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]); - encoder.init("encoding/binary", [{prop: "order", name: "order", embedded: false, exported: false, typ: ByteOrder, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.LittleEndian = new littleEndian.ptr(); - $pkg.BigEndian = new bigEndian.ptr(); - overflow = errors.New("binary: varint overflows a 64-bit integer"); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["strings"] = (function() { - var $pkg = {}, $init, errors, js, bytealg, io, sync, unicode, utf8, Builder, asciiSet, ptrType, sliceType, sliceType$1, ptrType$5, arrayType$3, IndexByte, Index, LastIndex, Count, explode, Contains, ContainsRune, IndexRune, IndexAny, LastIndexByte, genSplit, SplitN, Split, Join, HasPrefix, HasSuffix, Map, ToLower, makeASCIISet, TrimPrefix; - errors = $packages["errors"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - bytealg = $packages["internal/bytealg"]; - io = $packages["io"]; - sync = $packages["sync"]; - unicode = $packages["unicode"]; - utf8 = $packages["unicode/utf8"]; - Builder = $pkg.Builder = $newType(0, $kindStruct, "strings.Builder", true, "strings", true, function(addr_, buf_) { - this.$val = this; - if (arguments.length === 0) { - this.addr = ptrType.nil; - this.buf = sliceType.nil; - return; - } - this.addr = addr_; - this.buf = buf_; - }); - asciiSet = $pkg.asciiSet = $newType(32, $kindArray, "strings.asciiSet", true, "strings", false, null); - ptrType = $ptrType(Builder); - sliceType = $sliceType($Uint8); - sliceType$1 = $sliceType($String); - ptrType$5 = $ptrType(asciiSet); - arrayType$3 = $arrayType($Uint32, 8); - IndexByte = function(s, c) { - var c, s; - return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0; - }; - $pkg.IndexByte = IndexByte; - Index = function(s, sep) { - var s, sep; - return $parseInt(s.indexOf(sep)) >> 0; - }; - $pkg.Index = Index; - LastIndex = function(s, sep) { - var s, sep; - return $parseInt(s.lastIndexOf(sep)) >> 0; - }; - $pkg.LastIndex = LastIndex; - Count = function(s, sep) { - var n, pos, s, sep; - n = 0; - if ((sep.length === 0)) { - return utf8.RuneCountInString(s) + 1 >> 0; - } else if (sep.length > s.length) { - return 0; - } else if ((sep.length === s.length)) { - if (sep === s) { - return 1; - } - return 0; - } - while (true) { - pos = Index(s, sep); - if (pos === -1) { - break; - } - n = n + (1) >> 0; - s = $substring(s, (pos + sep.length >> 0)); - } - return n; - }; - $pkg.Count = Count; - Builder.ptr.prototype.String = function() { - var b; - b = this; - return ($bytesToString(b.buf)); - }; - Builder.prototype.String = function() { return this.$val.String(); }; - Builder.ptr.prototype.copyCheck = function() { - var b; - b = this; - if (b.addr === ptrType.nil) { - b.addr = b; - } else if (!(b.addr === b)) { - $panic(new $String("strings: illegal use of non-zero Builder copied by value")); - } - }; - Builder.prototype.copyCheck = function() { return this.$val.copyCheck(); }; - Builder.ptr.prototype.Len = function() { - var b; - b = this; - return b.buf.$length; - }; - Builder.prototype.Len = function() { return this.$val.Len(); }; - Builder.ptr.prototype.Cap = function() { - var b; - b = this; - return b.buf.$capacity; - }; - Builder.prototype.Cap = function() { return this.$val.Cap(); }; - Builder.ptr.prototype.Reset = function() { - var b; - b = this; - b.addr = ptrType.nil; - b.buf = sliceType.nil; - }; - Builder.prototype.Reset = function() { return this.$val.Reset(); }; - Builder.ptr.prototype.grow = function(n) { - var b, buf, n; - b = this; - buf = $makeSlice(sliceType, b.buf.$length, (($imul(2, b.buf.$capacity)) + n >> 0)); - $copySlice(buf, b.buf); - b.buf = buf; - }; - Builder.prototype.grow = function(n) { return this.$val.grow(n); }; - Builder.ptr.prototype.Grow = function(n) { - var b, n; - b = this; - b.copyCheck(); - if (n < 0) { - $panic(new $String("strings.Builder.Grow: negative count")); - } - if ((b.buf.$capacity - b.buf.$length >> 0) < n) { - b.grow(n); - } - }; - Builder.prototype.Grow = function(n) { return this.$val.Grow(n); }; - Builder.ptr.prototype.Write = function(p) { - var b, p; - b = this; - b.copyCheck(); - b.buf = $appendSlice(b.buf, p); - return [p.$length, $ifaceNil]; - }; - Builder.prototype.Write = function(p) { return this.$val.Write(p); }; - Builder.ptr.prototype.WriteByte = function(c) { - var b, c; - b = this; - b.copyCheck(); - b.buf = $append(b.buf, c); - return $ifaceNil; - }; - Builder.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); }; - Builder.ptr.prototype.WriteRune = function(r) { - var b, l, n, r; - b = this; - b.copyCheck(); - if (r < 128) { - b.buf = $append(b.buf, ((r << 24 >>> 24))); - return [1, $ifaceNil]; - } - l = b.buf.$length; - if ((b.buf.$capacity - l >> 0) < 4) { - b.grow(4); - } - n = utf8.EncodeRune($subslice(b.buf, l, (l + 4 >> 0)), r); - b.buf = $subslice(b.buf, 0, (l + n >> 0)); - return [n, $ifaceNil]; - }; - Builder.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); }; - Builder.ptr.prototype.WriteString = function(s) { - var b, s; - b = this; - b.copyCheck(); - b.buf = $appendSlice(b.buf, s); - return [s.length, $ifaceNil]; - }; - Builder.prototype.WriteString = function(s) { return this.$val.WriteString(s); }; - explode = function(s, n) { - var _tuple, a, ch, i, l, n, s, size, x; - l = utf8.RuneCountInString(s); - if (n < 0 || n > l) { - n = l; - } - a = $makeSlice(sliceType$1, n); - i = 0; - while (true) { - if (!(i < (n - 1 >> 0))) { break; } - _tuple = utf8.DecodeRuneInString(s); - ch = _tuple[0]; - size = _tuple[1]; - ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, size)); - s = $substring(s, size); - if (ch === 65533) { - ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = "\xEF\xBF\xBD"); - } - i = i + (1) >> 0; - } - if (n > 0) { - (x = n - 1 >> 0, ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x] = s)); - } - return a; - }; - Contains = function(s, substr) { - var s, substr; - return Index(s, substr) >= 0; - }; - $pkg.Contains = Contains; - ContainsRune = function(s, r) { - var r, s; - return IndexRune(s, r) >= 0; - }; - $pkg.ContainsRune = ContainsRune; - IndexRune = function(s, r) { - var _i, _ref, _rune, i, r, r$1, s; - if (0 <= r && r < 128) { - return IndexByte(s, ((r << 24 >>> 24))); - } else if ((r === 65533)) { - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - i = _i; - r$1 = _rune[0]; - if (r$1 === 65533) { - return i; - } - _i += _rune[1]; - } - return -1; - } else if (!utf8.ValidRune(r)) { - return -1; - } else { - return Index(s, ($encodeRune(r))); - } - }; - $pkg.IndexRune = IndexRune; - IndexAny = function(s, chars) { - var _i, _i$1, _ref, _ref$1, _rune, _rune$1, _tuple, as, c, chars, i, i$1, isASCII, m, s; - if (chars === "") { - return -1; - } - if (s.length > 8) { - _tuple = makeASCIISet(chars); - as = $clone(_tuple[0], asciiSet); - isASCII = _tuple[1]; - if (isASCII) { - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (new ptrType$5(as).contains(s.charCodeAt(i))) { - return i; - } - i = i + (1) >> 0; - } - return -1; - } - } - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - i$1 = _i; - c = _rune[0]; - _ref$1 = chars; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.length)) { break; } - _rune$1 = $decodeRune(_ref$1, _i$1); - m = _rune$1[0]; - if (c === m) { - return i$1; - } - _i$1 += _rune$1[1]; - } - _i += _rune[1]; - } - return -1; - }; - $pkg.IndexAny = IndexAny; - LastIndexByte = function(s, c) { - var c, i, s; - i = s.length - 1 >> 0; - while (true) { - if (!(i >= 0)) { break; } - if (s.charCodeAt(i) === c) { - return i; - } - i = i - (1) >> 0; - } - return -1; - }; - $pkg.LastIndexByte = LastIndexByte; - genSplit = function(s, sep, sepSave, n) { - var a, i, m, n, s, sep, sepSave; - if (n === 0) { - return sliceType$1.nil; - } - if (sep === "") { - return explode(s, n); - } - if (n < 0) { - n = Count(s, sep) + 1 >> 0; - } - a = $makeSlice(sliceType$1, n); - n = n - (1) >> 0; - i = 0; - while (true) { - if (!(i < n)) { break; } - m = Index(s, sep); - if (m < 0) { - break; - } - ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, (m + sepSave >> 0))); - s = $substring(s, (m + sep.length >> 0)); - i = i + (1) >> 0; - } - ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = s); - return $subslice(a, 0, (i + 1 >> 0)); - }; - SplitN = function(s, sep, n) { - var n, s, sep; - return genSplit(s, sep, 0, n); - }; - $pkg.SplitN = SplitN; - Split = function(s, sep) { - var s, sep; - return genSplit(s, sep, 0, -1); - }; - $pkg.Split = Split; - Join = function(a, sep) { - var _1, _i, _ref, a, b, i, n, s, sep; - _1 = a.$length; - if (_1 === (0)) { - return ""; - } else if (_1 === (1)) { - return (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]); - } - n = $imul(sep.length, ((a.$length - 1 >> 0))); - i = 0; - while (true) { - if (!(i < a.$length)) { break; } - n = n + (((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]).length) >> 0; - i = i + (1) >> 0; - } - b = new Builder.ptr(ptrType.nil, sliceType.nil); - b.Grow(n); - b.WriteString((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0])); - _ref = $subslice(a, 1); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - b.WriteString(sep); - b.WriteString(s); - _i++; - } - return b.String(); - }; - $pkg.Join = Join; - HasPrefix = function(s, prefix) { - var prefix, s; - return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix; - }; - $pkg.HasPrefix = HasPrefix; - HasSuffix = function(s, suffix) { - var s, suffix; - return s.length >= suffix.length && $substring(s, (s.length - suffix.length >> 0)) === suffix; - }; - $pkg.HasSuffix = HasSuffix; - Map = function(mapping, s) { - var _i, _i$1, _r, _r$1, _ref, _ref$1, _rune, _rune$1, _tuple, b, c, c$1, i, mapping, r, r$1, s, width, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _rune = $f._rune; _rune$1 = $f._rune$1; _tuple = $f._tuple; b = $f.b; c = $f.c; c$1 = $f.c$1; i = $f.i; mapping = $f.mapping; r = $f.r; r$1 = $f.r$1; s = $f.s; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - b = new Builder.ptr(ptrType.nil, sliceType.nil); - _ref = s; - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; } - _rune = $decodeRune(_ref, _i); - i = _i; - c = _rune[0]; - _r = mapping(c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - r = _r; - if ((r === c) && !((c === 65533))) { - _i += _rune[1]; - /* continue; */ $s = 1; continue; - } - width = 0; - if (c === 65533) { - _tuple = utf8.DecodeRuneInString($substring(s, i)); - c = _tuple[0]; - width = _tuple[1]; - if (!((width === 1)) && (r === c)) { - _i += _rune[1]; - /* continue; */ $s = 1; continue; - } - } else { - width = utf8.RuneLen(c); - } - b.Grow(s.length + 4 >> 0); - b.WriteString($substring(s, 0, i)); - if (r >= 0) { - b.WriteRune(r); - } - s = $substring(s, (i + width >> 0)); - /* break; */ $s = 2; continue; - /* } */ $s = 1; continue; case 2: - if (b.Cap() === 0) { - $s = -1; return s; - } - _ref$1 = s; - _i$1 = 0; - /* while (true) { */ case 4: - /* if (!(_i$1 < _ref$1.length)) { break; } */ if(!(_i$1 < _ref$1.length)) { $s = 5; continue; } - _rune$1 = $decodeRune(_ref$1, _i$1); - c$1 = _rune$1[0]; - _r$1 = mapping(c$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - r$1 = _r$1; - if (r$1 >= 0) { - if (r$1 < 128) { - b.WriteByte(((r$1 << 24 >>> 24))); - } else { - b.WriteRune(r$1); - } - } - _i$1 += _rune$1[1]; - /* } */ $s = 4; continue; case 5: - $s = -1; return b.String(); - /* */ } return; } if ($f === undefined) { $f = { $blk: Map }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._rune = _rune; $f._rune$1 = _rune$1; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.i = i; $f.mapping = mapping; $f.r = r; $f.r$1 = r$1; $f.s = s; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Map = Map; - ToLower = function(s) { - var _r, _tmp, _tmp$1, b, c, c$1, hasUpper, i, i$1, isASCII, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; b = $f.b; c = $f.c; c$1 = $f.c$1; hasUpper = $f.hasUpper; i = $f.i; i$1 = $f.i$1; isASCII = $f.isASCII; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tmp = true; - _tmp$1 = false; - isASCII = _tmp; - hasUpper = _tmp$1; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - c = s.charCodeAt(i); - if (c >= 128) { - isASCII = false; - break; - } - hasUpper = hasUpper || (c >= 65 && c <= 90); - i = i + (1) >> 0; - } - if (isASCII) { - if (!hasUpper) { - $s = -1; return s; - } - b = new Builder.ptr(ptrType.nil, sliceType.nil); - b.Grow(s.length); - i$1 = 0; - while (true) { - if (!(i$1 < s.length)) { break; } - c$1 = s.charCodeAt(i$1); - if (c$1 >= 65 && c$1 <= 90) { - c$1 = c$1 + (32) << 24 >>> 24; - } - b.WriteByte(c$1); - i$1 = i$1 + (1) >> 0; - } - $s = -1; return b.String(); - } - _r = Map(unicode.ToLower, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: ToLower }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.hasUpper = hasUpper; $f.i = i; $f.i$1 = i$1; $f.isASCII = isASCII; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.ToLower = ToLower; - makeASCIISet = function(chars) { - var _index, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y; - as = arrayType$3.zero(); - ok = false; - i = 0; - while (true) { - if (!(i < chars.length)) { break; } - c = chars.charCodeAt(i); - if (c >= 128) { - _tmp = $clone(as, asciiSet); - _tmp$1 = false; - asciiSet.copy(as, _tmp); - ok = _tmp$1; - return [as, ok]; - } - _index = c >>> 5 << 24 >>> 24; - ((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index] = ((((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index]) | (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)); - i = i + (1) >> 0; - } - _tmp$2 = $clone(as, asciiSet); - _tmp$3 = true; - asciiSet.copy(as, _tmp$2); - ok = _tmp$3; - return [as, ok]; - }; - asciiSet.prototype.contains = function(c) { - var as, c, x, y; - as = this.$val; - return !((((((x = c >>> 5 << 24 >>> 24, (as.nilCheck, ((x < 0 || x >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[x]))) & (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)) === 0)); - }; - $ptrType(asciiSet).prototype.contains = function(c) { return (new asciiSet(this.$get())).contains(c); }; - TrimPrefix = function(s, prefix) { - var prefix, s; - if (HasPrefix(s, prefix)) { - return $substring(s, prefix.length); - } - return s; - }; - $pkg.TrimPrefix = TrimPrefix; - ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "copyCheck", name: "copyCheck", pkg: "strings", typ: $funcType([], [], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "grow", name: "grow", pkg: "strings", typ: $funcType([$Int], [], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]; - ptrType$5.methods = [{prop: "contains", name: "contains", pkg: "strings", typ: $funcType([$Uint8], [$Bool], false)}]; - Builder.init("strings", [{prop: "addr", name: "addr", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}]); - asciiSet.init($Uint32, 8); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bytealg.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = unicode.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["regexp/syntax"] = (function() { - var $pkg = {}, $init, sort, strconv, strings, unicode, utf8, patchList, frag, compiler, Error, ErrorCode, Flags, parser, charGroup, ranges, Prog, InstOp, EmptyOp, Inst, Regexp, Op, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, sliceType$4, ptrType$1, sliceType$5, arrayType, arrayType$1, ptrType$2, ptrType$3, ptrType$4, sliceType$6, ptrType$5, ptrType$6, ptrType$7, ptrType$8, anyRuneNotNL, anyRune, _Op_index_0, anyTable, code1, code2, code3, perlGroup, code4, code5, code6, code7, code8, code9, code10, code11, code12, code13, code14, code15, code16, code17, posixGroup, instOpNames, Compile, minFoldRune, repeatIsValid, cleanAlt, literalRegexp, Parse, isValidCaptureName, isCharClass, matchRune, mergeCharClass, unicodeTable, cleanClass, appendLiteral, appendRange, appendFoldedRange, appendClass, appendFoldedClass, appendNegatedClass, appendTable, appendNegatedTable, negateClass, checkUTF8, nextRune, isalnum, unhex, IsWordChar, bw, dumpProg, u32, dumpInst, writeRegexp, escape, simplify1; - sort = $packages["sort"]; - strconv = $packages["strconv"]; - strings = $packages["strings"]; - unicode = $packages["unicode"]; - utf8 = $packages["unicode/utf8"]; - patchList = $pkg.patchList = $newType(4, $kindUint32, "syntax.patchList", true, "regexp/syntax", false, null); - frag = $pkg.frag = $newType(0, $kindStruct, "syntax.frag", true, "regexp/syntax", false, function(i_, out_) { - this.$val = this; - if (arguments.length === 0) { - this.i = 0; - this.out = 0; - return; - } - this.i = i_; - this.out = out_; - }); - compiler = $pkg.compiler = $newType(0, $kindStruct, "syntax.compiler", true, "regexp/syntax", false, function(p_) { - this.$val = this; - if (arguments.length === 0) { - this.p = ptrType.nil; - return; - } - this.p = p_; - }); - Error = $pkg.Error = $newType(0, $kindStruct, "syntax.Error", true, "regexp/syntax", true, function(Code_, Expr_) { - this.$val = this; - if (arguments.length === 0) { - this.Code = ""; - this.Expr = ""; - return; - } - this.Code = Code_; - this.Expr = Expr_; - }); - ErrorCode = $pkg.ErrorCode = $newType(8, $kindString, "syntax.ErrorCode", true, "regexp/syntax", true, null); - Flags = $pkg.Flags = $newType(2, $kindUint16, "syntax.Flags", true, "regexp/syntax", true, null); - parser = $pkg.parser = $newType(0, $kindStruct, "syntax.parser", true, "regexp/syntax", false, function(flags_, stack_, free_, numCap_, wholeRegexp_, tmpClass_) { - this.$val = this; - if (arguments.length === 0) { - this.flags = 0; - this.stack = sliceType$5.nil; - this.free = ptrType$1.nil; - this.numCap = 0; - this.wholeRegexp = ""; - this.tmpClass = sliceType.nil; - return; - } - this.flags = flags_; - this.stack = stack_; - this.free = free_; - this.numCap = numCap_; - this.wholeRegexp = wholeRegexp_; - this.tmpClass = tmpClass_; - }); - charGroup = $pkg.charGroup = $newType(0, $kindStruct, "syntax.charGroup", true, "regexp/syntax", false, function(sign_, class$1_) { - this.$val = this; - if (arguments.length === 0) { - this.sign = 0; - this.class$1 = sliceType.nil; - return; - } - this.sign = sign_; - this.class$1 = class$1_; - }); - ranges = $pkg.ranges = $newType(0, $kindStruct, "syntax.ranges", true, "regexp/syntax", false, function(p_) { - this.$val = this; - if (arguments.length === 0) { - this.p = ptrType$2.nil; - return; - } - this.p = p_; - }); - Prog = $pkg.Prog = $newType(0, $kindStruct, "syntax.Prog", true, "regexp/syntax", true, function(Inst_, Start_, NumCap_) { - this.$val = this; - if (arguments.length === 0) { - this.Inst = sliceType$4.nil; - this.Start = 0; - this.NumCap = 0; - return; - } - this.Inst = Inst_; - this.Start = Start_; - this.NumCap = NumCap_; - }); - InstOp = $pkg.InstOp = $newType(1, $kindUint8, "syntax.InstOp", true, "regexp/syntax", true, null); - EmptyOp = $pkg.EmptyOp = $newType(1, $kindUint8, "syntax.EmptyOp", true, "regexp/syntax", true, null); - Inst = $pkg.Inst = $newType(0, $kindStruct, "syntax.Inst", true, "regexp/syntax", true, function(Op_, Out_, Arg_, Rune_) { - this.$val = this; - if (arguments.length === 0) { - this.Op = 0; - this.Out = 0; - this.Arg = 0; - this.Rune = sliceType.nil; - return; - } - this.Op = Op_; - this.Out = Out_; - this.Arg = Arg_; - this.Rune = Rune_; - }); - Regexp = $pkg.Regexp = $newType(0, $kindStruct, "syntax.Regexp", true, "regexp/syntax", true, function(Op_, Flags_, Sub_, Sub0_, Rune_, Rune0_, Min_, Max_, Cap_, Name_) { - this.$val = this; - if (arguments.length === 0) { - this.Op = 0; - this.Flags = 0; - this.Sub = sliceType$5.nil; - this.Sub0 = arrayType.zero(); - this.Rune = sliceType.nil; - this.Rune0 = arrayType$1.zero(); - this.Min = 0; - this.Max = 0; - this.Cap = 0; - this.Name = ""; - return; - } - this.Op = Op_; - this.Flags = Flags_; - this.Sub = Sub_; - this.Sub0 = Sub0_; - this.Rune = Rune_; - this.Rune0 = Rune0_; - this.Min = Min_; - this.Max = Max_; - this.Cap = Cap_; - this.Name = Name_; - }); - Op = $pkg.Op = $newType(1, $kindUint8, "syntax.Op", true, "regexp/syntax", true, null); - sliceType = $sliceType($Int32); - sliceType$1 = $sliceType(unicode.Range16); - sliceType$2 = $sliceType(unicode.Range32); - sliceType$3 = $sliceType($String); - ptrType = $ptrType(Prog); - sliceType$4 = $sliceType(Inst); - ptrType$1 = $ptrType(Regexp); - sliceType$5 = $sliceType(ptrType$1); - arrayType = $arrayType(ptrType$1, 1); - arrayType$1 = $arrayType($Int32, 2); - ptrType$2 = $ptrType(sliceType); - ptrType$3 = $ptrType(unicode.RangeTable); - ptrType$4 = $ptrType(strings.Builder); - sliceType$6 = $sliceType($Uint8); - ptrType$5 = $ptrType(compiler); - ptrType$6 = $ptrType(Error); - ptrType$7 = $ptrType(parser); - ptrType$8 = $ptrType(Inst); - patchList.prototype.next = function(p) { - var i, l, p, x, x$1; - l = this.$val; - i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (((l & 1) >>> 0) === 0) { - return ((i.Out >>> 0)); - } - return ((i.Arg >>> 0)); - }; - $ptrType(patchList).prototype.next = function(p) { return new patchList(this.$get()).next(p); }; - patchList.prototype.patch = function(p, val) { - var i, l, p, val, x, x$1; - l = this.$val; - while (true) { - if (!(!((l === 0)))) { break; } - i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (((l & 1) >>> 0) === 0) { - l = ((i.Out >>> 0)); - i.Out = val; - } else { - l = ((i.Arg >>> 0)); - i.Arg = val; - } - } - }; - $ptrType(patchList).prototype.patch = function(p, val) { return new patchList(this.$get()).patch(p, val); }; - patchList.prototype.append = function(p, l2) { - var i, l1, l2, last, next, p, x, x$1; - l1 = this.$val; - if (l1 === 0) { - return l2; - } - if (l2 === 0) { - return l1; - } - last = l1; - while (true) { - next = new patchList(last).next(p); - if (next === 0) { - break; - } - last = next; - } - i = (x = p.Inst, x$1 = last >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (((last & 1) >>> 0) === 0) { - i.Out = ((l2 >>> 0)); - } else { - i.Arg = ((l2 >>> 0)); - } - return l1; - }; - $ptrType(patchList).prototype.append = function(p, l2) { return new patchList(this.$get()).append(p, l2); }; - Compile = function(re) { - var c, f, re; - c = new compiler.ptr(ptrType.nil); - c.init(); - f = $clone(c.compile(re), frag); - new patchList(f.out).patch(c.p, c.inst(4).i); - c.p.Start = ((f.i >> 0)); - return [c.p, $ifaceNil]; - }; - $pkg.Compile = Compile; - compiler.ptr.prototype.init = function() { - var c; - c = this; - c.p = new Prog.ptr(sliceType$4.nil, 0, 0); - c.p.NumCap = 2; - c.inst(5); - }; - compiler.prototype.init = function() { return this.$val.init(); }; - compiler.ptr.prototype.compile = function(re) { - var _1, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, bra, c, f, f$1, f$2, f1, i, j, ket, re, sub, sub$1, sub$2, x, x$1, x$2, x$3; - c = this; - _1 = re.Op; - if (_1 === (1)) { - return c.fail(); - } else if (_1 === (2)) { - return c.nop(); - } else if (_1 === (3)) { - if (re.Rune.$length === 0) { - return c.nop(); - } - f = new frag.ptr(0, 0); - _ref = re.Rune; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - j = _i; - f1 = $clone(c.rune($subslice(re.Rune, j, (j + 1 >> 0)), re.Flags), frag); - if (j === 0) { - frag.copy(f, f1); - } else { - frag.copy(f, c.cat($clone(f, frag), $clone(f1, frag))); - } - _i++; - } - return f; - } else if (_1 === (4)) { - return c.rune(re.Rune, re.Flags); - } else if (_1 === (5)) { - return c.rune(anyRuneNotNL, 0); - } else if (_1 === (6)) { - return c.rune(anyRune, 0); - } else if (_1 === (7)) { - return c.empty(1); - } else if (_1 === (8)) { - return c.empty(2); - } else if (_1 === (9)) { - return c.empty(4); - } else if (_1 === (10)) { - return c.empty(8); - } else if (_1 === (11)) { - return c.empty(16); - } else if (_1 === (12)) { - return c.empty(32); - } else if (_1 === (13)) { - bra = $clone(c.cap((((re.Cap << 1 >> 0) >>> 0))), frag); - sub = $clone(c.compile((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))), frag); - ket = $clone(c.cap(((((re.Cap << 1 >> 0) | 1) >>> 0))), frag); - return c.cat($clone(c.cat($clone(bra, frag), $clone(sub, frag)), frag), $clone(ket, frag)); - } else if (_1 === (14)) { - return c.star($clone(c.compile((x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); - } else if (_1 === (15)) { - return c.plus($clone(c.compile((x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); - } else if (_1 === (16)) { - return c.quest($clone(c.compile((x$3 = re.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); - } else if (_1 === (18)) { - if (re.Sub.$length === 0) { - return c.nop(); - } - f$1 = new frag.ptr(0, 0); - _ref$1 = re.Sub; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i = _i$1; - sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - if (i === 0) { - frag.copy(f$1, c.compile(sub$1)); - } else { - frag.copy(f$1, c.cat($clone(f$1, frag), $clone(c.compile(sub$1), frag))); - } - _i$1++; - } - return f$1; - } else if (_1 === (19)) { - f$2 = new frag.ptr(0, 0); - _ref$2 = re.Sub; - _i$2 = 0; - while (true) { - if (!(_i$2 < _ref$2.$length)) { break; } - sub$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); - frag.copy(f$2, c.alt($clone(f$2, frag), $clone(c.compile(sub$2), frag))); - _i$2++; - } - return f$2; - } - $panic(new $String("regexp: unhandled case in compile")); - }; - compiler.prototype.compile = function(re) { return this.$val.compile(re); }; - compiler.ptr.prototype.inst = function(op) { - var c, f, op; - c = this; - f = new frag.ptr(((c.p.Inst.$length >>> 0)), 0); - c.p.Inst = $append(c.p.Inst, new Inst.ptr(op, 0, 0, sliceType.nil)); - return f; - }; - compiler.prototype.inst = function(op) { return this.$val.inst(op); }; - compiler.ptr.prototype.nop = function() { - var c, f; - c = this; - f = $clone(c.inst(6), frag); - f.out = (((f.i << 1 >>> 0) >>> 0)); - return f; - }; - compiler.prototype.nop = function() { return this.$val.nop(); }; - compiler.ptr.prototype.fail = function() { - var c; - c = this; - return new frag.ptr(0, 0); - }; - compiler.prototype.fail = function() { return this.$val.fail(); }; - compiler.ptr.prototype.cap = function(arg) { - var arg, c, f, x, x$1; - c = this; - f = $clone(c.inst(2), frag); - f.out = (((f.i << 1 >>> 0) >>> 0)); - (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Arg = arg; - if (c.p.NumCap < (((arg >> 0)) + 1 >> 0)) { - c.p.NumCap = ((arg >> 0)) + 1 >> 0; - } - return f; - }; - compiler.prototype.cap = function(arg) { return this.$val.cap(arg); }; - compiler.ptr.prototype.cat = function(f1, f2) { - var c, f1, f2; - c = this; - if ((f1.i === 0) || (f2.i === 0)) { - return new frag.ptr(0, 0); - } - new patchList(f1.out).patch(c.p, f2.i); - return new frag.ptr(f1.i, f2.out); - }; - compiler.prototype.cat = function(f1, f2) { return this.$val.cat(f1, f2); }; - compiler.ptr.prototype.alt = function(f1, f2) { - var c, f, f1, f2, i, x, x$1; - c = this; - if (f1.i === 0) { - return f2; - } - if (f2.i === 0) { - return f1; - } - f = $clone(c.inst(0), frag); - i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - i.Out = f1.i; - i.Arg = f2.i; - f.out = new patchList(f1.out).append(c.p, f2.out); - return f; - }; - compiler.prototype.alt = function(f1, f2) { return this.$val.alt(f1, f2); }; - compiler.ptr.prototype.quest = function(f1, nongreedy) { - var c, f, f1, i, nongreedy, x, x$1; - c = this; - f = $clone(c.inst(0), frag); - i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (nongreedy) { - i.Arg = f1.i; - f.out = (((f.i << 1 >>> 0) >>> 0)); - } else { - i.Out = f1.i; - f.out = (((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0)); - } - f.out = new patchList(f.out).append(c.p, f1.out); - return f; - }; - compiler.prototype.quest = function(f1, nongreedy) { return this.$val.quest(f1, nongreedy); }; - compiler.ptr.prototype.star = function(f1, nongreedy) { - var c, f, f1, i, nongreedy, x, x$1; - c = this; - f = $clone(c.inst(0), frag); - i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (nongreedy) { - i.Arg = f1.i; - f.out = (((f.i << 1 >>> 0) >>> 0)); - } else { - i.Out = f1.i; - f.out = (((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0)); - } - new patchList(f1.out).patch(c.p, f.i); - return f; - }; - compiler.prototype.star = function(f1, nongreedy) { return this.$val.star(f1, nongreedy); }; - compiler.ptr.prototype.plus = function(f1, nongreedy) { - var c, f1, nongreedy; - c = this; - return new frag.ptr(f1.i, c.star($clone(f1, frag), nongreedy).out); - }; - compiler.prototype.plus = function(f1, nongreedy) { return this.$val.plus(f1, nongreedy); }; - compiler.ptr.prototype.empty = function(op) { - var c, f, op, x, x$1; - c = this; - f = $clone(c.inst(3), frag); - (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Arg = ((op >>> 0)); - f.out = (((f.i << 1 >>> 0) >>> 0)); - return f; - }; - compiler.prototype.empty = function(op) { return this.$val.empty(op); }; - compiler.ptr.prototype.rune = function(r, flags) { - var c, f, flags, i, r, x, x$1; - c = this; - f = $clone(c.inst(7), frag); - i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - i.Rune = r; - flags = (flags & (1)) >>> 0; - if (!((r.$length === 1)) || (unicode.SimpleFold((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0])) === (0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]))) { - flags = (flags & ~(1)) << 16 >>> 16; - } - i.Arg = ((flags >>> 0)); - f.out = (((f.i << 1 >>> 0) >>> 0)); - if ((((flags & 1) >>> 0) === 0) && ((r.$length === 1) || (r.$length === 2) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === (1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1])))) { - i.Op = 8; - } else if ((r.$length === 2) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1]) === 1114111)) { - i.Op = 9; - } else if ((r.$length === 4) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1]) === 9) && ((2 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 2]) === 11) && ((3 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 3]) === 1114111)) { - i.Op = 10; - } - return f; - }; - compiler.prototype.rune = function(r, flags) { return this.$val.rune(r, flags); }; - Op.prototype.String = function() { - var i, x; - i = this.$val; - if (1 <= i && i <= 19) { - i = i - (1) << 24 >>> 24; - return $substring("NoMatchEmptyMatchLiteralCharClassAnyCharNotNLAnyCharBeginLineEndLineBeginTextEndTextWordBoundaryNoWordBoundaryCaptureStarPlusQuestRepeatConcatAlternate", ((i < 0 || i >= _Op_index_0.length) ? ($throwRuntimeError("index out of range"), undefined) : _Op_index_0[i]), (x = i + 1 << 24 >>> 24, ((x < 0 || x >= _Op_index_0.length) ? ($throwRuntimeError("index out of range"), undefined) : _Op_index_0[x]))); - } else if ((i === 128)) { - return "opPseudo"; - } else { - return "Op(" + strconv.FormatInt((new $Int64(0, i)), 10) + ")"; - } - }; - $ptrType(Op).prototype.String = function() { return new Op(this.$get()).String(); }; - Error.ptr.prototype.Error = function() { - var e; - e = this; - return "error parsing regexp: " + new ErrorCode(e.Code).String() + ": `" + e.Expr + "`"; - }; - Error.prototype.Error = function() { return this.$val.Error(); }; - ErrorCode.prototype.String = function() { - var e; - e = this.$val; - return (e); - }; - $ptrType(ErrorCode).prototype.String = function() { return new ErrorCode(this.$get()).String(); }; - parser.ptr.prototype.newRegexp = function(op) { - var op, p, re; - p = this; - re = p.free; - if (!(re === ptrType$1.nil)) { - p.free = re.Sub0[0]; - Regexp.copy(re, new Regexp.ptr(0, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "")); - } else { - re = new Regexp.ptr(0, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - } - re.Op = op; - return re; - }; - parser.prototype.newRegexp = function(op) { return this.$val.newRegexp(op); }; - parser.ptr.prototype.reuse = function(re) { - var p, re; - p = this; - re.Sub0[0] = p.free; - p.free = re; - }; - parser.prototype.reuse = function(re) { return this.$val.reuse(re); }; - parser.ptr.prototype.push = function(re) { - var p, re, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - p = this; - if ((re.Op === 4) && (re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === (x$1 = re.Rune, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])))) { - if (p.maybeConcat((x$16 = re.Rune, (0 >= x$16.$length ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + 0])), (p.flags & ~1) << 16 >>> 16)) { - return ptrType$1.nil; - } - re.Op = 3; - re.Rune = $subslice(re.Rune, 0, 1); - re.Flags = (p.flags & ~1) << 16 >>> 16; - } else if ((re.Op === 4) && (re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) === (x$3 = re.Rune, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1]))) && ((x$4 = re.Rune, (2 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 2])) === (x$5 = re.Rune, (3 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 3]))) && (unicode.SimpleFold((x$6 = re.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))) === (x$7 = re.Rune, (2 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 2]))) && (unicode.SimpleFold((x$8 = re.Rune, (2 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 2]))) === (x$9 = re.Rune, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0]))) || (re.Op === 4) && (re.Rune.$length === 2) && (((x$10 = re.Rune, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])) + 1 >> 0) === (x$11 = re.Rune, (1 >= x$11.$length ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + 1]))) && (unicode.SimpleFold((x$12 = re.Rune, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0]))) === (x$13 = re.Rune, (1 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 1]))) && (unicode.SimpleFold((x$14 = re.Rune, (1 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 1]))) === (x$15 = re.Rune, (0 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 0])))) { - if (p.maybeConcat((x$17 = re.Rune, (0 >= x$17.$length ? ($throwRuntimeError("index out of range"), undefined) : x$17.$array[x$17.$offset + 0])), (p.flags | 1) >>> 0)) { - return ptrType$1.nil; - } - re.Op = 3; - re.Rune = $subslice(re.Rune, 0, 1); - re.Flags = (p.flags | 1) >>> 0; - } else { - p.maybeConcat(-1, 0); - } - p.stack = $append(p.stack, re); - return re; - }; - parser.prototype.push = function(re) { return this.$val.push(re); }; - parser.ptr.prototype.maybeConcat = function(r, flags) { - var flags, n, p, r, re1, re2, x, x$1, x$2, x$3, x$4; - p = this; - n = p.stack.$length; - if (n < 2) { - return false; - } - re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); - if (!((re1.Op === 3)) || !((re2.Op === 3)) || !((((re1.Flags & 1) >>> 0) === ((re2.Flags & 1) >>> 0)))) { - return false; - } - re2.Rune = $appendSlice(re2.Rune, re1.Rune); - if (r >= 0) { - re1.Rune = $subslice(new sliceType(re1.Rune0), 0, 1); - (x$4 = re1.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = r)); - re1.Flags = flags; - return true; - } - p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); - p.reuse(re1); - return false; - }; - parser.prototype.maybeConcat = function(r, flags) { return this.$val.maybeConcat(r, flags); }; - parser.ptr.prototype.newLiteral = function(r, flags) { - var flags, p, r, re; - p = this; - re = p.newRegexp(3); - re.Flags = flags; - if (!((((flags & 1) >>> 0) === 0))) { - r = minFoldRune(r); - } - re.Rune0[0] = r; - re.Rune = $subslice(new sliceType(re.Rune0), 0, 1); - return re; - }; - parser.prototype.newLiteral = function(r, flags) { return this.$val.newLiteral(r, flags); }; - minFoldRune = function(r) { - var min, r, r0; - if (r < 65 || r > 125251) { - return r; - } - min = r; - r0 = r; - r = unicode.SimpleFold(r); - while (true) { - if (!(!((r === r0)))) { break; } - if (min > r) { - min = r; - } - r = unicode.SimpleFold(r); - } - return min; - }; - parser.ptr.prototype.literal = function(r) { - var p, r; - p = this; - p.push(p.newLiteral(r, p.flags)); - }; - parser.prototype.literal = function(r) { return this.$val.literal(r); }; - parser.ptr.prototype.op = function(op) { - var op, p, re; - p = this; - re = p.newRegexp(op); - re.Flags = p.flags; - return p.push(re); - }; - parser.prototype.op = function(op) { return this.$val.op(op); }; - parser.ptr.prototype.repeat = function(op, min, max, before, after, lastRepeat) { - var after, before, flags, lastRepeat, max, min, n, op, p, re, sub, x, x$1, x$2, x$3, x$4; - p = this; - flags = p.flags; - if (!((((p.flags & 64) >>> 0) === 0))) { - if (after.length > 0 && (after.charCodeAt(0) === 63)) { - after = $substring(after, 1); - flags = (flags ^ (32)) << 16 >>> 16; - } - if (!(lastRepeat === "")) { - return ["", new Error.ptr("invalid nested repetition operator", $substring(lastRepeat, 0, (lastRepeat.length - after.length >> 0)))]; - } - } - n = p.stack.$length; - if (n === 0) { - return ["", new Error.ptr("missing argument to repetition operator", $substring(before, 0, (before.length - after.length >> 0)))]; - } - sub = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (sub.Op >= 128) { - return ["", new Error.ptr("missing argument to repetition operator", $substring(before, 0, (before.length - after.length >> 0)))]; - } - re = p.newRegexp(op); - re.Min = min; - re.Max = max; - re.Flags = flags; - re.Sub = $subslice(new sliceType$5(re.Sub0), 0, 1); - (x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = sub)); - (x$3 = p.stack, x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4] = re)); - if ((op === 17) && (min >= 2 || max >= 2) && !repeatIsValid(re, 1000)) { - return ["", new Error.ptr("invalid repeat count", $substring(before, 0, (before.length - after.length >> 0)))]; - } - return [after, $ifaceNil]; - }; - parser.prototype.repeat = function(op, min, max, before, after, lastRepeat) { return this.$val.repeat(op, min, max, before, after, lastRepeat); }; - repeatIsValid = function(re, n) { - var _i, _q, _ref, m, n, re, sub; - if (re.Op === 17) { - m = re.Max; - if (m === 0) { - return true; - } - if (m < 0) { - m = re.Min; - } - if (m > n) { - return false; - } - if (m > 0) { - n = (_q = n / (m), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - } - } - _ref = re.Sub; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!repeatIsValid(sub, n)) { - return false; - } - _i++; - } - return true; - }; - parser.ptr.prototype.concat = function() { - var _r, _r$1, i, p, subs, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - p.maybeConcat(-1, 0); - i = p.stack.$length; - while (true) { - if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op < 128)) { break; } - i = i - (1) >> 0; - } - subs = $subslice(p.stack, i); - p.stack = $subslice(p.stack, 0, i); - if (subs.$length === 0) { - $s = -1; return p.push(p.newRegexp(2)); - } - _r = p.collapse(subs, 18); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = p.push(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.concat }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.concat = function() { return this.$val.concat(); }; - parser.ptr.prototype.alternate = function() { - var _r, _r$1, i, p, subs, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - i = p.stack.$length; - while (true) { - if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op < 128)) { break; } - i = i - (1) >> 0; - } - subs = $subslice(p.stack, i); - p.stack = $subslice(p.stack, 0, i); - /* */ if (subs.$length > 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (subs.$length > 0) { */ case 1: - $r = cleanAlt((x$2 = subs.$length - 1 >> 0, ((x$2 < 0 || x$2 >= subs.$length) ? ($throwRuntimeError("index out of range"), undefined) : subs.$array[subs.$offset + x$2]))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 2: - if (subs.$length === 0) { - $s = -1; return p.push(p.newRegexp(1)); - } - _r = p.collapse(subs, 19); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = p.push(_r); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.alternate }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.alternate = function() { return this.$val.alternate(); }; - cleanAlt = function(re) { - var _1, _r, re, x, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; re = $f.re; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _1 = re.Op; - /* */ if (_1 === (4)) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (_1 === (4)) { */ case 2: - _r = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$2(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - re.Rune = _r; - if ((re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) === 1114111)) { - re.Rune = sliceType.nil; - re.Op = 6; - $s = -1; return; - } - if ((re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) === 0) && ((x$3 = re.Rune, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1])) === 9) && ((x$4 = re.Rune, (2 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 2])) === 11) && ((x$5 = re.Rune, (3 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 3])) === 1114111)) { - re.Rune = sliceType.nil; - re.Op = 5; - $s = -1; return; - } - if ((re.Rune.$capacity - re.Rune.$length >> 0) > 100) { - re.Rune = $appendSlice($subslice(new sliceType(re.Rune0), 0, 0), re.Rune); - } - /* } */ case 3: - case 1: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: cleanAlt }; } $f._1 = _1; $f._r = _r; $f.re = re; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.ptr.prototype.collapse = function(subs, op) { - var _i, _r, _ref, old, op, p, re, sub, subs, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; old = $f.old; op = $f.op; p = $f.p; re = $f.re; sub = $f.sub; subs = $f.subs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - if (subs.$length === 1) { - $s = -1; return (0 >= subs.$length ? ($throwRuntimeError("index out of range"), undefined) : subs.$array[subs.$offset + 0]); - } - re = p.newRegexp(op); - re.Sub = $subslice(new sliceType$5(re.Sub0), 0, 0); - _ref = subs; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (sub.Op === op) { - re.Sub = $appendSlice(re.Sub, sub.Sub); - p.reuse(sub); - } else { - re.Sub = $append(re.Sub, sub); - } - _i++; - } - /* */ if (op === 19) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (op === 19) { */ case 1: - _r = p.factor(re.Sub); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - re.Sub = _r; - if (re.Sub.$length === 1) { - old = re; - re = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - p.reuse(old); - } - /* } */ case 2: - $s = -1; return re; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.collapse }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.old = old; $f.op = op; $f.p = p; $f.re = re; $f.sub = sub; $f.subs = subs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.collapse = function(subs, op) { return this.$val.collapse(subs, op); }; - parser.ptr.prototype.factor = function(sub) { - var _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, first, i, i$1, i$2, i$3, ifirst, iflags, istr, j, j$1, j$2, j$3, max, out, p, prefix, prefix$1, re, re$1, reuse, same, start, str, strflags, sub, suffix, suffix$1, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; first = $f.first; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; ifirst = $f.ifirst; iflags = $f.iflags; istr = $f.istr; j = $f.j; j$1 = $f.j$1; j$2 = $f.j$2; j$3 = $f.j$3; max = $f.max; out = $f.out; p = $f.p; prefix = $f.prefix; prefix$1 = $f.prefix$1; re = $f.re; re$1 = $f.re$1; reuse = $f.reuse; same = $f.same; start = $f.start; str = $f.str; strflags = $f.strflags; sub = $f.sub; suffix = $f.suffix; suffix$1 = $f.suffix$1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - if (sub.$length < 2) { - $s = -1; return sub; - } - str = sliceType.nil; - strflags = 0; - start = 0; - out = $subslice(sub, 0, 0); - i = 0; - /* while (true) { */ case 1: - /* if (!(i <= sub.$length)) { break; } */ if(!(i <= sub.$length)) { $s = 2; continue; } - istr = sliceType.nil; - iflags = 0; - /* */ if (i < sub.$length) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (i < sub.$length) { */ case 3: - _tuple = p.leadingString(((i < 0 || i >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i])); - istr = _tuple[0]; - iflags = _tuple[1]; - if (iflags === strflags) { - same = 0; - while (true) { - if (!(same < str.$length && same < istr.$length && (((same < 0 || same >= str.$length) ? ($throwRuntimeError("index out of range"), undefined) : str.$array[str.$offset + same]) === ((same < 0 || same >= istr.$length) ? ($throwRuntimeError("index out of range"), undefined) : istr.$array[istr.$offset + same])))) { break; } - same = same + (1) >> 0; - } - if (same > 0) { - str = $subslice(str, 0, same); - i = i + (1) >> 0; - /* continue; */ $s = 1; continue; - } - } - /* } */ case 4: - /* */ if (i === start) { $s = 5; continue; } - /* */ if (i === (start + 1 >> 0)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (i === start) { */ case 5: - $s = 8; continue; - /* } else if (i === (start + 1 >> 0)) { */ case 6: - out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); - $s = 8; continue; - /* } else { */ case 7: - prefix = p.newRegexp(3); - prefix.Flags = strflags; - prefix.Rune = $appendSlice($subslice(prefix.Rune, 0, 0), str); - j = start; - while (true) { - if (!(j < i)) { break; } - ((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j] = p.removeLeadingString(((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j]), str.$length)); - j = j + (1) >> 0; - } - _r = p.collapse($subslice(sub, start, i), 19); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - suffix = _r; - re = p.newRegexp(18); - re.Sub = $append($subslice(re.Sub, 0, 0), prefix, suffix); - out = $append(out, re); - /* } */ case 8: - start = i; - str = istr; - strflags = iflags; - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - sub = out; - start = 0; - out = $subslice(sub, 0, 0); - first = ptrType$1.nil; - i$1 = 0; - /* while (true) { */ case 10: - /* if (!(i$1 <= sub.$length)) { break; } */ if(!(i$1 <= sub.$length)) { $s = 11; continue; } - ifirst = ptrType$1.nil; - /* */ if (i$1 < sub.$length) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (i$1 < sub.$length) { */ case 12: - ifirst = p.leadingRegexp(((i$1 < 0 || i$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$1])); - if (!(first === ptrType$1.nil) && first.Equal(ifirst) && (isCharClass(first) || ((first.Op === 17) && (first.Min === first.Max) && isCharClass((x = first.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))))) { - i$1 = i$1 + (1) >> 0; - /* continue; */ $s = 10; continue; - } - /* } */ case 13: - /* */ if (i$1 === start) { $s = 14; continue; } - /* */ if (i$1 === (start + 1 >> 0)) { $s = 15; continue; } - /* */ $s = 16; continue; - /* if (i$1 === start) { */ case 14: - $s = 17; continue; - /* } else if (i$1 === (start + 1 >> 0)) { */ case 15: - out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); - $s = 17; continue; - /* } else { */ case 16: - prefix$1 = first; - j$1 = start; - while (true) { - if (!(j$1 < i$1)) { break; } - reuse = !((j$1 === start)); - ((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1] = p.removeLeadingRegexp(((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1]), reuse)); - j$1 = j$1 + (1) >> 0; - } - _r$1 = p.collapse($subslice(sub, start, i$1), 19); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - suffix$1 = _r$1; - re$1 = p.newRegexp(18); - re$1.Sub = $append($subslice(re$1.Sub, 0, 0), prefix$1, suffix$1); - out = $append(out, re$1); - /* } */ case 17: - start = i$1; - first = ifirst; - i$1 = i$1 + (1) >> 0; - /* } */ $s = 10; continue; case 11: - sub = out; - start = 0; - out = $subslice(sub, 0, 0); - i$2 = 0; - /* while (true) { */ case 19: - /* if (!(i$2 <= sub.$length)) { break; } */ if(!(i$2 <= sub.$length)) { $s = 20; continue; } - /* */ if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2]))) { $s = 21; continue; } - /* */ $s = 22; continue; - /* if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2]))) { */ case 21: - i$2 = i$2 + (1) >> 0; - /* continue; */ $s = 19; continue; - /* } */ case 22: - /* */ if (i$2 === start) { $s = 23; continue; } - /* */ if (i$2 === (start + 1 >> 0)) { $s = 24; continue; } - /* */ $s = 25; continue; - /* if (i$2 === start) { */ case 23: - $s = 26; continue; - /* } else if (i$2 === (start + 1 >> 0)) { */ case 24: - out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); - $s = 26; continue; - /* } else { */ case 25: - max = start; - j$2 = start + 1 >> 0; - while (true) { - if (!(j$2 < i$2)) { break; } - if (((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Op < ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Op || (((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Op === ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Op) && ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Rune.$length < ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Rune.$length) { - max = j$2; - } - j$2 = j$2 + (1) >> 0; - } - _tmp = ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]); - _tmp$1 = ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start]); - ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start] = _tmp); - ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max] = _tmp$1); - j$3 = start + 1 >> 0; - while (true) { - if (!(j$3 < i$2)) { break; } - mergeCharClass(((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start]), ((j$3 < 0 || j$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$3])); - p.reuse(((j$3 < 0 || j$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$3])); - j$3 = j$3 + (1) >> 0; - } - $r = cleanAlt(((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); - /* } */ case 26: - if (i$2 < sub.$length) { - out = $append(out, ((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2])); - } - start = i$2 + 1 >> 0; - i$2 = i$2 + (1) >> 0; - /* } */ $s = 19; continue; case 20: - sub = out; - start = 0; - out = $subslice(sub, 0, 0); - _ref = sub; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i$3 = _i; - if ((i$3 + 1 >> 0) < sub.$length && (((i$3 < 0 || i$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$3]).Op === 2) && ((x$1 = i$3 + 1 >> 0, ((x$1 < 0 || x$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + x$1])).Op === 2)) { - _i++; - continue; - } - out = $append(out, ((i$3 < 0 || i$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$3])); - _i++; - } - sub = out; - $s = -1; return sub; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.factor }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.first = first; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.ifirst = ifirst; $f.iflags = iflags; $f.istr = istr; $f.j = j; $f.j$1 = j$1; $f.j$2 = j$2; $f.j$3 = j$3; $f.max = max; $f.out = out; $f.p = p; $f.prefix = prefix; $f.prefix$1 = prefix$1; $f.re = re; $f.re$1 = re$1; $f.reuse = reuse; $f.same = same; $f.start = start; $f.str = str; $f.strflags = strflags; $f.sub = sub; $f.suffix = suffix; $f.suffix$1 = suffix$1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.factor = function(sub) { return this.$val.factor(sub); }; - parser.ptr.prototype.leadingString = function(re) { - var p, re, x; - p = this; - if ((re.Op === 18) && re.Sub.$length > 0) { - re = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - } - if (!((re.Op === 3))) { - return [sliceType.nil, 0]; - } - return [re.Rune, (re.Flags & 1) >>> 0]; - }; - parser.prototype.leadingString = function(re) { return this.$val.leadingString(re); }; - parser.ptr.prototype.removeLeadingString = function(re, n) { - var _1, n, old, p, re, sub, x, x$1, x$2; - p = this; - if ((re.Op === 18) && re.Sub.$length > 0) { - sub = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - sub = p.removeLeadingString(sub, n); - (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = sub)); - if (sub.Op === 2) { - p.reuse(sub); - _1 = re.Sub.$length; - if ((_1 === (0)) || (_1 === (1))) { - re.Op = 2; - re.Sub = sliceType$5.nil; - } else if (_1 === (2)) { - old = re; - re = (x$2 = re.Sub, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])); - p.reuse(old); - } else { - $copySlice(re.Sub, $subslice(re.Sub, 1)); - re.Sub = $subslice(re.Sub, 0, (re.Sub.$length - 1 >> 0)); - } - } - return re; - } - if (re.Op === 3) { - re.Rune = $subslice(re.Rune, 0, $copySlice(re.Rune, $subslice(re.Rune, n))); - if (re.Rune.$length === 0) { - re.Op = 2; - } - } - return re; - }; - parser.prototype.removeLeadingString = function(re, n) { return this.$val.removeLeadingString(re, n); }; - parser.ptr.prototype.leadingRegexp = function(re) { - var p, re, sub, x; - p = this; - if (re.Op === 2) { - return ptrType$1.nil; - } - if ((re.Op === 18) && re.Sub.$length > 0) { - sub = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - if (sub.Op === 2) { - return ptrType$1.nil; - } - return sub; - } - return re; - }; - parser.prototype.leadingRegexp = function(re) { return this.$val.leadingRegexp(re); }; - parser.ptr.prototype.removeLeadingRegexp = function(re, reuse) { - var _1, old, p, re, reuse, x, x$1; - p = this; - if ((re.Op === 18) && re.Sub.$length > 0) { - if (reuse) { - p.reuse((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); - } - re.Sub = $subslice(re.Sub, 0, $copySlice(re.Sub, $subslice(re.Sub, 1))); - _1 = re.Sub.$length; - if (_1 === (0)) { - re.Op = 2; - re.Sub = sliceType$5.nil; - } else if (_1 === (1)) { - old = re; - re = (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); - p.reuse(old); - } - return re; - } - if (reuse) { - p.reuse(re); - } - return p.newRegexp(2); - }; - parser.prototype.removeLeadingRegexp = function(re, reuse) { return this.$val.removeLeadingRegexp(re, reuse); }; - literalRegexp = function(s, flags) { - var _i, _ref, _rune, c, flags, re, s; - re = new Regexp.ptr(3, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - re.Flags = flags; - re.Rune = $subslice(new sliceType(re.Rune0), 0, 0); - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - c = _rune[0]; - if (re.Rune.$length >= re.Rune.$capacity) { - re.Rune = (new sliceType($stringToRunes(s))); - break; - } - re.Rune = $append(re.Rune, c); - _i += _rune[1]; - } - return re; - }; - Parse = function(s, flags) { - var _1, _2, _3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _struct, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, after, after$1, before, before$1, c, c$1, err, err$1, err$2, err$3, flags, i, lastRepeat, lit, max, min, n, ok, op, p, r, r$1, re, repeat, rest, rest$1, rest$2, s, t, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _struct = $f._struct; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; after = $f.after; after$1 = $f.after$1; before = $f.before; before$1 = $f.before$1; c = $f.c; c$1 = $f.c$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; flags = $f.flags; i = $f.i; lastRepeat = $f.lastRepeat; lit = $f.lit; max = $f.max; min = $f.min; n = $f.n; ok = $f.ok; op = $f.op; p = $f.p; r = $f.r; r$1 = $f.r$1; re = $f.re; repeat = $f.repeat; rest = $f.rest; rest$1 = $f.rest$1; rest$2 = $f.rest$2; s = $f.s; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (!((((flags & 2) >>> 0) === 0))) { - err = checkUTF8(s); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err]; - } - $s = -1; return [literalRegexp(s, flags), $ifaceNil]; - } - p = new parser.ptr(0, sliceType$5.nil, ptrType$1.nil, 0, "", sliceType.nil); - err$1 = $ifaceNil; - c = 0; - op = 0; - lastRepeat = ""; - p.flags = flags; - p.wholeRegexp = s; - t = s; - /* while (true) { */ case 1: - /* if (!(!(t === ""))) { break; } */ if(!(!(t === ""))) { $s = 2; continue; } - repeat = ""; - _1 = t.charCodeAt(0); - /* */ if (_1 === (40)) { $s = 4; continue; } - /* */ if (_1 === (124)) { $s = 5; continue; } - /* */ if (_1 === (41)) { $s = 6; continue; } - /* */ if (_1 === (94)) { $s = 7; continue; } - /* */ if (_1 === (36)) { $s = 8; continue; } - /* */ if (_1 === (46)) { $s = 9; continue; } - /* */ if (_1 === (91)) { $s = 10; continue; } - /* */ if ((_1 === (42)) || (_1 === (43)) || (_1 === (63))) { $s = 11; continue; } - /* */ if (_1 === (123)) { $s = 12; continue; } - /* */ if (_1 === (92)) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (_1 === (40)) { */ case 4: - if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2 && (t.charCodeAt(1) === 63)) { - _tuple = p.parsePerlFlags(t); - t = _tuple[0]; - err$1 = _tuple[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - /* break; */ $s = 3; continue; - } - p.numCap = p.numCap + (1) >> 0; - p.op(128).Cap = p.numCap; - t = $substring(t, 1); - $s = 15; continue; - /* } else if (_1 === (124)) { */ case 5: - _r = p.parseVerticalBar(); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err$1 = _r; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - t = $substring(t, 1); - $s = 15; continue; - /* } else if (_1 === (41)) { */ case 6: - _r$1 = p.parseRightParen(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err$1 = _r$1; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - t = $substring(t, 1); - $s = 15; continue; - /* } else if (_1 === (94)) { */ case 7: - if (!((((p.flags & 16) >>> 0) === 0))) { - p.op(9); - } else { - p.op(7); - } - t = $substring(t, 1); - $s = 15; continue; - /* } else if (_1 === (36)) { */ case 8: - if (!((((p.flags & 16) >>> 0) === 0))) { - _struct = p.op(10); - _struct.Flags = (_struct.Flags | (256)) >>> 0; - } else { - p.op(8); - } - t = $substring(t, 1); - $s = 15; continue; - /* } else if (_1 === (46)) { */ case 9: - if (!((((p.flags & 8) >>> 0) === 0))) { - p.op(6); - } else { - p.op(5); - } - t = $substring(t, 1); - $s = 15; continue; - /* } else if (_1 === (91)) { */ case 10: - _r$2 = p.parseClass(t); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$1 = _r$2; - t = _tuple$1[0]; - err$1 = _tuple$1[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - $s = 15; continue; - /* } else if ((_1 === (42)) || (_1 === (43)) || (_1 === (63))) { */ case 11: - before = t; - _2 = t.charCodeAt(0); - if (_2 === (42)) { - op = 14; - } else if (_2 === (43)) { - op = 15; - } else if (_2 === (63)) { - op = 16; - } - after = $substring(t, 1); - _tuple$2 = p.repeat(op, 0, 0, before, after, lastRepeat); - after = _tuple$2[0]; - err$1 = _tuple$2[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - repeat = before; - t = after; - $s = 15; continue; - /* } else if (_1 === (123)) { */ case 12: - op = 17; - before$1 = t; - _tuple$3 = p.parseRepeat(t); - min = _tuple$3[0]; - max = _tuple$3[1]; - after$1 = _tuple$3[2]; - ok = _tuple$3[3]; - if (!ok) { - p.literal(123); - t = $substring(t, 1); - /* break; */ $s = 3; continue; - } - if (min < 0 || min > 1000 || max > 1000 || max >= 0 && min > max) { - $s = -1; return [ptrType$1.nil, new Error.ptr("invalid repeat count", $substring(before$1, 0, (before$1.length - after$1.length >> 0)))]; - } - _tuple$4 = p.repeat(op, min, max, before$1, after$1, lastRepeat); - after$1 = _tuple$4[0]; - err$1 = _tuple$4[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - repeat = before$1; - t = after$1; - $s = 15; continue; - /* } else if (_1 === (92)) { */ case 13: - if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2) { - _3 = t.charCodeAt(1); - if (_3 === (65)) { - p.op(9); - t = $substring(t, 2); - /* break BigSwitch; */ $s = 3; continue s; - } else if (_3 === (98)) { - p.op(11); - t = $substring(t, 2); - /* break BigSwitch; */ $s = 3; continue s; - } else if (_3 === (66)) { - p.op(12); - t = $substring(t, 2); - /* break BigSwitch; */ $s = 3; continue s; - } else if (_3 === (67)) { - $s = -1; return [ptrType$1.nil, new Error.ptr("invalid escape sequence", $substring(t, 0, 2))]; - } else if (_3 === (81)) { - lit = ""; - i = strings.Index(t, "\\E"); - if (i < 0) { - lit = $substring(t, 2); - t = ""; - } else { - lit = $substring(t, 2, i); - t = $substring(t, (i + 2 >> 0)); - } - while (true) { - if (!(!(lit === ""))) { break; } - _tuple$5 = nextRune(lit); - c$1 = _tuple$5[0]; - rest = _tuple$5[1]; - err$2 = _tuple$5[2]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$2]; - } - p.literal(c$1); - lit = rest; - } - /* break BigSwitch; */ $s = 3; continue s; - } else if (_3 === (122)) { - p.op(10); - t = $substring(t, 2); - /* break BigSwitch; */ $s = 3; continue s; - } - } - re = p.newRegexp(4); - re.Flags = p.flags; - /* */ if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { $s = 19; continue; } - /* */ $s = 20; continue; - /* if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { */ case 19: - _r$3 = p.parseUnicodeClass(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _tuple$6 = _r$3; - r = _tuple$6[0]; - rest$1 = _tuple$6[1]; - err$3 = _tuple$6[2]; - if (!($interfaceIsEqual(err$3, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$3]; - } - if (!(r === sliceType.nil)) { - re.Rune = r; - t = rest$1; - p.push(re); - /* break BigSwitch; */ $s = 3; continue s; - } - /* } */ case 20: - _r$4 = p.parsePerlClassEscape(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple$7 = _r$4; - r$1 = _tuple$7[0]; - rest$2 = _tuple$7[1]; - if (!(r$1 === sliceType.nil)) { - re.Rune = r$1; - t = rest$2; - p.push(re); - /* break BigSwitch; */ $s = 3; continue s; - } - p.reuse(re); - _tuple$8 = p.parseEscape(t); - c = _tuple$8[0]; - t = _tuple$8[1]; - err$1 = _tuple$8[2]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - p.literal(c); - $s = 15; continue; - /* } else { */ case 14: - _tuple$9 = nextRune(t); - c = _tuple$9[0]; - t = _tuple$9[1]; - err$1 = _tuple$9[2]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - p.literal(c); - /* } */ case 15: - case 3: - lastRepeat = repeat; - /* } */ $s = 1; continue; case 2: - _r$5 = p.concat(); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$5; - _r$6 = p.swapVerticalBar(); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - /* */ if (_r$6) { $s = 24; continue; } - /* */ $s = 25; continue; - /* if (_r$6) { */ case 24: - p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); - /* } */ case 25: - _r$7 = p.alternate(); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _r$7; - n = p.stack.$length; - if (!((n === 1))) { - $s = -1; return [ptrType$1.nil, new Error.ptr("missing closing )", s)]; - } - $s = -1; return [(x = p.stack, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._struct = _struct; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.after = after; $f.after$1 = after$1; $f.before = before; $f.before$1 = before$1; $f.c = c; $f.c$1 = c$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.flags = flags; $f.i = i; $f.lastRepeat = lastRepeat; $f.lit = lit; $f.max = max; $f.min = min; $f.n = n; $f.ok = ok; $f.op = op; $f.p = p; $f.r = r; $f.r$1 = r$1; $f.re = re; $f.repeat = repeat; $f.rest = rest; $f.rest$1 = rest$1; $f.rest$2 = rest$2; $f.s = s; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Parse = Parse; - parser.ptr.prototype.parseRepeat = function(s) { - var _tuple, _tuple$1, max, min, ok, ok1, p, rest, s; - min = 0; - max = 0; - rest = ""; - ok = false; - p = this; - if (s === "" || !((s.charCodeAt(0) === 123))) { - return [min, max, rest, ok]; - } - s = $substring(s, 1); - ok1 = false; - _tuple = p.parseInt(s); - min = _tuple[0]; - s = _tuple[1]; - ok1 = _tuple[2]; - if (!ok1) { - return [min, max, rest, ok]; - } - if (s === "") { - return [min, max, rest, ok]; - } - if (!((s.charCodeAt(0) === 44))) { - max = min; - } else { - s = $substring(s, 1); - if (s === "") { - return [min, max, rest, ok]; - } - if (s.charCodeAt(0) === 125) { - max = -1; - } else { - _tuple$1 = p.parseInt(s); - max = _tuple$1[0]; - s = _tuple$1[1]; - ok1 = _tuple$1[2]; - if (!ok1) { - return [min, max, rest, ok]; - } else if (max < 0) { - min = -1; - } - } - } - if (s === "" || !((s.charCodeAt(0) === 125))) { - return [min, max, rest, ok]; - } - rest = $substring(s, 1); - ok = true; - return [min, max, rest, ok]; - }; - parser.prototype.parseRepeat = function(s) { return this.$val.parseRepeat(s); }; - parser.ptr.prototype.parsePerlFlags = function(s) { - var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, capture, end, err, flags, name, p, re, rest, s, sawFlag, sign, t; - rest = ""; - err = $ifaceNil; - p = this; - t = s; - if (t.length > 4 && (t.charCodeAt(2) === 80) && (t.charCodeAt(3) === 60)) { - end = strings.IndexRune(t, 62); - if (end < 0) { - err = checkUTF8(t); - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp = ""; - _tmp$1 = err; - rest = _tmp; - err = _tmp$1; - return [rest, err]; - } - _tmp$2 = ""; - _tmp$3 = new Error.ptr("invalid named capture", s); - rest = _tmp$2; - err = _tmp$3; - return [rest, err]; - } - capture = $substring(t, 0, (end + 1 >> 0)); - name = $substring(t, 4, end); - err = checkUTF8(name); - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$4 = ""; - _tmp$5 = err; - rest = _tmp$4; - err = _tmp$5; - return [rest, err]; - } - if (!isValidCaptureName(name)) { - _tmp$6 = ""; - _tmp$7 = new Error.ptr("invalid named capture", capture); - rest = _tmp$6; - err = _tmp$7; - return [rest, err]; - } - p.numCap = p.numCap + (1) >> 0; - re = p.op(128); - re.Cap = p.numCap; - re.Name = name; - _tmp$8 = $substring(t, (end + 1 >> 0)); - _tmp$9 = $ifaceNil; - rest = _tmp$8; - err = _tmp$9; - return [rest, err]; - } - c = 0; - t = $substring(t, 2); - flags = p.flags; - sign = 1; - sawFlag = false; - Loop: - while (true) { - if (!(!(t === ""))) { break; } - _tuple = nextRune(t); - c = _tuple[0]; - t = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$10 = ""; - _tmp$11 = err; - rest = _tmp$10; - err = _tmp$11; - return [rest, err]; - } - _1 = c; - if (_1 === (105)) { - flags = (flags | (1)) >>> 0; - sawFlag = true; - } else if (_1 === (109)) { - flags = (flags & ~(16)) << 16 >>> 16; - sawFlag = true; - } else if (_1 === (115)) { - flags = (flags | (8)) >>> 0; - sawFlag = true; - } else if (_1 === (85)) { - flags = (flags | (32)) >>> 0; - sawFlag = true; - } else if (_1 === (45)) { - if (sign < 0) { - break Loop; - } - sign = -1; - flags = ~flags << 16 >>> 16; - sawFlag = false; - } else if ((_1 === (58)) || (_1 === (41))) { - if (sign < 0) { - if (!sawFlag) { - break Loop; - } - flags = ~flags << 16 >>> 16; - } - if (c === 58) { - p.op(128); - } - p.flags = flags; - _tmp$12 = t; - _tmp$13 = $ifaceNil; - rest = _tmp$12; - err = _tmp$13; - return [rest, err]; - } else { - break Loop; - } - } - _tmp$14 = ""; - _tmp$15 = new Error.ptr("invalid or unsupported Perl syntax", $substring(s, 0, (s.length - t.length >> 0))); - rest = _tmp$14; - err = _tmp$15; - return [rest, err]; - }; - parser.prototype.parsePerlFlags = function(s) { return this.$val.parsePerlFlags(s); }; - isValidCaptureName = function(name) { - var _i, _ref, _rune, c, name; - if (name === "") { - return false; - } - _ref = name; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - c = _rune[0]; - if (!((c === 95)) && !isalnum(c)) { - return false; - } - _i += _rune[1]; - } - return true; - }; - parser.ptr.prototype.parseInt = function(s) { - var i, n, ok, p, rest, s, t; - n = 0; - rest = ""; - ok = false; - p = this; - if (s === "" || s.charCodeAt(0) < 48 || 57 < s.charCodeAt(0)) { - return [n, rest, ok]; - } - if (s.length >= 2 && (s.charCodeAt(0) === 48) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) { - return [n, rest, ok]; - } - t = s; - while (true) { - if (!(!(s === "") && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; } - s = $substring(s, 1); - } - rest = s; - ok = true; - t = $substring(t, 0, (t.length - s.length >> 0)); - i = 0; - while (true) { - if (!(i < t.length)) { break; } - if (n >= 100000000) { - n = -1; - break; - } - n = (($imul(n, 10)) + ((t.charCodeAt(i) >> 0)) >> 0) - 48 >> 0; - i = i + (1) >> 0; - } - return [n, rest, ok]; - }; - parser.prototype.parseInt = function(s) { return this.$val.parseInt(s); }; - isCharClass = function(re) { - var re; - return (re.Op === 3) && (re.Rune.$length === 1) || (re.Op === 4) || (re.Op === 5) || (re.Op === 6); - }; - matchRune = function(re, r) { - var _1, i, r, re, x, x$1, x$2, x$3; - _1 = re.Op; - if (_1 === (3)) { - return (re.Rune.$length === 1) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === r); - } else if (_1 === (4)) { - i = 0; - while (true) { - if (!(i < re.Rune.$length)) { break; } - if ((x$1 = re.Rune, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) <= r && r <= (x$2 = re.Rune, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))) { - return true; - } - i = i + (2) >> 0; - } - return false; - } else if (_1 === (5)) { - return !((r === 10)); - } else if (_1 === (6)) { - return true; - } - return false; - }; - parser.ptr.prototype.parseVerticalBar = function() { - var _r, _r$1, p, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!_r$1) { */ case 2: - p.op(129); - /* } */ case 3: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseVerticalBar }; } $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.parseVerticalBar = function() { return this.$val.parseVerticalBar(); }; - mergeCharClass = function(dst, src) { - var _1, dst, src, x, x$1, x$2, x$3, x$4; - switch (0) { default: - _1 = dst.Op; - if (_1 === (6)) { - } else if (_1 === (5)) { - if (matchRune(src, 10)) { - dst.Op = 6; - } - } else if (_1 === (4)) { - if (src.Op === 3) { - dst.Rune = appendLiteral(dst.Rune, (x = src.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), src.Flags); - } else { - dst.Rune = appendClass(dst.Rune, src.Rune); - } - } else if (_1 === (3)) { - if (((x$1 = src.Rune, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) === (x$2 = dst.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) && (src.Flags === dst.Flags)) { - break; - } - dst.Op = 4; - dst.Rune = appendLiteral($subslice(dst.Rune, 0, 0), (x$3 = dst.Rune, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), dst.Flags); - dst.Rune = appendLiteral(dst.Rune, (x$4 = src.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), src.Flags); - } - } - }; - parser.ptr.prototype.swapVerticalBar = function() { - var _tmp, _tmp$1, n, p, re1, re1$1, re2, re3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; n = $f.n; p = $f.p; re1 = $f.re1; re1$1 = $f.re1$1; re2 = $f.re2; re3 = $f.re3; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - n = p.stack.$length; - if (n >= 3 && ((x = p.stack, x$1 = n - 2 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op === 129) && isCharClass((x$2 = p.stack, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))) && isCharClass((x$4 = p.stack, x$5 = n - 3 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])))) { - re1 = (x$6 = p.stack, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])); - re3 = (x$8 = p.stack, x$9 = n - 3 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])); - if (re1.Op > re3.Op) { - _tmp = re3; - _tmp$1 = re1; - re1 = _tmp; - re3 = _tmp$1; - (x$10 = p.stack, x$11 = n - 3 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11] = re3)); - } - mergeCharClass(re3, re1); - p.reuse(re1); - p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); - $s = -1; return true; - } - /* */ if (n >= 2) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (n >= 2) { */ case 1: - re1$1 = (x$12 = p.stack, x$13 = n - 1 >> 0, ((x$13 < 0 || x$13 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + x$13])); - re2 = (x$14 = p.stack, x$15 = n - 2 >> 0, ((x$15 < 0 || x$15 >= x$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + x$15])); - /* */ if (re2.Op === 129) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (re2.Op === 129) { */ case 3: - /* */ if (n >= 3) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (n >= 3) { */ case 5: - $r = cleanAlt((x$16 = p.stack, x$17 = n - 3 >> 0, ((x$17 < 0 || x$17 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + x$17]))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 6: - (x$18 = p.stack, x$19 = n - 2 >> 0, ((x$19 < 0 || x$19 >= x$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + x$19] = re1$1)); - (x$20 = p.stack, x$21 = n - 1 >> 0, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21] = re2)); - $s = -1; return true; - /* } */ case 4: - /* } */ case 2: - $s = -1; return false; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.swapVerticalBar }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.n = n; $f.p = p; $f.re1 = re1; $f.re1$1 = re1$1; $f.re2 = re2; $f.re3 = re3; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.swapVerticalBar = function() { return this.$val.swapVerticalBar(); }; - parser.ptr.prototype.parseRightParen = function() { - var _r, _r$1, _r$2, n, p, re1, re2, x, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; n = $f.n; p = $f.p; re1 = $f.re1; re2 = $f.re2; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (_r$1) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (_r$1) { */ case 2: - p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); - /* } */ case 3: - _r$2 = p.alternate(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$2; - n = p.stack.$length; - if (n < 2) { - $s = -1; return new Error.ptr("unexpected )", p.wholeRegexp); - } - re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); - p.stack = $subslice(p.stack, 0, (n - 2 >> 0)); - if (!((re2.Op === 128))) { - $s = -1; return new Error.ptr("unexpected )", p.wholeRegexp); - } - p.flags = re2.Flags; - if (re2.Cap === 0) { - p.push(re1); - } else { - re2.Op = 13; - re2.Sub = $subslice(new sliceType$5(re2.Sub0), 0, 1); - (x$4 = re2.Sub, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = re1)); - p.push(re2); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseRightParen }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.re1 = re1; $f.re2 = re2; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.parseRightParen = function() { return this.$val.parseRightParen(); }; - parser.ptr.prototype.parseEscape = function(s) { - var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, err, i, nhex, p, r, rest, s, t, v, x, y; - r = 0; - rest = ""; - err = $ifaceNil; - p = this; - t = $substring(s, 1); - if (t === "") { - _tmp = 0; - _tmp$1 = ""; - _tmp$2 = new Error.ptr("trailing backslash at end of expression", ""); - r = _tmp; - rest = _tmp$1; - err = _tmp$2; - return [r, rest, err]; - } - _tuple = nextRune(t); - c = _tuple[0]; - t = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$3 = 0; - _tmp$4 = ""; - _tmp$5 = err; - r = _tmp$3; - rest = _tmp$4; - err = _tmp$5; - return [r, rest, err]; - } - Switch: - switch (0) { default: - _1 = c; - if ((_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { - if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { - break; - } - r = c - 48 >> 0; - i = 1; - while (true) { - if (!(i < 3)) { break; } - if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { - break; - } - r = (($imul(r, 8)) + ((t.charCodeAt(0) >> 0)) >> 0) - 48 >> 0; - t = $substring(t, 1); - i = i + (1) >> 0; - } - _tmp$6 = r; - _tmp$7 = t; - _tmp$8 = $ifaceNil; - r = _tmp$6; - rest = _tmp$7; - err = _tmp$8; - return [r, rest, err]; - } else if (_1 === (48)) { - r = c - 48 >> 0; - i = 1; - while (true) { - if (!(i < 3)) { break; } - if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { - break; - } - r = (($imul(r, 8)) + ((t.charCodeAt(0) >> 0)) >> 0) - 48 >> 0; - t = $substring(t, 1); - i = i + (1) >> 0; - } - _tmp$9 = r; - _tmp$10 = t; - _tmp$11 = $ifaceNil; - r = _tmp$9; - rest = _tmp$10; - err = _tmp$11; - return [r, rest, err]; - } else if (_1 === (120)) { - if (t === "") { - break; - } - _tuple$1 = nextRune(t); - c = _tuple$1[0]; - t = _tuple$1[1]; - err = _tuple$1[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$12 = 0; - _tmp$13 = ""; - _tmp$14 = err; - r = _tmp$12; - rest = _tmp$13; - err = _tmp$14; - return [r, rest, err]; - } - if (c === 123) { - nhex = 0; - r = 0; - while (true) { - if (t === "") { - break Switch; - } - _tuple$2 = nextRune(t); - c = _tuple$2[0]; - t = _tuple$2[1]; - err = _tuple$2[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$15 = 0; - _tmp$16 = ""; - _tmp$17 = err; - r = _tmp$15; - rest = _tmp$16; - err = _tmp$17; - return [r, rest, err]; - } - if (c === 125) { - break; - } - v = unhex(c); - if (v < 0) { - break Switch; - } - r = ($imul(r, 16)) + v >> 0; - if (r > 1114111) { - break Switch; - } - nhex = nhex + (1) >> 0; - } - if (nhex === 0) { - break Switch; - } - _tmp$18 = r; - _tmp$19 = t; - _tmp$20 = $ifaceNil; - r = _tmp$18; - rest = _tmp$19; - err = _tmp$20; - return [r, rest, err]; - } - x = unhex(c); - _tuple$3 = nextRune(t); - c = _tuple$3[0]; - t = _tuple$3[1]; - err = _tuple$3[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$21 = 0; - _tmp$22 = ""; - _tmp$23 = err; - r = _tmp$21; - rest = _tmp$22; - err = _tmp$23; - return [r, rest, err]; - } - y = unhex(c); - if (x < 0 || y < 0) { - break; - } - _tmp$24 = ($imul(x, 16)) + y >> 0; - _tmp$25 = t; - _tmp$26 = $ifaceNil; - r = _tmp$24; - rest = _tmp$25; - err = _tmp$26; - return [r, rest, err]; - } else if (_1 === (97)) { - _tmp$27 = 7; - _tmp$28 = t; - _tmp$29 = err; - r = _tmp$27; - rest = _tmp$28; - err = _tmp$29; - return [r, rest, err]; - } else if (_1 === (102)) { - _tmp$30 = 12; - _tmp$31 = t; - _tmp$32 = err; - r = _tmp$30; - rest = _tmp$31; - err = _tmp$32; - return [r, rest, err]; - } else if (_1 === (110)) { - _tmp$33 = 10; - _tmp$34 = t; - _tmp$35 = err; - r = _tmp$33; - rest = _tmp$34; - err = _tmp$35; - return [r, rest, err]; - } else if (_1 === (114)) { - _tmp$36 = 13; - _tmp$37 = t; - _tmp$38 = err; - r = _tmp$36; - rest = _tmp$37; - err = _tmp$38; - return [r, rest, err]; - } else if (_1 === (116)) { - _tmp$39 = 9; - _tmp$40 = t; - _tmp$41 = err; - r = _tmp$39; - rest = _tmp$40; - err = _tmp$41; - return [r, rest, err]; - } else if (_1 === (118)) { - _tmp$42 = 11; - _tmp$43 = t; - _tmp$44 = err; - r = _tmp$42; - rest = _tmp$43; - err = _tmp$44; - return [r, rest, err]; - } else if (c < 128 && !isalnum(c)) { - _tmp$45 = c; - _tmp$46 = t; - _tmp$47 = $ifaceNil; - r = _tmp$45; - rest = _tmp$46; - err = _tmp$47; - return [r, rest, err]; - } - } - _tmp$48 = 0; - _tmp$49 = ""; - _tmp$50 = new Error.ptr("invalid escape sequence", $substring(s, 0, (s.length - t.length >> 0))); - r = _tmp$48; - rest = _tmp$49; - err = _tmp$50; - return [r, rest, err]; - }; - parser.prototype.parseEscape = function(s) { return this.$val.parseEscape(s); }; - parser.ptr.prototype.parseClassChar = function(s, wholeClass) { - var _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, err, p, r, rest, s, wholeClass; - r = 0; - rest = ""; - err = $ifaceNil; - p = this; - if (s === "") { - _tmp = 0; - _tmp$1 = ""; - _tmp$2 = new Error.ptr("missing closing ]", wholeClass); - r = _tmp; - rest = _tmp$1; - err = _tmp$2; - return [r, rest, err]; - } - if (s.charCodeAt(0) === 92) { - _tuple = p.parseEscape(s); - r = _tuple[0]; - rest = _tuple[1]; - err = _tuple[2]; - return [r, rest, err]; - } - _tuple$1 = nextRune(s); - r = _tuple$1[0]; - rest = _tuple$1[1]; - err = _tuple$1[2]; - return [r, rest, err]; - }; - parser.prototype.parseClassChar = function(s, wholeClass) { return this.$val.parseClassChar(s, wholeClass); }; - parser.ptr.prototype.parsePerlClassEscape = function(s, r) { - var _entry, _r, _tmp, _tmp$1, g, out, p, r, rest, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; g = $f.g; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - out = sliceType.nil; - rest = ""; - p = this; - if ((((p.flags & 64) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92))) { - $s = -1; return [out, rest]; - } - g = $clone((_entry = perlGroup[$String.keyFor($substring(s, 0, 2))], _entry !== undefined ? _entry.v : new charGroup.ptr(0, sliceType.nil)), charGroup); - if (g.sign === 0) { - $s = -1; return [out, rest]; - } - _r = p.appendGroup(r, $clone(g, charGroup)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tmp = _r; - _tmp$1 = $substring(s, 2); - out = _tmp; - rest = _tmp$1; - $s = -1; return [out, rest]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parsePerlClassEscape }; } $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.g = g; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.parsePerlClassEscape = function(s, r) { return this.$val.parsePerlClassEscape(s, r); }; - parser.ptr.prototype.parseNamedClass = function(s, r) { - var _entry, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, g, i, name, out, p, r, rest, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; err = $f.err; g = $f.g; i = $f.i; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - out = sliceType.nil; - rest = ""; - err = $ifaceNil; - p = this; - if (s.length < 2 || !((s.charCodeAt(0) === 91)) || !((s.charCodeAt(1) === 58))) { - $s = -1; return [out, rest, err]; - } - i = strings.Index($substring(s, 2), ":]"); - if (i < 0) { - $s = -1; return [out, rest, err]; - } - i = i + (2) >> 0; - _tmp = $substring(s, 0, (i + 2 >> 0)); - _tmp$1 = $substring(s, (i + 2 >> 0)); - name = _tmp; - s = _tmp$1; - g = $clone((_entry = posixGroup[$String.keyFor(name)], _entry !== undefined ? _entry.v : new charGroup.ptr(0, sliceType.nil)), charGroup); - if (g.sign === 0) { - _tmp$2 = sliceType.nil; - _tmp$3 = ""; - _tmp$4 = new Error.ptr("invalid character class range", name); - out = _tmp$2; - rest = _tmp$3; - err = _tmp$4; - $s = -1; return [out, rest, err]; - } - _r = p.appendGroup(r, $clone(g, charGroup)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tmp$5 = _r; - _tmp$6 = s; - _tmp$7 = $ifaceNil; - out = _tmp$5; - rest = _tmp$6; - err = _tmp$7; - $s = -1; return [out, rest, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseNamedClass }; } $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f.err = err; $f.g = g; $f.i = i; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.parseNamedClass = function(s, r) { return this.$val.parseNamedClass(s, r); }; - parser.ptr.prototype.appendGroup = function(r, g) { - var _r, g, p, r, tmp, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; g = $f.g; p = $f.p; r = $f.r; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = this; - /* */ if (((p.flags & 1) >>> 0) === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (((p.flags & 1) >>> 0) === 0) { */ case 1: - if (g.sign < 0) { - r = appendNegatedClass(r, g.class$1); - } else { - r = appendClass(r, g.class$1); - } - $s = 3; continue; - /* } else { */ case 2: - tmp = $subslice(p.tmpClass, 0, 0); - tmp = appendFoldedClass(tmp, g.class$1); - p.tmpClass = tmp; - _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$2(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - tmp = _r; - if (g.sign < 0) { - r = appendNegatedClass(r, tmp); - } else { - r = appendClass(r, tmp); - } - /* } */ case 3: - $s = -1; return r; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.appendGroup }; } $f._r = _r; $f.g = g; $f.p = p; $f.r = r; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.appendGroup = function(r, g) { return this.$val.appendGroup(r, g); }; - unicodeTable = function(name) { - var _entry, _entry$1, _entry$2, _entry$3, name, t, t$1; - if (name === "Any") { - return [anyTable, anyTable]; - } - t = (_entry = unicode.Categories[$String.keyFor(name)], _entry !== undefined ? _entry.v : ptrType$3.nil); - if (!(t === ptrType$3.nil)) { - return [t, (_entry$1 = unicode.FoldCategory[$String.keyFor(name)], _entry$1 !== undefined ? _entry$1.v : ptrType$3.nil)]; - } - t$1 = (_entry$2 = unicode.Scripts[$String.keyFor(name)], _entry$2 !== undefined ? _entry$2.v : ptrType$3.nil); - if (!(t$1 === ptrType$3.nil)) { - return [t$1, (_entry$3 = unicode.FoldScript[$String.keyFor(name)], _entry$3 !== undefined ? _entry$3.v : ptrType$3.nil)]; - } - return [ptrType$3.nil, ptrType$3.nil]; - }; - parser.ptr.prototype.parseUnicodeClass = function(s, r) { - var _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, end, err, fold, name, out, p, r, rest, s, seq, sign, t, tab, tmp, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; end = $f.end; err = $f.err; fold = $f.fold; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; seq = $f.seq; sign = $f.sign; t = $f.t; tab = $f.tab; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - out = sliceType.nil; - rest = ""; - err = $ifaceNil; - p = this; - if ((((p.flags & 128) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92)) || !((s.charCodeAt(1) === 112)) && !((s.charCodeAt(1) === 80))) { - $s = -1; return [out, rest, err]; - } - sign = 1; - if (s.charCodeAt(1) === 80) { - sign = -1; - } - t = $substring(s, 2); - _tuple = nextRune(t); - c = _tuple[0]; - t = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [out, rest, err]; - } - _tmp = ""; - _tmp$1 = ""; - seq = _tmp; - name = _tmp$1; - if (!((c === 123))) { - seq = $substring(s, 0, (s.length - t.length >> 0)); - name = $substring(seq, 2); - } else { - end = strings.IndexRune(s, 125); - if (end < 0) { - err = checkUTF8(s); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [out, rest, err]; - } - _tmp$2 = sliceType.nil; - _tmp$3 = ""; - _tmp$4 = new Error.ptr("invalid character class range", s); - out = _tmp$2; - rest = _tmp$3; - err = _tmp$4; - $s = -1; return [out, rest, err]; - } - _tmp$5 = $substring(s, 0, (end + 1 >> 0)); - _tmp$6 = $substring(s, (end + 1 >> 0)); - seq = _tmp$5; - t = _tmp$6; - name = $substring(s, 3, end); - err = checkUTF8(name); - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [out, rest, err]; - } - } - if (!(name === "") && (name.charCodeAt(0) === 94)) { - sign = -sign; - name = $substring(name, 1); - } - _tuple$1 = unicodeTable(name); - tab = _tuple$1[0]; - fold = _tuple$1[1]; - if (tab === ptrType$3.nil) { - _tmp$7 = sliceType.nil; - _tmp$8 = ""; - _tmp$9 = new Error.ptr("invalid character class range", seq); - out = _tmp$7; - rest = _tmp$8; - err = _tmp$9; - $s = -1; return [out, rest, err]; - } - /* */ if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$3.nil) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$3.nil) { */ case 1: - if (sign > 0) { - r = appendTable(r, tab); - } else { - r = appendNegatedTable(r, tab); - } - $s = 3; continue; - /* } else { */ case 2: - tmp = $subslice(p.tmpClass, 0, 0); - tmp = appendTable(tmp, tab); - tmp = appendTable(tmp, fold); - p.tmpClass = tmp; - _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$2(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - tmp = _r; - if (sign > 0) { - r = appendClass(r, tmp); - } else { - r = appendNegatedClass(r, tmp); - } - /* } */ case 3: - _tmp$10 = r; - _tmp$11 = t; - _tmp$12 = $ifaceNil; - out = _tmp$10; - rest = _tmp$11; - err = _tmp$12; - $s = -1; return [out, rest, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseUnicodeClass }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.end = end; $f.err = err; $f.fold = fold; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.seq = seq; $f.sign = sign; $f.t = t; $f.tab = tab; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.parseUnicodeClass = function(s, r) { return this.$val.parseUnicodeClass(s, r); }; - parser.ptr.prototype.parseClass = function(s) { - var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, class$1, err, err$1, err$2, first, hi, lo, nclass, nclass$1, nclass$2, nt, nt$1, nt$2, p, re, rest, rng, s, sign, size, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; class$1 = $f.class$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; first = $f.first; hi = $f.hi; lo = $f.lo; nclass = $f.nclass; nclass$1 = $f.nclass$1; nclass$2 = $f.nclass$2; nt = $f.nt; nt$1 = $f.nt$1; nt$2 = $f.nt$2; p = $f.p; re = $f.re; rest = $f.rest; rng = $f.rng; s = $f.s; sign = $f.sign; size = $f.size; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - rest = ""; - err = $ifaceNil; - p = this; - t = $substring(s, 1); - re = p.newRegexp(4); - re.Flags = p.flags; - re.Rune = $subslice(new sliceType(re.Rune0), 0, 0); - sign = 1; - if (!(t === "") && (t.charCodeAt(0) === 94)) { - sign = -1; - t = $substring(t, 1); - if (((p.flags & 4) >>> 0) === 0) { - re.Rune = $append(re.Rune, 10, 10); - } - } - class$1 = re.Rune; - first = true; - /* while (true) { */ case 1: - /* if (!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { break; } */ if(!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { $s = 2; continue; } - if (!(t === "") && (t.charCodeAt(0) === 45) && (((p.flags & 64) >>> 0) === 0) && !first && ((t.length === 1) || !((t.charCodeAt(1) === 93)))) { - _tuple = utf8.DecodeRuneInString($substring(t, 1)); - size = _tuple[1]; - _tmp = ""; - _tmp$1 = new Error.ptr("invalid character class range", $substring(t, 0, (1 + size >> 0))); - rest = _tmp; - err = _tmp$1; - $s = -1; return [rest, err]; - } - first = false; - /* */ if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { */ case 3: - _r = p.parseNamedClass(t, class$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - nclass = _tuple$1[0]; - nt = _tuple$1[1]; - err$1 = _tuple$1[2]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp$2 = ""; - _tmp$3 = err$1; - rest = _tmp$2; - err = _tmp$3; - $s = -1; return [rest, err]; - } - if (!(nclass === sliceType.nil)) { - _tmp$4 = nclass; - _tmp$5 = nt; - class$1 = _tmp$4; - t = _tmp$5; - /* continue; */ $s = 1; continue; - } - /* } */ case 4: - _r$1 = p.parseUnicodeClass(t, class$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$2 = _r$1; - nclass$1 = _tuple$2[0]; - nt$1 = _tuple$2[1]; - err$2 = _tuple$2[2]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - _tmp$6 = ""; - _tmp$7 = err$2; - rest = _tmp$6; - err = _tmp$7; - $s = -1; return [rest, err]; - } - /* */ if (!(nclass$1 === sliceType.nil)) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!(nclass$1 === sliceType.nil)) { */ case 7: - _tmp$8 = nclass$1; - _tmp$9 = nt$1; - class$1 = _tmp$8; - t = _tmp$9; - /* continue; */ $s = 1; continue; - /* } */ case 8: - _r$2 = p.parsePerlClassEscape(t, class$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$3 = _r$2; - nclass$2 = _tuple$3[0]; - nt$2 = _tuple$3[1]; - if (!(nclass$2 === sliceType.nil)) { - _tmp$10 = nclass$2; - _tmp$11 = nt$2; - class$1 = _tmp$10; - t = _tmp$11; - /* continue; */ $s = 1; continue; - } - rng = t; - _tmp$12 = 0; - _tmp$13 = 0; - lo = _tmp$12; - hi = _tmp$13; - _tuple$4 = p.parseClassChar(t, s); - lo = _tuple$4[0]; - t = _tuple$4[1]; - err$2 = _tuple$4[2]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - _tmp$14 = ""; - _tmp$15 = err$2; - rest = _tmp$14; - err = _tmp$15; - $s = -1; return [rest, err]; - } - hi = lo; - if (t.length >= 2 && (t.charCodeAt(0) === 45) && !((t.charCodeAt(1) === 93))) { - t = $substring(t, 1); - _tuple$5 = p.parseClassChar(t, s); - hi = _tuple$5[0]; - t = _tuple$5[1]; - err$2 = _tuple$5[2]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - _tmp$16 = ""; - _tmp$17 = err$2; - rest = _tmp$16; - err = _tmp$17; - $s = -1; return [rest, err]; - } - if (hi < lo) { - rng = $substring(rng, 0, (rng.length - t.length >> 0)); - _tmp$18 = ""; - _tmp$19 = new Error.ptr("invalid character class range", rng); - rest = _tmp$18; - err = _tmp$19; - $s = -1; return [rest, err]; - } - } - if (((p.flags & 1) >>> 0) === 0) { - class$1 = appendRange(class$1, lo, hi); - } else { - class$1 = appendFoldedRange(class$1, lo, hi); - } - /* } */ $s = 1; continue; case 2: - t = $substring(t, 1); - re.Rune = class$1; - _r$3 = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$2(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - class$1 = _r$3; - if (sign < 0) { - class$1 = negateClass(class$1); - } - re.Rune = class$1; - p.push(re); - _tmp$20 = t; - _tmp$21 = $ifaceNil; - rest = _tmp$20; - err = _tmp$21; - $s = -1; return [rest, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseClass }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.class$1 = class$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.first = first; $f.hi = hi; $f.lo = lo; $f.nclass = nclass; $f.nclass$1 = nclass$1; $f.nclass$2 = nclass$2; $f.nt = nt; $f.nt$1 = nt$1; $f.nt$2 = nt$2; $f.p = p; $f.re = re; $f.rest = rest; $f.rng = rng; $f.s = s; $f.sign = sign; $f.size = size; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - parser.prototype.parseClass = function(s) { return this.$val.parseClass(s); }; - cleanClass = function(rp) { - var _tmp, _tmp$1, hi, i, lo, r, rp, w, x, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; hi = $f.hi; i = $f.i; lo = $f.lo; r = $f.r; rp = $f.rp; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = sort.Sort((x = new ranges.ptr(rp), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - r = rp.$get(); - if (r.$length < 2) { - $s = -1; return r; - } - w = 2; - i = 2; - while (true) { - if (!(i < r.$length)) { break; } - _tmp = ((i < 0 || i >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + i]); - _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1])); - lo = _tmp; - hi = _tmp$1; - if (lo <= ((x$2 = w - 1 >> 0, ((x$2 < 0 || x$2 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$2])) + 1 >> 0)) { - if (hi > (x$3 = w - 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$3]))) { - (x$4 = w - 1 >> 0, ((x$4 < 0 || x$4 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$4] = hi)); - } - i = i + (2) >> 0; - continue; - } - ((w < 0 || w >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + w] = lo); - (x$5 = w + 1 >> 0, ((x$5 < 0 || x$5 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$5] = hi)); - w = w + (2) >> 0; - i = i + (2) >> 0; - } - $s = -1; return $subslice(r, 0, w); - /* */ } return; } if ($f === undefined) { $f = { $blk: cleanClass }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.hi = hi; $f.i = i; $f.lo = lo; $f.r = r; $f.rp = rp; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - appendLiteral = function(r, x, flags) { - var flags, r, x; - if (!((((flags & 1) >>> 0) === 0))) { - return appendFoldedRange(r, x, x); - } - return appendRange(r, x, x); - }; - appendRange = function(r, lo, hi) { - var _tmp, _tmp$1, hi, i, lo, n, r, rhi, rlo, x, x$1, x$2, x$3; - n = r.$length; - i = 2; - while (true) { - if (!(i <= 4)) { break; } - if (n >= i) { - _tmp = (x = n - i >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x])); - _tmp$1 = (x$1 = (n - i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1])); - rlo = _tmp; - rhi = _tmp$1; - if (lo <= (rhi + 1 >> 0) && rlo <= (hi + 1 >> 0)) { - if (lo < rlo) { - (x$2 = n - i >> 0, ((x$2 < 0 || x$2 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$2] = lo)); - } - if (hi > rhi) { - (x$3 = (n - i >> 0) + 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$3] = hi)); - } - return r; - } - } - i = i + (2) >> 0; - } - return $append(r, lo, hi); - }; - appendFoldedRange = function(r, lo, hi) { - var c, f, hi, lo, r; - if (lo <= 65 && hi >= 125251) { - return appendRange(r, lo, hi); - } - if (hi < 65 || lo > 125251) { - return appendRange(r, lo, hi); - } - if (lo < 65) { - r = appendRange(r, lo, 64); - lo = 65; - } - if (hi > 125251) { - r = appendRange(r, 125252, hi); - hi = 125251; - } - c = lo; - while (true) { - if (!(c <= hi)) { break; } - r = appendRange(r, c, c); - f = unicode.SimpleFold(c); - while (true) { - if (!(!((f === c)))) { break; } - r = appendRange(r, f, f); - f = unicode.SimpleFold(f); - } - c = c + (1) >> 0; - } - return r; - }; - appendClass = function(r, x) { - var i, r, x, x$1; - i = 0; - while (true) { - if (!(i < x.$length)) { break; } - r = appendRange(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); - i = i + (2) >> 0; - } - return r; - }; - appendFoldedClass = function(r, x) { - var i, r, x, x$1; - i = 0; - while (true) { - if (!(i < x.$length)) { break; } - r = appendFoldedRange(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); - i = i + (2) >> 0; - } - return r; - }; - appendNegatedClass = function(r, x) { - var _tmp, _tmp$1, hi, i, lo, nextLo, r, x, x$1; - nextLo = 0; - i = 0; - while (true) { - if (!(i < x.$length)) { break; } - _tmp = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); - _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - lo = _tmp; - hi = _tmp$1; - if (nextLo <= (lo - 1 >> 0)) { - r = appendRange(r, nextLo, lo - 1 >> 0); - } - nextLo = hi + 1 >> 0; - i = i + (2) >> 0; - } - if (nextLo <= 1114111) { - r = appendRange(r, nextLo, 1114111); - } - return r; - }; - appendTable = function(r, x) { - var _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, r, stride, stride$1, x, xr, xr$1; - _ref = x.R16; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - xr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), unicode.Range16); - _tmp = ((xr.Lo >> 0)); - _tmp$1 = ((xr.Hi >> 0)); - _tmp$2 = ((xr.Stride >> 0)); - lo = _tmp; - hi = _tmp$1; - stride = _tmp$2; - if (stride === 1) { - r = appendRange(r, lo, hi); - _i++; - continue; - } - c = lo; - while (true) { - if (!(c <= hi)) { break; } - r = appendRange(r, c, c); - c = c + (stride) >> 0; - } - _i++; - } - _ref$1 = x.R32; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); - _tmp$3 = ((xr$1.Lo >> 0)); - _tmp$4 = ((xr$1.Hi >> 0)); - _tmp$5 = ((xr$1.Stride >> 0)); - lo$1 = _tmp$3; - hi$1 = _tmp$4; - stride$1 = _tmp$5; - if (stride$1 === 1) { - r = appendRange(r, lo$1, hi$1); - _i$1++; - continue; - } - c$1 = lo$1; - while (true) { - if (!(c$1 <= hi$1)) { break; } - r = appendRange(r, c$1, c$1); - c$1 = c$1 + (stride$1) >> 0; - } - _i$1++; - } - return r; - }; - appendNegatedTable = function(r, x) { - var _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, nextLo, r, stride, stride$1, x, xr, xr$1; - nextLo = 0; - _ref = x.R16; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - xr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), unicode.Range16); - _tmp = ((xr.Lo >> 0)); - _tmp$1 = ((xr.Hi >> 0)); - _tmp$2 = ((xr.Stride >> 0)); - lo = _tmp; - hi = _tmp$1; - stride = _tmp$2; - if (stride === 1) { - if (nextLo <= (lo - 1 >> 0)) { - r = appendRange(r, nextLo, lo - 1 >> 0); - } - nextLo = hi + 1 >> 0; - _i++; - continue; - } - c = lo; - while (true) { - if (!(c <= hi)) { break; } - if (nextLo <= (c - 1 >> 0)) { - r = appendRange(r, nextLo, c - 1 >> 0); - } - nextLo = c + 1 >> 0; - c = c + (stride) >> 0; - } - _i++; - } - _ref$1 = x.R32; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); - _tmp$3 = ((xr$1.Lo >> 0)); - _tmp$4 = ((xr$1.Hi >> 0)); - _tmp$5 = ((xr$1.Stride >> 0)); - lo$1 = _tmp$3; - hi$1 = _tmp$4; - stride$1 = _tmp$5; - if (stride$1 === 1) { - if (nextLo <= (lo$1 - 1 >> 0)) { - r = appendRange(r, nextLo, lo$1 - 1 >> 0); - } - nextLo = hi$1 + 1 >> 0; - _i$1++; - continue; - } - c$1 = lo$1; - while (true) { - if (!(c$1 <= hi$1)) { break; } - if (nextLo <= (c$1 - 1 >> 0)) { - r = appendRange(r, nextLo, c$1 - 1 >> 0); - } - nextLo = c$1 + 1 >> 0; - c$1 = c$1 + (stride$1) >> 0; - } - _i$1++; - } - if (nextLo <= 1114111) { - r = appendRange(r, nextLo, 1114111); - } - return r; - }; - negateClass = function(r) { - var _tmp, _tmp$1, hi, i, lo, nextLo, r, w, x, x$1; - nextLo = 0; - w = 0; - i = 0; - while (true) { - if (!(i < r.$length)) { break; } - _tmp = ((i < 0 || i >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + i]); - _tmp$1 = (x = i + 1 >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x])); - lo = _tmp; - hi = _tmp$1; - if (nextLo <= (lo - 1 >> 0)) { - ((w < 0 || w >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + w] = nextLo); - (x$1 = w + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1] = (lo - 1 >> 0))); - w = w + (2) >> 0; - } - nextLo = hi + 1 >> 0; - i = i + (2) >> 0; - } - r = $subslice(r, 0, w); - if (nextLo <= 1114111) { - r = $append(r, nextLo, 1114111); - } - return r; - }; - ranges.ptr.prototype.Less = function(i, j) { - var i, j, p, ra, x, x$1; - ra = this; - p = ra.p.$get(); - i = $imul(i, (2)); - j = $imul(j, (2)); - return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) || (((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j])) && (x = i + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) > (x$1 = j + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])); - }; - ranges.prototype.Less = function(i, j) { return this.$val.Less(i, j); }; - ranges.ptr.prototype.Len = function() { - var _q, ra; - ra = this; - return (_q = ra.p.$get().$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - }; - ranges.prototype.Len = function() { return this.$val.Len(); }; - ranges.ptr.prototype.Swap = function(i, j) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, p, ra, x, x$1, x$2, x$3; - ra = this; - p = ra.p.$get(); - i = $imul(i, (2)); - j = $imul(j, (2)); - _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); - _tmp$1 = (x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])); - _tmp$2 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); - _tmp$3 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])); - ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); - (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2] = _tmp$1)); - ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$2); - (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3] = _tmp$3)); - }; - ranges.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); }; - checkUTF8 = function(s) { - var _tuple, rune, s, size; - while (true) { - if (!(!(s === ""))) { break; } - _tuple = utf8.DecodeRuneInString(s); - rune = _tuple[0]; - size = _tuple[1]; - if ((rune === 65533) && (size === 1)) { - return new Error.ptr("invalid UTF-8", s); - } - s = $substring(s, size); - } - return $ifaceNil; - }; - nextRune = function(s) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, err, s, size, t; - c = 0; - t = ""; - err = $ifaceNil; - _tuple = utf8.DecodeRuneInString(s); - c = _tuple[0]; - size = _tuple[1]; - if ((c === 65533) && (size === 1)) { - _tmp = 0; - _tmp$1 = ""; - _tmp$2 = new Error.ptr("invalid UTF-8", s); - c = _tmp; - t = _tmp$1; - err = _tmp$2; - return [c, t, err]; - } - _tmp$3 = c; - _tmp$4 = $substring(s, size); - _tmp$5 = $ifaceNil; - c = _tmp$3; - t = _tmp$4; - err = _tmp$5; - return [c, t, err]; - }; - isalnum = function(c) { - var c; - return 48 <= c && c <= 57 || 65 <= c && c <= 90 || 97 <= c && c <= 122; - }; - unhex = function(c) { - var c; - if (48 <= c && c <= 57) { - return c - 48 >> 0; - } - if (97 <= c && c <= 102) { - return (c - 97 >> 0) + 10 >> 0; - } - if (65 <= c && c <= 70) { - return (c - 65 >> 0) + 10 >> 0; - } - return -1; - }; - InstOp.prototype.String = function() { - var i; - i = this.$val; - if (((i >>> 0)) >= ((instOpNames.$length >>> 0))) { - return ""; - } - return ((i < 0 || i >= instOpNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : instOpNames.$array[instOpNames.$offset + i]); - }; - $ptrType(InstOp).prototype.String = function() { return new InstOp(this.$get()).String(); }; - IsWordChar = function(r) { - var r; - return 65 <= r && r <= 90 || 97 <= r && r <= 122 || 48 <= r && r <= 57 || (r === 95); - }; - $pkg.IsWordChar = IsWordChar; - Prog.ptr.prototype.String = function() { - var b, p; - p = this; - b = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); - dumpProg(b, p); - return b.String(); - }; - Prog.prototype.String = function() { return this.$val.String(); }; - Prog.ptr.prototype.skipNop = function(pc) { - var i, p, pc, x, x$1, x$2; - p = this; - i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); - while (true) { - if (!((i.Op === 6) || (i.Op === 2))) { break; } - i = (x$1 = p.Inst, x$2 = i.Out, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])); - } - return i; - }; - Prog.prototype.skipNop = function(pc) { return this.$val.skipNop(pc); }; - Inst.ptr.prototype.op = function() { - var _1, i, op; - i = this; - op = i.Op; - _1 = op; - if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { - op = 7; - } - return op; - }; - Inst.prototype.op = function() { return this.$val.op(); }; - Prog.ptr.prototype.Prefix = function() { - var _tmp, _tmp$1, _tmp$2, _tmp$3, buf, complete, i, p, prefix, x; - prefix = ""; - complete = false; - p = this; - i = p.skipNop(((p.Start >>> 0))); - if (!((i.op() === 7)) || !((i.Rune.$length === 1))) { - _tmp = ""; - _tmp$1 = i.Op === 4; - prefix = _tmp; - complete = _tmp$1; - return [prefix, complete]; - } - buf = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); - while (true) { - if (!((i.op() === 7) && (i.Rune.$length === 1) && (((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { break; } - buf.WriteRune((x = i.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); - i = p.skipNop(i.Out); - } - _tmp$2 = buf.String(); - _tmp$3 = i.Op === 4; - prefix = _tmp$2; - complete = _tmp$3; - return [prefix, complete]; - }; - Prog.prototype.Prefix = function() { return this.$val.Prefix(); }; - Prog.ptr.prototype.StartCond = function() { - var _1, flag, i, p, pc, x, x$1; - p = this; - flag = 0; - pc = ((p.Start >>> 0)); - i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); - Loop: - while (true) { - _1 = i.Op; - if (_1 === (3)) { - flag = (flag | (((i.Arg << 24 >>> 24)))) >>> 0; - } else if (_1 === (5)) { - return 255; - } else if ((_1 === (2)) || (_1 === (6))) { - } else { - break Loop; - } - pc = i.Out; - i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])); - } - return flag; - }; - Prog.prototype.StartCond = function() { return this.$val.StartCond(); }; - Inst.ptr.prototype.MatchRune = function(r) { - var i, r; - i = this; - return !((i.MatchRunePos(r) === -1)); - }; - Inst.prototype.MatchRune = function(r) { return this.$val.MatchRune(r); }; - Inst.ptr.prototype.MatchRunePos = function(r) { - var _1, _q, _q$1, _q$2, c, hi, i, j, lo, m, r, r0, r1, rune, x, x$1, x$2; - i = this; - rune = i.Rune; - _1 = rune.$length; - if (_1 === (0)) { - return -1; - } else if (_1 === (1)) { - r0 = (0 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 0]); - if (r === r0) { - return 0; - } - if (!((((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { - r1 = unicode.SimpleFold(r0); - while (true) { - if (!(!((r1 === r0)))) { break; } - if (r === r1) { - return 0; - } - r1 = unicode.SimpleFold(r1); - } - } - return -1; - } else if (_1 === (2)) { - if (r >= (0 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 0]) && r <= (1 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 1])) { - return 0; - } - return -1; - } else if ((_1 === (4)) || (_1 === (6)) || (_1 === (8))) { - j = 0; - while (true) { - if (!(j < rune.$length)) { break; } - if (r < ((j < 0 || j >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + j])) { - return -1; - } - if (r <= (x = j + 1 >> 0, ((x < 0 || x >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x]))) { - return (_q = j / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - } - j = j + (2) >> 0; - } - return -1; - } - lo = 0; - hi = (_q$1 = rune.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); - while (true) { - if (!(lo < hi)) { break; } - m = lo + (_q$2 = ((hi - lo >> 0)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; - c = (x$1 = $imul(2, m), ((x$1 < 0 || x$1 >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x$1])); - if (c <= r) { - if (r <= (x$2 = ($imul(2, m)) + 1 >> 0, ((x$2 < 0 || x$2 >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x$2]))) { - return m; - } - lo = m + 1 >> 0; - } else { - hi = m; - } - } - return -1; - }; - Inst.prototype.MatchRunePos = function(r) { return this.$val.MatchRunePos(r); }; - Inst.ptr.prototype.MatchEmptyWidth = function(before, after) { - var _1, after, before, i; - i = this; - _1 = ((i.Arg << 24 >>> 24)); - if (_1 === (1)) { - return (before === 10) || (before === -1); - } else if (_1 === (2)) { - return (after === 10) || (after === -1); - } else if (_1 === (4)) { - return before === -1; - } else if (_1 === (8)) { - return after === -1; - } else if (_1 === (16)) { - return !(IsWordChar(before) === IsWordChar(after)); - } else if (_1 === (32)) { - return IsWordChar(before) === IsWordChar(after); - } - $panic(new $String("unknown empty width arg")); - }; - Inst.prototype.MatchEmptyWidth = function(before, after) { return this.$val.MatchEmptyWidth(before, after); }; - Inst.ptr.prototype.String = function() { - var b, i; - i = this; - b = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); - dumpInst(b, i); - return b.String(); - }; - Inst.prototype.String = function() { return this.$val.String(); }; - bw = function(b, args) { - var _i, _ref, args, b, s; - _ref = args; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - b.WriteString(s); - _i++; - } - }; - dumpProg = function(b, p) { - var _i, _ref, b, i, j, p, pc, x; - _ref = p.Inst; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - j = _i; - i = (x = p.Inst, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); - pc = strconv.Itoa(j); - if (pc.length < 3) { - b.WriteString($substring(" ", pc.length)); - } - if (j === p.Start) { - pc = pc + ("*"); - } - bw(b, new sliceType$3([pc, "\t"])); - dumpInst(b, i); - bw(b, new sliceType$3(["\n"])); - _i++; - } - }; - u32 = function(i) { - var i; - return strconv.FormatUint((new $Uint64(0, i)), 10); - }; - dumpInst = function(b, i) { - var _1, b, i; - _1 = i.Op; - if (_1 === (0)) { - bw(b, new sliceType$3(["alt -> ", u32(i.Out), ", ", u32(i.Arg)])); - } else if (_1 === (1)) { - bw(b, new sliceType$3(["altmatch -> ", u32(i.Out), ", ", u32(i.Arg)])); - } else if (_1 === (2)) { - bw(b, new sliceType$3(["cap ", u32(i.Arg), " -> ", u32(i.Out)])); - } else if (_1 === (3)) { - bw(b, new sliceType$3(["empty ", u32(i.Arg), " -> ", u32(i.Out)])); - } else if (_1 === (4)) { - bw(b, new sliceType$3(["match"])); - } else if (_1 === (5)) { - bw(b, new sliceType$3(["fail"])); - } else if (_1 === (6)) { - bw(b, new sliceType$3(["nop -> ", u32(i.Out)])); - } else if (_1 === (7)) { - if (i.Rune === sliceType.nil) { - bw(b, new sliceType$3(["rune "])); - } - bw(b, new sliceType$3(["rune ", strconv.QuoteToASCII(($runesToString(i.Rune)))])); - if (!((((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { - bw(b, new sliceType$3(["/i"])); - } - bw(b, new sliceType$3([" -> ", u32(i.Out)])); - } else if (_1 === (8)) { - bw(b, new sliceType$3(["rune1 ", strconv.QuoteToASCII(($runesToString(i.Rune))), " -> ", u32(i.Out)])); - } else if (_1 === (9)) { - bw(b, new sliceType$3(["any -> ", u32(i.Out)])); - } else if (_1 === (10)) { - bw(b, new sliceType$3(["anynotnl -> ", u32(i.Out)])); - } - }; - Regexp.ptr.prototype.Equal = function(y) { - var _1, _i, _i$1, _ref, _ref$1, i, i$1, r, sub, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y; - x = this; - if (x === ptrType$1.nil || y === ptrType$1.nil) { - return x === y; - } - if (!((x.Op === y.Op))) { - return false; - } - _1 = x.Op; - if (_1 === (10)) { - if (!((((x.Flags & 256) >>> 0) === ((y.Flags & 256) >>> 0)))) { - return false; - } - } else if ((_1 === (3)) || (_1 === (4))) { - if (!((x.Rune.$length === y.Rune.$length))) { - return false; - } - _ref = x.Rune; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!((r === (x$1 = y.Rune, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i]))))) { - return false; - } - _i++; - } - } else if ((_1 === (19)) || (_1 === (18))) { - if (!((x.Sub.$length === y.Sub.$length))) { - return false; - } - _ref$1 = x.Sub; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$1 = _i$1; - sub = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - if (!sub.Equal((x$2 = y.Sub, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])))) { - return false; - } - _i$1++; - } - } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16))) { - if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !(x$3 = x.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).Equal((x$4 = y.Sub, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])))) { - return false; - } - } else if (_1 === (17)) { - if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !((x.Min === y.Min)) || !((x.Max === y.Max)) || !(x$5 = x.Sub, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])).Equal((x$6 = y.Sub, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])))) { - return false; - } - } else if (_1 === (13)) { - if (!((x.Cap === y.Cap)) || !(x.Name === y.Name) || !(x$7 = x.Sub, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).Equal((x$8 = y.Sub, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0])))) { - return false; - } - } - return true; - }; - Regexp.prototype.Equal = function(y) { return this.$val.Equal(y); }; - writeRegexp = function(b, re) { - var _1, _2, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, b, hi, hi$1, i, i$1, i$2, lo, lo$1, r, re, sub, sub$1, sub$2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - switch (0) { default: - _1 = re.Op; - if (_1 === (1)) { - b.WriteString("[^\\x00-\\x{10FFFF}]"); - } else if (_1 === (2)) { - b.WriteString("(?:)"); - } else if (_1 === (3)) { - if (!((((re.Flags & 1) >>> 0) === 0))) { - b.WriteString("(?i:"); - } - _ref = re.Rune; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - escape(b, r, false); - _i++; - } - if (!((((re.Flags & 1) >>> 0) === 0))) { - b.WriteString(")"); - } - } else if (_1 === (4)) { - if (!(((_r = re.Rune.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) { - b.WriteString("[invalid char class]"); - break; - } - b.WriteRune(91); - if (re.Rune.$length === 0) { - b.WriteString("^\\x00-\\x{10FFFF}"); - } else if (((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, x$2 = re.Rune.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === 1114111)) { - b.WriteRune(94); - i = 1; - while (true) { - if (!(i < (re.Rune.$length - 1 >> 0))) { break; } - _tmp = (x$3 = re.Rune, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])) + 1 >> 0; - _tmp$1 = (x$4 = re.Rune, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) - 1 >> 0; - lo = _tmp; - hi = _tmp$1; - escape(b, lo, lo === 45); - if (!((lo === hi))) { - b.WriteRune(45); - escape(b, hi, hi === 45); - } - i = i + (2) >> 0; - } - } else { - i$1 = 0; - while (true) { - if (!(i$1 < re.Rune.$length)) { break; } - _tmp$2 = (x$6 = re.Rune, ((i$1 < 0 || i$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i$1])); - _tmp$3 = (x$7 = re.Rune, x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8])); - lo$1 = _tmp$2; - hi$1 = _tmp$3; - escape(b, lo$1, lo$1 === 45); - if (!((lo$1 === hi$1))) { - b.WriteRune(45); - escape(b, hi$1, hi$1 === 45); - } - i$1 = i$1 + (2) >> 0; - } - } - b.WriteRune(93); - } else if (_1 === (5)) { - b.WriteString("(?-s:.)"); - } else if (_1 === (6)) { - b.WriteString("(?s:.)"); - } else if (_1 === (7)) { - b.WriteString("(?m:^)"); - } else if (_1 === (8)) { - b.WriteString("(?m:$)"); - } else if (_1 === (9)) { - b.WriteString("\\A"); - } else if (_1 === (10)) { - if (!((((re.Flags & 256) >>> 0) === 0))) { - b.WriteString("(?-m:$)"); - } else { - b.WriteString("\\z"); - } - } else if (_1 === (11)) { - b.WriteString("\\b"); - } else if (_1 === (12)) { - b.WriteString("\\B"); - } else if (_1 === (13)) { - if (!(re.Name === "")) { - b.WriteString("(?P<"); - b.WriteString(re.Name); - b.WriteRune(62); - } else { - b.WriteRune(40); - } - if (!(((x$9 = re.Sub, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0])).Op === 2))) { - writeRegexp(b, (x$10 = re.Sub, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0]))); - } - b.WriteRune(41); - } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16)) || (_1 === (17))) { - sub = (x$11 = re.Sub, (0 >= x$11.$length ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + 0])); - if (sub.Op > 13 || (sub.Op === 3) && sub.Rune.$length > 1) { - b.WriteString("(?:"); - writeRegexp(b, sub); - b.WriteString(")"); - } else { - writeRegexp(b, sub); - } - _2 = re.Op; - if (_2 === (14)) { - b.WriteRune(42); - } else if (_2 === (15)) { - b.WriteRune(43); - } else if (_2 === (16)) { - b.WriteRune(63); - } else if (_2 === (17)) { - b.WriteRune(123); - b.WriteString(strconv.Itoa(re.Min)); - if (!((re.Max === re.Min))) { - b.WriteRune(44); - if (re.Max >= 0) { - b.WriteString(strconv.Itoa(re.Max)); - } - } - b.WriteRune(125); - } - if (!((((re.Flags & 32) >>> 0) === 0))) { - b.WriteRune(63); - } - } else if (_1 === (18)) { - _ref$1 = re.Sub; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - if (sub$1.Op === 19) { - b.WriteString("(?:"); - writeRegexp(b, sub$1); - b.WriteString(")"); - } else { - writeRegexp(b, sub$1); - } - _i$1++; - } - } else if (_1 === (19)) { - _ref$2 = re.Sub; - _i$2 = 0; - while (true) { - if (!(_i$2 < _ref$2.$length)) { break; } - i$2 = _i$2; - sub$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); - if (i$2 > 0) { - b.WriteRune(124); - } - writeRegexp(b, sub$2); - _i$2++; - } - } else { - b.WriteString("> 0))) + ">"); - } - } - }; - Regexp.ptr.prototype.String = function() { - var b, re; - re = this; - b = new strings.Builder.ptr(ptrType$4.nil, sliceType$6.nil); - writeRegexp(b, re); - return b.String(); - }; - Regexp.prototype.String = function() { return this.$val.String(); }; - escape = function(b, r, force) { - var _1, b, force, r, s; - if (unicode.IsPrint(r)) { - if (strings.ContainsRune("\\.+*?()|[]{}^$", r) || force) { - b.WriteRune(92); - } - b.WriteRune(r); - return; - } - switch (0) { default: - _1 = r; - if (_1 === (7)) { - b.WriteString("\\a"); - } else if (_1 === (12)) { - b.WriteString("\\f"); - } else if (_1 === (10)) { - b.WriteString("\\n"); - } else if (_1 === (13)) { - b.WriteString("\\r"); - } else if (_1 === (9)) { - b.WriteString("\\t"); - } else if (_1 === (11)) { - b.WriteString("\\v"); - } else { - if (r < 256) { - b.WriteString("\\x"); - s = strconv.FormatInt((new $Int64(0, r)), 16); - if (s.length === 1) { - b.WriteRune(48); - } - b.WriteString(s); - break; - } - b.WriteString("\\x{"); - b.WriteString(strconv.FormatInt((new $Int64(0, r)), 16)); - b.WriteString("}"); - } - } - }; - Regexp.ptr.prototype.MaxCap = function() { - var _i, _ref, m, n, re, sub; - re = this; - m = 0; - if (re.Op === 13) { - m = re.Cap; - } - _ref = re.Sub; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - n = sub.MaxCap(); - if (m < n) { - m = n; - } - _i++; - } - return m; - }; - Regexp.prototype.MaxCap = function() { return this.$val.MaxCap(); }; - Regexp.ptr.prototype.CapNames = function() { - var names, re; - re = this; - names = $makeSlice(sliceType$3, (re.MaxCap() + 1 >> 0)); - re.capNames(names); - return names; - }; - Regexp.prototype.CapNames = function() { return this.$val.CapNames(); }; - Regexp.ptr.prototype.capNames = function(names) { - var _i, _ref, names, re, sub, x; - re = this; - if (re.Op === 13) { - (x = re.Cap, ((x < 0 || x >= names.$length) ? ($throwRuntimeError("index out of range"), undefined) : names.$array[names.$offset + x] = re.Name)); - } - _ref = re.Sub; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - sub.capNames(names); - _i++; - } - }; - Regexp.prototype.capNames = function(names) { return this.$val.capNames(names); }; - Regexp.ptr.prototype.Simplify = function() { - var _1, _i, _ref, i, i$1, i$2, i$3, nre, nre$1, nre2, nsub, prefix, re, sub, sub$1, sub$2, suffix, x, x$1; - re = this; - if (re === ptrType$1.nil) { - return ptrType$1.nil; - } - _1 = re.Op; - if ((_1 === (13)) || (_1 === (18)) || (_1 === (19))) { - nre = re; - _ref = re.Sub; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - nsub = sub.Simplify(); - if (nre === re && !(nsub === sub)) { - nre = new Regexp.ptr(0, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - Regexp.copy(nre, re); - nre.Rune = sliceType.nil; - nre.Sub = $appendSlice($subslice(new sliceType$5(nre.Sub0), 0, 0), $subslice(re.Sub, 0, i)); - } - if (!(nre === re)) { - nre.Sub = $append(nre.Sub, nsub); - } - _i++; - } - return nre; - } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16))) { - sub$1 = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Simplify(); - return simplify1(re.Op, re.Flags, sub$1, re); - } else if (_1 === (17)) { - if ((re.Min === 0) && (re.Max === 0)) { - return new Regexp.ptr(2, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - } - sub$2 = (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).Simplify(); - if (re.Max === -1) { - if (re.Min === 0) { - return simplify1(14, re.Flags, sub$2, ptrType$1.nil); - } - if (re.Min === 1) { - return simplify1(15, re.Flags, sub$2, ptrType$1.nil); - } - nre$1 = new Regexp.ptr(18, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - nre$1.Sub = $subslice(new sliceType$5(nre$1.Sub0), 0, 0); - i$1 = 0; - while (true) { - if (!(i$1 < (re.Min - 1 >> 0))) { break; } - nre$1.Sub = $append(nre$1.Sub, sub$2); - i$1 = i$1 + (1) >> 0; - } - nre$1.Sub = $append(nre$1.Sub, simplify1(15, re.Flags, sub$2, ptrType$1.nil)); - return nre$1; - } - if ((re.Min === 1) && (re.Max === 1)) { - return sub$2; - } - prefix = ptrType$1.nil; - if (re.Min > 0) { - prefix = new Regexp.ptr(18, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - prefix.Sub = $subslice(new sliceType$5(prefix.Sub0), 0, 0); - i$2 = 0; - while (true) { - if (!(i$2 < re.Min)) { break; } - prefix.Sub = $append(prefix.Sub, sub$2); - i$2 = i$2 + (1) >> 0; - } - } - if (re.Max > re.Min) { - suffix = simplify1(16, re.Flags, sub$2, ptrType$1.nil); - i$3 = re.Min + 1 >> 0; - while (true) { - if (!(i$3 < re.Max)) { break; } - nre2 = new Regexp.ptr(18, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - nre2.Sub = $append($subslice(new sliceType$5(nre2.Sub0), 0, 0), sub$2, suffix); - suffix = simplify1(16, re.Flags, nre2, ptrType$1.nil); - i$3 = i$3 + (1) >> 0; - } - if (prefix === ptrType$1.nil) { - return suffix; - } - prefix.Sub = $append(prefix.Sub, suffix); - } - if (!(prefix === ptrType$1.nil)) { - return prefix; - } - return new Regexp.ptr(1, 0, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - } - return re; - }; - Regexp.prototype.Simplify = function() { return this.$val.Simplify(); }; - simplify1 = function(op, flags, sub, re) { - var flags, op, re, sub, x; - if (sub.Op === 2) { - return sub; - } - if ((op === sub.Op) && (((flags & 32) >>> 0) === ((sub.Flags & 32) >>> 0))) { - return sub; - } - if (!(re === ptrType$1.nil) && (re.Op === op) && (((re.Flags & 32) >>> 0) === ((flags & 32) >>> 0)) && sub === (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))) { - return re; - } - re = new Regexp.ptr(op, flags, sliceType$5.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""); - re.Sub = $append($subslice(new sliceType$5(re.Sub0), 0, 0), sub); - return re; - }; - patchList.methods = [{prop: "next", name: "next", pkg: "regexp/syntax", typ: $funcType([ptrType], [patchList], false)}, {prop: "patch", name: "patch", pkg: "regexp/syntax", typ: $funcType([ptrType, $Uint32], [], false)}, {prop: "append", name: "append", pkg: "regexp/syntax", typ: $funcType([ptrType, patchList], [patchList], false)}]; - ptrType$5.methods = [{prop: "init", name: "init", pkg: "regexp/syntax", typ: $funcType([], [], false)}, {prop: "compile", name: "compile", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [frag], false)}, {prop: "inst", name: "inst", pkg: "regexp/syntax", typ: $funcType([InstOp], [frag], false)}, {prop: "nop", name: "nop", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "fail", name: "fail", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "cap", name: "cap", pkg: "regexp/syntax", typ: $funcType([$Uint32], [frag], false)}, {prop: "cat", name: "cat", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "alt", name: "alt", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "quest", name: "quest", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "star", name: "star", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "plus", name: "plus", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "empty", name: "empty", pkg: "regexp/syntax", typ: $funcType([EmptyOp], [frag], false)}, {prop: "rune", name: "rune", pkg: "regexp/syntax", typ: $funcType([sliceType, Flags], [frag], false)}]; - ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ErrorCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$7.methods = [{prop: "newRegexp", name: "newRegexp", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType$1], false)}, {prop: "reuse", name: "reuse", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [], false)}, {prop: "push", name: "push", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "maybeConcat", name: "maybeConcat", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [$Bool], false)}, {prop: "newLiteral", name: "newLiteral", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [ptrType$1], false)}, {prop: "literal", name: "literal", pkg: "regexp/syntax", typ: $funcType([$Int32], [], false)}, {prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType$1], false)}, {prop: "repeat", name: "repeat", pkg: "regexp/syntax", typ: $funcType([Op, $Int, $Int, $String, $String, $String], [$String, $error], false)}, {prop: "concat", name: "concat", pkg: "regexp/syntax", typ: $funcType([], [ptrType$1], false)}, {prop: "alternate", name: "alternate", pkg: "regexp/syntax", typ: $funcType([], [ptrType$1], false)}, {prop: "collapse", name: "collapse", pkg: "regexp/syntax", typ: $funcType([sliceType$5, Op], [ptrType$1], false)}, {prop: "factor", name: "factor", pkg: "regexp/syntax", typ: $funcType([sliceType$5], [sliceType$5], false)}, {prop: "leadingString", name: "leadingString", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [sliceType, Flags], false)}, {prop: "removeLeadingString", name: "removeLeadingString", pkg: "regexp/syntax", typ: $funcType([ptrType$1, $Int], [ptrType$1], false)}, {prop: "leadingRegexp", name: "leadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "removeLeadingRegexp", name: "removeLeadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType$1, $Bool], [ptrType$1], false)}, {prop: "parseRepeat", name: "parseRepeat", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $Int, $String, $Bool], false)}, {prop: "parsePerlFlags", name: "parsePerlFlags", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}, {prop: "parseInt", name: "parseInt", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $String, $Bool], false)}, {prop: "parseVerticalBar", name: "parseVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "swapVerticalBar", name: "swapVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$Bool], false)}, {prop: "parseRightParen", name: "parseRightParen", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "parseEscape", name: "parseEscape", pkg: "regexp/syntax", typ: $funcType([$String], [$Int32, $String, $error], false)}, {prop: "parseClassChar", name: "parseClassChar", pkg: "regexp/syntax", typ: $funcType([$String, $String], [$Int32, $String, $error], false)}, {prop: "parsePerlClassEscape", name: "parsePerlClassEscape", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String], false)}, {prop: "parseNamedClass", name: "parseNamedClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "appendGroup", name: "appendGroup", pkg: "regexp/syntax", typ: $funcType([sliceType, charGroup], [sliceType], false)}, {prop: "parseUnicodeClass", name: "parseUnicodeClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "parseClass", name: "parseClass", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}]; - ranges.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; - ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "skipNop", name: "skipNop", pkg: "regexp/syntax", typ: $funcType([$Uint32], [ptrType$8], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "StartCond", name: "StartCond", pkg: "", typ: $funcType([], [EmptyOp], false)}]; - InstOp.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$8.methods = [{prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([], [InstOp], false)}, {prop: "MatchRune", name: "MatchRune", pkg: "", typ: $funcType([$Int32], [$Bool], false)}, {prop: "MatchRunePos", name: "MatchRunePos", pkg: "", typ: $funcType([$Int32], [$Int], false)}, {prop: "MatchEmptyWidth", name: "MatchEmptyWidth", pkg: "", typ: $funcType([$Int32, $Int32], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$1.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MaxCap", name: "MaxCap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CapNames", name: "CapNames", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "capNames", name: "capNames", pkg: "regexp/syntax", typ: $funcType([sliceType$3], [], false)}, {prop: "Simplify", name: "Simplify", pkg: "", typ: $funcType([], [ptrType$1], false)}]; - Op.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - frag.init("regexp/syntax", [{prop: "i", name: "i", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "out", name: "out", embedded: false, exported: false, typ: patchList, tag: ""}]); - compiler.init("regexp/syntax", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType, tag: ""}]); - Error.init("", [{prop: "Code", name: "Code", embedded: false, exported: true, typ: ErrorCode, tag: ""}, {prop: "Expr", name: "Expr", embedded: false, exported: true, typ: $String, tag: ""}]); - parser.init("regexp/syntax", [{prop: "flags", name: "flags", embedded: false, exported: false, typ: Flags, tag: ""}, {prop: "stack", name: "stack", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "free", name: "free", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "numCap", name: "numCap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "wholeRegexp", name: "wholeRegexp", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tmpClass", name: "tmpClass", embedded: false, exported: false, typ: sliceType, tag: ""}]); - charGroup.init("regexp/syntax", [{prop: "sign", name: "sign", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "class$1", name: "class", embedded: false, exported: false, typ: sliceType, tag: ""}]); - ranges.init("regexp/syntax", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); - Prog.init("", [{prop: "Inst", name: "Inst", embedded: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", embedded: false, exported: true, typ: $Int, tag: ""}]); - Inst.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: InstOp, tag: ""}, {prop: "Out", name: "Out", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Arg", name: "Arg", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Rune", name: "Rune", embedded: false, exported: true, typ: sliceType, tag: ""}]); - Regexp.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: Op, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: Flags, tag: ""}, {prop: "Sub", name: "Sub", embedded: false, exported: true, typ: sliceType$5, tag: ""}, {prop: "Sub0", name: "Sub0", embedded: false, exported: true, typ: arrayType, tag: ""}, {prop: "Rune", name: "Rune", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Rune0", name: "Rune0", embedded: false, exported: true, typ: arrayType$1, tag: ""}, {prop: "Min", name: "Min", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Max", name: "Max", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Cap", name: "Cap", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = sort.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - anyRuneNotNL = new sliceType([0, 9, 11, 1114111]); - anyRune = new sliceType([0, 1114111]); - _Op_index_0 = $toNativeArray($kindUint8, [0, 7, 17, 24, 33, 45, 52, 61, 68, 77, 84, 96, 110, 117, 121, 125, 130, 136, 142, 151]); - anyTable = new unicode.RangeTable.ptr(new sliceType$1([new unicode.Range16.ptr(0, 65535, 1)]), new sliceType$2([new unicode.Range32.ptr(65536, 1114111, 1)]), 0); - code1 = new sliceType([48, 57]); - code2 = new sliceType([9, 10, 12, 13, 32, 32]); - code3 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]); - perlGroup = $makeMap($String.keyFor, [{ k: "\\d", v: new charGroup.ptr(1, code1) }, { k: "\\D", v: new charGroup.ptr(-1, code1) }, { k: "\\s", v: new charGroup.ptr(1, code2) }, { k: "\\S", v: new charGroup.ptr(-1, code2) }, { k: "\\w", v: new charGroup.ptr(1, code3) }, { k: "\\W", v: new charGroup.ptr(-1, code3) }]); - code4 = new sliceType([48, 57, 65, 90, 97, 122]); - code5 = new sliceType([65, 90, 97, 122]); - code6 = new sliceType([0, 127]); - code7 = new sliceType([9, 9, 32, 32]); - code8 = new sliceType([0, 31, 127, 127]); - code9 = new sliceType([48, 57]); - code10 = new sliceType([33, 126]); - code11 = new sliceType([97, 122]); - code12 = new sliceType([32, 126]); - code13 = new sliceType([33, 47, 58, 64, 91, 96, 123, 126]); - code14 = new sliceType([9, 13, 32, 32]); - code15 = new sliceType([65, 90]); - code16 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]); - code17 = new sliceType([48, 57, 65, 70, 97, 102]); - posixGroup = $makeMap($String.keyFor, [{ k: "[:alnum:]", v: new charGroup.ptr(1, code4) }, { k: "[:^alnum:]", v: new charGroup.ptr(-1, code4) }, { k: "[:alpha:]", v: new charGroup.ptr(1, code5) }, { k: "[:^alpha:]", v: new charGroup.ptr(-1, code5) }, { k: "[:ascii:]", v: new charGroup.ptr(1, code6) }, { k: "[:^ascii:]", v: new charGroup.ptr(-1, code6) }, { k: "[:blank:]", v: new charGroup.ptr(1, code7) }, { k: "[:^blank:]", v: new charGroup.ptr(-1, code7) }, { k: "[:cntrl:]", v: new charGroup.ptr(1, code8) }, { k: "[:^cntrl:]", v: new charGroup.ptr(-1, code8) }, { k: "[:digit:]", v: new charGroup.ptr(1, code9) }, { k: "[:^digit:]", v: new charGroup.ptr(-1, code9) }, { k: "[:graph:]", v: new charGroup.ptr(1, code10) }, { k: "[:^graph:]", v: new charGroup.ptr(-1, code10) }, { k: "[:lower:]", v: new charGroup.ptr(1, code11) }, { k: "[:^lower:]", v: new charGroup.ptr(-1, code11) }, { k: "[:print:]", v: new charGroup.ptr(1, code12) }, { k: "[:^print:]", v: new charGroup.ptr(-1, code12) }, { k: "[:punct:]", v: new charGroup.ptr(1, code13) }, { k: "[:^punct:]", v: new charGroup.ptr(-1, code13) }, { k: "[:space:]", v: new charGroup.ptr(1, code14) }, { k: "[:^space:]", v: new charGroup.ptr(-1, code14) }, { k: "[:upper:]", v: new charGroup.ptr(1, code15) }, { k: "[:^upper:]", v: new charGroup.ptr(-1, code15) }, { k: "[:word:]", v: new charGroup.ptr(1, code16) }, { k: "[:^word:]", v: new charGroup.ptr(-1, code16) }, { k: "[:xdigit:]", v: new charGroup.ptr(1, code17) }, { k: "[:^xdigit:]", v: new charGroup.ptr(-1, code17) }]); - instOpNames = new sliceType$3(["InstAlt", "InstAltMatch", "InstCapture", "InstEmptyWidth", "InstMatch", "InstFail", "InstNop", "InstRune", "InstRune1", "InstRuneAny", "InstRuneAnyNotNL"]); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["regexp"] = (function() { - var $pkg = {}, $init, bytes, nosync, io, syntax, sort, strconv, strings, unicode, utf8, job, bitState, queue, entry, thread, machine, inputs, lazyFlag, onePassMachine, onePassProg, onePassInst, queueOnePass, runeSlice, Regexp, input, inputString, inputBytes, inputReader, sliceType, arrayType, arrayType$1, arrayType$2, sliceType$1, sliceType$2, ptrType, sliceType$3, sliceType$4, sliceType$5, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$6, ptrType$9, sliceType$7, ptrType$10, sliceType$8, ptrType$11, ptrType$12, sliceType$9, ptrType$13, sliceType$10, sliceType$11, arrayType$3, arrayType$4, sliceType$12, sliceType$13, sliceType$14, sliceType$15, ptrType$14, ptrType$15, funcType, funcType$1, funcType$2, funcType$3, ptrType$16, ptrType$17, ptrType$18, bitStatePool, onePassPool, arrayNoInts, noRune, noNext, anyRuneNotNL, anyRune, matchSize, matchPool, specialBytes, newBitState, freeBitState, maxBitStateLen, shouldBacktrack, newLazyFlag, newOnePassMachine, freeOnePassMachine, onePassPrefix, onePassNext, iop, newQueue, mergeRuneSets, cleanupOnePass, onePassCopy, makeOnePass, compileOnePass, Compile, compile, MustCompile, quote, init, extract; - bytes = $packages["bytes"]; - nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; - io = $packages["io"]; - syntax = $packages["regexp/syntax"]; - sort = $packages["sort"]; - strconv = $packages["strconv"]; - strings = $packages["strings"]; - unicode = $packages["unicode"]; - utf8 = $packages["unicode/utf8"]; - job = $pkg.job = $newType(0, $kindStruct, "regexp.job", true, "regexp", false, function(pc_, arg_, pos_) { - this.$val = this; - if (arguments.length === 0) { - this.pc = 0; - this.arg = false; - this.pos = 0; - return; - } - this.pc = pc_; - this.arg = arg_; - this.pos = pos_; - }); - bitState = $pkg.bitState = $newType(0, $kindStruct, "regexp.bitState", true, "regexp", false, function(end_, cap_, matchcap_, jobs_, visited_, inputs_) { - this.$val = this; - if (arguments.length === 0) { - this.end = 0; - this.cap = sliceType$3.nil; - this.matchcap = sliceType$3.nil; - this.jobs = sliceType$4.nil; - this.visited = sliceType$2.nil; - this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); - return; - } - this.end = end_; - this.cap = cap_; - this.matchcap = matchcap_; - this.jobs = jobs_; - this.visited = visited_; - this.inputs = inputs_; - }); - queue = $pkg.queue = $newType(0, $kindStruct, "regexp.queue", true, "regexp", false, function(sparse_, dense_) { - this.$val = this; - if (arguments.length === 0) { - this.sparse = sliceType$2.nil; - this.dense = sliceType$10.nil; - return; - } - this.sparse = sparse_; - this.dense = dense_; - }); - entry = $pkg.entry = $newType(0, $kindStruct, "regexp.entry", true, "regexp", false, function(pc_, t_) { - this.$val = this; - if (arguments.length === 0) { - this.pc = 0; - this.t = ptrType$1.nil; - return; - } - this.pc = pc_; - this.t = t_; - }); - thread = $pkg.thread = $newType(0, $kindStruct, "regexp.thread", true, "regexp", false, function(inst_, cap_) { - this.$val = this; - if (arguments.length === 0) { - this.inst = ptrType$2.nil; - this.cap = sliceType$3.nil; - return; - } - this.inst = inst_; - this.cap = cap_; - }); - machine = $pkg.machine = $newType(0, $kindStruct, "regexp.machine", true, "regexp", false, function(re_, p_, q0_, q1_, pool_, matched_, matchcap_, inputs_) { - this.$val = this; - if (arguments.length === 0) { - this.re = ptrType$11.nil; - this.p = ptrType$12.nil; - this.q0 = new queue.ptr(sliceType$2.nil, sliceType$10.nil); - this.q1 = new queue.ptr(sliceType$2.nil, sliceType$10.nil); - this.pool = sliceType$11.nil; - this.matched = false; - this.matchcap = sliceType$3.nil; - this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); - return; - } - this.re = re_; - this.p = p_; - this.q0 = q0_; - this.q1 = q1_; - this.pool = pool_; - this.matched = matched_; - this.matchcap = matchcap_; - this.inputs = inputs_; - }); - inputs = $pkg.inputs = $newType(0, $kindStruct, "regexp.inputs", true, "regexp", false, function(bytes_, string_, reader_) { - this.$val = this; - if (arguments.length === 0) { - this.bytes = new inputBytes.ptr(sliceType$5.nil); - this.string = new inputString.ptr(""); - this.reader = new inputReader.ptr($ifaceNil, false, 0); - return; - } - this.bytes = bytes_; - this.string = string_; - this.reader = reader_; - }); - lazyFlag = $pkg.lazyFlag = $newType(8, $kindUint64, "regexp.lazyFlag", true, "regexp", false, null); - onePassMachine = $pkg.onePassMachine = $newType(0, $kindStruct, "regexp.onePassMachine", true, "regexp", false, function(inputs_, matchcap_) { - this.$val = this; - if (arguments.length === 0) { - this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); - this.matchcap = sliceType$3.nil; - return; - } - this.inputs = inputs_; - this.matchcap = matchcap_; - }); - onePassProg = $pkg.onePassProg = $newType(0, $kindStruct, "regexp.onePassProg", true, "regexp", false, function(Inst_, Start_, NumCap_) { - this.$val = this; - if (arguments.length === 0) { - this.Inst = sliceType$6.nil; - this.Start = 0; - this.NumCap = 0; - return; - } - this.Inst = Inst_; - this.Start = Start_; - this.NumCap = NumCap_; - }); - onePassInst = $pkg.onePassInst = $newType(0, $kindStruct, "regexp.onePassInst", true, "regexp", false, function(Inst_, Next_) { - this.$val = this; - if (arguments.length === 0) { - this.Inst = new syntax.Inst.ptr(0, 0, 0, sliceType$1.nil); - this.Next = sliceType$2.nil; - return; - } - this.Inst = Inst_; - this.Next = Next_; - }); - queueOnePass = $pkg.queueOnePass = $newType(0, $kindStruct, "regexp.queueOnePass", true, "regexp", false, function(sparse_, dense_, size_, nextIndex_) { - this.$val = this; - if (arguments.length === 0) { - this.sparse = sliceType$2.nil; - this.dense = sliceType$2.nil; - this.size = 0; - this.nextIndex = 0; - return; - } - this.sparse = sparse_; - this.dense = dense_; - this.size = size_; - this.nextIndex = nextIndex_; - }); - runeSlice = $pkg.runeSlice = $newType(12, $kindSlice, "regexp.runeSlice", true, "regexp", false, null); - Regexp = $pkg.Regexp = $newType(0, $kindStruct, "regexp.Regexp", true, "regexp", true, function(expr_, prog_, onepass_, numSubexp_, maxBitStateLen_, subexpNames_, prefix_, prefixBytes_, prefixRune_, prefixEnd_, mpool_, matchcap_, prefixComplete_, cond_, longest_) { - this.$val = this; - if (arguments.length === 0) { - this.expr = ""; - this.prog = ptrType$12.nil; - this.onepass = ptrType$6.nil; - this.numSubexp = 0; - this.maxBitStateLen = 0; - this.subexpNames = sliceType$9.nil; - this.prefix = ""; - this.prefixBytes = sliceType$5.nil; - this.prefixRune = 0; - this.prefixEnd = 0; - this.mpool = 0; - this.matchcap = 0; - this.prefixComplete = false; - this.cond = 0; - this.longest = false; - return; - } - this.expr = expr_; - this.prog = prog_; - this.onepass = onepass_; - this.numSubexp = numSubexp_; - this.maxBitStateLen = maxBitStateLen_; - this.subexpNames = subexpNames_; - this.prefix = prefix_; - this.prefixBytes = prefixBytes_; - this.prefixRune = prefixRune_; - this.prefixEnd = prefixEnd_; - this.mpool = mpool_; - this.matchcap = matchcap_; - this.prefixComplete = prefixComplete_; - this.cond = cond_; - this.longest = longest_; - }); - input = $pkg.input = $newType(8, $kindInterface, "regexp.input", true, "regexp", false, null); - inputString = $pkg.inputString = $newType(0, $kindStruct, "regexp.inputString", true, "regexp", false, function(str_) { - this.$val = this; - if (arguments.length === 0) { - this.str = ""; - return; - } - this.str = str_; - }); - inputBytes = $pkg.inputBytes = $newType(0, $kindStruct, "regexp.inputBytes", true, "regexp", false, function(str_) { - this.$val = this; - if (arguments.length === 0) { - this.str = sliceType$5.nil; - return; - } - this.str = str_; - }); - inputReader = $pkg.inputReader = $newType(0, $kindStruct, "regexp.inputReader", true, "regexp", false, function(r_, atEOT_, pos_) { - this.$val = this; - if (arguments.length === 0) { - this.r = $ifaceNil; - this.atEOT = false; - this.pos = 0; - return; - } - this.r = r_; - this.atEOT = atEOT_; - this.pos = pos_; - }); - sliceType = $sliceType($emptyInterface); - arrayType = $arrayType($Int, 0); - arrayType$1 = $arrayType(nosync.Pool, 5); - arrayType$2 = $arrayType($Uint8, 16); - sliceType$1 = $sliceType($Int32); - sliceType$2 = $sliceType($Uint32); - ptrType = $ptrType(bitState); - sliceType$3 = $sliceType($Int); - sliceType$4 = $sliceType(job); - sliceType$5 = $sliceType($Uint8); - ptrType$1 = $ptrType(thread); - ptrType$2 = $ptrType(syntax.Inst); - ptrType$3 = $ptrType(lazyFlag); - ptrType$4 = $ptrType($Int); - ptrType$5 = $ptrType(onePassMachine); - ptrType$6 = $ptrType(onePassProg); - ptrType$7 = $ptrType(strings.Builder); - ptrType$8 = $ptrType(queueOnePass); - sliceType$6 = $sliceType(onePassInst); - ptrType$9 = $ptrType($Uint32); - sliceType$7 = $sliceType(sliceType$1); - ptrType$10 = $ptrType(sliceType$1); - sliceType$8 = $sliceType($Bool); - ptrType$11 = $ptrType(Regexp); - ptrType$12 = $ptrType(syntax.Prog); - sliceType$9 = $sliceType($String); - ptrType$13 = $ptrType(machine); - sliceType$10 = $sliceType(entry); - sliceType$11 = $sliceType(ptrType$1); - arrayType$3 = $arrayType($Int, 2); - arrayType$4 = $arrayType($Int, 4); - sliceType$12 = $sliceType(sliceType$5); - sliceType$13 = $sliceType(sliceType$3); - sliceType$14 = $sliceType(sliceType$12); - sliceType$15 = $sliceType(sliceType$9); - ptrType$14 = $ptrType(queue); - ptrType$15 = $ptrType(inputs); - funcType = $funcType([$String], [$String], false); - funcType$1 = $funcType([sliceType$5, sliceType$3], [sliceType$5], false); - funcType$2 = $funcType([sliceType$5], [sliceType$5], false); - funcType$3 = $funcType([sliceType$3], [], false); - ptrType$16 = $ptrType(inputString); - ptrType$17 = $ptrType(inputBytes); - ptrType$18 = $ptrType(inputReader); - newBitState = function() { - var _r, _tuple, b, ok, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = bitStatePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = $assertType(_r, ptrType, true); - b = _tuple[0]; - ok = _tuple[1]; - if (!ok) { - b = new bitState.ptr(0, sliceType$3.nil, sliceType$3.nil, sliceType$4.nil, sliceType$2.nil, new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0))); - } - $s = -1; return b; - /* */ } return; } if ($f === undefined) { $f = { $blk: newBitState }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f; - }; - freeBitState = function(b) { - var b; - b.inputs.clear(); - bitStatePool.Put(b); - }; - maxBitStateLen = function(prog) { - var _q, prog; - if (!shouldBacktrack(prog)) { - return 0; - } - return (_q = 262144 / prog.Inst.$length, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - }; - shouldBacktrack = function(prog) { - var prog; - return prog.Inst.$length <= 500; - }; - bitState.ptr.prototype.reset = function(prog, end, ncap) { - var _i, _i$1, _i$2, _q, _ref, _ref$1, _ref$2, b, end, i, i$1, i$2, ncap, prog, visitedSize, x, x$1, x$2; - b = this; - b.end = end; - if (b.jobs.$capacity === 0) { - b.jobs = $makeSlice(sliceType$4, 0, 256); - } else { - b.jobs = $subslice(b.jobs, 0, 0); - } - visitedSize = (_q = (((($imul(prog.Inst.$length, ((end + 1 >> 0)))) + 32 >> 0) - 1 >> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - if (b.visited.$capacity < visitedSize) { - b.visited = $makeSlice(sliceType$2, visitedSize, 8192); - } else { - b.visited = $subslice(b.visited, 0, visitedSize); - _ref = b.visited; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - (x = b.visited, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = 0)); - _i++; - } - } - if (b.cap.$capacity < ncap) { - b.cap = $makeSlice(sliceType$3, ncap); - } else { - b.cap = $subslice(b.cap, 0, ncap); - } - _ref$1 = b.cap; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$1 = _i$1; - (x$1 = b.cap, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1] = -1)); - _i$1++; - } - if (b.matchcap.$capacity < ncap) { - b.matchcap = $makeSlice(sliceType$3, ncap); - } else { - b.matchcap = $subslice(b.matchcap, 0, ncap); - } - _ref$2 = b.matchcap; - _i$2 = 0; - while (true) { - if (!(_i$2 < _ref$2.$length)) { break; } - i$2 = _i$2; - (x$2 = b.matchcap, ((i$2 < 0 || i$2 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$2] = -1)); - _i$2++; - } - }; - bitState.prototype.reset = function(prog, end, ncap) { return this.$val.reset(prog, end, ncap); }; - bitState.ptr.prototype.shouldVisit = function(pc, pos) { - var _index, _q, _q$1, b, n, pc, pos, x, x$1, x$2, x$3, y, y$1; - b = this; - n = (((($imul(((pc >> 0)), ((b.end + 1 >> 0)))) + pos >> 0) >>> 0)); - if (!(((((x = b.visited, x$1 = (_q = n / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) & (((y = (((n & 31) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { - return false; - } - _index = (_q$1 = n / 32, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); - (x$3 = b.visited, ((_index < 0 || _index >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + _index] = (((x$2 = b.visited, ((_index < 0 || _index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + _index])) | (((y$1 = (((n & 31) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0))); - return true; - }; - bitState.prototype.shouldVisit = function(pc, pos) { return this.$val.shouldVisit(pc, pos); }; - bitState.ptr.prototype.push = function(re, pc, pos, arg) { - var arg, b, pc, pos, re, x; - b = this; - if (!(((x = re.prog.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])).Op === 5)) && (arg || b.shouldVisit(pc, pos))) { - b.jobs = $append(b.jobs, new job.ptr(pc, arg, pos)); - } - }; - bitState.prototype.push = function(re, pc, pos, arg) { return this.$val.push(re, pc, pos, arg); }; - Regexp.ptr.prototype.tryBacktrack = function(b, i, pc, pos) { - var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, arg, b, flag, i, inst, l, longest, old, pc, pc$1, pos, pos$1, r, r$1, r$2, r$3, re, width, width$1, width$2, width$3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; arg = $f.arg; b = $f.b; flag = $f.flag; i = $f.i; inst = $f.inst; l = $f.l; longest = $f.longest; old = $f.old; pc = $f.pc; pc$1 = $f.pc$1; pos = $f.pos; pos$1 = $f.pos$1; r = $f.r; r$1 = $f.r$1; r$2 = $f.r$2; r$3 = $f.r$3; re = $f.re; width = $f.width; width$1 = $f.width$1; width$2 = $f.width$2; width$3 = $f.width$3; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - longest = re.longest; - b.push(re, pc, pos, false); - /* while (true) { */ case 1: - /* if (!(b.jobs.$length > 0)) { break; } */ if(!(b.jobs.$length > 0)) { $s = 2; continue; } - l = b.jobs.$length - 1 >> 0; - pc$1 = (x = b.jobs, ((l < 0 || l >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + l])).pc; - pos$1 = (x$1 = b.jobs, ((l < 0 || l >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + l])).pos; - arg = (x$2 = b.jobs, ((l < 0 || l >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + l])).arg; - b.jobs = $subslice(b.jobs, 0, l); - /* goto Skip */ $s = 3; continue; - /* CheckAndLoop: */ case 4: - if (!b.shouldVisit(pc$1, pos$1)) { - /* continue; */ $s = 1; continue; - } - /* Skip: */ case 3: - inst = $clone((x$3 = re.prog.Inst, ((pc$1 < 0 || pc$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc$1])), syntax.Inst); - _1 = inst.Op; - /* */ if (_1 === (5)) { $s = 6; continue; } - /* */ if (_1 === (0)) { $s = 7; continue; } - /* */ if (_1 === (1)) { $s = 8; continue; } - /* */ if (_1 === (7)) { $s = 9; continue; } - /* */ if (_1 === (8)) { $s = 10; continue; } - /* */ if (_1 === (10)) { $s = 11; continue; } - /* */ if (_1 === (9)) { $s = 12; continue; } - /* */ if (_1 === (2)) { $s = 13; continue; } - /* */ if (_1 === (3)) { $s = 14; continue; } - /* */ if (_1 === (6)) { $s = 15; continue; } - /* */ if (_1 === (4)) { $s = 16; continue; } - /* */ $s = 17; continue; - /* if (_1 === (5)) { */ case 6: - $panic(new $String("unexpected InstFail")); - $s = 18; continue; - /* } else if (_1 === (0)) { */ case 7: - /* */ if (arg) { $s = 19; continue; } - /* */ $s = 20; continue; - /* if (arg) { */ case 19: - arg = false; - pc$1 = inst.Arg; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 21; continue; - /* } else { */ case 20: - b.push(re, pc$1, pos$1, true); - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - /* } */ case 21: - $s = 18; continue; - /* } else if (_1 === (1)) { */ case 8: - _2 = (x$4 = re.prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).Op; - /* */ if ((_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10))) { $s = 23; continue; } - /* */ $s = 24; continue; - /* if ((_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10))) { */ case 23: - b.push(re, inst.Arg, pos$1, false); - pc$1 = inst.Arg; - pos$1 = b.end; - /* goto CheckAndLoop */ $s = 4; continue; - /* } */ case 24: - case 22: - b.push(re, inst.Out, b.end, false); - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (7)) { */ case 9: - _r = i.step(pos$1); /* */ $s = 25; case 25: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - r = _tuple[0]; - width = _tuple[1]; - /* */ if (!inst.MatchRune(r)) { $s = 26; continue; } - /* */ $s = 27; continue; - /* if (!inst.MatchRune(r)) { */ case 26: - /* continue; */ $s = 1; continue; - /* } */ case 27: - pos$1 = pos$1 + (width) >> 0; - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (8)) { */ case 10: - _r$1 = i.step(pos$1); /* */ $s = 28; case 28: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - r$1 = _tuple$1[0]; - width$1 = _tuple$1[1]; - /* */ if (!((r$1 === (x$6 = inst.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))))) { $s = 29; continue; } - /* */ $s = 30; continue; - /* if (!((r$1 === (x$6 = inst.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))))) { */ case 29: - /* continue; */ $s = 1; continue; - /* } */ case 30: - pos$1 = pos$1 + (width$1) >> 0; - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (10)) { */ case 11: - _r$2 = i.step(pos$1); /* */ $s = 31; case 31: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$2 = _r$2; - r$2 = _tuple$2[0]; - width$2 = _tuple$2[1]; - /* */ if ((r$2 === 10) || (r$2 === -1)) { $s = 32; continue; } - /* */ $s = 33; continue; - /* if ((r$2 === 10) || (r$2 === -1)) { */ case 32: - /* continue; */ $s = 1; continue; - /* } */ case 33: - pos$1 = pos$1 + (width$2) >> 0; - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (9)) { */ case 12: - _r$3 = i.step(pos$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _tuple$3 = _r$3; - r$3 = _tuple$3[0]; - width$3 = _tuple$3[1]; - /* */ if (r$3 === -1) { $s = 35; continue; } - /* */ $s = 36; continue; - /* if (r$3 === -1) { */ case 35: - /* continue; */ $s = 1; continue; - /* } */ case 36: - pos$1 = pos$1 + (width$3) >> 0; - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (2)) { */ case 13: - /* */ if (arg) { $s = 37; continue; } - /* */ $s = 38; continue; - /* if (arg) { */ case 37: - (x$7 = b.cap, x$8 = inst.Arg, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8] = pos$1)); - /* continue; */ $s = 1; continue; - $s = 39; continue; - /* } else { */ case 38: - if (0 <= inst.Arg && inst.Arg < ((b.cap.$length >>> 0))) { - b.push(re, pc$1, (x$9 = b.cap, x$10 = inst.Arg, ((x$10 < 0 || x$10 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + x$10])), true); - (x$11 = b.cap, x$12 = inst.Arg, ((x$12 < 0 || x$12 >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + x$12] = pos$1)); - } - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - /* } */ case 39: - $s = 18; continue; - /* } else if (_1 === (3)) { */ case 14: - _r$4 = i.context(pos$1); /* */ $s = 40; case 40: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - flag = _r$4; - /* */ if (!flag.match(((inst.Arg << 24 >>> 24)))) { $s = 41; continue; } - /* */ $s = 42; continue; - /* if (!flag.match(((inst.Arg << 24 >>> 24)))) { */ case 41: - /* continue; */ $s = 1; continue; - /* } */ case 42: - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (6)) { */ case 15: - pc$1 = inst.Out; - /* goto CheckAndLoop */ $s = 4; continue; - $s = 18; continue; - /* } else if (_1 === (4)) { */ case 16: - if (b.cap.$length === 0) { - $s = -1; return true; - } - if (b.cap.$length > 1) { - (x$13 = b.cap, (1 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 1] = pos$1)); - } - old = (x$14 = b.matchcap, (1 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 1])); - if ((old === -1) || (longest && pos$1 > 0 && pos$1 > old)) { - $copySlice(b.matchcap, b.cap); - } - if (!longest) { - $s = -1; return true; - } - if (pos$1 === b.end) { - $s = -1; return true; - } - /* continue; */ $s = 1; continue; - $s = 18; continue; - /* } else { */ case 17: - $panic(new $String("bad inst")); - /* } */ case 18: - case 5: - /* } */ $s = 1; continue; case 2: - $s = -1; return longest && b.matchcap.$length > 1 && (x$15 = b.matchcap, (1 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 1])) >= 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.tryBacktrack }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.arg = arg; $f.b = b; $f.flag = flag; $f.i = i; $f.inst = inst; $f.l = l; $f.longest = longest; $f.old = old; $f.pc = pc; $f.pc$1 = pc$1; $f.pos = pos; $f.pos$1 = pos$1; $f.r = r; $f.r$1 = r$1; $f.r$2 = r$2; $f.r$3 = r$3; $f.re = re; $f.width = width; $f.width$1 = width$1; $f.width$2 = width$2; $f.width$3 = width$3; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.tryBacktrack = function(b, i, pc, pos) { return this.$val.tryBacktrack(b, i, pc, pos); }; - Regexp.ptr.prototype.backtrack = function(ib, is, pos, ncap, dstCap) { - var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, advance, b, dstCap, end, i, ib, is, ncap, pos, re, startCond, width, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; advance = $f.advance; b = $f.b; dstCap = $f.dstCap; end = $f.end; i = $f.i; ib = $f.ib; is = $f.is; ncap = $f.ncap; pos = $f.pos; re = $f.re; startCond = $f.startCond; width = $f.width; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - startCond = re.cond; - if (startCond === 255) { - $s = -1; return sliceType$3.nil; - } - if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { - $s = -1; return sliceType$3.nil; - } - _r = newBitState(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - b = _r; - _tuple = b.inputs.init($ifaceNil, ib, is); - i = _tuple[0]; - end = _tuple[1]; - b.reset(re.prog, end, ncap); - /* */ if (!((((startCond & 4) >>> 0) === 0))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!((((startCond & 4) >>> 0) === 0))) { */ case 2: - if (b.cap.$length > 0) { - (x = b.cap, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = pos)); - } - _r$1 = re.tryBacktrack(b, i, ((re.prog.Start >>> 0)), pos); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (!_r$1) { */ case 5: - freeBitState(b); - $s = -1; return sliceType$3.nil; - /* } */ case 6: - $s = 4; continue; - /* } else { */ case 3: - width = -1; - /* while (true) { */ case 8: - /* if (!(pos <= end && !((width === 0)))) { break; } */ if(!(pos <= end && !((width === 0)))) { $s = 9; continue; } - /* */ if (re.prefix.length > 0) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (re.prefix.length > 0) { */ case 10: - _r$2 = i.index(re, pos); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - advance = _r$2; - if (advance < 0) { - freeBitState(b); - $s = -1; return sliceType$3.nil; - } - pos = pos + (advance) >> 0; - /* } */ case 11: - if (b.cap.$length > 0) { - (x$1 = b.cap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = pos)); - } - _r$3 = re.tryBacktrack(b, i, ((re.prog.Start >>> 0)), pos); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (_r$3) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (_r$3) { */ case 13: - /* goto Match */ $s = 16; continue; - /* } */ case 14: - _r$4 = i.step(pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple$1 = _r$4; - width = _tuple$1[1]; - pos = pos + (width) >> 0; - /* } */ $s = 8; continue; case 9: - freeBitState(b); - $s = -1; return sliceType$3.nil; - /* } */ case 4: - /* Match: */ case 16: - dstCap = $appendSlice(dstCap, b.matchcap); - freeBitState(b); - $s = -1; return dstCap; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.backtrack }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.advance = advance; $f.b = b; $f.dstCap = dstCap; $f.end = end; $f.i = i; $f.ib = ib; $f.is = is; $f.ncap = ncap; $f.pos = pos; $f.re = re; $f.startCond = startCond; $f.width = width; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.backtrack = function(ib, is, pos, ncap, dstCap) { return this.$val.backtrack(ib, is, pos, ncap, dstCap); }; - inputs.ptr.prototype.newBytes = function(b) { - var b, i; - i = this; - i.bytes.str = b; - return i.bytes; - }; - inputs.prototype.newBytes = function(b) { return this.$val.newBytes(b); }; - inputs.ptr.prototype.newString = function(s) { - var i, s; - i = this; - i.string.str = s; - return i.string; - }; - inputs.prototype.newString = function(s) { return this.$val.newString(s); }; - inputs.ptr.prototype.newReader = function(r) { - var i, r; - i = this; - i.reader.r = r; - i.reader.atEOT = false; - i.reader.pos = 0; - return i.reader; - }; - inputs.prototype.newReader = function(r) { return this.$val.newReader(r); }; - inputs.ptr.prototype.clear = function() { - var i; - i = this; - if (!(i.bytes.str === sliceType$5.nil)) { - i.bytes.str = sliceType$5.nil; - } else if (!($interfaceIsEqual(i.reader.r, $ifaceNil))) { - i.reader.r = $ifaceNil; - } else { - i.string.str = ""; - } - }; - inputs.prototype.clear = function() { return this.$val.clear(); }; - inputs.ptr.prototype.init = function(r, b, s) { - var b, i, r, s; - i = this; - if (!($interfaceIsEqual(r, $ifaceNil))) { - return [i.newReader(r), 0]; - } - if (!(b === sliceType$5.nil)) { - return [i.newBytes(b), b.$length]; - } - return [i.newString(s), s.length]; - }; - inputs.prototype.init = function(r, b, s) { return this.$val.init(r, b, s); }; - machine.ptr.prototype.init = function(ncap) { - var _i, _ref, m, ncap, t; - m = this; - _ref = m.pool; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - t.cap = $subslice(t.cap, 0, ncap); - _i++; - } - m.matchcap = $subslice(m.matchcap, 0, ncap); - }; - machine.prototype.init = function(ncap) { return this.$val.init(ncap); }; - machine.ptr.prototype.alloc = function(i) { - var i, m, n, t, x, x$1; - m = this; - t = ptrType$1.nil; - n = m.pool.$length; - if (n > 0) { - t = (x = m.pool, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - m.pool = $subslice(m.pool, 0, (n - 1 >> 0)); - } else { - t = new thread.ptr(ptrType$2.nil, sliceType$3.nil); - t.cap = $makeSlice(sliceType$3, m.matchcap.$length, m.matchcap.$capacity); - } - t.inst = i; - return t; - }; - machine.prototype.alloc = function(i) { return this.$val.alloc(i); }; - newLazyFlag = function(r1, r2) { - var r1, r2, x, x$1, x$2; - return ((x = (x$1 = $shiftLeft64((new $Uint64(0, r1)), 32), x$2 = (new $Uint64(0, ((r2 >>> 0)))), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0)), new lazyFlag(x.$high, x.$low))); - }; - lazyFlag.prototype.match = function(op) { - var f, op, r1, r2; - f = this; - if (op === 0) { - return true; - } - r1 = (($shiftRightUint64(f, 32).$low >> 0)); - if (!((((op & 1) >>> 0) === 0))) { - if (!((r1 === 10)) && r1 >= 0) { - return false; - } - op = (op & ~(1)) << 24 >>> 24; - } - if (!((((op & 4) >>> 0) === 0))) { - if (r1 >= 0) { - return false; - } - op = (op & ~(4)) << 24 >>> 24; - } - if (op === 0) { - return true; - } - r2 = ((f.$low >> 0)); - if (!((((op & 2) >>> 0) === 0))) { - if (!((r2 === 10)) && r2 >= 0) { - return false; - } - op = (op & ~(2)) << 24 >>> 24; - } - if (!((((op & 8) >>> 0) === 0))) { - if (r2 >= 0) { - return false; - } - op = (op & ~(8)) << 24 >>> 24; - } - if (op === 0) { - return true; - } - if (!(syntax.IsWordChar(r1) === syntax.IsWordChar(r2))) { - op = (op & ~(16)) << 24 >>> 24; - } else { - op = (op & ~(32)) << 24 >>> 24; - } - return op === 0; - }; - $ptrType(lazyFlag).prototype.match = function(op) { return this.$get().match(op); }; - machine.ptr.prototype.match = function(i, pos) { - var _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, advance, flag, i, i$1, m, nextq, pos, r, r1, runq, startCond, width, width1, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; advance = $f.advance; flag = $f.flag; i = $f.i; i$1 = $f.i$1; m = $f.m; nextq = $f.nextq; pos = $f.pos; r = $f.r; r1 = $f.r1; runq = $f.runq; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - flag = [flag]; - m = this; - startCond = m.re.cond; - if (startCond === 255) { - $s = -1; return false; - } - m.matched = false; - _ref = m.matchcap; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i$1 = _i; - (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$1] = -1)); - _i++; - } - _tmp = m.q0; - _tmp$1 = m.q1; - runq = _tmp; - nextq = _tmp$1; - _tmp$2 = -1; - _tmp$3 = -1; - r = _tmp$2; - r1 = _tmp$3; - _tmp$4 = 0; - _tmp$5 = 0; - width = _tmp$4; - width1 = _tmp$5; - _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - r = _tuple[0]; - width = _tuple[1]; - /* */ if (!((r === -1))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!((r === -1))) { */ case 2: - _r$1 = i.step(pos + width >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - r1 = _tuple$1[0]; - width1 = _tuple$1[1]; - /* } */ case 3: - flag[0] = new lazyFlag(0, 0); - /* */ if (pos === 0) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (pos === 0) { */ case 5: - flag[0] = newLazyFlag(-1, r); - $s = 7; continue; - /* } else { */ case 6: - _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - flag[0] = _r$2; - /* } */ case 7: - /* while (true) { */ case 9: - /* */ if (runq.dense.$length === 0) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (runq.dense.$length === 0) { */ case 11: - if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { - /* break; */ $s = 10; continue; - } - if (m.matched) { - /* break; */ $s = 10; continue; - } - if (!(m.re.prefix.length > 0 && !((r1 === m.re.prefixRune)))) { _v = false; $s = 15; continue s; } - _r$3 = i.canCheckPrefix(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _v = _r$3; case 15: - /* */ if (_v) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (_v) { */ case 13: - _r$4 = i.index(m.re, pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - advance = _r$4; - if (advance < 0) { - /* break; */ $s = 10; continue; - } - pos = pos + (advance) >> 0; - _r$5 = i.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _tuple$2 = _r$5; - r = _tuple$2[0]; - width = _tuple$2[1]; - _r$6 = i.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _tuple$3 = _r$6; - r1 = _tuple$3[0]; - width1 = _tuple$3[1]; - /* } */ case 14: - /* } */ case 12: - if (!m.matched) { - if (m.matchcap.$length > 0) { - (x$1 = m.matchcap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = pos)); - } - m.add(runq, ((m.p.Start >>> 0)), pos, m.matchcap, (flag.$ptr || (flag.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag))), ptrType$1.nil); - } - flag[0] = newLazyFlag(r, r1); - m.step(runq, nextq, pos, pos + width >> 0, r, (flag.$ptr || (flag.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag)))); - if (width === 0) { - /* break; */ $s = 10; continue; - } - if ((m.matchcap.$length === 0) && m.matched) { - /* break; */ $s = 10; continue; - } - pos = pos + (width) >> 0; - _tmp$6 = r1; - _tmp$7 = width1; - r = _tmp$6; - width = _tmp$7; - /* */ if (!((r === -1))) { $s = 20; continue; } - /* */ $s = 21; continue; - /* if (!((r === -1))) { */ case 20: - _r$7 = i.step(pos + width >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _tuple$4 = _r$7; - r1 = _tuple$4[0]; - width1 = _tuple$4[1]; - /* } */ case 21: - _tmp$8 = nextq; - _tmp$9 = runq; - runq = _tmp$8; - nextq = _tmp$9; - /* } */ $s = 9; continue; case 10: - m.clear(nextq); - $s = -1; return m.matched; - /* */ } return; } if ($f === undefined) { $f = { $blk: machine.ptr.prototype.match }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.advance = advance; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.m = m; $f.nextq = nextq; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.runq = runq; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - machine.prototype.match = function(i, pos) { return this.$val.match(i, pos); }; - machine.ptr.prototype.clear = function(q) { - var _i, _ref, d, m, q; - m = this; - _ref = q.dense; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - d = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); - if (!(d.t === ptrType$1.nil)) { - m.pool = $append(m.pool, d.t); - } - _i++; - } - q.dense = $subslice(q.dense, 0, 0); - }; - machine.prototype.clear = function(q) { return this.$val.clear(q); }; - machine.ptr.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { - var _1, _i, _ref, add, c, d, d$1, i, j, longest, m, nextCond, nextPos, nextq, pos, runq, t, x, x$1, x$2, x$3, x$4, x$5; - m = this; - longest = m.re.longest; - j = 0; - while (true) { - if (!(j < runq.dense.$length)) { break; } - d = (x = runq.dense, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); - t = d.t; - if (t === ptrType$1.nil) { - j = j + (1) >> 0; - continue; - } - if (longest && m.matched && t.cap.$length > 0 && (x$1 = m.matchcap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) < (x$2 = t.cap, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) { - m.pool = $append(m.pool, t); - j = j + (1) >> 0; - continue; - } - i = t.inst; - add = false; - _1 = i.Op; - if (_1 === (4)) { - if (t.cap.$length > 0 && (!longest || !m.matched || (x$3 = m.matchcap, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1])) < pos)) { - (x$4 = t.cap, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1] = pos)); - $copySlice(m.matchcap, t.cap); - } - if (!longest) { - _ref = $subslice(runq.dense, (j + 1 >> 0)); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - d$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); - if (!(d$1.t === ptrType$1.nil)) { - m.pool = $append(m.pool, d$1.t); - } - _i++; - } - runq.dense = $subslice(runq.dense, 0, 0); - } - m.matched = true; - } else if (_1 === (7)) { - add = i.MatchRune(c); - } else if (_1 === (8)) { - add = c === (x$5 = i.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])); - } else if (_1 === (9)) { - add = true; - } else if (_1 === (10)) { - add = !((c === 10)); - } else { - $panic(new $String("bad inst")); - } - if (add) { - t = m.add(nextq, i.Out, nextPos, t.cap, nextCond, t); - } - if (!(t === ptrType$1.nil)) { - m.pool = $append(m.pool, t); - } - j = j + (1) >> 0; - } - runq.dense = $subslice(runq.dense, 0, 0); - }; - machine.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { return this.$val.step(runq, nextq, pos, nextPos, c, nextCond); }; - machine.ptr.prototype.add = function(q, pc, pos, cap, cond, t) { - var _1, cap, cond, d, i, j, j$1, m, opos, pc, pos, q, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s; - /* */ $s = 0; s: while (true) { switch ($s) { case 0: - m = this; - /* Again: */ case 1: - if (pc === 0) { - $s = -1; return t; - } - j = (x = q.sparse, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); - if (j < ((q.dense.$length >>> 0)) && ((x$1 = q.dense, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])).pc === pc)) { - $s = -1; return t; - } - j$1 = q.dense.$length; - q.dense = $subslice(q.dense, 0, (j$1 + 1 >> 0)); - d = (x$2 = q.dense, ((j$1 < 0 || j$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j$1])); - d.t = ptrType$1.nil; - d.pc = pc; - (x$3 = q.sparse, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc] = ((j$1 >>> 0)))); - i = (x$4 = m.p.Inst, ((pc < 0 || pc >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + pc])); - _1 = i.Op; - /* */ if (_1 === (5)) { $s = 3; continue; } - /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 4; continue; } - /* */ if (_1 === (3)) { $s = 5; continue; } - /* */ if (_1 === (6)) { $s = 6; continue; } - /* */ if (_1 === (2)) { $s = 7; continue; } - /* */ if ((_1 === (4)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10))) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (_1 === (5)) { */ case 3: - $s = 10; continue; - /* } else if ((_1 === (0)) || (_1 === (1))) { */ case 4: - t = m.add(q, i.Out, pos, cap, cond, t); - pc = i.Arg; - /* goto Again */ $s = 1; continue; - $s = 10; continue; - /* } else if (_1 === (3)) { */ case 5: - /* */ if (cond.match(((i.Arg << 24 >>> 24)))) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (cond.match(((i.Arg << 24 >>> 24)))) { */ case 11: - pc = i.Out; - /* goto Again */ $s = 1; continue; - /* } */ case 12: - $s = 10; continue; - /* } else if (_1 === (6)) { */ case 6: - pc = i.Out; - /* goto Again */ $s = 1; continue; - $s = 10; continue; - /* } else if (_1 === (2)) { */ case 7: - /* */ if (((i.Arg >> 0)) < cap.$length) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (((i.Arg >> 0)) < cap.$length) { */ case 13: - opos = (x$5 = i.Arg, ((x$5 < 0 || x$5 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$5])); - (x$6 = i.Arg, ((x$6 < 0 || x$6 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$6] = pos)); - m.add(q, i.Out, pos, cap, cond, ptrType$1.nil); - (x$7 = i.Arg, ((x$7 < 0 || x$7 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$7] = opos)); - $s = 15; continue; - /* } else { */ case 14: - pc = i.Out; - /* goto Again */ $s = 1; continue; - /* } */ case 15: - $s = 10; continue; - /* } else if ((_1 === (4)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10))) { */ case 8: - if (t === ptrType$1.nil) { - t = m.alloc(i); - } else { - t.inst = i; - } - if (cap.$length > 0 && !((x$8 = t.cap, $indexPtr(x$8.$array, x$8.$offset + 0, ptrType$4)) === $indexPtr(cap.$array, cap.$offset + 0, ptrType$4))) { - $copySlice(t.cap, cap); - } - d.t = t; - t = ptrType$1.nil; - $s = 10; continue; - /* } else { */ case 9: - $panic(new $String("unhandled")); - /* } */ case 10: - case 2: - $s = -1; return t; - /* */ } return; } - }; - machine.prototype.add = function(q, pc, pos, cap, cond, t) { return this.$val.add(q, pc, pos, cap, cond, t); }; - newOnePassMachine = function() { - var _r, _tuple, m, ok, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; m = $f.m; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = onePassPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = $assertType(_r, ptrType$5, true); - m = _tuple[0]; - ok = _tuple[1]; - if (!ok) { - m = new onePassMachine.ptr(new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)), sliceType$3.nil); - } - $s = -1; return m; - /* */ } return; } if ($f === undefined) { $f = { $blk: newOnePassMachine }; } $f._r = _r; $f._tuple = _tuple; $f.m = m; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f; - }; - freeOnePassMachine = function(m) { - var m; - m.inputs.clear(); - onePassPool.Put(m); - }; - Regexp.ptr.prototype.doOnePass = function(ir, ib, is, pos, ncap, dstCap) { - var _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, dstCap, flag, i, i$1, ib, inst, ir, is, m, matched, ncap, pc, pos, r, r1, re, startCond, width, width1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _v = $f._v; dstCap = $f.dstCap; flag = $f.flag; i = $f.i; i$1 = $f.i$1; ib = $f.ib; inst = $f.inst; ir = $f.ir; is = $f.is; m = $f.m; matched = $f.matched; ncap = $f.ncap; pc = $f.pc; pos = $f.pos; r = $f.r; r1 = $f.r1; re = $f.re; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - inst = [inst]; - re = this; - startCond = re.cond; - if (startCond === 255) { - $s = -1; return sliceType$3.nil; - } - _r = newOnePassMachine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - m = _r; - if (m.matchcap.$capacity < ncap) { - m.matchcap = $makeSlice(sliceType$3, ncap); - } else { - m.matchcap = $subslice(m.matchcap, 0, ncap); - } - matched = false; - _ref = m.matchcap; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - (x = m.matchcap, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = -1)); - _i++; - } - _tuple = m.inputs.init(ir, ib, is); - i$1 = _tuple[0]; - _tmp = -1; - _tmp$1 = -1; - r = _tmp; - r1 = _tmp$1; - _tmp$2 = 0; - _tmp$3 = 0; - width = _tmp$2; - width1 = _tmp$3; - _r$1 = i$1.step(pos); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - r = _tuple$1[0]; - width = _tuple$1[1]; - /* */ if (!((r === -1))) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!((r === -1))) { */ case 3: - _r$2 = i$1.step(pos + width >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$2 = _r$2; - r1 = _tuple$2[0]; - width1 = _tuple$2[1]; - /* } */ case 4: - flag = new lazyFlag(0, 0); - /* */ if (pos === 0) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (pos === 0) { */ case 6: - flag = newLazyFlag(-1, r); - $s = 8; continue; - /* } else { */ case 7: - _r$3 = i$1.context(pos); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - flag = _r$3; - /* } */ case 8: - pc = re.onepass.Start; - inst[0] = $clone((x$1 = re.onepass.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])), onePassInst); - if (!((pos === 0) && flag.match(((inst[0].Inst.Arg << 24 >>> 24))) && re.prefix.length > 0)) { _v = false; $s = 12; continue s; } - _r$4 = i$1.canCheckPrefix(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _v = _r$4; case 12: - /* */ if (_v) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (_v) { */ case 10: - _r$5 = i$1.hasPrefix(re); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - /* */ if (!_r$5) { $s = 14; continue; } - /* */ $s = 15; continue; - /* if (!_r$5) { */ case 14: - /* goto Return */ $s = 17; continue; - /* } */ case 15: - pos = pos + (re.prefix.length) >> 0; - _r$6 = i$1.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _tuple$3 = _r$6; - r = _tuple$3[0]; - width = _tuple$3[1]; - _r$7 = i$1.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _tuple$4 = _r$7; - r1 = _tuple$4[0]; - width1 = _tuple$4[1]; - _r$8 = i$1.context(pos); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - flag = _r$8; - pc = ((re.prefixEnd >> 0)); - /* } */ case 11: - /* while (true) { */ case 21: - onePassInst.copy(inst[0], (x$2 = re.onepass.Inst, ((pc < 0 || pc >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pc]))); - pc = ((inst[0].Inst.Out >> 0)); - _1 = inst[0].Inst.Op; - /* */ if (_1 === (4)) { $s = 24; continue; } - /* */ if (_1 === (7)) { $s = 25; continue; } - /* */ if (_1 === (8)) { $s = 26; continue; } - /* */ if (_1 === (9)) { $s = 27; continue; } - /* */ if (_1 === (10)) { $s = 28; continue; } - /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 29; continue; } - /* */ if (_1 === (5)) { $s = 30; continue; } - /* */ if (_1 === (6)) { $s = 31; continue; } - /* */ if (_1 === (3)) { $s = 32; continue; } - /* */ if (_1 === (2)) { $s = 33; continue; } - /* */ $s = 34; continue; - /* if (_1 === (4)) { */ case 24: - matched = true; - if (m.matchcap.$length > 0) { - (x$3 = m.matchcap, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = 0)); - (x$4 = m.matchcap, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1] = pos)); - } - /* goto Return */ $s = 17; continue; - $s = 35; continue; - /* } else if (_1 === (7)) { */ case 25: - /* */ if (!inst[0].Inst.MatchRune(r)) { $s = 36; continue; } - /* */ $s = 37; continue; - /* if (!inst[0].Inst.MatchRune(r)) { */ case 36: - /* goto Return */ $s = 17; continue; - /* } */ case 37: - $s = 35; continue; - /* } else if (_1 === (8)) { */ case 26: - /* */ if (!((r === (x$5 = inst[0].Inst.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))))) { $s = 38; continue; } - /* */ $s = 39; continue; - /* if (!((r === (x$5 = inst[0].Inst.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))))) { */ case 38: - /* goto Return */ $s = 17; continue; - /* } */ case 39: - $s = 35; continue; - /* } else if (_1 === (9)) { */ case 27: - $s = 35; continue; - /* } else if (_1 === (10)) { */ case 28: - /* */ if (r === 10) { $s = 40; continue; } - /* */ $s = 41; continue; - /* if (r === 10) { */ case 40: - /* goto Return */ $s = 17; continue; - /* } */ case 41: - $s = 35; continue; - /* } else if ((_1 === (0)) || (_1 === (1))) { */ case 29: - pc = ((onePassNext(inst[0], r) >> 0)); - /* continue; */ $s = 21; continue; - $s = 35; continue; - /* } else if (_1 === (5)) { */ case 30: - /* goto Return */ $s = 17; continue; - $s = 35; continue; - /* } else if (_1 === (6)) { */ case 31: - /* continue; */ $s = 21; continue; - $s = 35; continue; - /* } else if (_1 === (3)) { */ case 32: - /* */ if (!flag.match(((inst[0].Inst.Arg << 24 >>> 24)))) { $s = 42; continue; } - /* */ $s = 43; continue; - /* if (!flag.match(((inst[0].Inst.Arg << 24 >>> 24)))) { */ case 42: - /* goto Return */ $s = 17; continue; - /* } */ case 43: - /* continue; */ $s = 21; continue; - $s = 35; continue; - /* } else if (_1 === (2)) { */ case 33: - if (((inst[0].Inst.Arg >> 0)) < m.matchcap.$length) { - (x$6 = m.matchcap, x$7 = inst[0].Inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7] = pos)); - } - /* continue; */ $s = 21; continue; - $s = 35; continue; - /* } else { */ case 34: - $panic(new $String("bad inst")); - /* } */ case 35: - case 23: - if (width === 0) { - /* break; */ $s = 22; continue; - } - flag = newLazyFlag(r, r1); - pos = pos + (width) >> 0; - _tmp$4 = r1; - _tmp$5 = width1; - r = _tmp$4; - width = _tmp$5; - /* */ if (!((r === -1))) { $s = 44; continue; } - /* */ $s = 45; continue; - /* if (!((r === -1))) { */ case 44: - _r$9 = i$1.step(pos + width >> 0); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple$5 = _r$9; - r1 = _tuple$5[0]; - width1 = _tuple$5[1]; - /* } */ case 45: - /* } */ $s = 21; continue; case 22: - /* Return: */ case 17: - if (!matched) { - freeOnePassMachine(m); - $s = -1; return sliceType$3.nil; - } - dstCap = $appendSlice(dstCap, m.matchcap); - freeOnePassMachine(m); - $s = -1; return dstCap; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doOnePass }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._v = _v; $f.dstCap = dstCap; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.ib = ib; $f.inst = inst; $f.ir = ir; $f.is = is; $f.m = m; $f.matched = matched; $f.ncap = ncap; $f.pc = pc; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.re = re; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.doOnePass = function(ir, ib, is, pos, ncap, dstCap) { return this.$val.doOnePass(ir, ib, is, pos, ncap, dstCap); }; - Regexp.ptr.prototype.doMatch = function(r, b, s) { - var _r, b, r, re, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; r = $f.r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doExecute(r, b, s, 0, 0, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return !(_r === sliceType$3.nil); - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doMatch }; } $f._r = _r; $f.b = b; $f.r = r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.doMatch = function(r, b, s) { return this.$val.doMatch(r, b, s); }; - Regexp.ptr.prototype.doExecute = function(r, b, s, pos, ncap, dstCap) { - var _r, _r$1, _r$2, _r$3, _tuple, b, dstCap, i, m, ncap, pos, r, re, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; b = $f.b; dstCap = $f.dstCap; i = $f.i; m = $f.m; ncap = $f.ncap; pos = $f.pos; r = $f.r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - if (dstCap === sliceType$3.nil) { - dstCap = $subslice(new sliceType$3(arrayNoInts), 0, 0, 0); - } - /* */ if (!(re.onepass === ptrType$6.nil)) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!(re.onepass === ptrType$6.nil)) { */ case 1: - _r = re.doOnePass(r, b, s, pos, ncap, dstCap); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - /* */ if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.maxBitStateLen) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.maxBitStateLen) { */ case 4: - _r$1 = re.backtrack(b, s, pos, ncap, dstCap); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* } */ case 5: - _r$2 = re.get(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - m = _r$2; - _tuple = m.inputs.init(r, b, s); - i = _tuple[0]; - m.init(ncap); - _r$3 = m.match(i, pos); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if (!_r$3) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (!_r$3) { */ case 8: - re.put(m); - $s = -1; return sliceType$3.nil; - /* } */ case 9: - dstCap = $appendSlice(dstCap, m.matchcap); - re.put(m); - $s = -1; return dstCap; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doExecute }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.b = b; $f.dstCap = dstCap; $f.i = i; $f.m = m; $f.ncap = ncap; $f.pos = pos; $f.r = r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.doExecute = function(r, b, s, pos, ncap, dstCap) { return this.$val.doExecute(r, b, s, pos, ncap, dstCap); }; - onePassPrefix = function(p) { - var _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, buf, complete, i, p, pc, prefix, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; - prefix = ""; - complete = false; - pc = 0; - i = (x = p.Inst, x$1 = p.Start, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - if (!((i.Op === 3)) || ((((((i.Arg << 24 >>> 24))) & 4) >>> 0) === 0)) { - _tmp = ""; - _tmp$1 = i.Op === 4; - _tmp$2 = ((p.Start >>> 0)); - prefix = _tmp; - complete = _tmp$1; - pc = _tmp$2; - return [prefix, complete, pc]; - } - pc = i.Out; - i = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pc])); - while (true) { - if (!(i.Op === 6)) { break; } - pc = i.Out; - i = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc])); - } - if (!((iop(i) === 7)) || !((i.Rune.$length === 1))) { - _tmp$3 = ""; - _tmp$4 = i.Op === 4; - _tmp$5 = ((p.Start >>> 0)); - prefix = _tmp$3; - complete = _tmp$4; - pc = _tmp$5; - return [prefix, complete, pc]; - } - buf = new strings.Builder.ptr(ptrType$7.nil, sliceType$5.nil); - while (true) { - if (!((iop(i) === 7) && (i.Rune.$length === 1) && (((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { break; } - buf.WriteRune((x$4 = i.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0]))); - _tmp$6 = i.Out; - _tmp$7 = (x$5 = p.Inst, x$6 = i.Out, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])); - pc = _tmp$6; - i = _tmp$7; - } - if ((i.Op === 3) && !((((((i.Arg << 24 >>> 24)) & 8) >>> 0) === 0)) && ((x$7 = p.Inst, x$8 = i.Out, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8])).Op === 4)) { - complete = true; - } - _tmp$8 = buf.String(); - _tmp$9 = complete; - _tmp$10 = pc; - prefix = _tmp$8; - complete = _tmp$9; - pc = _tmp$10; - return [prefix, complete, pc]; - }; - onePassNext = function(i, r) { - var i, next, r, x; - next = i.Inst.MatchRunePos(r); - if (next >= 0) { - return (x = i.Next, ((next < 0 || next >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + next])); - } - if (i.Inst.Op === 1) { - return i.Inst.Out; - } - return 0; - }; - iop = function(i) { - var _1, i, op; - op = i.Op; - _1 = op; - if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { - op = 7; - } - return op; - }; - queueOnePass.ptr.prototype.empty = function() { - var q; - q = this; - return q.nextIndex >= q.size; - }; - queueOnePass.prototype.empty = function() { return this.$val.empty(); }; - queueOnePass.ptr.prototype.next = function() { - var n, q, x, x$1; - n = 0; - q = this; - n = (x = q.dense, x$1 = q.nextIndex, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); - q.nextIndex = q.nextIndex + (1) >>> 0; - return n; - }; - queueOnePass.prototype.next = function() { return this.$val.next(); }; - queueOnePass.ptr.prototype.clear = function() { - var q; - q = this; - q.size = 0; - q.nextIndex = 0; - }; - queueOnePass.prototype.clear = function() { return this.$val.clear(); }; - queueOnePass.ptr.prototype.contains = function(u) { - var q, u, x, x$1, x$2, x$3; - q = this; - if (u >= ((q.sparse.$length >>> 0))) { - return false; - } - return (x = q.sparse, ((u < 0 || u >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + u])) < q.size && ((x$1 = q.dense, x$2 = (x$3 = q.sparse, ((u < 0 || u >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + u])), ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === u); - }; - queueOnePass.prototype.contains = function(u) { return this.$val.contains(u); }; - queueOnePass.ptr.prototype.insert = function(u) { - var q, u; - q = this; - if (!q.contains(u)) { - q.insertNew(u); - } - }; - queueOnePass.prototype.insert = function(u) { return this.$val.insert(u); }; - queueOnePass.ptr.prototype.insertNew = function(u) { - var q, u, x, x$1, x$2; - q = this; - if (u >= ((q.sparse.$length >>> 0))) { - return; - } - (x = q.sparse, ((u < 0 || u >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + u] = q.size)); - (x$1 = q.dense, x$2 = q.size, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = u)); - q.size = q.size + (1) >>> 0; - }; - queueOnePass.prototype.insertNew = function(u) { return this.$val.insertNew(u); }; - newQueue = function(size) { - var q, size; - q = ptrType$8.nil; - q = new queueOnePass.ptr($makeSlice(sliceType$2, size), $makeSlice(sliceType$2, size), 0, 0); - return q; - }; - mergeRuneSets = function(leftRunes, rightRunes, leftPC, rightPC) { - var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, extend, ix, leftLen, leftPC, leftRunes, lx, merged, next, ok, rightLen, rightPC, rightRunes, rx, x, x$1, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; extend = $f.extend; ix = $f.ix; leftLen = $f.leftLen; leftPC = $f.leftPC; leftRunes = $f.leftRunes; lx = $f.lx; merged = $f.merged; next = $f.next; ok = $f.ok; rightLen = $f.rightLen; rightPC = $f.rightPC; rightRunes = $f.rightRunes; rx = $f.rx; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - ix = [ix]; - lx = [lx]; - merged = [merged]; - next = [next]; - ok = [ok]; - rx = [rx]; - leftLen = leftRunes.$get().$length; - rightLen = rightRunes.$get().$length; - if (!(((leftLen & 1) === 0)) || !(((rightLen & 1) === 0))) { - $panic(new $String("mergeRuneSets odd length []rune")); - } - _tmp = 0; - _tmp$1 = 0; - lx[0] = _tmp; - rx[0] = _tmp$1; - merged[0] = $makeSlice(sliceType$1, 0); - next[0] = $makeSlice(sliceType$2, 0); - ok[0] = true; - $deferred.push([(function(ix, lx, merged, next, ok, rx) { return function() { - if (!ok[0]) { - merged[0] = sliceType$1.nil; - next[0] = sliceType$2.nil; - } - }; })(ix, lx, merged, next, ok, rx), []]); - ix[0] = -1; - extend = (function(ix, lx, merged, next, ok, rx) { return function(newLow, newArray, pc) { - var newArray, newLow, pc, x, x$1, x$2, x$3, x$4, x$5; - if (ix[0] > 0 && (x = newArray.$get(), x$1 = newLow.$get(), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) <= ((ix[0] < 0 || ix[0] >= merged[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : merged[0].$array[merged[0].$offset + ix[0]])) { - return false; - } - merged[0] = $append(merged[0], (x$2 = newArray.$get(), x$3 = newLow.$get(), ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])), (x$4 = newArray.$get(), x$5 = newLow.$get() + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]))); - newLow.$set(newLow.$get() + (2) >> 0); - ix[0] = ix[0] + (2) >> 0; - next[0] = $append(next[0], pc); - return true; - }; })(ix, lx, merged, next, ok, rx); - /* while (true) { */ case 1: - /* if (!(lx[0] < leftLen || rx[0] < rightLen)) { break; } */ if(!(lx[0] < leftLen || rx[0] < rightLen)) { $s = 2; continue; } - /* */ if (rx[0] >= rightLen) { $s = 4; continue; } - /* */ if (lx[0] >= leftLen) { $s = 5; continue; } - /* */ if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + lx[0]]))) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (rx[0] >= rightLen) { */ case 4: - _r = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - ok[0] = _r; - $s = 8; continue; - /* } else if (lx[0] >= leftLen) { */ case 5: - _r$1 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - ok[0] = _r$1; - $s = 8; continue; - /* } else if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + lx[0]]))) { */ case 6: - _r$2 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - ok[0] = _r$2; - $s = 8; continue; - /* } else { */ case 7: - _r$3 = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - ok[0] = _r$3; - /* } */ case 8: - case 3: - if (!ok[0]) { - $s = -1; return [noRune, noNext]; - } - /* } */ $s = 1; continue; case 2: - $s = -1; return [merged[0], next[0]]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, sliceType$2.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mergeRuneSets }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.extend = extend; $f.ix = ix; $f.leftLen = leftLen; $f.leftPC = leftPC; $f.leftRunes = leftRunes; $f.lx = lx; $f.merged = merged; $f.next = next; $f.ok = ok; $f.rightLen = rightLen; $f.rightPC = rightPC; $f.rightRunes = rightRunes; $f.rx = rx; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - cleanupOnePass = function(prog, original) { - var _1, _i, _ref, instOriginal, ix, original, prog, x, x$1, x$2; - _ref = original.Inst; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - ix = _i; - instOriginal = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); - _1 = instOriginal.Op; - if ((_1 === (0)) || (_1 === (1)) || (_1 === (7))) { - } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (6)) || (_1 === (4)) || (_1 === (5))) { - (x = prog.Inst, ((ix < 0 || ix >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + ix])).Next = sliceType$2.nil; - } else if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { - (x$1 = prog.Inst, ((ix < 0 || ix >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + ix])).Next = sliceType$2.nil; - onePassInst.copy((x$2 = prog.Inst, ((ix < 0 || ix >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + ix])), new onePassInst.ptr($clone(instOriginal, syntax.Inst), sliceType$2.nil)); - } - _i++; - } - }; - onePassCopy = function(prog) { - var _1, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, i, inst, instAlt, instOther, p, p_A_Alt, p_A_Other, p_B_Alt, p_B_Other, patch, pc, prog, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - p = new onePassProg.ptr($makeSlice(sliceType$6, prog.Inst.$length), prog.Start, prog.NumCap); - _ref = prog.Inst; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); - onePassInst.copy((x = p.Inst, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), new onePassInst.ptr($clone(inst, syntax.Inst), sliceType$2.nil)); - _i++; - } - _ref$1 = p.Inst; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - pc = _i$1; - _1 = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])).Inst.Op; - if ((_1 === (0)) || (_1 === (1))) { - p_A_Other = (x$2 = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc])), (x$2.$ptr_Out || (x$2.$ptr_Out = new ptrType$9(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$2)))); - p_A_Alt = (x$4 = (x$5 = p.Inst, ((pc < 0 || pc >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + pc])), (x$4.$ptr_Arg || (x$4.$ptr_Arg = new ptrType$9(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$4)))); - instAlt = $clone((x$6 = p.Inst, x$7 = p_A_Alt.$get(), ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])), onePassInst); - if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { - _tmp = p_A_Other; - _tmp$1 = p_A_Alt; - p_A_Alt = _tmp; - p_A_Other = _tmp$1; - onePassInst.copy(instAlt, (x$8 = p.Inst, x$9 = p_A_Alt.$get(), ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9]))); - if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { - _i$1++; - continue; - } - } - instOther = $clone((x$10 = p.Inst, x$11 = p_A_Other.$get(), ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11])), onePassInst); - if ((instOther.Inst.Op === 0) || (instOther.Inst.Op === 1)) { - _i$1++; - continue; - } - p_B_Alt = (x$12 = (x$13 = p.Inst, x$14 = p_A_Alt.$get(), ((x$14 < 0 || x$14 >= x$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + x$14])), (x$12.$ptr_Out || (x$12.$ptr_Out = new ptrType$9(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$12)))); - p_B_Other = (x$15 = (x$16 = p.Inst, x$17 = p_A_Alt.$get(), ((x$17 < 0 || x$17 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + x$17])), (x$15.$ptr_Arg || (x$15.$ptr_Arg = new ptrType$9(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$15)))); - patch = false; - if (instAlt.Inst.Out === ((pc >>> 0))) { - patch = true; - } else if (instAlt.Inst.Arg === ((pc >>> 0))) { - patch = true; - _tmp$2 = p_B_Other; - _tmp$3 = p_B_Alt; - p_B_Alt = _tmp$2; - p_B_Other = _tmp$3; - } - if (patch) { - p_B_Alt.$set(p_A_Other.$get()); - } - if (p_A_Other.$get() === p_B_Alt.$get()) { - p_A_Alt.$set(p_B_Other.$get()); - } - } else { - _i$1++; - continue; - } - _i$1++; - } - return p; - }; - runeSlice.prototype.Len = function() { - var p; - p = this; - return p.$length; - }; - $ptrType(runeSlice).prototype.Len = function() { return this.$get().Len(); }; - runeSlice.prototype.Less = function(i, j) { - var i, j, p; - p = this; - return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); - }; - $ptrType(runeSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; - runeSlice.prototype.Swap = function(i, j) { - var _tmp, _tmp$1, i, j, p; - p = this; - _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); - _tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); - ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); - ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1); - }; - $ptrType(runeSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; - makeOnePass = function(p) { - var _i, _r, _ref, check, i, instQueue, m, onePassRunes, p, pc, visitQueue, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; check = $f.check; i = $f.i; instQueue = $f.instQueue; m = $f.m; onePassRunes = $f.onePassRunes; p = $f.p; pc = $f.pc; visitQueue = $f.visitQueue; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - check = [check]; - instQueue = [instQueue]; - onePassRunes = [onePassRunes]; - p = [p]; - visitQueue = [visitQueue]; - if (p[0].Inst.$length >= 1000) { - $s = -1; return ptrType$6.nil; - } - instQueue[0] = newQueue(p[0].Inst.$length); - visitQueue[0] = newQueue(p[0].Inst.$length); - check[0] = $throwNilPointerError; - onePassRunes[0] = $makeSlice(sliceType$7, p[0].Inst.$length); - check[0] = (function(check, instQueue, onePassRunes, p, visitQueue) { return function $b(pc, m) { - var _1, _i, _i$1, _i$2, _i$3, _i$4, _q, _q$1, _q$2, _q$3, _q$4, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _v, i, i$1, i$2, i$3, i$4, inst, m, matchArg, matchOut, ok, pc, r0, r0$1, r1, r1$1, runes, runes$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _q$4 = $f._q$4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _v = $f._v; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; inst = $f.inst; m = $f.m; matchArg = $f.matchArg; matchOut = $f.matchOut; ok = $f.ok; pc = $f.pc; r0 = $f.r0; r0$1 = $f.r0$1; r1 = $f.r1; r1$1 = $f.r1$1; runes = $f.runes; runes$1 = $f.runes$1; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - ok = false; - ok = true; - inst = (x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); - if (visitQueue[0].contains(pc)) { - $s = -1; return ok; - } - visitQueue[0].insert(pc); - _1 = inst.Inst.Op; - /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 2; continue; } - /* */ if ((_1 === (2)) || (_1 === (6))) { $s = 3; continue; } - /* */ if (_1 === (3)) { $s = 4; continue; } - /* */ if ((_1 === (4)) || (_1 === (5))) { $s = 5; continue; } - /* */ if (_1 === (7)) { $s = 6; continue; } - /* */ if (_1 === (8)) { $s = 7; continue; } - /* */ if (_1 === (9)) { $s = 8; continue; } - /* */ if (_1 === (10)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if ((_1 === (0)) || (_1 === (1))) { */ case 2: - _r = check[0](inst.Inst.Out, m); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - if (!(_r)) { _v = false; $s = 11; continue s; } - _r$1 = check[0](inst.Inst.Arg, m); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _v = _r$1; case 11: - ok = _v; - matchOut = (x$1 = inst.Inst.Out, ((x$1 < 0 || x$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$1])); - matchArg = (x$2 = inst.Inst.Arg, ((x$2 < 0 || x$2 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$2])); - if (matchOut && matchArg) { - ok = false; - /* break; */ $s = 1; continue; - } - if (matchArg) { - _tmp = inst.Inst.Arg; - _tmp$1 = inst.Inst.Out; - inst.Inst.Out = _tmp; - inst.Inst.Arg = _tmp$1; - _tmp$2 = matchArg; - _tmp$3 = matchOut; - matchOut = _tmp$2; - matchArg = _tmp$3; - } - if (matchOut) { - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = true); - inst.Inst.Op = 1; - } - _r$2 = mergeRuneSets($indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Out, ptrType$10), $indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Arg, ptrType$10), inst.Inst.Out, inst.Inst.Arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple = _r$2; - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = _tuple[0]); - inst.Next = _tuple[1]; - if (inst.Next.$length > 0 && ((x$3 = inst.Next, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) === 4294967295)) { - ok = false; - /* break; */ $s = 1; continue; - } - $s = 10; continue; - /* } else if ((_1 === (2)) || (_1 === (6))) { */ case 3: - _r$3 = check[0](inst.Inst.Out, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - ok = _r$3; - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (x$4 = inst.Inst.Out, ((x$4 < 0 || x$4 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$4]))); - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$5 = inst.Inst.Out, ((x$5 < 0 || x$5 >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + x$5])))); - inst.Next = $makeSlice(sliceType$2, ((_q = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); - _ref = inst.Next; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - (x$6 = inst.Next, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = inst.Inst.Out)); - _i++; - } - $s = 10; continue; - /* } else if (_1 === (3)) { */ case 4: - _r$4 = check[0](inst.Inst.Out, m); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - ok = _r$4; - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (x$7 = inst.Inst.Out, ((x$7 < 0 || x$7 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$7]))); - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$8 = inst.Inst.Out, ((x$8 < 0 || x$8 >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + x$8])))); - inst.Next = $makeSlice(sliceType$2, ((_q$1 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); - _ref$1 = inst.Next; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - i$1 = _i$1; - (x$9 = inst.Next, ((i$1 < 0 || i$1 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i$1] = inst.Inst.Out)); - _i$1++; - } - $s = 10; continue; - /* } else if ((_1 === (4)) || (_1 === (5))) { */ case 5: - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (inst.Inst.Op === 4)); - $s = 10; continue; - /* } else if (_1 === (7)) { */ case 6: - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); - if (inst.Next.$length > 0) { - /* break; */ $s = 1; continue; - } - instQueue[0].insert(inst.Inst.Out); - if (inst.Inst.Rune.$length === 0) { - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = new sliceType$1([])); - inst.Next = new sliceType$2([inst.Inst.Out]); - /* break; */ $s = 1; continue; - } - runes = $makeSlice(sliceType$1, 0); - /* */ if ((inst.Inst.Rune.$length === 1) && !((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { $s = 17; continue; } - /* */ $s = 18; continue; - /* if ((inst.Inst.Rune.$length === 1) && !((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { */ case 17: - r0 = (x$10 = inst.Inst.Rune, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])); - runes = $append(runes, r0, r0); - r1 = unicode.SimpleFold(r0); - while (true) { - if (!(!((r1 === r0)))) { break; } - runes = $append(runes, r1, r1); - r1 = unicode.SimpleFold(r1); - } - $r = sort.Sort(($subslice(new runeSlice(runes.$array), runes.$offset, runes.$offset + runes.$length))); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 19; continue; - /* } else { */ case 18: - runes = $appendSlice(runes, inst.Inst.Rune); - /* } */ case 19: - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes); - inst.Next = $makeSlice(sliceType$2, ((_q$2 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); - _ref$2 = inst.Next; - _i$2 = 0; - while (true) { - if (!(_i$2 < _ref$2.$length)) { break; } - i$2 = _i$2; - (x$11 = inst.Next, ((i$2 < 0 || i$2 >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + i$2] = inst.Inst.Out)); - _i$2++; - } - inst.Inst.Op = 7; - $s = 10; continue; - /* } else if (_1 === (8)) { */ case 7: - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); - if (inst.Next.$length > 0) { - /* break; */ $s = 1; continue; - } - instQueue[0].insert(inst.Inst.Out); - runes$1 = new sliceType$1([]); - /* */ if (!((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { $s = 21; continue; } - /* */ $s = 22; continue; - /* if (!((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { */ case 21: - r0$1 = (x$12 = inst.Inst.Rune, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0])); - runes$1 = $append(runes$1, r0$1, r0$1); - r1$1 = unicode.SimpleFold(r0$1); - while (true) { - if (!(!((r1$1 === r0$1)))) { break; } - runes$1 = $append(runes$1, r1$1, r1$1); - r1$1 = unicode.SimpleFold(r1$1); - } - $r = sort.Sort(($subslice(new runeSlice(runes$1.$array), runes$1.$offset, runes$1.$offset + runes$1.$length))); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 23; continue; - /* } else { */ case 22: - runes$1 = $append(runes$1, (x$13 = inst.Inst.Rune, (0 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 0])), (x$14 = inst.Inst.Rune, (0 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 0]))); - /* } */ case 23: - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes$1); - inst.Next = $makeSlice(sliceType$2, ((_q$3 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); - _ref$3 = inst.Next; - _i$3 = 0; - while (true) { - if (!(_i$3 < _ref$3.$length)) { break; } - i$3 = _i$3; - (x$15 = inst.Next, ((i$3 < 0 || i$3 >= x$15.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + i$3] = inst.Inst.Out)); - _i$3++; - } - inst.Inst.Op = 7; - $s = 10; continue; - /* } else if (_1 === (9)) { */ case 8: - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); - if (inst.Next.$length > 0) { - /* break; */ $s = 1; continue; - } - instQueue[0].insert(inst.Inst.Out); - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRune)); - inst.Next = new sliceType$2([inst.Inst.Out]); - $s = 10; continue; - /* } else if (_1 === (10)) { */ case 9: - ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); - if (inst.Next.$length > 0) { - /* break; */ $s = 1; continue; - } - instQueue[0].insert(inst.Inst.Out); - ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRuneNotNL)); - inst.Next = $makeSlice(sliceType$2, ((_q$4 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); - _ref$4 = inst.Next; - _i$4 = 0; - while (true) { - if (!(_i$4 < _ref$4.$length)) { break; } - i$4 = _i$4; - (x$16 = inst.Next, ((i$4 < 0 || i$4 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + i$4] = inst.Inst.Out)); - _i$4++; - } - /* } */ case 10: - case 1: - $s = -1; return ok; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._q$4 = _q$4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._v = _v; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.inst = inst; $f.m = m; $f.matchArg = matchArg; $f.matchOut = matchOut; $f.ok = ok; $f.pc = pc; $f.r0 = r0; $f.r0$1 = r0$1; $f.r1 = r1; $f.r1$1 = r1$1; $f.runes = runes; $f.runes$1 = runes$1; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f; - }; })(check, instQueue, onePassRunes, p, visitQueue); - instQueue[0].clear(); - instQueue[0].insert(((p[0].Start >>> 0))); - m = $makeSlice(sliceType$8, p[0].Inst.$length); - /* while (true) { */ case 1: - /* if (!(!instQueue[0].empty())) { break; } */ if(!(!instQueue[0].empty())) { $s = 2; continue; } - visitQueue[0].clear(); - pc = instQueue[0].next(); - _r = check[0](pc, m); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - /* */ if (!_r) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!_r) { */ case 3: - p[0] = ptrType$6.nil; - /* break; */ $s = 2; continue; - /* } */ case 4: - /* } */ $s = 1; continue; case 2: - if (!(p[0] === ptrType$6.nil)) { - _ref = p[0].Inst; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - (x = p[0].Inst, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).Inst.Rune = ((i < 0 || i >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + i]); - _i++; - } - } - $s = -1; return p[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: makeOnePass }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.check = check; $f.i = i; $f.instQueue = instQueue; $f.m = m; $f.onePassRunes = onePassRunes; $f.p = p; $f.pc = pc; $f.visitQueue = visitQueue; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - compileOnePass = function(prog) { - var _1, _i, _r, _ref, inst, opOut, p, prog, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _ref = $f._ref; inst = $f.inst; opOut = $f.opOut; p = $f.p; prog = $f.prog; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - p = ptrType$6.nil; - if (prog.Start === 0) { - p = ptrType$6.nil; - $s = -1; return p; - } - if (!(((x = prog.Inst, x$1 = prog.Start, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op === 3)) || !(((((((x$2 = prog.Inst, x$3 = prog.Start, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])).Arg << 24 >>> 24)) & 4) >>> 0) === 4))) { - p = ptrType$6.nil; - $s = -1; return p; - } - _ref = prog.Inst; - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } - inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); - opOut = (x$4 = prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).Op; - _1 = inst.Op; - if ((_1 === (0)) || (_1 === (1))) { - if ((opOut === 4) || ((x$6 = prog.Inst, x$7 = inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])).Op === 4)) { - p = ptrType$6.nil; - $s = -1; return p; - } - } else if (_1 === (3)) { - if (opOut === 4) { - if (((((inst.Arg << 24 >>> 24)) & 8) >>> 0) === 8) { - _i++; - /* continue; */ $s = 1; continue; - } - p = ptrType$6.nil; - $s = -1; return p; - } - } else if (opOut === 4) { - p = ptrType$6.nil; - $s = -1; return p; - } - _i++; - /* } */ $s = 1; continue; case 2: - p = onePassCopy(prog); - _r = makeOnePass(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - p = _r; - if (!(p === ptrType$6.nil)) { - cleanupOnePass(p, prog); - } - p = p; - $s = -1; return p; - /* */ } return; } if ($f === undefined) { $f = { $blk: compileOnePass }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.inst = inst; $f.opOut = opOut; $f.p = p; $f.prog = prog; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.ptr.prototype.String = function() { - var re; - re = this; - return re.expr; - }; - Regexp.prototype.String = function() { return this.$val.String(); }; - Regexp.ptr.prototype.Copy = function() { - var re, re2; - re = this; - re2 = $clone(re, Regexp); - return re2; - }; - Regexp.prototype.Copy = function() { return this.$val.Copy(); }; - Compile = function(expr) { - var _r, expr, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; expr = $f.expr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = compile(expr, 212, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Compile }; } $f._r = _r; $f.expr = expr; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Compile = Compile; - Regexp.ptr.prototype.Longest = function() { - var re; - re = this; - re.longest = true; - }; - Regexp.prototype.Longest = function() { return this.$val.Longest(); }; - compile = function(expr, mode, longest) { - var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, capNames, err, expr, i, longest, matchcap, maxCap, mode, n, prog, re, regexp, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; capNames = $f.capNames; err = $f.err; expr = $f.expr; i = $f.i; longest = $f.longest; matchcap = $f.matchcap; maxCap = $f.maxCap; mode = $f.mode; n = $f.n; prog = $f.prog; re = $f.re; regexp = $f.regexp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = syntax.Parse(expr, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - re = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$11.nil, err]; - } - maxCap = re.MaxCap(); - capNames = re.CapNames(); - re = re.Simplify(); - _tuple$1 = syntax.Compile(re); - prog = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$11.nil, err]; - } - matchcap = prog.NumCap; - if (matchcap < 2) { - matchcap = 2; - } - _r$1 = compileOnePass(prog); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - regexp = new Regexp.ptr(expr, prog, _r$1, maxCap, 0, capNames, "", sliceType$5.nil, 0, 0, 0, matchcap, false, prog.StartCond(), longest); - if (regexp.onepass === ptrType$6.nil) { - _tuple$2 = prog.Prefix(); - regexp.prefix = _tuple$2[0]; - regexp.prefixComplete = _tuple$2[1]; - regexp.maxBitStateLen = maxBitStateLen(prog); - } else { - _tuple$3 = onePassPrefix(prog); - regexp.prefix = _tuple$3[0]; - regexp.prefixComplete = _tuple$3[1]; - regexp.prefixEnd = _tuple$3[2]; - } - if (!(regexp.prefix === "")) { - regexp.prefixBytes = (new sliceType$5($stringToBytes(regexp.prefix))); - _tuple$4 = utf8.DecodeRuneInString(regexp.prefix); - regexp.prefixRune = _tuple$4[0]; - } - n = prog.Inst.$length; - i = 0; - while (true) { - if (!(!((((i < 0 || i >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[i]) === 0)) && ((i < 0 || i >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[i]) < n)) { break; } - i = i + (1) >> 0; - } - regexp.mpool = i; - $s = -1; return [regexp, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: compile }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.capNames = capNames; $f.err = err; $f.expr = expr; $f.i = i; $f.longest = longest; $f.matchcap = matchcap; $f.maxCap = maxCap; $f.mode = mode; $f.n = n; $f.prog = prog; $f.re = re; $f.regexp = regexp; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.ptr.prototype.get = function() { - var _i, _r, _ref, _tuple, m, n, ok, re, t, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; m = $f.m; n = $f.n; ok = $f.ok; re = $f.re; t = $f.t; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = (x = re.mpool, ((x < 0 || x >= matchPool.length) ? ($throwRuntimeError("index out of range"), undefined) : matchPool[x])).Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = $assertType(_r, ptrType$13, true); - m = _tuple[0]; - ok = _tuple[1]; - if (!ok) { - m = new machine.ptr(ptrType$11.nil, ptrType$12.nil, new queue.ptr(sliceType$2.nil, sliceType$10.nil), new queue.ptr(sliceType$2.nil, sliceType$10.nil), sliceType$11.nil, false, sliceType$3.nil, new inputs.ptr(new inputBytes.ptr(sliceType$5.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0))); - } - m.re = re; - m.p = re.prog; - if (m.matchcap.$capacity < re.matchcap) { - m.matchcap = $makeSlice(sliceType$3, re.matchcap); - _ref = m.pool; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - t.cap = $makeSlice(sliceType$3, re.matchcap); - _i++; - } - } - n = (x$1 = re.mpool, ((x$1 < 0 || x$1 >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[x$1])); - if (n === 0) { - n = re.prog.Inst.$length; - } - if (m.q0.sparse.$length < n) { - queue.copy(m.q0, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$10, 0, n))); - queue.copy(m.q1, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$10, 0, n))); - } - $s = -1; return m; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.get }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.m = m; $f.n = n; $f.ok = ok; $f.re = re; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.get = function() { return this.$val.get(); }; - Regexp.ptr.prototype.put = function(m) { - var m, re, x; - re = this; - m.re = ptrType$11.nil; - m.p = ptrType$12.nil; - m.inputs.clear(); - (x = re.mpool, ((x < 0 || x >= matchPool.length) ? ($throwRuntimeError("index out of range"), undefined) : matchPool[x])).Put(m); - }; - Regexp.prototype.put = function(m) { return this.$val.put(m); }; - MustCompile = function(str) { - var _r, _r$1, _tuple, err, regexp, str, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; regexp = $f.regexp; str = $f.str; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = Compile(str); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - regexp = _tuple[0]; - err = _tuple[1]; - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: - _r$1 = err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $panic(new $String("regexp: Compile(" + quote(str) + "): " + _r$1)); - /* } */ case 3: - $s = -1; return regexp; - /* */ } return; } if ($f === undefined) { $f = { $blk: MustCompile }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.regexp = regexp; $f.str = str; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.MustCompile = MustCompile; - quote = function(s) { - var s; - if (strconv.CanBackquote(s)) { - return "`" + s + "`"; - } - return strconv.Quote(s); - }; - Regexp.ptr.prototype.NumSubexp = function() { - var re; - re = this; - return re.numSubexp; - }; - Regexp.prototype.NumSubexp = function() { return this.$val.NumSubexp(); }; - Regexp.ptr.prototype.SubexpNames = function() { - var re; - re = this; - return re.subexpNames; - }; - Regexp.prototype.SubexpNames = function() { return this.$val.SubexpNames(); }; - inputString.ptr.prototype.step = function(pos) { - var c, i, pos; - i = this; - if (pos < i.str.length) { - c = i.str.charCodeAt(pos); - if (c < 128) { - return [((c >> 0)), 1]; - } - return utf8.DecodeRuneInString($substring(i.str, pos)); - } - return [-1, 0]; - }; - inputString.prototype.step = function(pos) { return this.$val.step(pos); }; - inputString.ptr.prototype.canCheckPrefix = function() { - var i; - i = this; - return true; - }; - inputString.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; - inputString.ptr.prototype.hasPrefix = function(re) { - var i, re; - i = this; - return strings.HasPrefix(i.str, re.prefix); - }; - inputString.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; - inputString.ptr.prototype.index = function(re, pos) { - var i, pos, re; - i = this; - return strings.Index($substring(i.str, pos), re.prefix); - }; - inputString.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; - inputString.ptr.prototype.context = function(pos) { - var _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2; - i = this; - _tmp = -1; - _tmp$1 = -1; - r1 = _tmp; - r2 = _tmp$1; - if ((((pos - 1 >> 0) >>> 0)) < ((i.str.length >>> 0))) { - r1 = ((i.str.charCodeAt((pos - 1 >> 0)) >> 0)); - if (r1 >= 128) { - _tuple = utf8.DecodeLastRuneInString($substring(i.str, 0, pos)); - r1 = _tuple[0]; - } - } - if (((pos >>> 0)) < ((i.str.length >>> 0))) { - r2 = ((i.str.charCodeAt(pos) >> 0)); - if (r2 >= 128) { - _tuple$1 = utf8.DecodeRuneInString($substring(i.str, pos)); - r2 = _tuple$1[0]; - } - } - return newLazyFlag(r1, r2); - }; - inputString.prototype.context = function(pos) { return this.$val.context(pos); }; - inputBytes.ptr.prototype.step = function(pos) { - var c, i, pos, x; - i = this; - if (pos < i.str.$length) { - c = (x = i.str, ((pos < 0 || pos >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pos])); - if (c < 128) { - return [((c >> 0)), 1]; - } - return utf8.DecodeRune($subslice(i.str, pos)); - } - return [-1, 0]; - }; - inputBytes.prototype.step = function(pos) { return this.$val.step(pos); }; - inputBytes.ptr.prototype.canCheckPrefix = function() { - var i; - i = this; - return true; - }; - inputBytes.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; - inputBytes.ptr.prototype.hasPrefix = function(re) { - var i, re; - i = this; - return bytes.HasPrefix(i.str, re.prefixBytes); - }; - inputBytes.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; - inputBytes.ptr.prototype.index = function(re, pos) { - var i, pos, re; - i = this; - return bytes.Index($subslice(i.str, pos), re.prefixBytes); - }; - inputBytes.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; - inputBytes.ptr.prototype.context = function(pos) { - var _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2, x, x$1, x$2; - i = this; - _tmp = -1; - _tmp$1 = -1; - r1 = _tmp; - r2 = _tmp$1; - if ((((pos - 1 >> 0) >>> 0)) < ((i.str.$length >>> 0))) { - r1 = (((x = i.str, x$1 = pos - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0)); - if (r1 >= 128) { - _tuple = utf8.DecodeLastRune($subslice(i.str, 0, pos)); - r1 = _tuple[0]; - } - } - if (((pos >>> 0)) < ((i.str.$length >>> 0))) { - r2 = (((x$2 = i.str, ((pos < 0 || pos >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pos])) >> 0)); - if (r2 >= 128) { - _tuple$1 = utf8.DecodeRune($subslice(i.str, pos)); - r2 = _tuple$1[0]; - } - } - return newLazyFlag(r1, r2); - }; - inputBytes.prototype.context = function(pos) { return this.$val.context(pos); }; - inputReader.ptr.prototype.step = function(pos) { - var _r, _tuple, err, i, pos, r, w, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; i = $f.i; pos = $f.pos; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - i = this; - if (!i.atEOT && !((pos === i.pos))) { - $s = -1; return [-1, 0]; - } - _r = i.r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - r = _tuple[0]; - w = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - i.atEOT = true; - $s = -1; return [-1, 0]; - } - i.pos = i.pos + (w) >> 0; - $s = -1; return [r, w]; - /* */ } return; } if ($f === undefined) { $f = { $blk: inputReader.ptr.prototype.step }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.i = i; $f.pos = pos; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f; - }; - inputReader.prototype.step = function(pos) { return this.$val.step(pos); }; - inputReader.ptr.prototype.canCheckPrefix = function() { - var i; - i = this; - return false; - }; - inputReader.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); }; - inputReader.ptr.prototype.hasPrefix = function(re) { - var i, re; - i = this; - return false; - }; - inputReader.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); }; - inputReader.ptr.prototype.index = function(re, pos) { - var i, pos, re; - i = this; - return -1; - }; - inputReader.prototype.index = function(re, pos) { return this.$val.index(re, pos); }; - inputReader.ptr.prototype.context = function(pos) { - var i, pos; - i = this; - return new lazyFlag(0, 0); - }; - inputReader.prototype.context = function(pos) { return this.$val.context(pos); }; - Regexp.ptr.prototype.LiteralPrefix = function() { - var _tmp, _tmp$1, complete, prefix, re; - prefix = ""; - complete = false; - re = this; - _tmp = re.prefix; - _tmp$1 = re.prefixComplete; - prefix = _tmp; - complete = _tmp$1; - return [prefix, complete]; - }; - Regexp.prototype.LiteralPrefix = function() { return this.$val.LiteralPrefix(); }; - Regexp.ptr.prototype.MatchReader = function(r) { - var _r, r, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doMatch(r, sliceType$5.nil, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchReader }; } $f._r = _r; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.MatchReader = function(r) { return this.$val.MatchReader(r); }; - Regexp.ptr.prototype.MatchString = function(s) { - var _r, re, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doMatch($ifaceNil, sliceType$5.nil, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchString }; } $f._r = _r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.MatchString = function(s) { return this.$val.MatchString(s); }; - Regexp.ptr.prototype.Match = function(b) { - var _r, b, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doMatch($ifaceNil, b, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Match }; } $f._r = _r; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.Match = function(b) { return this.$val.Match(b); }; - Regexp.ptr.prototype.ReplaceAllString = function(src, repl) { - var _r, b, n, re, repl, src, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = [re]; - repl = [repl]; - src = [src]; - re[0] = this; - n = 2; - if (strings.Contains(repl[0], "$")) { - n = $imul(2, ((re[0].numSubexp + 1 >> 0))); - } - _r = re[0].replaceAll(sliceType$5.nil, src[0], n, (function(re, repl, src) { return function(dst, match) { - var dst, match; - return re[0].expand(dst, repl[0], sliceType$5.nil, src[0], match); - }; })(re, repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - b = _r; - $s = -1; return ($bytesToString(b)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllString }; } $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.ReplaceAllString = function(src, repl) { return this.$val.ReplaceAllString(src, repl); }; - Regexp.ptr.prototype.ReplaceAllLiteralString = function(src, repl) { - var _r, re, repl, src, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - repl = [repl]; - re = this; - _r = re.replaceAll(sliceType$5.nil, src, 2, (function(repl) { return function(dst, match) { - var dst, match; - return $appendSlice(dst, repl[0]); - }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return ($bytesToString(_r)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteralString }; } $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.ReplaceAllLiteralString = function(src, repl) { return this.$val.ReplaceAllLiteralString(src, repl); }; - Regexp.ptr.prototype.ReplaceAllStringFunc = function(src, repl) { - var _r, b, re, repl, src, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - repl = [repl]; - src = [src]; - re = this; - _r = re.replaceAll(sliceType$5.nil, src[0], 2, (function(repl, src) { return function $b(dst, match) { - var _arg, _arg$1, _r, dst, match, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; dst = $f.dst; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = dst; - _r = repl[0]($substring(src[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = _r; - $s = -1; return $appendSlice(_arg, _arg$1); - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f; - }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - b = _r; - $s = -1; return ($bytesToString(b)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllStringFunc }; } $f._r = _r; $f.b = b; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.ReplaceAllStringFunc = function(src, repl) { return this.$val.ReplaceAllStringFunc(src, repl); }; - Regexp.ptr.prototype.replaceAll = function(bsrc, src, nmatch, repl) { - var _r, _r$1, _tuple, _tuple$1, a, bsrc, buf, dstCap, endPos, lastMatchEnd, nmatch, re, repl, searchPos, src, width, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; bsrc = $f.bsrc; buf = $f.buf; dstCap = $f.dstCap; endPos = $f.endPos; lastMatchEnd = $f.lastMatchEnd; nmatch = $f.nmatch; re = $f.re; repl = $f.repl; searchPos = $f.searchPos; src = $f.src; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - lastMatchEnd = 0; - searchPos = 0; - buf = sliceType$5.nil; - endPos = 0; - if (!(bsrc === sliceType$5.nil)) { - endPos = bsrc.$length; - } else { - endPos = src.length; - } - if (nmatch > re.prog.NumCap) { - nmatch = re.prog.NumCap; - } - dstCap = arrayType$3.zero(); - /* while (true) { */ case 1: - /* if (!(searchPos <= endPos)) { break; } */ if(!(searchPos <= endPos)) { $s = 2; continue; } - _r = re.doExecute($ifaceNil, bsrc, src, searchPos, nmatch, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a.$length === 0) { - /* break; */ $s = 2; continue; - } - if (!(bsrc === sliceType$5.nil)) { - buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]))); - } else { - buf = $appendSlice(buf, $substring(src, lastMatchEnd, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]))); - } - /* */ if ((1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === 0)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if ((1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === 0)) { */ case 4: - _r$1 = repl(buf, a); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - buf = _r$1; - /* } */ case 5: - lastMatchEnd = (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]); - width = 0; - if (!(bsrc === sliceType$5.nil)) { - _tuple = utf8.DecodeRune($subslice(bsrc, searchPos)); - width = _tuple[1]; - } else { - _tuple$1 = utf8.DecodeRuneInString($substring(src, searchPos)); - width = _tuple$1[1]; - } - if ((searchPos + width >> 0) > (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])) { - searchPos = searchPos + (width) >> 0; - } else if ((searchPos + 1 >> 0) > (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])) { - searchPos = searchPos + (1) >> 0; - } else { - searchPos = (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]); - } - /* } */ $s = 1; continue; case 2: - if (!(bsrc === sliceType$5.nil)) { - buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd)); - } else { - buf = $appendSlice(buf, $substring(src, lastMatchEnd)); - } - $s = -1; return buf; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.replaceAll }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.bsrc = bsrc; $f.buf = buf; $f.dstCap = dstCap; $f.endPos = endPos; $f.lastMatchEnd = lastMatchEnd; $f.nmatch = nmatch; $f.re = re; $f.repl = repl; $f.searchPos = searchPos; $f.src = src; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.replaceAll = function(bsrc, src, nmatch, repl) { return this.$val.replaceAll(bsrc, src, nmatch, repl); }; - Regexp.ptr.prototype.ReplaceAll = function(src, repl) { - var _r, b, n, re, repl, src, srepl, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; srepl = $f.srepl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = [re]; - repl = [repl]; - src = [src]; - srepl = [srepl]; - re[0] = this; - n = 2; - if (bytes.IndexByte(repl[0], 36) >= 0) { - n = $imul(2, ((re[0].numSubexp + 1 >> 0))); - } - srepl[0] = ""; - _r = re[0].replaceAll(src[0], "", n, (function(re, repl, src, srepl) { return function(dst, match) { - var dst, match; - if (!((srepl[0].length === repl[0].$length))) { - srepl[0] = ($bytesToString(repl[0])); - } - return re[0].expand(dst, srepl[0], src[0], "", match); - }; })(re, repl, src, srepl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - b = _r; - $s = -1; return b; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAll }; } $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.srepl = srepl; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.ReplaceAll = function(src, repl) { return this.$val.ReplaceAll(src, repl); }; - Regexp.ptr.prototype.ReplaceAllLiteral = function(src, repl) { - var _r, re, repl, src, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - repl = [repl]; - re = this; - _r = re.replaceAll(src, "", 2, (function(repl) { return function(dst, match) { - var dst, match; - return $appendSlice(dst, repl[0]); - }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteral }; } $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.ReplaceAllLiteral = function(src, repl) { return this.$val.ReplaceAllLiteral(src, repl); }; - Regexp.ptr.prototype.ReplaceAllFunc = function(src, repl) { - var _r, re, repl, src, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - repl = [repl]; - src = [src]; - re = this; - _r = re.replaceAll(src[0], "", 2, (function(repl, src) { return function $b(dst, match) { - var _arg, _arg$1, _r, dst, match, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; dst = $f.dst; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _arg = dst; - _r = repl[0]($subslice(src[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = _r; - $s = -1; return $appendSlice(_arg, _arg$1); - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f; - }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllFunc }; } $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.ReplaceAllFunc = function(src, repl) { return this.$val.ReplaceAllFunc(src, repl); }; - init = function() { - var _i, _index, _q, _r, _ref, b, y; - _ref = (new sliceType$5($stringToBytes("\\.+*?()|[]{}^$"))); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - _index = (_r = b % 16, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); - ((_index < 0 || _index >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[_index] = ((((_index < 0 || _index >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[_index]) | (((y = ((_q = b / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0)); - _i++; - } - }; - Regexp.ptr.prototype.pad = function(a) { - var a, n, re; - re = this; - if (a === sliceType$3.nil) { - return sliceType$3.nil; - } - n = $imul(((1 + re.numSubexp >> 0)), 2); - while (true) { - if (!(a.$length < n)) { break; } - a = $append(a, -1); - } - return a; - }; - Regexp.prototype.pad = function(a) { return this.$val.pad(a); }; - Regexp.ptr.prototype.allMatches = function(s, b, n, deliver) { - var _r, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, accept, b, deliver, end, i, matches, n, pos, prevMatchEnd, re, s, width, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; accept = $f.accept; b = $f.b; deliver = $f.deliver; end = $f.end; i = $f.i; matches = $f.matches; n = $f.n; pos = $f.pos; prevMatchEnd = $f.prevMatchEnd; re = $f.re; s = $f.s; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - end = 0; - if (b === sliceType$5.nil) { - end = s.length; - } else { - end = b.$length; - } - _tmp = 0; - _tmp$1 = 0; - _tmp$2 = -1; - pos = _tmp; - i = _tmp$1; - prevMatchEnd = _tmp$2; - /* while (true) { */ case 1: - /* if (!(i < n && pos <= end)) { break; } */ if(!(i < n && pos <= end)) { $s = 2; continue; } - _r = re.doExecute($ifaceNil, b, s, pos, re.prog.NumCap, sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - matches = _r; - if (matches.$length === 0) { - /* break; */ $s = 2; continue; - } - accept = true; - if ((1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]) === pos) { - if ((0 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 0]) === prevMatchEnd) { - accept = false; - } - width = 0; - if (b === sliceType$5.nil) { - _tuple = utf8.DecodeRuneInString($substring(s, pos, end)); - width = _tuple[1]; - } else { - _tuple$1 = utf8.DecodeRune($subslice(b, pos, end)); - width = _tuple$1[1]; - } - if (width > 0) { - pos = pos + (width) >> 0; - } else { - pos = end + 1 >> 0; - } - } else { - pos = (1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]); - } - prevMatchEnd = (1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]); - /* */ if (accept) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (accept) { */ case 4: - $r = deliver(re.pad(matches)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i + (1) >> 0; - /* } */ case 5: - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.allMatches }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.accept = accept; $f.b = b; $f.deliver = deliver; $f.end = end; $f.i = i; $f.matches = matches; $f.n = n; $f.pos = pos; $f.prevMatchEnd = prevMatchEnd; $f.re = re; $f.s = s; $f.width = width; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.allMatches = function(s, b, n, deliver) { return this.$val.allMatches(s, b, n, deliver); }; - Regexp.ptr.prototype.Find = function(b) { - var _r, a, b, dstCap, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; b = $f.b; dstCap = $f.dstCap; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - dstCap = arrayType$3.zero(); - _r = re.doExecute($ifaceNil, b, "", 0, 2, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - $s = -1; return sliceType$5.nil; - } - $s = -1; return $subslice(b, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])); - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Find }; } $f._r = _r; $f.a = a; $f.b = b; $f.dstCap = dstCap; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.Find = function(b) { return this.$val.Find(b); }; - Regexp.ptr.prototype.FindIndex = function(b) { - var _r, a, b, loc, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; b = $f.b; loc = $f.loc; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - loc = sliceType$3.nil; - re = this; - _r = re.doExecute($ifaceNil, b, "", 0, 2, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - loc = sliceType$3.nil; - $s = -1; return loc; - } - loc = $subslice(a, 0, 2); - $s = -1; return loc; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindIndex }; } $f._r = _r; $f.a = a; $f.b = b; $f.loc = loc; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindIndex = function(b) { return this.$val.FindIndex(b); }; - Regexp.ptr.prototype.FindString = function(s) { - var _r, a, dstCap, re, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; dstCap = $f.dstCap; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - dstCap = arrayType$3.zero(); - _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, 2, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - $s = -1; return ""; - } - $s = -1; return $substring(s, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])); - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindString }; } $f._r = _r; $f.a = a; $f.dstCap = dstCap; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindString = function(s) { return this.$val.FindString(s); }; - Regexp.ptr.prototype.FindStringIndex = function(s) { - var _r, a, loc, re, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; loc = $f.loc; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - loc = sliceType$3.nil; - re = this; - _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, 2, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - loc = sliceType$3.nil; - $s = -1; return loc; - } - loc = $subslice(a, 0, 2); - $s = -1; return loc; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringIndex }; } $f._r = _r; $f.a = a; $f.loc = loc; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindStringIndex = function(s) { return this.$val.FindStringIndex(s); }; - Regexp.ptr.prototype.FindReaderIndex = function(r) { - var _r, a, loc, r, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; loc = $f.loc; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - loc = sliceType$3.nil; - re = this; - _r = re.doExecute(r, sliceType$5.nil, "", 0, 2, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - loc = sliceType$3.nil; - $s = -1; return loc; - } - loc = $subslice(a, 0, 2); - $s = -1; return loc; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderIndex }; } $f._r = _r; $f.a = a; $f.loc = loc; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindReaderIndex = function(r) { return this.$val.FindReaderIndex(r); }; - Regexp.ptr.prototype.FindSubmatch = function(b) { - var _i, _r, _ref, a, b, dstCap, i, re, ret, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; a = $f.a; b = $f.b; dstCap = $f.dstCap; i = $f.i; re = $f.re; ret = $f.ret; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - dstCap = arrayType$4.zero(); - _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - $s = -1; return sliceType$12.nil; - } - ret = $makeSlice(sliceType$12, (1 + re.numSubexp >> 0)); - _ref = ret; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - if (($imul(2, i)) < a.$length && (x = $imul(2, i), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])) >= 0) { - ((i < 0 || i >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i] = $subslice(b, (x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$1])), (x$2 = ($imul(2, i)) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$2])))); - } - _i++; - } - $s = -1; return ret; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatch }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.b = b; $f.dstCap = dstCap; $f.i = i; $f.re = re; $f.ret = ret; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindSubmatch = function(b) { return this.$val.FindSubmatch(b); }; - Regexp.ptr.prototype.Expand = function(dst, template, src, match) { - var dst, match, re, src, template; - re = this; - return re.expand(dst, ($bytesToString(template)), src, "", match); - }; - Regexp.prototype.Expand = function(dst, template, src, match) { return this.$val.Expand(dst, template, src, match); }; - Regexp.ptr.prototype.ExpandString = function(dst, template, src, match) { - var dst, match, re, src, template; - re = this; - return re.expand(dst, template, sliceType$5.nil, src, match); - }; - Regexp.prototype.ExpandString = function(dst, template, src, match) { return this.$val.ExpandString(dst, template, src, match); }; - Regexp.ptr.prototype.expand = function(dst, template, bsrc, src, match) { - var _i, _ref, _tuple, bsrc, dst, i, i$1, match, name, namei, num, ok, re, rest, src, template, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; - re = this; - while (true) { - if (!(template.length > 0)) { break; } - i = strings.Index(template, "$"); - if (i < 0) { - break; - } - dst = $appendSlice(dst, $substring(template, 0, i)); - template = $substring(template, i); - if (template.length > 1 && (template.charCodeAt(1) === 36)) { - dst = $append(dst, 36); - template = $substring(template, 2); - continue; - } - _tuple = extract(template); - name = _tuple[0]; - num = _tuple[1]; - rest = _tuple[2]; - ok = _tuple[3]; - if (!ok) { - dst = $append(dst, 36); - template = $substring(template, 1); - continue; - } - template = rest; - if (num >= 0) { - if ((($imul(2, num)) + 1 >> 0) < match.$length && (x = $imul(2, num), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { - if (!(bsrc === sliceType$5.nil)) { - dst = $appendSlice(dst, $subslice(bsrc, (x$1 = $imul(2, num), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, num)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); - } else { - dst = $appendSlice(dst, $substring(src, (x$3 = $imul(2, num), ((x$3 < 0 || x$3 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$3])), (x$4 = ($imul(2, num)) + 1 >> 0, ((x$4 < 0 || x$4 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$4])))); - } - } - } else { - _ref = re.subexpNames; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i$1 = _i; - namei = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (name === namei && (($imul(2, i$1)) + 1 >> 0) < match.$length && (x$5 = $imul(2, i$1), ((x$5 < 0 || x$5 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$5])) >= 0) { - if (!(bsrc === sliceType$5.nil)) { - dst = $appendSlice(dst, $subslice(bsrc, (x$6 = $imul(2, i$1), ((x$6 < 0 || x$6 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$6])), (x$7 = ($imul(2, i$1)) + 1 >> 0, ((x$7 < 0 || x$7 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$7])))); - } else { - dst = $appendSlice(dst, $substring(src, (x$8 = $imul(2, i$1), ((x$8 < 0 || x$8 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$8])), (x$9 = ($imul(2, i$1)) + 1 >> 0, ((x$9 < 0 || x$9 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$9])))); - } - break; - } - _i++; - } - } - } - dst = $appendSlice(dst, template); - return dst; - }; - Regexp.prototype.expand = function(dst, template, bsrc, src, match) { return this.$val.expand(dst, template, bsrc, src, match); }; - extract = function(str) { - var _tuple, brace, i, i$1, name, num, ok, rest, rune, size, str; - name = ""; - num = 0; - rest = ""; - ok = false; - if (str.length < 2 || !((str.charCodeAt(0) === 36))) { - return [name, num, rest, ok]; - } - brace = false; - if (str.charCodeAt(1) === 123) { - brace = true; - str = $substring(str, 2); - } else { - str = $substring(str, 1); - } - i = 0; - while (true) { - if (!(i < str.length)) { break; } - _tuple = utf8.DecodeRuneInString($substring(str, i)); - rune = _tuple[0]; - size = _tuple[1]; - if (!unicode.IsLetter(rune) && !unicode.IsDigit(rune) && !((rune === 95))) { - break; - } - i = i + (size) >> 0; - } - if (i === 0) { - return [name, num, rest, ok]; - } - name = $substring(str, 0, i); - if (brace) { - if (i >= str.length || !((str.charCodeAt(i) === 125))) { - return [name, num, rest, ok]; - } - i = i + (1) >> 0; - } - num = 0; - i$1 = 0; - while (true) { - if (!(i$1 < name.length)) { break; } - if (name.charCodeAt(i$1) < 48 || 57 < name.charCodeAt(i$1) || num >= 100000000) { - num = -1; - break; - } - num = (($imul(num, 10)) + ((name.charCodeAt(i$1) >> 0)) >> 0) - 48 >> 0; - i$1 = i$1 + (1) >> 0; - } - if ((name.charCodeAt(0) === 48) && name.length > 1) { - num = -1; - } - rest = $substring(str, i); - ok = true; - return [name, num, rest, ok]; - }; - Regexp.ptr.prototype.FindSubmatchIndex = function(b) { - var _r, _r$1, b, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatchIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindSubmatchIndex = function(b) { return this.$val.FindSubmatchIndex(b); }; - Regexp.ptr.prototype.FindStringSubmatch = function(s) { - var _i, _r, _ref, a, dstCap, i, re, ret, s, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; a = $f.a; dstCap = $f.dstCap; i = $f.i; re = $f.re; ret = $f.ret; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - dstCap = arrayType$4.zero(); - _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, re.prog.NumCap, $subslice(new sliceType$3(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - a = _r; - if (a === sliceType$3.nil) { - $s = -1; return sliceType$9.nil; - } - ret = $makeSlice(sliceType$9, (1 + re.numSubexp >> 0)); - _ref = ret; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - if (($imul(2, i)) < a.$length && (x = $imul(2, i), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])) >= 0) { - ((i < 0 || i >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i] = $substring(s, (x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$1])), (x$2 = ($imul(2, i)) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$2])))); - } - _i++; - } - $s = -1; return ret; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatch }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.dstCap = dstCap; $f.i = i; $f.re = re; $f.ret = ret; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindStringSubmatch = function(s) { return this.$val.FindStringSubmatch(s); }; - Regexp.ptr.prototype.FindStringSubmatchIndex = function(s) { - var _r, _r$1, re, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doExecute($ifaceNil, sliceType$5.nil, s, 0, re.prog.NumCap, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatchIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindStringSubmatchIndex = function(s) { return this.$val.FindStringSubmatchIndex(s); }; - Regexp.ptr.prototype.FindReaderSubmatchIndex = function(r) { - var _r, _r$1, r, re, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - _r = re.doExecute(r, sliceType$5.nil, "", 0, re.prog.NumCap, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderSubmatchIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindReaderSubmatchIndex = function(r) { return this.$val.FindReaderSubmatchIndex(r); }; - Regexp.ptr.prototype.FindAll = function(b, n) { - var b, n, re, result, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - b = [b]; - result = [result]; - re = this; - if (n < 0) { - n = b[0].$length + 1 >> 0; - } - result[0] = sliceType$12.nil; - $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) { - var match; - if (result[0] === sliceType$12.nil) { - result[0] = $makeSlice(sliceType$12, 0, 10); - } - result[0] = $append(result[0], $subslice(b[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); - }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAll }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAll = function(b, n) { return this.$val.FindAll(b, n); }; - Regexp.ptr.prototype.FindAllIndex = function(b, n) { - var b, n, re, result, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = [result]; - re = this; - if (n < 0) { - n = b.$length + 1 >> 0; - } - result[0] = sliceType$13.nil; - $r = re.allMatches("", b, n, (function(result) { return function(match) { - var match; - if (result[0] === sliceType$13.nil) { - result[0] = $makeSlice(sliceType$13, 0, 10); - } - result[0] = $append(result[0], $subslice(match, 0, 2)); - }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllIndex }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllIndex = function(b, n) { return this.$val.FindAllIndex(b, n); }; - Regexp.ptr.prototype.FindAllString = function(s, n) { - var n, re, result, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = [result]; - s = [s]; - re = this; - if (n < 0) { - n = s[0].length + 1 >> 0; - } - result[0] = sliceType$9.nil; - $r = re.allMatches(s[0], sliceType$5.nil, n, (function(result, s) { return function(match) { - var match; - if (result[0] === sliceType$9.nil) { - result[0] = $makeSlice(sliceType$9, 0, 10); - } - result[0] = $append(result[0], $substring(s[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); - }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllString }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllString = function(s, n) { return this.$val.FindAllString(s, n); }; - Regexp.ptr.prototype.FindAllStringIndex = function(s, n) { - var n, re, result, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = [result]; - re = this; - if (n < 0) { - n = s.length + 1 >> 0; - } - result[0] = sliceType$13.nil; - $r = re.allMatches(s, sliceType$5.nil, n, (function(result) { return function(match) { - var match; - if (result[0] === sliceType$13.nil) { - result[0] = $makeSlice(sliceType$13, 0, 10); - } - result[0] = $append(result[0], $subslice(match, 0, 2)); - }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringIndex }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllStringIndex = function(s, n) { return this.$val.FindAllStringIndex(s, n); }; - Regexp.ptr.prototype.FindAllSubmatch = function(b, n) { - var b, n, re, result, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - b = [b]; - result = [result]; - re = this; - if (n < 0) { - n = b[0].$length + 1 >> 0; - } - result[0] = sliceType$14.nil; - $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) { - var _i, _q, _ref, j, match, slice, x, x$1, x$2; - if (result[0] === sliceType$14.nil) { - result[0] = $makeSlice(sliceType$14, 0, 10); - } - slice = $makeSlice(sliceType$12, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); - _ref = slice; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - j = _i; - if ((x = $imul(2, j), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { - ((j < 0 || j >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + j] = $subslice(b[0], (x$1 = $imul(2, j), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, j)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); - } - _i++; - } - result[0] = $append(result[0], slice); - }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatch }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllSubmatch = function(b, n) { return this.$val.FindAllSubmatch(b, n); }; - Regexp.ptr.prototype.FindAllSubmatchIndex = function(b, n) { - var b, n, re, result, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = [result]; - re = this; - if (n < 0) { - n = b.$length + 1 >> 0; - } - result[0] = sliceType$13.nil; - $r = re.allMatches("", b, n, (function(result) { return function(match) { - var match; - if (result[0] === sliceType$13.nil) { - result[0] = $makeSlice(sliceType$13, 0, 10); - } - result[0] = $append(result[0], match); - }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatchIndex }; } $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllSubmatchIndex = function(b, n) { return this.$val.FindAllSubmatchIndex(b, n); }; - Regexp.ptr.prototype.FindAllStringSubmatch = function(s, n) { - var n, re, result, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = [result]; - s = [s]; - re = this; - if (n < 0) { - n = s[0].length + 1 >> 0; - } - result[0] = sliceType$15.nil; - $r = re.allMatches(s[0], sliceType$5.nil, n, (function(result, s) { return function(match) { - var _i, _q, _ref, j, match, slice, x, x$1, x$2; - if (result[0] === sliceType$15.nil) { - result[0] = $makeSlice(sliceType$15, 0, 10); - } - slice = $makeSlice(sliceType$9, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); - _ref = slice; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - j = _i; - if ((x = $imul(2, j), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { - ((j < 0 || j >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + j] = $substring(s[0], (x$1 = $imul(2, j), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, j)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); - } - _i++; - } - result[0] = $append(result[0], slice); - }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatch }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllStringSubmatch = function(s, n) { return this.$val.FindAllStringSubmatch(s, n); }; - Regexp.ptr.prototype.FindAllStringSubmatchIndex = function(s, n) { - var n, re, result, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - result = [result]; - re = this; - if (n < 0) { - n = s.length + 1 >> 0; - } - result[0] = sliceType$13.nil; - $r = re.allMatches(s, sliceType$5.nil, n, (function(result) { return function(match) { - var match; - if (result[0] === sliceType$13.nil) { - result[0] = $makeSlice(sliceType$13, 0, 10); - } - result[0] = $append(result[0], match); - }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return result[0]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatchIndex }; } $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.FindAllStringSubmatchIndex = function(s, n) { return this.$val.FindAllStringSubmatchIndex(s, n); }; - Regexp.ptr.prototype.Split = function(s, n) { - var _i, _r, _ref, beg, end, match, matches, n, re, s, strings$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; beg = $f.beg; end = $f.end; match = $f.match; matches = $f.matches; n = $f.n; re = $f.re; s = $f.s; strings$1 = $f.strings$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - re = this; - if (n === 0) { - $s = -1; return sliceType$9.nil; - } - if (re.expr.length > 0 && (s.length === 0)) { - $s = -1; return new sliceType$9([""]); - } - _r = re.FindAllStringIndex(s, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - matches = _r; - strings$1 = $makeSlice(sliceType$9, 0, matches.$length); - beg = 0; - end = 0; - _ref = matches; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - match = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (n > 0 && strings$1.$length >= (n - 1 >> 0)) { - break; - } - end = (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]); - if (!(((1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]) === 0))) { - strings$1 = $append(strings$1, $substring(s, beg, end)); - } - beg = (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]); - _i++; - } - if (!((end === s.length))) { - strings$1 = $append(strings$1, $substring(s, beg)); - } - $s = -1; return strings$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Split }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.beg = beg; $f.end = end; $f.match = match; $f.matches = matches; $f.n = n; $f.re = re; $f.s = s; $f.strings$1 = strings$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Regexp.prototype.Split = function(s, n) { return this.$val.Split(s, n); }; - ptrType.methods = [{prop: "reset", name: "reset", pkg: "regexp", typ: $funcType([ptrType$12, $Int, $Int], [], false)}, {prop: "shouldVisit", name: "shouldVisit", pkg: "regexp", typ: $funcType([$Uint32, $Int], [$Bool], false)}, {prop: "push", name: "push", pkg: "regexp", typ: $funcType([ptrType$11, $Uint32, $Int, $Bool], [], false)}]; - ptrType$13.methods = [{prop: "init", name: "init", pkg: "regexp", typ: $funcType([$Int], [], false)}, {prop: "alloc", name: "alloc", pkg: "regexp", typ: $funcType([ptrType$2], [ptrType$1], false)}, {prop: "match", name: "match", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([ptrType$14], [], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([ptrType$14, ptrType$14, $Int, $Int, $Int32, ptrType$3], [], false)}, {prop: "add", name: "add", pkg: "regexp", typ: $funcType([ptrType$14, $Uint32, $Int, sliceType$3, ptrType$3, ptrType$1], [ptrType$1], false)}]; - ptrType$15.methods = [{prop: "newBytes", name: "newBytes", pkg: "regexp", typ: $funcType([sliceType$5], [input], false)}, {prop: "newString", name: "newString", pkg: "regexp", typ: $funcType([$String], [input], false)}, {prop: "newReader", name: "newReader", pkg: "regexp", typ: $funcType([io.RuneReader], [input], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String], [input, $Int], false)}]; - lazyFlag.methods = [{prop: "match", name: "match", pkg: "regexp", typ: $funcType([syntax.EmptyOp], [$Bool], false)}]; - ptrType$8.methods = [{prop: "empty", name: "empty", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "next", name: "next", pkg: "regexp", typ: $funcType([], [$Uint32], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "contains", name: "contains", pkg: "regexp", typ: $funcType([$Uint32], [$Bool], false)}, {prop: "insert", name: "insert", pkg: "regexp", typ: $funcType([$Uint32], [], false)}, {prop: "insertNew", name: "insertNew", pkg: "regexp", typ: $funcType([$Uint32], [], false)}]; - runeSlice.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; - ptrType$11.methods = [{prop: "tryBacktrack", name: "tryBacktrack", pkg: "regexp", typ: $funcType([ptrType, input, $Uint32, $Int], [$Bool], false)}, {prop: "backtrack", name: "backtrack", pkg: "regexp", typ: $funcType([sliceType$5, $String, $Int, $Int, sliceType$3], [sliceType$3], false)}, {prop: "doOnePass", name: "doOnePass", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String, $Int, $Int, sliceType$3], [sliceType$3], false)}, {prop: "doMatch", name: "doMatch", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String], [$Bool], false)}, {prop: "doExecute", name: "doExecute", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$5, $String, $Int, $Int, sliceType$3], [sliceType$3], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([], [ptrType$11], false)}, {prop: "Longest", name: "Longest", pkg: "", typ: $funcType([], [], false)}, {prop: "get", name: "get", pkg: "regexp", typ: $funcType([], [ptrType$13], false)}, {prop: "put", name: "put", pkg: "regexp", typ: $funcType([ptrType$13], [], false)}, {prop: "NumSubexp", name: "NumSubexp", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SubexpNames", name: "SubexpNames", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "LiteralPrefix", name: "LiteralPrefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "MatchReader", name: "MatchReader", pkg: "", typ: $funcType([io.RuneReader], [$Bool], false)}, {prop: "MatchString", name: "MatchString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Match", name: "Match", pkg: "", typ: $funcType([sliceType$5], [$Bool], false)}, {prop: "ReplaceAllString", name: "ReplaceAllString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllLiteralString", name: "ReplaceAllLiteralString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllStringFunc", name: "ReplaceAllStringFunc", pkg: "", typ: $funcType([$String, funcType], [$String], false)}, {prop: "replaceAll", name: "replaceAll", pkg: "regexp", typ: $funcType([sliceType$5, $String, $Int, funcType$1], [sliceType$5], false)}, {prop: "ReplaceAll", name: "ReplaceAll", pkg: "", typ: $funcType([sliceType$5, sliceType$5], [sliceType$5], false)}, {prop: "ReplaceAllLiteral", name: "ReplaceAllLiteral", pkg: "", typ: $funcType([sliceType$5, sliceType$5], [sliceType$5], false)}, {prop: "ReplaceAllFunc", name: "ReplaceAllFunc", pkg: "", typ: $funcType([sliceType$5, funcType$2], [sliceType$5], false)}, {prop: "pad", name: "pad", pkg: "regexp", typ: $funcType([sliceType$3], [sliceType$3], false)}, {prop: "allMatches", name: "allMatches", pkg: "regexp", typ: $funcType([$String, sliceType$5, $Int, funcType$3], [], false)}, {prop: "Find", name: "Find", pkg: "", typ: $funcType([sliceType$5], [sliceType$5], false)}, {prop: "FindIndex", name: "FindIndex", pkg: "", typ: $funcType([sliceType$5], [sliceType$3], false)}, {prop: "FindString", name: "FindString", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FindStringIndex", name: "FindStringIndex", pkg: "", typ: $funcType([$String], [sliceType$3], false)}, {prop: "FindReaderIndex", name: "FindReaderIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType$3], false)}, {prop: "FindSubmatch", name: "FindSubmatch", pkg: "", typ: $funcType([sliceType$5], [sliceType$12], false)}, {prop: "Expand", name: "Expand", pkg: "", typ: $funcType([sliceType$5, sliceType$5, sliceType$5, sliceType$3], [sliceType$5], false)}, {prop: "ExpandString", name: "ExpandString", pkg: "", typ: $funcType([sliceType$5, $String, $String, sliceType$3], [sliceType$5], false)}, {prop: "expand", name: "expand", pkg: "regexp", typ: $funcType([sliceType$5, $String, sliceType$5, $String, sliceType$3], [sliceType$5], false)}, {prop: "FindSubmatchIndex", name: "FindSubmatchIndex", pkg: "", typ: $funcType([sliceType$5], [sliceType$3], false)}, {prop: "FindStringSubmatch", name: "FindStringSubmatch", pkg: "", typ: $funcType([$String], [sliceType$9], false)}, {prop: "FindStringSubmatchIndex", name: "FindStringSubmatchIndex", pkg: "", typ: $funcType([$String], [sliceType$3], false)}, {prop: "FindReaderSubmatchIndex", name: "FindReaderSubmatchIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType$3], false)}, {prop: "FindAll", name: "FindAll", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$12], false)}, {prop: "FindAllIndex", name: "FindAllIndex", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$13], false)}, {prop: "FindAllString", name: "FindAllString", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}, {prop: "FindAllStringIndex", name: "FindAllStringIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$13], false)}, {prop: "FindAllSubmatch", name: "FindAllSubmatch", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$14], false)}, {prop: "FindAllSubmatchIndex", name: "FindAllSubmatchIndex", pkg: "", typ: $funcType([sliceType$5, $Int], [sliceType$13], false)}, {prop: "FindAllStringSubmatch", name: "FindAllStringSubmatch", pkg: "", typ: $funcType([$String, $Int], [sliceType$15], false)}, {prop: "FindAllStringSubmatchIndex", name: "FindAllStringSubmatchIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$13], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}]; - ptrType$16.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; - ptrType$17.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; - ptrType$18.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; - job.init("regexp", [{prop: "pc", name: "pc", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); - bitState.init("regexp", [{prop: "end", name: "end", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "jobs", name: "jobs", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "visited", name: "visited", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}]); - queue.init("regexp", [{prop: "sparse", name: "sparse", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", embedded: false, exported: false, typ: sliceType$10, tag: ""}]); - entry.init("regexp", [{prop: "pc", name: "pc", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "t", name: "t", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); - thread.init("regexp", [{prop: "inst", name: "inst", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); - machine.init("regexp", [{prop: "re", name: "re", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "q0", name: "q0", embedded: false, exported: false, typ: queue, tag: ""}, {prop: "q1", name: "q1", embedded: false, exported: false, typ: queue, tag: ""}, {prop: "pool", name: "pool", embedded: false, exported: false, typ: sliceType$11, tag: ""}, {prop: "matched", name: "matched", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}]); - inputs.init("regexp", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: inputBytes, tag: ""}, {prop: "string", name: "string", embedded: false, exported: false, typ: inputString, tag: ""}, {prop: "reader", name: "reader", embedded: false, exported: false, typ: inputReader, tag: ""}]); - onePassMachine.init("regexp", [{prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); - onePassProg.init("", [{prop: "Inst", name: "Inst", embedded: false, exported: true, typ: sliceType$6, tag: ""}, {prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", embedded: false, exported: true, typ: $Int, tag: ""}]); - onePassInst.init("", [{prop: "Inst", name: "Inst", embedded: true, exported: true, typ: syntax.Inst, tag: ""}, {prop: "Next", name: "Next", embedded: false, exported: true, typ: sliceType$2, tag: ""}]); - queueOnePass.init("regexp", [{prop: "sparse", name: "sparse", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nextIndex", name: "nextIndex", embedded: false, exported: false, typ: $Uint32, tag: ""}]); - runeSlice.init($Int32); - Regexp.init("regexp", [{prop: "expr", name: "expr", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prog", name: "prog", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "onepass", name: "onepass", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "numSubexp", name: "numSubexp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxBitStateLen", name: "maxBitStateLen", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "subexpNames", name: "subexpNames", embedded: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prefixBytes", name: "prefixBytes", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "prefixRune", name: "prefixRune", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "prefixEnd", name: "prefixEnd", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "mpool", name: "mpool", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prefixComplete", name: "prefixComplete", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "cond", name: "cond", embedded: false, exported: false, typ: syntax.EmptyOp, tag: ""}, {prop: "longest", name: "longest", embedded: false, exported: false, typ: $Bool, tag: ""}]); - input.init([{prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$11, $Int], [$Int], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}]); - inputString.init("regexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); - inputBytes.init("regexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); - inputReader.init("regexp", [{prop: "r", name: "r", embedded: false, exported: false, typ: io.RuneReader, tag: ""}, {prop: "atEOT", name: "atEOT", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = syntax.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = unicode.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - bitStatePool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); - onePassPool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); - arrayNoInts = arrayType.zero(); - matchPool = arrayType$1.zero(); - specialBytes = arrayType$2.zero(); - noRune = new sliceType$1([]); - noNext = new sliceType$2([4294967295]); - anyRuneNotNL = new sliceType$1([0, 9, 11, 1114111]); - anyRune = new sliceType$1([0, 1114111]); - matchSize = $toNativeArray($kindInt, [128, 512, 2048, 16384, 0]); - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc"] = (function() { - var $pkg = {}, $init, bytes, binary, errors, fmt, io, math, reflect, regexp, strconv, strings, sync, byteWriter, binaryFallback, Custom, customFallback, Field, Fields, strucTag, Options, Type, Size_t, Off_t, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, ptrType$1, sliceType$4, arrayType$1, ptrType$2, ptrType$3, typeLenRe, fieldCache, fieldCacheLock, parseLock, emptyOptions, typeLookup, typeNames, reflectTypeMap, _r, parseStrucTag, parseField, parseFieldsLocked, fieldCacheLookup, parseFields, init, prep, Unpack, UnpackWithOptions, init$1; - bytes = $packages["bytes"]; - binary = $packages["encoding/binary"]; - errors = $packages["errors"]; - fmt = $packages["fmt"]; - io = $packages["io"]; - math = $packages["math"]; - reflect = $packages["reflect"]; - regexp = $packages["regexp"]; - strconv = $packages["strconv"]; - strings = $packages["strings"]; - sync = $packages["sync"]; - byteWriter = $pkg.byteWriter = $newType(0, $kindStruct, "struc.byteWriter", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(buf_, pos_) { - this.$val = this; - if (arguments.length === 0) { - this.buf = sliceType.nil; - this.pos = 0; - return; - } - this.buf = buf_; - this.pos = pos_; - }); - binaryFallback = $pkg.binaryFallback = $newType(0, $kindStruct, "struc.binaryFallback", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(typ_, ptr_, flag_) { - this.$val = this; - if (arguments.length === 0) { - this.typ = ptrType.nil; - this.ptr = 0; - this.flag = 0; - return; - } - this.typ = typ_; - this.ptr = ptr_; - this.flag = flag_; - }); - Custom = $pkg.Custom = $newType(8, $kindInterface, "struc.Custom", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); - customFallback = $pkg.customFallback = $newType(0, $kindStruct, "struc.customFallback", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(custom_) { - this.$val = this; - if (arguments.length === 0) { - this.custom = $ifaceNil; - return; - } - this.custom = custom_; - }); - Field = $pkg.Field = $newType(0, $kindStruct, "struc.Field", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, function(Name_, Ptr_, Index_, Type_, defType_, Array_, Slice_, Len_, Order_, Sizeof_, Sizefrom_, Fields_, kind_) { - this.$val = this; - if (arguments.length === 0) { - this.Name = ""; - this.Ptr = false; - this.Index = 0; - this.Type = 0; - this.defType = 0; - this.Array = false; - this.Slice = false; - this.Len = 0; - this.Order = $ifaceNil; - this.Sizeof = sliceType$2.nil; - this.Sizefrom = sliceType$2.nil; - this.Fields = Fields.nil; - this.kind = 0; - return; - } - this.Name = Name_; - this.Ptr = Ptr_; - this.Index = Index_; - this.Type = Type_; - this.defType = defType_; - this.Array = Array_; - this.Slice = Slice_; - this.Len = Len_; - this.Order = Order_; - this.Sizeof = Sizeof_; - this.Sizefrom = Sizefrom_; - this.Fields = Fields_; - this.kind = kind_; - }); - Fields = $pkg.Fields = $newType(12, $kindSlice, "struc.Fields", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); - strucTag = $pkg.strucTag = $newType(0, $kindStruct, "struc.strucTag", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", false, function(Type_, Order_, Sizeof_, Skip_, Sizefrom_) { - this.$val = this; - if (arguments.length === 0) { - this.Type = ""; - this.Order = $ifaceNil; - this.Sizeof = ""; - this.Skip = false; - this.Sizefrom = ""; - return; - } - this.Type = Type_; - this.Order = Order_; - this.Sizeof = Sizeof_; - this.Skip = Skip_; - this.Sizefrom = Sizefrom_; - }); - Options = $pkg.Options = $newType(0, $kindStruct, "struc.Options", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, function(ByteAlign_, PtrSize_, Order_) { - this.$val = this; - if (arguments.length === 0) { - this.ByteAlign = 0; - this.PtrSize = 0; - this.Order = $ifaceNil; - return; - } - this.ByteAlign = ByteAlign_; - this.PtrSize = PtrSize_; - this.Order = Order_; - }); - Type = $pkg.Type = $newType(4, $kindInt, "struc.Type", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); - Size_t = $pkg.Size_t = $newType(8, $kindUint64, "struc.Size_t", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); - Off_t = $pkg.Off_t = $newType(8, $kindInt64, "struc.Off_t", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", true, null); - sliceType = $sliceType($Uint8); - sliceType$1 = $sliceType($emptyInterface); - sliceType$2 = $sliceType($Int); - sliceType$3 = $sliceType(reflect.Value); - ptrType = $ptrType(reflect.rtype); - ptrType$1 = $ptrType(Field); - sliceType$4 = $sliceType($String); - arrayType$1 = $arrayType($Uint8, 8); - ptrType$2 = $ptrType(strucTag); - ptrType$3 = $ptrType(Options); - byteWriter.ptr.prototype.Write = function(p) { - var b, capacity, p; - b = this; - capacity = b.buf.$length - b.pos >> 0; - if (capacity < p.$length) { - p = $subslice(p, 0, capacity); - } - if (p.$length > 0) { - $copySlice($subslice(b.buf, b.pos), p); - b.pos = b.pos + (p.$length) >> 0; - } - return [p.$length, $ifaceNil]; - }; - byteWriter.prototype.Write = function(p) { return this.$val.Write(p); }; - binaryFallback.ptr.prototype.String = function() { - var b; - b = this; - return $clone(b, binaryFallback).String(); - }; - binaryFallback.prototype.String = function() { return this.$val.String(); }; - binaryFallback.ptr.prototype.Sizeof = function(val, options) { - var _r$1, _r$2, b, options, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; options = $f.options; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - b = this; - _r$1 = $clone(val, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = binary.Size(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: binaryFallback.ptr.prototype.Sizeof }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.options = options; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - binaryFallback.prototype.Sizeof = function(val, options) { return this.$val.Sizeof(val, options); }; - binaryFallback.ptr.prototype.Pack = function(buf, val, options) { - var _arg, _arg$1, _arg$2, _r$1, _r$2, b, buf, err, options, order, tmp, val, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; buf = $f.buf; err = $f.err; options = $f.options; order = $f.order; tmp = $f.tmp; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - b = this; - tmp = new byteWriter.ptr(buf, 0); - order = (x = binary.BigEndian, new x.constructor.elem(x)); - if (!($interfaceIsEqual(options.Order, $ifaceNil))) { - order = options.Order; - } - _arg = new tmp.constructor.elem(tmp); - _arg$1 = order; - _r$1 = $clone(val, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _arg$2 = _r$1; - _r$2 = binary.Write(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - err = _r$2; - $s = -1; return [tmp.pos, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: binaryFallback.ptr.prototype.Pack }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.buf = buf; $f.err = err; $f.options = options; $f.order = order; $f.tmp = tmp; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - binaryFallback.prototype.Pack = function(buf, val, options) { return this.$val.Pack(buf, val, options); }; - binaryFallback.ptr.prototype.Unpack = function(r, val, options) { - var _arg, _arg$1, _arg$2, _r$1, _r$2, b, options, order, r, val, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; options = $f.options; order = $f.order; r = $f.r; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - b = this; - order = (x = binary.BigEndian, new x.constructor.elem(x)); - if (!($interfaceIsEqual(options.Order, $ifaceNil))) { - order = options.Order; - } - _arg = r; - _arg$1 = order; - _r$1 = $clone(val, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _arg$2 = _r$1; - _r$2 = binary.Read(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: binaryFallback.ptr.prototype.Unpack }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.options = options; $f.order = order; $f.r = r; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - binaryFallback.prototype.Unpack = function(r, val, options) { return this.$val.Unpack(r, val, options); }; - customFallback.ptr.prototype.Pack = function(p, val, opt) { - var _r$1, c, opt, p, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; opt = $f.opt; p = $f.p; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - _r$1 = c.custom.Pack(p, opt); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.Pack }; } $f._r$1 = _r$1; $f.c = c; $f.opt = opt; $f.p = p; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - customFallback.prototype.Pack = function(p, val, opt) { return this.$val.Pack(p, val, opt); }; - customFallback.ptr.prototype.Unpack = function(r, val, opt) { - var _r$1, c, opt, r, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; opt = $f.opt; r = $f.r; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - _r$1 = c.custom.Unpack(r, 1, opt); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.Unpack }; } $f._r$1 = _r$1; $f.c = c; $f.opt = opt; $f.r = r; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - customFallback.prototype.Unpack = function(r, val, opt) { return this.$val.Unpack(r, val, opt); }; - customFallback.ptr.prototype.Sizeof = function(val, opt) { - var _r$1, c, opt, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; opt = $f.opt; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - _r$1 = c.custom.Size(opt); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.Sizeof }; } $f._r$1 = _r$1; $f.c = c; $f.opt = opt; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - customFallback.prototype.Sizeof = function(val, opt) { return this.$val.Sizeof(val, opt); }; - customFallback.ptr.prototype.String = function() { - var _r$1, c, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - _r$1 = c.custom.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: customFallback.ptr.prototype.String }; } $f._r$1 = _r$1; $f.c = c; $f.$s = $s; $f.$r = $r; return $f; - }; - customFallback.prototype.String = function() { return this.$val.String(); }; - Field.ptr.prototype.String = function() { - var _r$1, _r$2, _r$3, _r$4, _r$5, f, out, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; f = $f.f; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - out = ""; - /* */ if (f.Type === 1) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (f.Type === 1) { */ case 1: - _r$1 = fmt.Sprintf("{type: Pad, len: %d}", new sliceType$1([new $Int(f.Len)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* } else { */ case 2: - _r$2 = fmt.Sprintf("type: %s, order: %v", new sliceType$1([new $String(new Type(f.Type).String()), f.Order])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - out = _r$2; - /* } */ case 3: - /* */ if (!(f.Sizefrom === sliceType$2.nil)) { $s = 6; continue; } - /* */ if (f.Len > 0) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!(f.Sizefrom === sliceType$2.nil)) { */ case 6: - _r$3 = fmt.Sprintf(", sizefrom: %v", new sliceType$1([f.Sizefrom])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - out = out + (_r$3); - $s = 8; continue; - /* } else if (f.Len > 0) { */ case 7: - _r$4 = fmt.Sprintf(", len: %d", new sliceType$1([new $Int(f.Len)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - out = out + (_r$4); - /* } */ case 8: - /* */ if (!(f.Sizeof === sliceType$2.nil)) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (!(f.Sizeof === sliceType$2.nil)) { */ case 11: - _r$5 = fmt.Sprintf(", sizeof: %v", new sliceType$1([f.Sizeof])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - out = out + (_r$5); - /* } */ case 12: - $s = -1; return "{" + out + "}"; - /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.String }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.f = f; $f.out = out; $f.$s = $s; $f.$r = $r; return $f; - }; - Field.prototype.String = function() { return this.$val.String(); }; - Field.ptr.prototype.Size = function(val, options) { - var _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, align, f, i, length, options, size, typ, val, val$1, vals, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; align = $f.align; f = $f.f; i = $f.i; length = $f.length; options = $f.options; size = $f.size; typ = $f.typ; val = $f.val; val$1 = $f.val$1; vals = $f.vals; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - _r$1 = new Type(f.Type).Resolve(options); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - typ = _r$1; - size = 0; - /* */ if (typ === 15) { $s = 2; continue; } - /* */ if (typ === 1) { $s = 3; continue; } - /* */ if (f.Slice || (f.kind === 24)) { $s = 4; continue; } - /* */ if (typ === 19) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (typ === 15) { */ case 2: - vals = new sliceType$3([$clone(val, reflect.Value)]); - /* */ if (f.Slice) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (f.Slice) { */ case 8: - vals = $makeSlice(sliceType$3, $clone(val, reflect.Value).Len()); - i = 0; - /* while (true) { */ case 10: - /* if (!(i < $clone(val, reflect.Value).Len())) { break; } */ if(!(i < $clone(val, reflect.Value).Len())) { $s = 11; continue; } - _r$2 = $clone(val, reflect.Value).Index(i); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - ((i < 0 || i >= vals.$length) ? ($throwRuntimeError("index out of range"), undefined) : vals.$array[vals.$offset + i] = _r$2); - i = i + (1) >> 0; - /* } */ $s = 10; continue; case 11: - /* } */ case 9: - _ref = vals; - _i = 0; - /* while (true) { */ case 13: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 14; continue; } - val$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - _r$3 = f.Fields.Sizeof($clone(val$1, reflect.Value), options); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - size = size + (_r$3) >> 0; - _i++; - /* } */ $s = 13; continue; case 14: - $s = 7; continue; - /* } else if (typ === 1) { */ case 3: - size = f.Len; - $s = 7; continue; - /* } else if (f.Slice || (f.kind === 24)) { */ case 4: - length = $clone(val, reflect.Value).Len(); - if (f.Len > 1) { - length = f.Len; - } - size = $imul(length, new Type(typ).Size()); - $s = 7; continue; - /* } else if (typ === 19) { */ case 5: - _r$4 = $clone($clone(val, reflect.Value).Addr(), reflect.Value).Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$5 = $assertType(_r$4, Custom).Size(options); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $s = -1; return _r$5; - /* } else { */ case 6: - size = new Type(typ).Size(); - /* } */ case 7: - align = options.ByteAlign; - if (align > 0 && size < align) { - size = align; - } - $s = -1; return size; - /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.Size }; } $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f.align = align; $f.f = f; $f.i = i; $f.length = length; $f.options = options; $f.size = size; $f.typ = typ; $f.val = val; $f.val$1 = val$1; $f.vals = vals; $f.$s = $s; $f.$r = $r; return $f; - }; - Field.prototype.Size = function(val, options) { return this.$val.Size(val, options); }; - Field.ptr.prototype.packVal = function(buf, val, length, options) { - var _1, _2, _3, _4, _5, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, buf, err, f, length, n, n$1, options, order, size, typ, val, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; f = $f.f; length = $f.length; n = $f.n; n$1 = $f.n$1; options = $f.options; order = $f.order; size = $f.size; typ = $f.typ; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - size = 0; - err = $ifaceNil; - f = this; - order = f.Order; - if (!($interfaceIsEqual(options.Order, $ifaceNil))) { - order = options.Order; - } - /* */ if (f.Ptr) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (f.Ptr) { */ case 1: - _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - /* } */ case 2: - _r$2 = new Type(f.Type).Resolve(options); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - typ = _r$2; - _1 = typ; - /* */ if (_1 === (15)) { $s = 6; continue; } - /* */ if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { $s = 7; continue; } - /* */ if ((_1 === (12)) || (_1 === (13))) { $s = 8; continue; } - /* */ if (_1 === (14)) { $s = 9; continue; } - /* */ if (_1 === (19)) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (_1 === (15)) { */ case 6: - _r$3 = f.Fields.Pack(buf, $clone(val, reflect.Value), options); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _tuple = _r$3; - size = _tuple[0]; - err = _tuple[1]; - $s = -1; return [size, err]; - /* } else if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { */ case 7: - size = new Type(typ).Size(); - n = new $Uint64(0, 0); - _2 = f.kind; - if (_2 === (1)) { - if ($clone(val, reflect.Value).Bool()) { - n = new $Uint64(0, 1); - } else { - n = new $Uint64(0, 0); - } - } else if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { - n = ((x = $clone(val, reflect.Value).Int(), new $Uint64(x.$high, x.$low))); - } else { - n = $clone(val, reflect.Value).Uint(); - } - _3 = typ; - /* */ if (_3 === (2)) { $s = 15; continue; } - /* */ if ((_3 === (4)) || (_3 === (5))) { $s = 16; continue; } - /* */ if ((_3 === (6)) || (_3 === (7))) { $s = 17; continue; } - /* */ if ((_3 === (8)) || (_3 === (9))) { $s = 18; continue; } - /* */ if ((_3 === (10)) || (_3 === (11))) { $s = 19; continue; } - /* */ $s = 20; continue; - /* if (_3 === (2)) { */ case 15: - if (!((n.$high === 0 && n.$low === 0))) { - (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 1); - } else { - (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 0); - } - $s = 20; continue; - /* } else if ((_3 === (4)) || (_3 === (5))) { */ case 16: - (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = ((n.$low << 24 >>> 24))); - $s = 20; continue; - /* } else if ((_3 === (6)) || (_3 === (7))) { */ case 17: - $r = order.PutUint16(buf, ((n.$low << 16 >>> 16))); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 20; continue; - /* } else if ((_3 === (8)) || (_3 === (9))) { */ case 18: - $r = order.PutUint32(buf, ((n.$low >>> 0))); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 20; continue; - /* } else if ((_3 === (10)) || (_3 === (11))) { */ case 19: - $r = order.PutUint64(buf, (n)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 20: - case 14: - $s = 12; continue; - /* } else if ((_1 === (12)) || (_1 === (13))) { */ case 8: - size = new Type(typ).Size(); - n$1 = $clone(val, reflect.Value).Float(); - _4 = typ; - /* */ if (_4 === (12)) { $s = 25; continue; } - /* */ if (_4 === (13)) { $s = 26; continue; } - /* */ $s = 27; continue; - /* if (_4 === (12)) { */ case 25: - $r = order.PutUint32(buf, math.Float32bits(($fround(n$1)))); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 27; continue; - /* } else if (_4 === (13)) { */ case 26: - $r = order.PutUint64(buf, math.Float64bits(n$1)); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 27: - case 24: - $s = 12; continue; - /* } else if (_1 === (14)) { */ case 9: - _5 = f.kind; - /* */ if (_5 === (24)) { $s = 31; continue; } - /* */ $s = 32; continue; - /* if (_5 === (24)) { */ case 31: - size = $clone(val, reflect.Value).Len(); - _r$4 = $clone(val, reflect.Value).String(); /* */ $s = 34; case 34: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $copySlice(buf, (new sliceType($stringToBytes(_r$4)))); - $s = 33; continue; - /* } else { */ case 32: - size = $clone(val, reflect.Value).Len(); - _r$5 = $clone(val, reflect.Value).Bytes(); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - $copySlice(buf, _r$5); - /* } */ case 33: - case 30: - $s = 12; continue; - /* } else if (_1 === (19)) { */ case 10: - _r$6 = $clone($clone(val, reflect.Value).Addr(), reflect.Value).Interface(); /* */ $s = 36; case 36: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _r$7 = $assertType(_r$6, Custom).Pack(buf, options); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _tuple$1 = _r$7; - size = _tuple$1[0]; - err = _tuple$1[1]; - $s = -1; return [size, err]; - /* } else { */ case 11: - _r$8 = fmt.Sprintf("no pack handler for type: %s", new sliceType$1([new Type(typ)])); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - $panic(new $String(_r$8)); - /* } */ case 12: - case 5: - $s = -1; return [size, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.packVal }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.f = f; $f.length = length; $f.n = n; $f.n$1 = n$1; $f.options = options; $f.order = order; $f.size = size; $f.typ = typ; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Field.prototype.packVal = function(buf, val, length, options) { return this.$val.packVal(buf, val, length, options); }; - Field.ptr.prototype.Pack = function(buf, val, length, options) { - var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, buf, cur, end, err, f, i, i$1, length, n, options, pos, rep, tmp, typ, val, zero, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; buf = $f.buf; cur = $f.cur; end = $f.end; err = $f.err; f = $f.f; i = $f.i; i$1 = $f.i$1; length = $f.length; n = $f.n; options = $f.options; pos = $f.pos; rep = $f.rep; tmp = $f.tmp; typ = $f.typ; val = $f.val; zero = $f.zero; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - _r$1 = new Type(f.Type).Resolve(options); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - typ = _r$1; - if (typ === 1) { - i = 0; - while (true) { - if (!(i < length)) { break; } - ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 0); - i = i + (1) >> 0; - } - $s = -1; return [length, $ifaceNil]; - } - /* */ if (f.Slice) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (f.Slice) { */ case 2: - end = $clone(val, reflect.Value).Len(); - /* */ if (!f.Array && (typ === 5) && ((f.defType === 5) || (f.kind === 24))) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (!f.Array && (typ === 5) && ((f.defType === 5) || (f.kind === 24))) { */ case 5: - tmp = sliceType.nil; - /* */ if (f.kind === 24) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (f.kind === 24) { */ case 7: - _r$2 = $clone(val, reflect.Value).String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - tmp = (new sliceType($stringToBytes(_r$2))); - $s = 9; continue; - /* } else { */ case 8: - _r$3 = $clone(val, reflect.Value).Bytes(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - tmp = _r$3; - /* } */ case 9: - $copySlice(buf, tmp); - if (end < length) { - rep = bytes.Repeat(new sliceType([0]), length - end >> 0); - $copySlice($subslice(buf, end), rep); - $s = -1; return [length, $ifaceNil]; - } - $s = -1; return [$clone(val, reflect.Value).Len(), $ifaceNil]; - /* } */ case 6: - pos = 0; - zero = new reflect.Value.ptr(ptrType.nil, 0, 0); - /* */ if (end < length) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (end < length) { */ case 12: - _r$4 = $clone(val, reflect.Value).Type().Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$5 = reflect.Zero(_r$4); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - zero = _r$5; - /* } */ case 13: - i$1 = 0; - /* while (true) { */ case 16: - /* if (!(i$1 < length)) { break; } */ if(!(i$1 < length)) { $s = 17; continue; } - cur = zero; - /* */ if (i$1 < end) { $s = 18; continue; } - /* */ $s = 19; continue; - /* if (i$1 < end) { */ case 18: - _r$6 = $clone(val, reflect.Value).Index(i$1); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - cur = _r$6; - /* } */ case 19: - _r$7 = f.packVal($subslice(buf, pos), $clone(cur, reflect.Value), 1, options); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _tuple = _r$7; - n = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [pos, err]; - } else { - pos = pos + (n) >> 0; - } - i$1 = i$1 + (1) >> 0; - /* } */ $s = 16; continue; case 17: - $s = -1; return [pos, $ifaceNil]; - /* } else { */ case 3: - _r$8 = f.packVal(buf, $clone(val, reflect.Value), length, options); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - $s = -1; return _r$8; - /* } */ case 4: - $s = -1; return [0, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.Pack }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f.buf = buf; $f.cur = cur; $f.end = end; $f.err = err; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.length = length; $f.n = n; $f.options = options; $f.pos = pos; $f.rep = rep; $f.tmp = tmp; $f.typ = typ; $f.val = val; $f.zero = zero; $f.$s = $s; $f.$r = $r; return $f; - }; - Field.prototype.Pack = function(buf, val, length, options) { return this.$val.Pack(buf, val, length, options); }; - Field.ptr.prototype.unpackVal = function(buf, val, length, options) { - var _1, _2, _3, _4, _5, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, buf, f, length, n, n$1, options, order, typ, val, x, x$1, x$2, x$3, x$4, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; buf = $f.buf; f = $f.f; length = $f.length; n = $f.n; n$1 = $f.n$1; options = $f.options; order = $f.order; typ = $f.typ; val = $f.val; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - order = f.Order; - if (!($interfaceIsEqual(options.Order, $ifaceNil))) { - order = options.Order; - } - /* */ if (f.Ptr) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (f.Ptr) { */ case 1: - _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - /* } */ case 2: - _r$2 = new Type(f.Type).Resolve(options); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - typ = _r$2; - _1 = typ; - /* */ if ((_1 === (12)) || (_1 === (13))) { $s = 6; continue; } - /* */ if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if ((_1 === (12)) || (_1 === (13))) { */ case 6: - n = 0; - _2 = typ; - /* */ if (_2 === (12)) { $s = 11; continue; } - /* */ if (_2 === (13)) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (_2 === (12)) { */ case 11: - _r$3 = order.Uint32(buf); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _r$4 = math.Float32frombits(_r$3); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - n = (_r$4); - $s = 13; continue; - /* } else if (_2 === (13)) { */ case 12: - _r$5 = order.Uint64(buf); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$6 = math.Float64frombits(_r$5); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - n = _r$6; - /* } */ case 13: - case 10: - _3 = f.kind; - /* */ if ((_3 === (13)) || (_3 === (14))) { $s = 19; continue; } - /* */ $s = 20; continue; - /* if ((_3 === (13)) || (_3 === (14))) { */ case 19: - $clone(val, reflect.Value).SetFloat(n); - $s = 21; continue; - /* } else { */ case 20: - _r$7 = fmt.Errorf("struc: refusing to unpack float into field %s of type %s", new sliceType$1([new $String(f.Name), new $String(new reflect.Kind(f.kind).String())])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $s = -1; return _r$7; - /* } */ case 21: - case 18: - $s = 9; continue; - /* } else if ((_1 === (2)) || (_1 === (4)) || (_1 === (6)) || (_1 === (8)) || (_1 === (10)) || (_1 === (5)) || (_1 === (7)) || (_1 === (9)) || (_1 === (11))) { */ case 7: - n$1 = new $Uint64(0, 0); - _4 = typ; - /* */ if (_4 === (4)) { $s = 24; continue; } - /* */ if (_4 === (6)) { $s = 25; continue; } - /* */ if (_4 === (8)) { $s = 26; continue; } - /* */ if (_4 === (10)) { $s = 27; continue; } - /* */ if ((_4 === (2)) || (_4 === (5))) { $s = 28; continue; } - /* */ if (_4 === (7)) { $s = 29; continue; } - /* */ if (_4 === (9)) { $s = 30; continue; } - /* */ if (_4 === (11)) { $s = 31; continue; } - /* */ $s = 32; continue; - /* if (_4 === (4)) { */ case 24: - n$1 = ((x = (new $Int64(0, (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) << 24 >> 24)))), new $Uint64(x.$high, x.$low))); - $s = 32; continue; - /* } else if (_4 === (6)) { */ case 25: - _r$8 = order.Uint16(buf); /* */ $s = 33; case 33: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - n$1 = ((x$1 = (new $Int64(0, ((_r$8 << 16 >> 16)))), new $Uint64(x$1.$high, x$1.$low))); - $s = 32; continue; - /* } else if (_4 === (8)) { */ case 26: - _r$9 = order.Uint32(buf); /* */ $s = 34; case 34: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - n$1 = ((x$2 = (new $Int64(0, ((_r$9 >> 0)))), new $Uint64(x$2.$high, x$2.$low))); - $s = 32; continue; - /* } else if (_4 === (10)) { */ case 27: - _r$10 = order.Uint64(buf); /* */ $s = 35; case 35: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - n$1 = ((x$3 = ((x$4 = _r$10, new $Int64(x$4.$high, x$4.$low))), new $Uint64(x$3.$high, x$3.$low))); - $s = 32; continue; - /* } else if ((_4 === (2)) || (_4 === (5))) { */ case 28: - n$1 = (new $Uint64(0, (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))); - $s = 32; continue; - /* } else if (_4 === (7)) { */ case 29: - _r$11 = order.Uint16(buf); /* */ $s = 36; case 36: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - n$1 = (new $Uint64(0, _r$11)); - $s = 32; continue; - /* } else if (_4 === (9)) { */ case 30: - _r$12 = order.Uint32(buf); /* */ $s = 37; case 37: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - n$1 = (new $Uint64(0, _r$12)); - $s = 32; continue; - /* } else if (_4 === (11)) { */ case 31: - _r$13 = order.Uint64(buf); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - n$1 = (_r$13); - /* } */ case 32: - case 23: - _5 = f.kind; - if (_5 === (1)) { - $clone(val, reflect.Value).SetBool(!((n$1.$high === 0 && n$1.$low === 0))); - } else if ((_5 === (2)) || (_5 === (3)) || (_5 === (4)) || (_5 === (5)) || (_5 === (6))) { - $clone(val, reflect.Value).SetInt((new $Int64(n$1.$high, n$1.$low))); - } else { - $clone(val, reflect.Value).SetUint(n$1); - } - $s = 9; continue; - /* } else { */ case 8: - _r$14 = fmt.Sprintf("no unpack handler for type: %s", new sliceType$1([new Type(typ)])); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - $panic(new $String(_r$14)); - /* } */ case 9: - case 5: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.unpackVal }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.buf = buf; $f.f = f; $f.length = length; $f.n = n; $f.n$1 = n$1; $f.options = options; $f.order = order; $f.typ = typ; $f.val = val; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f; - }; - Field.prototype.unpackVal = function(buf, val, length, options) { return this.$val.unpackVal(buf, val, length, options); }; - Field.ptr.prototype.Unpack = function(buf, val, length, options) { - var _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, buf, err, f, i, length, options, pos, size, typ, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; buf = $f.buf; err = $f.err; f = $f.f; i = $f.i; length = $f.length; options = $f.options; pos = $f.pos; size = $f.size; typ = $f.typ; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - _r$1 = new Type(f.Type).Resolve(options); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - typ = _r$1; - /* */ if ((typ === 1) || (f.kind === 24)) { $s = 2; continue; } - /* */ if (f.Slice) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if ((typ === 1) || (f.kind === 24)) { */ case 2: - if (typ === 1) { - $s = -1; return $ifaceNil; - } else { - $clone(val, reflect.Value).SetString(($bytesToString(buf))); - $s = -1; return $ifaceNil; - } - $s = 5; continue; - /* } else if (f.Slice) { */ case 3: - /* */ if ($clone(val, reflect.Value).Cap() < length) { $s = 6; continue; } - /* */ if ($clone(val, reflect.Value).Len() < length) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if ($clone(val, reflect.Value).Cap() < length) { */ case 6: - _r$2 = reflect.MakeSlice($clone(val, reflect.Value).Type(), length, length); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $r = $clone(val, reflect.Value).Set($clone(_r$2, reflect.Value)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 8; continue; - /* } else if ($clone(val, reflect.Value).Len() < length) { */ case 7: - _r$3 = $clone(val, reflect.Value).Slice(0, length); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $r = $clone(val, reflect.Value).Set($clone(_r$3, reflect.Value)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 8: - /* */ if (!f.Array && (typ === 5) && (f.defType === 5)) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (!f.Array && (typ === 5) && (f.defType === 5)) { */ case 13: - _r$4 = $clone(val, reflect.Value).Bytes(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $copySlice(_r$4, $subslice(buf, 0, length)); - $s = -1; return $ifaceNil; - /* } */ case 14: - pos = 0; - size = new Type(typ).Size(); - i = 0; - /* while (true) { */ case 16: - /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 17; continue; } - _arg = $subslice(buf, pos, (pos + size >> 0)); - _r$5 = $clone(val, reflect.Value).Index(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _arg$1 = $clone(_r$5, reflect.Value); - _arg$2 = options; - _r$6 = f.unpackVal(_arg, _arg$1, 1, _arg$2); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - err = _r$6; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - pos = pos + (size) >> 0; - i = i + (1) >> 0; - /* } */ $s = 16; continue; case 17: - $s = -1; return $ifaceNil; - /* } else { */ case 4: - _r$7 = f.unpackVal(buf, $clone(val, reflect.Value), length, options); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $s = -1; return _r$7; - /* } */ case 5: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Field.ptr.prototype.Unpack }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.buf = buf; $f.err = err; $f.f = f; $f.i = i; $f.length = length; $f.options = options; $f.pos = pos; $f.size = size; $f.typ = typ; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - Field.prototype.Unpack = function(buf, val, length, options) { return this.$val.Unpack(buf, val, length, options); }; - Fields.prototype.SetByteOrder = function(order) { - var _i, _ref, f, field, order; - f = this; - _ref = f; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!(field === ptrType$1.nil)) { - field.Order = order; - } - _i++; - } - }; - $ptrType(Fields).prototype.SetByteOrder = function(order) { return this.$get().SetByteOrder(order); }; - Fields.prototype.String = function() { - var _i, _r$1, _ref, f, field, fields, i, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; f = $f.f; field = $f.field; fields = $f.fields; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - fields = $makeSlice(sliceType$4, f.$length); - _ref = f; - _i = 0; - /* while (true) { */ case 1: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } - i = _i; - field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - /* */ if (!(field === ptrType$1.nil)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!(field === ptrType$1.nil)) { */ case 3: - _r$1 = field.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i] = _r$1); - /* } */ case 4: - _i++; - /* } */ $s = 1; continue; case 2: - $s = -1; return "{" + strings.Join(fields, ", ") + "}"; - /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.String }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.f = f; $f.field = field; $f.fields = fields; $f.i = i; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Fields).prototype.String = function() { return this.$get().String(); }; - Fields.prototype.Sizeof = function(val, options) { - var _i, _r$1, _r$2, _r$3, _ref, f, field, i, options, size, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; f = $f.f; field = $f.field; i = $f.i; options = $f.options; size = $f.size; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - /* while (true) { */ case 1: - /* if (!($clone(val, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(val, reflect.Value).Kind() === 22)) { $s = 2; continue; } - _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - /* } */ $s = 1; continue; case 2: - size = 0; - _ref = f; - _i = 0; - /* while (true) { */ case 4: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } - i = _i; - field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - /* */ if (!(field === ptrType$1.nil)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (!(field === ptrType$1.nil)) { */ case 6: - _r$2 = $clone(val, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$3 = field.Size($clone(_r$2, reflect.Value), options); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - size = size + (_r$3) >> 0; - /* } */ case 7: - _i++; - /* } */ $s = 4; continue; case 5: - $s = -1; return size; - /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.Sizeof }; } $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.f = f; $f.field = field; $f.i = i; $f.options = options; $f.size = size; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Fields).prototype.Sizeof = function(val, options) { return this.$get().Sizeof(val, options); }; - Fields.prototype.sizefrom = function(val, index) { - var _1, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, f, field, index, n, name, val, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; f = $f.f; field = $f.field; index = $f.index; n = $f.n; name = $f.name; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - _r$1 = $clone(val, reflect.Value).FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - field = _r$1; - _1 = $clone(field, reflect.Value).Kind(); - /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 3; continue; } - /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 3: - $s = -1; return (((x = $clone(field, reflect.Value).Int(), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); - /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { */ case 4: - n = (($clone(field, reflect.Value).Uint().$low >> 0)); - if (n < 0) { - $s = -1; return 0; - } - $s = -1; return n; - /* } else { */ case 5: - _r$2 = $clone(val, reflect.Value).Type().FieldByIndex(index); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - name = _r$2.Name; - _r$3 = $clone(val, reflect.Value).Interface(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _arg = _r$3; - _arg$1 = new $String(name); - _r$4 = fmt.Sprintf("sizeof field %T.%s not an integer type", new sliceType$1([_arg, _arg$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - $panic(new $String(_r$4)); - /* } */ case 6: - case 2: - $s = -1; return 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.sizefrom }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.f = f; $f.field = field; $f.index = index; $f.n = n; $f.name = name; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Fields).prototype.sizefrom = function(val, index) { return this.$get().sizefrom(val, index); }; - Fields.prototype.Pack = function(buf, val, options) { - var _1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, buf, err, f, field, i, length, length$1, n, options, pos, v, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; buf = $f.buf; err = $f.err; f = $f.f; field = $f.field; i = $f.i; length = $f.length; length$1 = $f.length$1; n = $f.n; options = $f.options; pos = $f.pos; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - /* while (true) { */ case 1: - /* if (!($clone(val, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(val, reflect.Value).Kind() === 22)) { $s = 2; continue; } - _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - /* } */ $s = 1; continue; case 2: - pos = 0; - _ref = f; - _i = 0; - /* while (true) { */ case 4: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } - i = _i; - field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - /* */ if (field === ptrType$1.nil) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (field === ptrType$1.nil) { */ case 6: - _i++; - /* continue; */ $s = 4; continue; - /* } */ case 7: - _r$2 = $clone(val, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v = _r$2; - length = field.Len; - /* */ if (!(field.Sizefrom === sliceType$2.nil)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (!(field.Sizefrom === sliceType$2.nil)) { */ case 9: - _r$3 = f.sizefrom($clone(val, reflect.Value), field.Sizefrom); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - length = _r$3; - /* } */ case 10: - if (length <= 0 && field.Slice) { - length = $clone(v, reflect.Value).Len(); - } - /* */ if (!(field.Sizeof === sliceType$2.nil)) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (!(field.Sizeof === sliceType$2.nil)) { */ case 12: - _r$4 = $clone(val, reflect.Value).FieldByIndex(field.Sizeof); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$5 = $clone(_r$4, reflect.Value).Len(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - length$1 = _r$5; - _1 = field.kind; - /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 17; continue; } - /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { $s = 18; continue; } - /* */ $s = 19; continue; - /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 17: - _r$6 = $clone(reflect.New($clone(v, reflect.Value).Type()), reflect.Value).Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - v = _r$6; - $clone(v, reflect.Value).SetInt((new $Int64(0, length$1))); - $s = 20; continue; - /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { */ case 18: - _r$7 = $clone(reflect.New($clone(v, reflect.Value).Type()), reflect.Value).Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - v = _r$7; - $clone(v, reflect.Value).SetUint((new $Uint64(0, length$1))); - $s = 20; continue; - /* } else { */ case 19: - _r$8 = fmt.Sprintf("sizeof field is not int or uint type: %s, %s", new sliceType$1([new $String(field.Name), $clone(v, reflect.Value).Type()])); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - $panic(new $String(_r$8)); - /* } */ case 20: - case 16: - /* } */ case 13: - _r$9 = field.Pack($subslice(buf, pos), $clone(v, reflect.Value), length, options); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - n = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [n, err]; - } else { - pos = pos + (n) >> 0; - } - _i++; - /* } */ $s = 4; continue; case 5: - $s = -1; return [pos, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.Pack }; } $f._1 = _1; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.f = f; $f.field = field; $f.i = i; $f.length = length; $f.length$1 = length$1; $f.n = n; $f.options = options; $f.pos = pos; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Fields).prototype.Pack = function(buf, val, options) { return this.$get().Pack(buf, val, options); }; - Fields.prototype.Unpack = function(r, val, options) { - var _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _v, buf, err, err$1, err$2, err$3, err$4, err$5, err$6, f, field, fields, fields$1, i, i$1, length, options, r, size, tmp, typ, v, v$1, val, vals, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; buf = $f.buf; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; f = $f.f; field = $f.field; fields = $f.fields; fields$1 = $f.fields$1; i = $f.i; i$1 = $f.i$1; length = $f.length; options = $f.options; r = $f.r; size = $f.size; tmp = $f.tmp; typ = $f.typ; v = $f.v; v$1 = $f.v$1; val = $f.val; vals = $f.vals; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - /* while (true) { */ case 1: - /* if (!($clone(val, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(val, reflect.Value).Kind() === 22)) { $s = 2; continue; } - _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - val = _r$1; - /* } */ $s = 1; continue; case 2: - tmp = arrayType$1.zero(); - buf = sliceType.nil; - _ref = f; - _i = 0; - /* while (true) { */ case 4: - /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } - i = _i; - field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - /* */ if (field === ptrType$1.nil) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (field === ptrType$1.nil) { */ case 6: - _i++; - /* continue; */ $s = 4; continue; - /* } */ case 7: - _r$2 = $clone(val, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v = _r$2; - length = field.Len; - /* */ if (!(field.Sizefrom === sliceType$2.nil)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (!(field.Sizefrom === sliceType$2.nil)) { */ case 9: - _r$3 = f.sizefrom($clone(val, reflect.Value), field.Sizefrom); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - length = _r$3; - /* } */ case 10: - if (!($clone(v, reflect.Value).Kind() === 22)) { _v = false; $s = 14; continue s; } - _r$4 = $clone(v, reflect.Value).Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$5 = $clone(_r$4, reflect.Value).IsValid(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _v = !_r$5; case 14: - /* */ if (_v) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (_v) { */ case 12: - _r$6 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _r$7 = reflect.New(_r$6); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - $r = $clone(v, reflect.Value).Set($clone(_r$7, reflect.Value)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 13: - /* */ if (field.Type === 15) { $s = 20; continue; } - /* */ $s = 21; continue; - /* if (field.Type === 15) { */ case 20: - /* */ if (field.Slice) { $s = 23; continue; } - /* */ $s = 24; continue; - /* if (field.Slice) { */ case 23: - _r$8 = reflect.MakeSlice($clone(v, reflect.Value).Type(), length, length); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - vals = _r$8; - i$1 = 0; - /* while (true) { */ case 27: - /* if (!(i$1 < length)) { break; } */ if(!(i$1 < length)) { $s = 28; continue; } - _r$9 = $clone(vals, reflect.Value).Index(i$1); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - v$1 = _r$9; - _r$10 = parseFields($clone(v$1, reflect.Value)); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _tuple = _r$10; - fields = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r$11 = fields.Unpack(r, $clone(v$1, reflect.Value), options); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - err$1 = _r$11; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return err$1; - } - i$1 = i$1 + (1) >> 0; - /* } */ $s = 27; continue; case 28: - $r = $clone(v, reflect.Value).Set($clone(vals, reflect.Value)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 25; continue; - /* } else { */ case 24: - _r$12 = parseFields($clone(v, reflect.Value)); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - _tuple$1 = _r$12; - fields$1 = _tuple$1[0]; - err$2 = _tuple$1[1]; - if (!($interfaceIsEqual(err$2, $ifaceNil))) { - $s = -1; return err$2; - } - _r$13 = fields$1.Unpack(r, $clone(v, reflect.Value), options); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - err$3 = _r$13; - if (!($interfaceIsEqual(err$3, $ifaceNil))) { - $s = -1; return err$3; - } - /* } */ case 25: - _i++; - /* continue; */ $s = 4; continue; - $s = 22; continue; - /* } else { */ case 21: - _r$14 = new Type(field.Type).Resolve(options); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - typ = _r$14; - /* */ if (typ === 19) { $s = 36; continue; } - /* */ $s = 37; continue; - /* if (typ === 19) { */ case 36: - _r$15 = $clone($clone(v, reflect.Value).Addr(), reflect.Value).Interface(); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } - _r$16 = $assertType(_r$15, Custom).Unpack(r, length, options); /* */ $s = 40; case 40: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } - err$4 = _r$16; - if (!($interfaceIsEqual(err$4, $ifaceNil))) { - $s = -1; return err$4; - } - $s = 38; continue; - /* } else { */ case 37: - _r$17 = new Type(field.Type).Resolve(options); /* */ $s = 41; case 41: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } - _r$18 = new Type(_r$17).Size(); /* */ $s = 42; case 42: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } - size = $imul(length, _r$18); - if (size < 8) { - buf = $subslice(new sliceType(tmp), 0, size); - } else { - buf = $makeSlice(sliceType, size); - } - _r$19 = io.ReadFull(r, buf); /* */ $s = 43; case 43: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } - _tuple$2 = _r$19; - err$5 = _tuple$2[1]; - if (!($interfaceIsEqual(err$5, $ifaceNil))) { - $s = -1; return err$5; - } - _r$20 = field.Unpack($subslice(buf, 0, size), $clone(v, reflect.Value), length, options); /* */ $s = 44; case 44: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } - err$6 = _r$20; - if (!($interfaceIsEqual(err$6, $ifaceNil))) { - $s = -1; return err$6; - } - /* } */ case 38: - /* } */ case 22: - _i++; - /* } */ $s = 4; continue; case 5: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Fields.prototype.Unpack }; } $f._i = _i; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.f = f; $f.field = field; $f.fields = fields; $f.fields$1 = fields$1; $f.i = i; $f.i$1 = i$1; $f.length = length; $f.options = options; $f.r = r; $f.size = size; $f.tmp = tmp; $f.typ = typ; $f.v = v; $f.v$1 = v$1; $f.val = val; $f.vals = vals; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Fields).prototype.Unpack = function(r, val, options) { return this.$get().Unpack(r, val, options); }; - parseStrucTag = function(tag) { - var _i, _ref, s, t, tag, tagStr, tmp, tmp$1, x, x$1, x$2; - t = new strucTag.ptr("", (x = binary.BigEndian, new x.constructor.elem(x)), "", false, ""); - tagStr = new reflect.StructTag(tag).Get("struc"); - if (tagStr === "") { - tagStr = new reflect.StructTag(tag).Get("struct"); - } - _ref = strings.Split(tagStr, ","); - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (strings.HasPrefix(s, "sizeof=")) { - tmp = strings.SplitN(s, "=", 2); - t.Sizeof = (1 >= tmp.$length ? ($throwRuntimeError("index out of range"), undefined) : tmp.$array[tmp.$offset + 1]); - } else if (strings.HasPrefix(s, "sizefrom=")) { - tmp$1 = strings.SplitN(s, "=", 2); - t.Sizefrom = (1 >= tmp$1.$length ? ($throwRuntimeError("index out of range"), undefined) : tmp$1.$array[tmp$1.$offset + 1]); - } else if (s === "big") { - t.Order = (x$1 = binary.BigEndian, new x$1.constructor.elem(x$1)); - } else if (s === "little") { - t.Order = (x$2 = binary.LittleEndian, new x$2.constructor.elem(x$2)); - } else if (s === "skip") { - t.Skip = true; - } else { - t.Type = s; - } - _i++; - } - return t; - }; - parseField = function(f) { - var _1, _2, _entry, _entry$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, defTypeOk, err, f, fd, first, match, ok, ok$1, pureType, tag, tmp, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _entry = $f._entry; _entry$1 = $f._entry$1; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; defTypeOk = $f.defTypeOk; err = $f.err; f = $f.f; fd = $f.fd; first = $f.first; match = $f.match; ok = $f.ok; ok$1 = $f.ok$1; pureType = $f.pureType; tag = $f.tag; tmp = $f.tmp; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - fd = ptrType$1.nil; - tag = ptrType$2.nil; - err = $ifaceNil; - tag = parseStrucTag(f.Tag); - ok = false; - _r$1 = f.Type.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - fd = new Field.ptr(f.Name, false, 0, 0, 0, false, false, 1, tag.Order, sliceType$2.nil, sliceType$2.nil, Fields.nil, _r$1); - _1 = fd.kind; - /* */ if (_1 === (17)) { $s = 3; continue; } - /* */ if (_1 === (23)) { $s = 4; continue; } - /* */ if (_1 === (22)) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_1 === (17)) { */ case 3: - fd.Slice = true; - fd.Array = true; - _r$2 = f.Type.Len(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - fd.Len = _r$2; - _r$3 = f.Type.Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _r$4 = _r$3.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - fd.kind = _r$4; - $s = 6; continue; - /* } else if (_1 === (23)) { */ case 4: - fd.Slice = true; - fd.Len = -1; - _r$5 = f.Type.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$6 = _r$5.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - fd.kind = _r$6; - $s = 6; continue; - /* } else if (_1 === (22)) { */ case 5: - fd.Ptr = true; - _r$7 = f.Type.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _r$8 = _r$7.Kind(); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - fd.kind = _r$8; - /* } */ case 6: - case 2: - tmp = reflect.New(f.Type); - _r$9 = $clone(tmp, reflect.Value).Interface(); /* */ $s = 14; case 14: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = $assertType(_r$9, Custom, true); - ok$1 = _tuple[1]; - if (ok$1) { - fd.Type = 19; - $s = -1; return [fd, tag, err]; - } - defTypeOk = false; - _tuple$1 = (_entry = reflectTypeMap[reflect.Kind.keyFor(fd.kind)], _entry !== undefined ? [_entry.v, true] : [0, false]); - fd.defType = _tuple$1[0]; - defTypeOk = _tuple$1[1]; - _r$10 = typeLenRe.ReplaceAllLiteralString(tag.Type, ""); /* */ $s = 15; case 15: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - pureType = _r$10; - _tuple$2 = (_entry$1 = typeLookup[$String.keyFor(pureType)], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]); - fd.Type = _tuple$2[0]; - ok = _tuple$2[1]; - /* */ if (ok) { $s = 16; continue; } - /* */ $s = 17; continue; - /* if (ok) { */ case 16: - fd.Len = 1; - _r$11 = typeLenRe.FindAllStringSubmatch(tag.Type, -1); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - match = _r$11; - if (match.$length > 0 && (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]).$length > 1) { - fd.Slice = true; - first = (x = (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1])); - if (first === "") { - fd.Len = -1; - } else { - _tuple$3 = strconv.Atoi(first); - fd.Len = _tuple$3[0]; - err = _tuple$3[1]; - } - } - $s = -1; return [fd, tag, err]; - /* } */ case 17: - _2 = f.Type; - /* */ if ($interfaceIsEqual(_2, (reflect.TypeOf(new Size_t(0, 0))))) { $s = 20; continue; } - /* */ if ($interfaceIsEqual(_2, (reflect.TypeOf(new Off_t(0, 0))))) { $s = 21; continue; } - /* */ if (defTypeOk) { $s = 22; continue; } - /* */ $s = 23; continue; - /* if ($interfaceIsEqual(_2, (reflect.TypeOf(new Size_t(0, 0))))) { */ case 20: - fd.Type = 17; - $s = 24; continue; - /* } else if ($interfaceIsEqual(_2, (reflect.TypeOf(new Off_t(0, 0))))) { */ case 21: - fd.Type = 18; - $s = 24; continue; - /* } else if (defTypeOk) { */ case 22: - fd.Type = fd.defType; - $s = 24; continue; - /* } else { */ case 23: - _r$12 = fmt.Sprintf("struc: Could not resolve field '%v' type '%v'.", new sliceType$1([new $String(f.Name), f.Type])); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - _r$13 = errors.New(_r$12); /* */ $s = 26; case 26: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - err = _r$13; - /* } */ case 24: - case 19: - $s = -1; return [fd, tag, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parseField }; } $f._1 = _1; $f._2 = _2; $f._entry = _entry; $f._entry$1 = _entry$1; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.defTypeOk = defTypeOk; $f.err = err; $f.f = f; $f.fd = fd; $f.first = first; $f.match = match; $f.ok = ok; $f.ok$1 = ok$1; $f.pureType = pureType; $f.tag = tag; $f.tmp = tmp; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - parseFieldsLocked = function(v) { - var _entry, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, f, field, fields, i, ok, ok$1, ok$2, sizefrom, sizeofMap, source, t, tag, target, typ, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; err = $f.err; f = $f.f; field = $f.field; fields = $f.fields; i = $f.i; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; sizefrom = $f.sizefrom; sizeofMap = $f.sizeofMap; source = $f.source; t = $f.t; tag = $f.tag; target = $f.target; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* while (true) { */ case 1: - /* if (!($clone(v, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(v, reflect.Value).Kind() === 22)) { $s = 2; continue; } - _r$1 = $clone(v, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v = _r$1; - /* } */ $s = 1; continue; case 2: - t = $clone(v, reflect.Value).Type(); - if ($clone(v, reflect.Value).NumField() < 1) { - $s = -1; return [Fields.nil, errors.New("struc: Struct has no fields.")]; - } - sizeofMap = {}; - fields = $makeSlice(Fields, $clone(v, reflect.Value).NumField()); - i = 0; - /* while (true) { */ case 4: - _r$2 = t.NumField(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - /* if (!(i < _r$2)) { break; } */ if(!(i < _r$2)) { $s = 5; continue; } - _r$3 = t.Field(i); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - field = $clone(_r$3, reflect.StructField); - _r$4 = parseField($clone(field, reflect.StructField)); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple = _r$4; - f = _tuple[0]; - tag = _tuple[1]; - err = _tuple[2]; - /* */ if (tag.Skip) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (tag.Skip) { */ case 9: - i = i + (1) >> 0; - /* continue; */ $s = 4; continue; - /* } */ case 10: - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [Fields.nil, err]; - } - _r$5 = $clone(v, reflect.Value).Field(i); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$6 = $clone(_r$5, reflect.Value).CanSet(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - /* */ if (!_r$6) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (!_r$6) { */ case 11: - i = i + (1) >> 0; - /* continue; */ $s = 4; continue; - /* } */ case 12: - f.Index = i; - /* */ if (!(tag.Sizeof === "")) { $s = 15; continue; } - /* */ $s = 16; continue; - /* if (!(tag.Sizeof === "")) { */ case 15: - _r$7 = t.FieldByName(tag.Sizeof); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _tuple$1 = _r$7; - target = $clone(_tuple$1[0], reflect.StructField); - ok = _tuple$1[1]; - /* */ if (!ok) { $s = 18; continue; } - /* */ $s = 19; continue; - /* if (!ok) { */ case 18: - _r$8 = fmt.Errorf("struc: `sizeof=%s` field does not exist", new sliceType$1([new $String(tag.Sizeof)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - $s = -1; return [Fields.nil, _r$8]; - /* } */ case 19: - f.Sizeof = target.Index; - _key = tag.Sizeof; (sizeofMap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: field.Index }; - /* } */ case 16: - _tuple$2 = (_entry = sizeofMap[$String.keyFor(field.Name)], _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]); - sizefrom = _tuple$2[0]; - ok$1 = _tuple$2[1]; - if (ok$1) { - f.Sizefrom = sizefrom; - } - /* */ if (!(tag.Sizefrom === "")) { $s = 21; continue; } - /* */ $s = 22; continue; - /* if (!(tag.Sizefrom === "")) { */ case 21: - _r$9 = t.FieldByName(tag.Sizefrom); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple$3 = _r$9; - source = $clone(_tuple$3[0], reflect.StructField); - ok$2 = _tuple$3[1]; - /* */ if (!ok$2) { $s = 24; continue; } - /* */ $s = 25; continue; - /* if (!ok$2) { */ case 24: - _r$10 = fmt.Errorf("struc: `sizefrom=%s` field does not exist", new sliceType$1([new $String(tag.Sizefrom)])); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - $s = -1; return [Fields.nil, _r$10]; - /* } */ case 25: - f.Sizefrom = source.Index; - /* } */ case 22: - /* */ if ((f.Len === -1) && f.Sizefrom === sliceType$2.nil) { $s = 27; continue; } - /* */ $s = 28; continue; - /* if ((f.Len === -1) && f.Sizefrom === sliceType$2.nil) { */ case 27: - _r$11 = fmt.Errorf("struc: field `%s` is a slice with no length or sizeof field", new sliceType$1([new $String(field.Name)])); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - $s = -1; return [Fields.nil, _r$11]; - /* } */ case 28: - /* */ if (f.Type === 15) { $s = 30; continue; } - /* */ $s = 31; continue; - /* if (f.Type === 15) { */ case 30: - typ = field.Type; - /* */ if (f.Ptr) { $s = 32; continue; } - /* */ $s = 33; continue; - /* if (f.Ptr) { */ case 32: - _r$12 = typ.Elem(); /* */ $s = 34; case 34: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - typ = _r$12; - /* } */ case 33: - /* */ if (f.Slice) { $s = 35; continue; } - /* */ $s = 36; continue; - /* if (f.Slice) { */ case 35: - _r$13 = typ.Elem(); /* */ $s = 37; case 37: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - typ = _r$13; - /* } */ case 36: - _r$14 = parseFieldsLocked($clone(reflect.New(typ), reflect.Value)); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } - _tuple$4 = _r$14; - f.Fields = _tuple$4[0]; - err = _tuple$4[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [Fields.nil, err]; - } - /* } */ case 31: - ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i] = f); - i = i + (1) >> 0; - /* } */ $s = 4; continue; case 5: - $s = -1; return [fields, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parseFieldsLocked }; } $f._entry = _entry; $f._key = _key; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.err = err; $f.f = f; $f.field = field; $f.fields = fields; $f.i = i; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.sizefrom = sizefrom; $f.sizeofMap = sizeofMap; $f.source = source; $f.t = t; $f.tag = tag; $f.target = target; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - fieldCacheLookup = function(t) { - var _entry, _tuple, cached, ok, t, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; cached = $f.cached; ok = $f.ok; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - $r = fieldCacheLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(fieldCacheLock, "RUnlock"), []]); - _tuple = (_entry = fieldCache[reflect.Type.keyFor(t)], _entry !== undefined ? [_entry.v, true] : [Fields.nil, false]); - cached = _tuple[0]; - ok = _tuple[1]; - if (ok) { - $s = -1; return cached; - } - $s = -1; return Fields.nil; - /* */ } return; } } catch(err) { $err = err; $s = -1; return Fields.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: fieldCacheLookup }; } $f._entry = _entry; $f._tuple = _tuple; $f.cached = cached; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - parseFields = function(v) { - var _key, _r$1, _r$2, _r$3, _r$4, _tuple, cached, cached$1, err, fields, t, v, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; cached = $f.cached; cached$1 = $f.cached$1; err = $f.err; fields = $f.fields; t = $f.t; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - /* while (true) { */ case 1: - /* if (!($clone(v, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(v, reflect.Value).Kind() === 22)) { $s = 2; continue; } - _r$1 = $clone(v, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v = _r$1; - /* } */ $s = 1; continue; case 2: - t = $clone(v, reflect.Value).Type(); - _r$2 = fieldCacheLookup(t); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - cached = _r$2; - if (!(cached === Fields.nil)) { - $s = -1; return [cached, $ifaceNil]; - } - $r = parseLock.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(parseLock, "Unlock"), []]); - _r$3 = fieldCacheLookup(t); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - cached$1 = _r$3; - if (!(cached$1 === Fields.nil)) { - $s = -1; return [cached$1, $ifaceNil]; - } - _r$4 = parseFieldsLocked($clone(v, reflect.Value)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple = _r$4; - fields = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [Fields.nil, err]; - } - $r = fieldCacheLock.Lock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _key = t; (fieldCache || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key)] = { k: _key, v: fields }; - $r = fieldCacheLock.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return [fields, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [Fields.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseFields }; } $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.cached = cached; $f.cached$1 = cached$1; $f.err = err; $f.fields = fields; $f.t = t; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Options.ptr.prototype.Validate = function() { - var _1, _r$1, o, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; o = $f.o; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - o = this; - /* */ if (o.PtrSize === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (o.PtrSize === 0) { */ case 1: - o.PtrSize = 32; - $s = 3; continue; - /* } else { */ case 2: - _1 = o.PtrSize; - /* */ if ((_1 === (8)) || (_1 === (16)) || (_1 === (32)) || (_1 === (64))) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if ((_1 === (8)) || (_1 === (16)) || (_1 === (32)) || (_1 === (64))) { */ case 5: - $s = 7; continue; - /* } else { */ case 6: - _r$1 = fmt.Errorf("Invalid Options.PtrSize: %d. Must be in (8, 16, 32, 64)", new sliceType$1([new $Int(o.PtrSize)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* } */ case 7: - case 4: - /* } */ case 3: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Options.ptr.prototype.Validate }; } $f._1 = _1; $f._r$1 = _r$1; $f.o = o; $f.$s = $s; $f.$r = $r; return $f; - }; - Options.prototype.Validate = function() { return this.$val.Validate(); }; - init = function() { - var _r$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$1 = emptyOptions.Validate(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f._r$1 = _r$1; $f.$s = $s; $f.$r = $r; return $f; - }; - prep = function(data) { - var _1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, c, data, err, fields, next, ok, value, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; data = $f.data; err = $f.err; fields = $f.fields; next = $f.next; ok = $f.ok; value = $f.value; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$1 = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - value = _r$1; - /* while (true) { */ case 2: - /* if (!($clone(value, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(value, reflect.Value).Kind() === 22)) { $s = 3; continue; } - _r$2 = $clone(value, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$3 = $clone(_r$2, reflect.Value).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - next = _r$3; - /* */ if ((next === 25) || (next === 22)) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if ((next === 25) || (next === 22)) { */ case 6: - _r$4 = $clone(value, reflect.Value).Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - value = _r$4; - $s = 8; continue; - /* } else { */ case 7: - /* break; */ $s = 3; continue; - /* } */ case 8: - /* } */ $s = 2; continue; case 3: - _1 = $clone(value, reflect.Value).Kind(); - /* */ if (_1 === (25)) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (_1 === (25)) { */ case 11: - _r$5 = parseFields($clone(value, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _tuple = _r$5; - fields = _tuple[0]; - err = _tuple[1]; - $s = -1; return [value, fields, err]; - /* } else { */ case 12: - /* */ if (!$clone(value, reflect.Value).IsValid()) { $s = 15; continue; } - /* */ $s = 16; continue; - /* if (!$clone(value, reflect.Value).IsValid()) { */ case 15: - _r$6 = fmt.Errorf("Invalid reflect.Value for %+v", new sliceType$1([data])); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - $s = -1; return [new reflect.Value.ptr(ptrType.nil, 0, 0), $ifaceNil, _r$6]; - /* } */ case 16: - _tuple$1 = $assertType(data, Custom, true); - c = _tuple$1[0]; - ok = _tuple$1[1]; - if (ok) { - $s = -1; return [value, (x = new customFallback.ptr(c), new x.constructor.elem(x)), $ifaceNil]; - } - $s = -1; return [value, (x$1 = ($clone(value, binaryFallback)), new x$1.constructor.elem(x$1)), $ifaceNil]; - /* } */ case 13: - case 10: - $s = -1; return [new reflect.Value.ptr(ptrType.nil, 0, 0), $ifaceNil, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: prep }; } $f._1 = _1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.data = data; $f.err = err; $f.fields = fields; $f.next = next; $f.ok = ok; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Unpack = function(r, data) { - var _r$1, data, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; data = $f.data; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$1 = UnpackWithOptions(r, data, ptrType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return _r$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: Unpack }; } $f._r$1 = _r$1; $f.data = data; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Unpack = Unpack; - UnpackWithOptions = function(r, data, options) { - var _r$1, _r$2, _r$3, _tuple, data, err, err$1, options, packer, r, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; data = $f.data; err = $f.err; err$1 = $f.err$1; options = $f.options; packer = $f.packer; r = $f.r; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (options === ptrType$3.nil) { - options = emptyOptions; - } - _r$1 = options.Validate(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err = _r$1; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - _r$2 = prep(data); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple = _r$2; - val = _tuple[0]; - packer = _tuple[1]; - err$1 = _tuple[2]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return err$1; - } - _r$3 = packer.Unpack(r, $clone(val, reflect.Value), options); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $s = -1; return _r$3; - /* */ } return; } if ($f === undefined) { $f = { $blk: UnpackWithOptions }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.options = options; $f.packer = packer; $f.r = r; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.UnpackWithOptions = UnpackWithOptions; - Type.prototype.Resolve = function(options) { - var _1, _2, _3, _r$1, _r$2, options, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _r$1 = $f._r$1; _r$2 = $f._r$2; options = $f.options; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - t = this.$val; - _1 = t; - /* */ if (_1 === (18)) { $s = 2; continue; } - /* */ if (_1 === (17)) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (_1 === (18)) { */ case 2: - _2 = options.PtrSize; - /* */ if (_2 === (8)) { $s = 6; continue; } - /* */ if (_2 === (16)) { $s = 7; continue; } - /* */ if (_2 === (32)) { $s = 8; continue; } - /* */ if (_2 === (64)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (_2 === (8)) { */ case 6: - $s = -1; return 4; - /* } else if (_2 === (16)) { */ case 7: - $s = -1; return 6; - /* } else if (_2 === (32)) { */ case 8: - $s = -1; return 8; - /* } else if (_2 === (64)) { */ case 9: - $s = -1; return 10; - /* } else { */ case 10: - _r$1 = fmt.Sprintf("unsupported ptr bits: %d", new sliceType$1([new $Int(options.PtrSize)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $panic(new $String(_r$1)); - /* } */ case 11: - case 5: - $s = 4; continue; - /* } else if (_1 === (17)) { */ case 3: - _3 = options.PtrSize; - /* */ if (_3 === (8)) { $s = 14; continue; } - /* */ if (_3 === (16)) { $s = 15; continue; } - /* */ if (_3 === (32)) { $s = 16; continue; } - /* */ if (_3 === (64)) { $s = 17; continue; } - /* */ $s = 18; continue; - /* if (_3 === (8)) { */ case 14: - $s = -1; return 5; - /* } else if (_3 === (16)) { */ case 15: - $s = -1; return 7; - /* } else if (_3 === (32)) { */ case 16: - $s = -1; return 9; - /* } else if (_3 === (64)) { */ case 17: - $s = -1; return 11; - /* } else { */ case 18: - _r$2 = fmt.Sprintf("unsupported ptr bits: %d", new sliceType$1([new $Int(options.PtrSize)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $panic(new $String(_r$2)); - /* } */ case 19: - case 13: - /* } */ case 4: - case 1: - $s = -1; return t; - /* */ } return; } if ($f === undefined) { $f = { $blk: Type.prototype.Resolve }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.options = options; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Type).prototype.Resolve = function(options) { return new Type(this.$get()).Resolve(options); }; - Type.prototype.String = function() { - var _entry, t; - t = this.$val; - return (_entry = typeNames[Type.keyFor(t)], _entry !== undefined ? _entry.v : ""); - }; - $ptrType(Type).prototype.String = function() { return new Type(this.$get()).String(); }; - Type.prototype.Size = function() { - var _1, t; - t = this.$val; - _1 = t; - if ((_1 === (17)) || (_1 === (18))) { - $panic(new $String("Size_t/Off_t types must be converted to another type using options.PtrSize")); - } else if ((_1 === (1)) || (_1 === (14)) || (_1 === (4)) || (_1 === (5)) || (_1 === (2))) { - return 1; - } else if ((_1 === (6)) || (_1 === (7))) { - return 2; - } else if ((_1 === (8)) || (_1 === (9)) || (_1 === (12))) { - return 4; - } else if ((_1 === (10)) || (_1 === (11)) || (_1 === (13))) { - return 8; - } else { - $panic(new $String("Cannot resolve size of type:" + new Type(t).String())); - } - }; - $ptrType(Type).prototype.Size = function() { return new Type(this.$get()).Size(); }; - init$1 = function() { - var _entry, _i, _key, _keys, _ref, enum$1, name; - _ref = typeLookup; - _i = 0; - _keys = $keys(_ref); - while (true) { - if (!(_i < _keys.length)) { break; } - _entry = _ref[_keys[_i]]; - if (_entry === undefined) { - _i++; - continue; - } - name = _entry.k; - enum$1 = _entry.v; - _key = enum$1; (typeNames || $throwRuntimeError("assignment to entry in nil map"))[Type.keyFor(_key)] = { k: _key, v: name }; - _i++; - } - }; - byteWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]; - binaryFallback.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, ptrType$3], [$Int, $error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, reflect.Value, ptrType$3], [$error], false)}]; - customFallback.methods = [{prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, ptrType$3], [$Int, $error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, reflect.Value, ptrType$3], [$error], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$1.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "packVal", name: "packVal", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$Int, $error], false)}, {prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$Int, $error], false)}, {prop: "unpackVal", name: "unpackVal", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([sliceType, reflect.Value, $Int, ptrType$3], [$error], false)}]; - Fields.methods = [{prop: "SetByteOrder", name: "SetByteOrder", pkg: "", typ: $funcType([binary.ByteOrder], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([reflect.Value, ptrType$3], [$Int], false)}, {prop: "sizefrom", name: "sizefrom", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", typ: $funcType([reflect.Value, sliceType$2], [$Int], false)}, {prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, reflect.Value, ptrType$3], [$Int, $error], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, reflect.Value, ptrType$3], [$error], false)}]; - ptrType$3.methods = [{prop: "Validate", name: "Validate", pkg: "", typ: $funcType([], [$error], false)}]; - Type.methods = [{prop: "Resolve", name: "Resolve", pkg: "", typ: $funcType([ptrType$3], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}]; - byteWriter.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); - binaryFallback.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", embedded: true, exported: false, typ: reflect.flag, tag: ""}]); - Custom.init([{prop: "Pack", name: "Pack", pkg: "", typ: $funcType([sliceType, ptrType$3], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([ptrType$3], [$Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([io.Reader, $Int, ptrType$3], [$error], false)}]); - customFallback.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", [{prop: "custom", name: "custom", embedded: false, exported: false, typ: Custom, tag: ""}]); - Field.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Ptr", name: "Ptr", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "defType", name: "defType", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "Array", name: "Array", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Slice", name: "Slice", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: binary.ByteOrder, tag: ""}, {prop: "Sizeof", name: "Sizeof", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Sizefrom", name: "Sizefrom", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Fields", name: "Fields", embedded: false, exported: true, typ: Fields, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: reflect.Kind, tag: ""}]); - Fields.init(ptrType$1); - strucTag.init("", [{prop: "Type", name: "Type", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: binary.ByteOrder, tag: ""}, {prop: "Sizeof", name: "Sizeof", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Skip", name: "Skip", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Sizefrom", name: "Sizefrom", embedded: false, exported: true, typ: $String, tag: ""}]); - Options.init("", [{prop: "ByteAlign", name: "ByteAlign", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "PtrSize", name: "PtrSize", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: binary.ByteOrder, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = reflect.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = regexp.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - fieldCacheLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0); - parseLock = new sync.Mutex.ptr(0, 0); - _r = regexp.MustCompile("^\\[(\\d*)\\]"); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - typeLenRe = _r; - fieldCache = {}; - emptyOptions = new Options.ptr(0, 0, $ifaceNil); - typeLookup = $makeMap($String.keyFor, [{ k: "pad", v: 1 }, { k: "bool", v: 2 }, { k: "byte", v: 5 }, { k: "int8", v: 4 }, { k: "uint8", v: 5 }, { k: "int16", v: 6 }, { k: "uint16", v: 7 }, { k: "int32", v: 8 }, { k: "uint32", v: 9 }, { k: "int64", v: 10 }, { k: "uint64", v: 11 }, { k: "float32", v: 12 }, { k: "float64", v: 13 }, { k: "size_t", v: 17 }, { k: "off_t", v: 18 }]); - typeNames = $makeMap(Type.keyFor, [{ k: 19, v: "Custom" }]); - reflectTypeMap = $makeMap(reflect.Kind.keyFor, [{ k: 1, v: 2 }, { k: 3, v: 4 }, { k: 4, v: 6 }, { k: 2, v: 8 }, { k: 5, v: 8 }, { k: 6, v: 10 }, { k: 8, v: 5 }, { k: 9, v: 7 }, { k: 7, v: 9 }, { k: 10, v: 9 }, { k: 11, v: 11 }, { k: 13, v: 12 }, { k: 14, v: 13 }, { k: 24, v: 14 }, { k: 25, v: 15 }, { k: 22, v: 16 }]); - $r = init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - init$1(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/proto"] = (function() { - var $pkg = {}, $init, bytes, struc, io, WebsocketLength, WebsocketConnectionRequest, sliceType, ptrType, ReadRequest; - bytes = $packages["bytes"]; - struc = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/lunixbochs/struc"]; - io = $packages["io"]; - WebsocketLength = $pkg.WebsocketLength = $newType(0, $kindStruct, "proto.WebsocketLength", true, "github.com/xiaokangwang/BrowserBridge/proto", true, function(Length_, Data_) { - this.$val = this; - if (arguments.length === 0) { - this.Length = 0; - this.Data = sliceType.nil; - return; - } - this.Length = Length_; - this.Data = Data_; - }); - WebsocketConnectionRequest = $pkg.WebsocketConnectionRequest = $newType(0, $kindStruct, "proto.WebsocketConnectionRequest", true, "github.com/xiaokangwang/BrowserBridge/proto", true, function(DestinationSize_, Destination_) { - this.$val = this; - if (arguments.length === 0) { - this.DestinationSize = 0; - this.Destination = ""; - return; - } - this.DestinationSize = DestinationSize_; - this.Destination = Destination_; - }); - sliceType = $sliceType($Uint8); - ptrType = $ptrType(WebsocketConnectionRequest); - ReadRequest = function(reader) { - var Request, _r, _r$1, data, err, reader, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; Request = $f.Request; _r = $f._r; _r$1 = $f._r$1; data = $f.data; err = $f.err; reader = $f.reader; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - Request = [Request]; - data = [data]; - err = $ifaceNil; - data[0] = new WebsocketLength.ptr(0, sliceType.nil); - _r = struc.Unpack(reader, data[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [err, ptrType.nil]; - } - Request[0] = new WebsocketConnectionRequest.ptr(0, ""); - _r$1 = struc.Unpack(bytes.NewReader(data[0].Data), Request[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err = _r$1; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [err, ptrType.nil]; - } - $s = -1; return [$ifaceNil, Request[0]]; - /* */ } return; } if ($f === undefined) { $f = { $blk: ReadRequest }; } $f.Request = Request; $f._r = _r; $f._r$1 = _r$1; $f.data = data; $f.err = err; $f.reader = reader; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.ReadRequest = ReadRequest; - WebsocketLength.init("", [{prop: "Length", name: "Length", embedded: false, exported: true, typ: $Uint32, tag: "struc:\"uint32,big,sizeof=Data\""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: sliceType, tag: ""}]); - WebsocketConnectionRequest.init("", [{prop: "DestinationSize", name: "DestinationSize", embedded: false, exported: true, typ: $Uint32, tag: "struc:\"uint32,big,sizeof=Destination\""}, {prop: "Destination", name: "Destination", embedded: false, exported: true, typ: $String, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = struc.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs"] = (function() { - var $pkg = {}, $init, js, ReadyState, WebSocket, ptrType, ptrType$1, ptrType$2, funcType, New; - js = $packages["github.com/gopherjs/gopherjs/js"]; - ReadyState = $pkg.ReadyState = $newType(2, $kindUint16, "websocketjs.ReadyState", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs", true, null); - WebSocket = $pkg.WebSocket = $newType(0, $kindStruct, "websocketjs.WebSocket", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs", true, function(Object_, URL_, ReadyState_, BufferedAmount_, Extensions_, Protocol_, BinaryType_) { - this.$val = this; - if (arguments.length === 0) { - this.Object = null; - this.URL = ""; - this.ReadyState = 0; - this.BufferedAmount = 0; - this.Extensions = ""; - this.Protocol = ""; - this.BinaryType = ""; - return; - } - this.Object = Object_; - this.URL = URL_; - this.ReadyState = ReadyState_; - this.BufferedAmount = BufferedAmount_; - this.Extensions = Extensions_; - this.Protocol = Protocol_; - this.BinaryType = BinaryType_; - }); - ptrType = $ptrType(WebSocket); - ptrType$1 = $ptrType(js.Error); - ptrType$2 = $ptrType(js.Object); - funcType = $funcType([ptrType$2], [], false); - ReadyState.prototype.String = function() { - var _1, rs; - rs = this.$val; - _1 = rs; - if (_1 === (0)) { - return "Connecting"; - } else if (_1 === (1)) { - return "Open"; - } else if (_1 === (2)) { - return "Closing"; - } else if (_1 === (3)) { - return "Closed"; - } else { - return "Unknown"; - } - }; - $ptrType(ReadyState).prototype.String = function() { return new ReadyState(this.$get()).String(); }; - New = function(url) { - var err, object, url, ws, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - ws = ptrType.nil; - err = $ifaceNil; - $deferred.push([(function() { - var _tuple, e, jsErr, ok; - e = $recover(); - if ($interfaceIsEqual(e, $ifaceNil)) { - return; - } - _tuple = $assertType(e, ptrType$1, true); - jsErr = _tuple[0]; - ok = _tuple[1]; - if (ok && !(jsErr === ptrType$1.nil)) { - ws = ptrType.nil; - err = jsErr; - } else { - $panic(e); - } - }), []]); - object = new ($global.WebSocket)($externalize(url, $String)); - ws = new WebSocket.ptr(object, "", 0, 0, "", "", ""); - return [ws, err]; - /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [ws, err]; } } - }; - $pkg.New = New; - WebSocket.ptr.prototype.AddEventListener = function(typ, useCapture, listener) { - var listener, typ, useCapture, ws; - ws = this; - ws.Object.addEventListener($externalize(typ, $String), $externalize(listener, funcType), $externalize(useCapture, $Bool)); - }; - WebSocket.prototype.AddEventListener = function(typ, useCapture, listener) { return this.$val.AddEventListener(typ, useCapture, listener); }; - WebSocket.ptr.prototype.RemoveEventListener = function(typ, useCapture, listener) { - var listener, typ, useCapture, ws; - ws = this; - ws.Object.removeEventListener($externalize(typ, $String), $externalize(listener, funcType), $externalize(useCapture, $Bool)); - }; - WebSocket.prototype.RemoveEventListener = function(typ, useCapture, listener) { return this.$val.RemoveEventListener(typ, useCapture, listener); }; - WebSocket.ptr.prototype.Send = function(data) { - var data, err, ws, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - err = $ifaceNil; - ws = this; - $deferred.push([(function() { - var _tuple, e, jsErr, ok; - e = $recover(); - if ($interfaceIsEqual(e, $ifaceNil)) { - return; - } - _tuple = $assertType(e, ptrType$1, true); - jsErr = _tuple[0]; - ok = _tuple[1]; - if (ok && !(jsErr === ptrType$1.nil)) { - err = jsErr; - } else { - $panic(e); - } - }), []]); - ws.Object.send($externalize(data, $emptyInterface)); - return err; - /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } } - }; - WebSocket.prototype.Send = function(data) { return this.$val.Send(data); }; - WebSocket.ptr.prototype.Close = function() { - var err, ws, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - err = $ifaceNil; - ws = this; - $deferred.push([(function() { - var _tuple, e, jsErr, ok; - e = $recover(); - if ($interfaceIsEqual(e, $ifaceNil)) { - return; - } - _tuple = $assertType(e, ptrType$1, true); - jsErr = _tuple[0]; - ok = _tuple[1]; - if (ok && !(jsErr === ptrType$1.nil)) { - err = jsErr; - } else { - $panic(e); - } - }), []]); - ws.Object.close(1000); - return err; - /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } } - }; - WebSocket.prototype.Close = function() { return this.$val.Close(); }; - ReadyState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType.methods = [{prop: "AddEventListener", name: "AddEventListener", pkg: "", typ: $funcType([$String, $Bool, funcType], [], false)}, {prop: "RemoveEventListener", name: "RemoveEventListener", pkg: "", typ: $funcType([$String, $Bool, funcType], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; - WebSocket.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType$2, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: "js:\"url\""}, {prop: "ReadyState", name: "ReadyState", embedded: false, exported: true, typ: ReadyState, tag: "js:\"readyState\""}, {prop: "BufferedAmount", name: "BufferedAmount", embedded: false, exported: true, typ: $Uint32, tag: "js:\"bufferedAmount\""}, {prop: "Extensions", name: "Extensions", embedded: false, exported: true, typ: $String, tag: "js:\"extensions\""}, {prop: "Protocol", name: "Protocol", embedded: false, exported: true, typ: $String, tag: "js:\"protocol\""}, {prop: "BinaryType", name: "BinaryType", embedded: false, exported: true, typ: $String, tag: "js:\"binaryType\""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["context"] = (function() { - var $pkg = {}, $init, errors, fmt, reflect, sync, time, emptyCtx, ptrType, structType, ptrType$1, chanType, background, todo, closedchan, init; - errors = $packages["errors"]; - fmt = $packages["fmt"]; - reflect = $packages["reflect"]; - sync = $packages["sync"]; - time = $packages["time"]; - emptyCtx = $pkg.emptyCtx = $newType(4, $kindInt, "context.emptyCtx", true, "context", false, null); - ptrType = $ptrType(emptyCtx); - structType = $structType("", []); - ptrType$1 = $ptrType(time.Location); - chanType = $chanType(structType, false, true); - $ptrType(emptyCtx).prototype.Deadline = function() { - var deadline, ok; - deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); - ok = false; - return [deadline, ok]; - }; - $ptrType(emptyCtx).prototype.Done = function() { - return $chanNil; - }; - $ptrType(emptyCtx).prototype.Err = function() { - return $ifaceNil; - }; - $ptrType(emptyCtx).prototype.Value = function(key) { - var key; - return $ifaceNil; - }; - $ptrType(emptyCtx).prototype.String = function() { - var _1, e; - e = this; - _1 = e; - if (_1 === (background)) { - return "context.Background"; - } else if (_1 === (todo)) { - return "context.TODO"; - } - return "unknown empty Context"; - }; - init = function() { - $close(closedchan); - }; - ptrType.methods = [{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = reflect.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.Canceled = errors.New("context canceled"); - background = $newDataPointer(0, ptrType); - todo = $newDataPointer(0, ptrType); - closedchan = new $Chan(structType, 0); - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/nettrace"] = (function() { - var $pkg = {}, $init; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/singleflight"] = (function() { - var $pkg = {}, $init, sync; - sync = $packages["sync"]; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = sync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["internal/x/net/dns/dnsmessage"] = (function() { - var $pkg = {}, $init, errors, errBaseLen, errCalcLen, errReserved, errTooManyPtr, errInvalidPtr, errNilResouceBody, errResourceLen, errSegTooLong, errZeroSegLen, errResTooLong, errTooManyQuestions, errTooManyAnswers, errTooManyAuthorities, errTooManyAdditionals, errNonCanonicalName, errStringTooLong, errCompressedSRV; - errors = $packages["errors"]; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $pkg.ErrNotStarted = errors.New("parsing/packing of this type isn't available yet"); - $pkg.ErrSectionDone = errors.New("parsing/packing of this section has completed"); - errBaseLen = errors.New("insufficient data for base length type"); - errCalcLen = errors.New("insufficient data for calculated length type"); - errReserved = errors.New("segment prefix is reserved"); - errTooManyPtr = errors.New("too many pointers (>10)"); - errInvalidPtr = errors.New("invalid pointer"); - errNilResouceBody = errors.New("nil resource body"); - errResourceLen = errors.New("insufficient data for resource body length"); - errSegTooLong = errors.New("segment length too long"); - errZeroSegLen = errors.New("zero length segment"); - errResTooLong = errors.New("resource length too long"); - errTooManyQuestions = errors.New("too many Questions to pack (>65535)"); - errTooManyAnswers = errors.New("too many Answers to pack (>65535)"); - errTooManyAuthorities = errors.New("too many Authorities to pack (>65535)"); - errTooManyAdditionals = errors.New("too many Additionals to pack (>65535)"); - errNonCanonicalName = errors.New("name is not in canonical format (it must end with a .)"); - errStringTooLong = errors.New("character string exceeds maximum length (255)"); - errCompressedSRV = errors.New("compressed name in SRV resource data"); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["math/rand"] = (function() { - var $pkg = {}, $init, nosync, math, Source, Source64, Rand, lockedSource, rngSource, arrayType, ptrType, ptrType$1, sliceType, ptrType$2, ptrType$3, funcType, sliceType$1, ptrType$5, ke, we, fe, kn, wn, fn, globalRand, rngCooked, absInt32, NewSource, New, read, seedrand; - nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; - math = $packages["math"]; - Source = $pkg.Source = $newType(8, $kindInterface, "rand.Source", true, "math/rand", true, null); - Source64 = $pkg.Source64 = $newType(8, $kindInterface, "rand.Source64", true, "math/rand", true, null); - Rand = $pkg.Rand = $newType(0, $kindStruct, "rand.Rand", true, "math/rand", true, function(src_, s64_, readVal_, readPos_) { - this.$val = this; - if (arguments.length === 0) { - this.src = $ifaceNil; - this.s64 = $ifaceNil; - this.readVal = new $Int64(0, 0); - this.readPos = 0; - return; - } - this.src = src_; - this.s64 = s64_; - this.readVal = readVal_; - this.readPos = readPos_; - }); - lockedSource = $pkg.lockedSource = $newType(0, $kindStruct, "rand.lockedSource", true, "math/rand", false, function(lk_, src_) { - this.$val = this; - if (arguments.length === 0) { - this.lk = new nosync.Mutex.ptr(false); - this.src = $ifaceNil; - return; - } - this.lk = lk_; - this.src = src_; - }); - rngSource = $pkg.rngSource = $newType(0, $kindStruct, "rand.rngSource", true, "math/rand", false, function(tap_, feed_, vec_) { - this.$val = this; - if (arguments.length === 0) { - this.tap = 0; - this.feed = 0; - this.vec = arrayType.zero(); - return; - } - this.tap = tap_; - this.feed = feed_; - this.vec = vec_; - }); - arrayType = $arrayType($Int64, 607); - ptrType = $ptrType(lockedSource); - ptrType$1 = $ptrType($Int8); - sliceType = $sliceType($Int); - ptrType$2 = $ptrType($Int64); - ptrType$3 = $ptrType(Rand); - funcType = $funcType([$Int, $Int], [], false); - sliceType$1 = $sliceType($Uint8); - ptrType$5 = $ptrType(rngSource); - Rand.ptr.prototype.ExpFloat64 = function() { - var _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - /* while (true) { */ case 1: - _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - j = _r; - i = (j & 255) >>> 0; - x = (j) * (((i < 0 || i >= we.length) ? ($throwRuntimeError("index out of range"), undefined) : we[i])); - if (j < ((i < 0 || i >= ke.length) ? ($throwRuntimeError("index out of range"), undefined) : ke[i])) { - $s = -1; return x; - } - /* */ if (i === 0) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (i === 0) { */ case 4: - _r$1 = r.Float64(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = math.Log(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return 7.69711747013105 - _r$2; - /* } */ case 5: - _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - /* */ if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { */ case 8: - $s = -1; return x; - /* } */ case 9: - /* } */ $s = 1; continue; case 2: - $s = -1; return 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.ExpFloat64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.ExpFloat64 = function() { return this.$val.ExpFloat64(); }; - absInt32 = function(i) { - var i; - if (i < 0) { - return ((-i >>> 0)); - } - return ((i >>> 0)); - }; - Rand.ptr.prototype.NormFloat64 = function() { - var _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - /* while (true) { */ case 1: - _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - j = ((_r >> 0)); - i = j & 127; - x = (j) * (((i < 0 || i >= wn.length) ? ($throwRuntimeError("index out of range"), undefined) : wn[i])); - if (absInt32(j) < ((i < 0 || i >= kn.length) ? ($throwRuntimeError("index out of range"), undefined) : kn[i])) { - $s = -1; return x; - } - /* */ if (i === 0) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (i === 0) { */ case 4: - /* while (true) { */ case 6: - _r$1 = r.Float64(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = math.Log(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - x = -_r$2 * 0.29047645161474317; - _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _r$4 = math.Log(_r$3); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - y = -_r$4; - if (y + y >= x * x) { - /* break; */ $s = 7; continue; - } - /* } */ $s = 6; continue; case 7: - if (j > 0) { - $s = -1; return 3.442619855899 + x; - } - $s = -1; return -3.442619855899 - x; - /* } */ case 5: - _r$5 = r.Float64(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - /* */ if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { */ case 12: - $s = -1; return x; - /* } */ case 13: - /* } */ $s = 1; continue; case 2: - $s = -1; return 0; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.NormFloat64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.NormFloat64 = function() { return this.$val.NormFloat64(); }; - NewSource = function(seed) { - var rng, seed; - rng = new rngSource.ptr(0, 0, arrayType.zero()); - rng.Seed(seed); - return rng; - }; - $pkg.NewSource = NewSource; - New = function(src) { - var _tuple, s64, src; - _tuple = $assertType(src, Source64, true); - s64 = _tuple[0]; - return new Rand.ptr(src, s64, new $Int64(0, 0), 0); - }; - $pkg.New = New; - Rand.ptr.prototype.Seed = function(seed) { - var _tuple, lk, ok, r, seed, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; lk = $f.lk; ok = $f.ok; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _tuple = $assertType(r.src, ptrType, true); - lk = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - $r = lk.seedPos(seed, (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 2: - $r = r.src.Seed(seed); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - r.readPos = 0; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Seed }; } $f._tuple = _tuple; $f.lk = lk; $f.ok = ok; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Seed = function(seed) { return this.$val.Seed(seed); }; - Rand.ptr.prototype.Int63 = function() { - var _r, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63 }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Int63 = function() { return this.$val.Int63(); }; - Rand.ptr.prototype.Uint32 = function() { - var _r, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return (($shiftRightInt64(_r, 31).$low >>> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint32 }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Uint32 = function() { return this.$val.Uint32(); }; - Rand.ptr.prototype.Uint64 = function() { - var _r, _r$1, _r$2, r, x, x$1, x$2, x$3, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; r = $f.r; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - /* */ if (!($interfaceIsEqual(r.s64, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(r.s64, $ifaceNil))) { */ case 1: - _r = r.s64.Uint64(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - _r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = r.Int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return (x = $shiftRightUint64(((x$1 = _r$1, new $Uint64(x$1.$high, x$1.$low))), 31), x$2 = $shiftLeft64(((x$3 = _r$2, new $Uint64(x$3.$high, x$3.$low))), 32), new $Uint64(x.$high | x$2.$high, (x.$low | x$2.$low) >>> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Uint64 = function() { return this.$val.Uint64(); }; - Rand.ptr.prototype.Int31 = function() { - var _r, r, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return (((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31 }; } $f._r = _r; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Int31 = function() { return this.$val.Int31(); }; - Rand.ptr.prototype.Int = function() { - var _r, r, u, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - u = ((_r.$low >>> 0)); - $s = -1; return ((((u << 1 >>> 0) >>> 1 >>> 0) >> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int }; } $f._r = _r; $f.r = r; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Int = function() { return this.$val.Int(); }; - Rand.ptr.prototype.Int63n = function(n) { - var _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; max = $f.max; n = $f.n; r = $f.r; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) { - $panic(new $String("invalid argument to Int63n")); - } - /* */ if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { */ case 1: - _r = r.Int63(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return (x$2 = _r, x$3 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)); - /* } */ case 2: - max = ((x$4 = (x$5 = $div64(new $Uint64(2147483648, 0), (new $Uint64(n.$high, n.$low)), true), new $Uint64(2147483647 - x$5.$high, 4294967295 - x$5.$low)), new $Int64(x$4.$high, x$4.$low))); - _r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - v = _r$1; - /* while (true) { */ case 5: - /* if (!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { break; } */ if(!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { $s = 6; continue; } - _r$2 = r.Int63(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v = _r$2; - /* } */ $s = 5; continue; case 6: - $s = -1; return $div64(v, n, true); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Int63n = function(n) { return this.$val.Int63n(n); }; - Rand.ptr.prototype.Int31n = function(n) { - var _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; max = $f.max; n = $f.n; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - if (n <= 0) { - $panic(new $String("invalid argument to Int31n")); - } - /* */ if ((n & ((n - 1 >> 0))) === 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((n & ((n - 1 >> 0))) === 0) { */ case 1: - _r = r.Int31(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r & ((n - 1 >> 0)); - /* } */ case 2: - max = (((2147483647 - (_r$1 = 2147483648 % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0)); - _r$2 = r.Int31(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v = _r$2; - /* while (true) { */ case 5: - /* if (!(v > max)) { break; } */ if(!(v > max)) { $s = 6; continue; } - _r$3 = r.Int31(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - v = _r$3; - /* } */ $s = 5; continue; case 6: - $s = -1; return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Int31n = function(n) { return this.$val.Int31n(n); }; - Rand.ptr.prototype.int31n = function(n) { - var _r, _r$1, _r$2, low, n, prod, r, thresh, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; low = $f.low; n = $f.n; prod = $f.prod; r = $f.r; thresh = $f.thresh; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - _r = r.Uint32(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - v = _r; - prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n))); - low = ((prod.$low >>> 0)); - /* */ if (low < ((n >>> 0))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (low < ((n >>> 0))) { */ case 2: - thresh = (_r$1 = ((-n >>> 0)) % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); - /* while (true) { */ case 4: - /* if (!(low < thresh)) { break; } */ if(!(low < thresh)) { $s = 5; continue; } - _r$2 = r.Uint32(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - v = _r$2; - prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n))); - low = ((prod.$low >>> 0)); - /* } */ $s = 4; continue; case 5: - /* } */ case 3: - $s = -1; return (($shiftRightUint64(prod, 32).$low >> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.int31n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.low = low; $f.n = n; $f.prod = prod; $f.r = r; $f.thresh = thresh; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.int31n = function(n) { return this.$val.int31n(n); }; - Rand.ptr.prototype.Intn = function(n) { - var _r, _r$1, n, r, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; n = $f.n; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - if (n <= 0) { - $panic(new $String("invalid argument to Intn")); - } - /* */ if (n <= 2147483647) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (n <= 2147483647) { */ case 1: - _r = r.Int31n(((n >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return ((_r >> 0)); - /* } */ case 2: - _r$1 = r.Int63n((new $Int64(0, n))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return (((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Intn }; } $f._r = _r; $f._r$1 = _r$1; $f.n = n; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Intn = function(n) { return this.$val.Intn(n); }; - Rand.ptr.prototype.Float64 = function() { - var _r, f, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - /* again: */ case 1: - _r = r.Int63(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - f = ($flatten64(_r)) / 9.223372036854776e+18; - /* */ if (f === 1) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (f === 1) { */ case 3: - /* goto again */ $s = 1; continue; - /* } */ case 4: - $s = -1; return f; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float64 }; } $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Float64 = function() { return this.$val.Float64(); }; - Rand.ptr.prototype.Float32 = function() { - var _r, f, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - /* again: */ case 1: - _r = r.Float64(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - f = ($fround(_r)); - /* */ if (f === 1) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (f === 1) { */ case 3: - /* goto again */ $s = 1; continue; - /* } */ case 4: - $s = -1; return f; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float32 }; } $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Float32 = function() { return this.$val.Float32(); }; - Rand.ptr.prototype.Perm = function(n) { - var _r, i, j, m, n, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; m = $f.m; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - m = $makeSlice(sliceType, n); - i = 0; - /* while (true) { */ case 1: - /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } - _r = r.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - j = _r; - ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j])); - ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j] = i); - i = i + (1) >> 0; - /* } */ $s = 1; continue; case 2: - $s = -1; return m; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Perm }; } $f._r = _r; $f.i = i; $f.j = j; $f.m = m; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Perm = function(n) { return this.$val.Perm(n); }; - Rand.ptr.prototype.Shuffle = function(n, swap) { - var _r, _r$1, i, j, j$1, n, r, swap, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; j = $f.j; j$1 = $f.j$1; n = $f.n; r = $f.r; swap = $f.swap; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - if (n < 0) { - $panic(new $String("invalid argument to Shuffle")); - } - i = n - 1 >> 0; - /* while (true) { */ case 1: - /* if (!(i > 2147483646)) { break; } */ if(!(i > 2147483646)) { $s = 2; continue; } - _r = r.Int63n((new $Int64(0, (i + 1 >> 0)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - j = (((x = _r, x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); - $r = swap(i, j); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i - (1) >> 0; - /* } */ $s = 1; continue; case 2: - /* while (true) { */ case 5: - /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 6; continue; } - _r$1 = r.int31n((((i + 1 >> 0) >> 0))); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - j$1 = ((_r$1 >> 0)); - $r = swap(i, j$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = i - (1) >> 0; - /* } */ $s = 5; continue; case 6: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Shuffle }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.j = j; $f.j$1 = j$1; $f.n = n; $f.r = r; $f.swap = swap; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Shuffle = function(n, swap) { return this.$val.Shuffle(n, swap); }; - Rand.ptr.prototype.Read = function(p) { - var _r, _r$1, _tuple, _tuple$1, _tuple$2, err, lk, n, ok, p, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; lk = $f.lk; n = $f.n; ok = $f.ok; p = $f.p; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - r = this; - _tuple = $assertType(r.src, ptrType, true); - lk = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _r = lk.read(p, (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$2(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - n = _tuple$1[0]; - err = _tuple$1[1]; - $s = -1; return [n, err]; - /* } */ case 2: - _r$1 = read(p, $methodVal(r, "Int63"), (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$2(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$2 = _r$1; - n = _tuple$2[0]; - err = _tuple$2[1]; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.lk = lk; $f.n = n; $f.ok = ok; $f.p = p; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - Rand.prototype.Read = function(p) { return this.$val.Read(p); }; - read = function(p, int63, readVal, readPos) { - var _r, err, int63, n, p, pos, readPos, readVal, val, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; int63 = $f.int63; n = $f.n; p = $f.p; pos = $f.pos; readPos = $f.readPos; readVal = $f.readVal; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - pos = readPos.$get(); - val = readVal.$get(); - n = 0; - /* while (true) { */ case 1: - /* if (!(n < p.$length)) { break; } */ if(!(n < p.$length)) { $s = 2; continue; } - /* */ if (pos === 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (pos === 0) { */ case 3: - _r = int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - val = _r; - pos = 7; - /* } */ case 4: - ((n < 0 || n >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + n] = ((val.$low << 24 >>> 24))); - val = $shiftRightInt64(val, (8)); - pos = pos - (1) << 24 >> 24; - n = n + (1) >> 0; - /* } */ $s = 1; continue; case 2: - readPos.$set(pos); - readVal.$set(val); - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: read }; } $f._r = _r; $f.err = err; $f.int63 = int63; $f.n = n; $f.p = p; $f.pos = pos; $f.readPos = readPos; $f.readVal = readVal; $f.val = val; $f.$s = $s; $f.$r = $r; return $f; - }; - lockedSource.ptr.prototype.Int63 = function() { - var _r, n, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = new $Int64(0, 0); - r = this; - r.lk.Lock(); - _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - n = _r; - r.lk.Unlock(); - $s = -1; return n; - /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Int63 }; } $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - lockedSource.prototype.Int63 = function() { return this.$val.Int63(); }; - lockedSource.ptr.prototype.Uint64 = function() { - var _r, n, r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = new $Uint64(0, 0); - r = this; - r.lk.Lock(); - _r = r.src.Uint64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - n = _r; - r.lk.Unlock(); - $s = -1; return n; - /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Uint64 }; } $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f; - }; - lockedSource.prototype.Uint64 = function() { return this.$val.Uint64(); }; - lockedSource.ptr.prototype.Seed = function(seed) { - var r, seed, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - r.lk.Lock(); - $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - r.lk.Unlock(); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Seed }; } $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f; - }; - lockedSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); }; - lockedSource.ptr.prototype.seedPos = function(seed, readPos) { - var r, readPos, seed, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; readPos = $f.readPos; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - r = this; - r.lk.Lock(); - $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - readPos.$set(0); - r.lk.Unlock(); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.seedPos }; } $f.r = r; $f.readPos = readPos; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f; - }; - lockedSource.prototype.seedPos = function(seed, readPos) { return this.$val.seedPos(seed, readPos); }; - lockedSource.ptr.prototype.read = function(p, readVal, readPos) { - var _r, _tuple, err, n, p, r, readPos, readVal, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; r = $f.r; readPos = $f.readPos; readVal = $f.readVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - r = this; - r.lk.Lock(); - _r = read(p, $methodVal(r.src, "Int63"), readVal, readPos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - r.lk.Unlock(); - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.read }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.r = r; $f.readPos = readPos; $f.readVal = readVal; $f.$s = $s; $f.$r = $r; return $f; - }; - lockedSource.prototype.read = function(p, readVal, readPos) { return this.$val.read(p, readVal, readPos); }; - seedrand = function(x) { - var _q, _r, hi, lo, x; - hi = (_q = x / 44488, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - lo = (_r = x % 44488, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); - x = ($imul(48271, lo)) - ($imul(3399, hi)) >> 0; - if (x < 0) { - x = x + (2147483647) >> 0; - } - return x; - }; - rngSource.ptr.prototype.Seed = function(seed) { - var i, rng, seed, u, x, x$1, x$2, x$3, x$4, x$5; - rng = this; - rng.tap = 0; - rng.feed = 334; - seed = $div64(seed, new $Int64(0, 2147483647), true); - if ((seed.$high < 0 || (seed.$high === 0 && seed.$low < 0))) { - seed = (x = new $Int64(0, 2147483647), new $Int64(seed.$high + x.$high, seed.$low + x.$low)); - } - if ((seed.$high === 0 && seed.$low === 0)) { - seed = new $Int64(0, 89482311); - } - x$1 = (((seed.$low + ((seed.$high >> 31) * 4294967296)) >> 0)); - i = -20; - while (true) { - if (!(i < 607)) { break; } - x$1 = seedrand(x$1); - if (i >= 0) { - u = new $Int64(0, 0); - u = $shiftLeft64((new $Int64(0, x$1)), 40); - x$1 = seedrand(x$1); - u = (x$2 = $shiftLeft64((new $Int64(0, x$1)), 20), new $Int64(u.$high ^ x$2.$high, (u.$low ^ x$2.$low) >>> 0)); - x$1 = seedrand(x$1); - u = (x$3 = (new $Int64(0, x$1)), new $Int64(u.$high ^ x$3.$high, (u.$low ^ x$3.$low) >>> 0)); - u = (x$4 = ((i < 0 || i >= rngCooked.length) ? ($throwRuntimeError("index out of range"), undefined) : rngCooked[i]), new $Int64(u.$high ^ x$4.$high, (u.$low ^ x$4.$low) >>> 0)); - (x$5 = rng.vec, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i] = u)); - } - i = i + (1) >> 0; - } - }; - rngSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); }; - rngSource.ptr.prototype.Int63 = function() { - var rng, x, x$1; - rng = this; - return ((x = (x$1 = rng.Uint64(), new $Uint64(x$1.$high & 2147483647, (x$1.$low & 4294967295) >>> 0)), new $Int64(x.$high, x.$low))); - }; - rngSource.prototype.Int63 = function() { return this.$val.Int63(); }; - rngSource.ptr.prototype.Uint64 = function() { - var rng, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; - rng = this; - rng.tap = rng.tap - (1) >> 0; - if (rng.tap < 0) { - rng.tap = rng.tap + (607) >> 0; - } - rng.feed = rng.feed - (1) >> 0; - if (rng.feed < 0) { - rng.feed = rng.feed + (607) >> 0; - } - x$6 = (x = (x$1 = rng.vec, x$2 = rng.feed, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])), x$3 = (x$4 = rng.vec, x$5 = rng.tap, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), new $Int64(x.$high + x$3.$high, x.$low + x$3.$low)); - (x$7 = rng.vec, x$8 = rng.feed, ((x$8 < 0 || x$8 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[x$8] = x$6)); - return (new $Uint64(x$6.$high, x$6.$low)); - }; - rngSource.prototype.Uint64 = function() { return this.$val.Uint64(); }; - ptrType$3.methods = [{prop: "ExpFloat64", name: "ExpFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "NormFloat64", name: "NormFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Int31", name: "Int31", pkg: "", typ: $funcType([], [$Int32], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int63n", name: "Int63n", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "Int31n", name: "Int31n", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "int31n", name: "int31n", pkg: "math/rand", typ: $funcType([$Int32], [$Int32], false)}, {prop: "Intn", name: "Intn", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "Shuffle", name: "Shuffle", pkg: "", typ: $funcType([$Int, funcType], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]; - ptrType.methods = [{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "seedPos", name: "seedPos", pkg: "math/rand", typ: $funcType([$Int64, ptrType$1], [], false)}, {prop: "read", name: "read", pkg: "math/rand", typ: $funcType([sliceType$1, ptrType$2, ptrType$1], [$Int, $error], false)}]; - ptrType$5.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]; - Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]); - Source64.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]); - Rand.init("math/rand", [{prop: "src", name: "src", embedded: false, exported: false, typ: Source, tag: ""}, {prop: "s64", name: "s64", embedded: false, exported: false, typ: Source64, tag: ""}, {prop: "readVal", name: "readVal", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "readPos", name: "readPos", embedded: false, exported: false, typ: $Int8, tag: ""}]); - lockedSource.init("math/rand", [{prop: "lk", name: "lk", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "src", name: "src", embedded: false, exported: false, typ: Source64, tag: ""}]); - rngSource.init("math/rand", [{prop: "tap", name: "tap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "feed", name: "feed", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "vec", name: "vec", embedded: false, exported: false, typ: arrayType, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = nosync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - ke = $toNativeArray($kindUint32, [3801129273, 0, 2615860924, 3279400049, 3571300752, 3733536696, 3836274812, 3906990442, 3958562475, 3997804264, 4028649213, 4053523342, 4074002619, 4091154507, 4105727352, 4118261130, 4129155133, 4138710916, 4147160435, 4154685009, 4161428406, 4167506077, 4173011791, 4178022498, 4182601930, 4186803325, 4190671498, 4194244443, 4197554582, 4200629752, 4203493986, 4206168142, 4208670408, 4211016720, 4213221098, 4215295924, 4217252177, 4219099625, 4220846988, 4222502074, 4224071896, 4225562770, 4226980400, 4228329951, 4229616109, 4230843138, 4232014925, 4233135020, 4234206673, 4235232866, 4236216336, 4237159604, 4238064994, 4238934652, 4239770563, 4240574564, 4241348362, 4242093539, 4242811568, 4243503822, 4244171579, 4244816032, 4245438297, 4246039419, 4246620374, 4247182079, 4247725394, 4248251127, 4248760037, 4249252839, 4249730206, 4250192773, 4250641138, 4251075867, 4251497493, 4251906522, 4252303431, 4252688672, 4253062674, 4253425844, 4253778565, 4254121205, 4254454110, 4254777611, 4255092022, 4255397640, 4255694750, 4255983622, 4256264513, 4256537670, 4256803325, 4257061702, 4257313014, 4257557464, 4257795244, 4258026541, 4258251531, 4258470383, 4258683258, 4258890309, 4259091685, 4259287526, 4259477966, 4259663135, 4259843154, 4260018142, 4260188212, 4260353470, 4260514019, 4260669958, 4260821380, 4260968374, 4261111028, 4261249421, 4261383632, 4261513736, 4261639802, 4261761900, 4261880092, 4261994441, 4262105003, 4262211835, 4262314988, 4262414513, 4262510454, 4262602857, 4262691764, 4262777212, 4262859239, 4262937878, 4263013162, 4263085118, 4263153776, 4263219158, 4263281289, 4263340187, 4263395872, 4263448358, 4263497660, 4263543789, 4263586755, 4263626565, 4263663224, 4263696735, 4263727099, 4263754314, 4263778377, 4263799282, 4263817020, 4263831582, 4263842955, 4263851124, 4263856071, 4263857776, 4263856218, 4263851370, 4263843206, 4263831695, 4263816804, 4263798497, 4263776735, 4263751476, 4263722676, 4263690284, 4263654251, 4263614520, 4263571032, 4263523724, 4263472530, 4263417377, 4263358192, 4263294892, 4263227394, 4263155608, 4263079437, 4262998781, 4262913534, 4262823581, 4262728804, 4262629075, 4262524261, 4262414220, 4262298801, 4262177846, 4262051187, 4261918645, 4261780032, 4261635148, 4261483780, 4261325704, 4261160681, 4260988457, 4260808763, 4260621313, 4260425802, 4260221905, 4260009277, 4259787550, 4259556329, 4259315195, 4259063697, 4258801357, 4258527656, 4258242044, 4257943926, 4257632664, 4257307571, 4256967906, 4256612870, 4256241598, 4255853155, 4255446525, 4255020608, 4254574202, 4254106002, 4253614578, 4253098370, 4252555662, 4251984571, 4251383021, 4250748722, 4250079132, 4249371435, 4248622490, 4247828790, 4246986404, 4246090910, 4245137315, 4244119963, 4243032411, 4241867296, 4240616155, 4239269214, 4237815118, 4236240596, 4234530035, 4232664930, 4230623176, 4228378137, 4225897409, 4223141146, 4220059768, 4216590757, 4212654085, 4208145538, 4202926710, 4196809522, 4189531420, 4180713890, 4169789475, 4155865042, 4137444620, 4111806704, 4073393724, 4008685917, 3873074895]); - we = $toNativeArray($kindFloat32, [2.0249555365836613e-09, 1.4866739783681027e-11, 2.4409616689036184e-11, 3.1968806074589295e-11, 3.844677007314168e-11, 4.42282044321729e-11, 4.951644302919611e-11, 5.443358958023836e-11, 5.905943789574764e-11, 6.34494193296753e-11, 6.764381416113352e-11, 7.167294535648239e-11, 7.556032188826833e-11, 7.932458162551725e-11, 8.298078890689453e-11, 8.654132271912474e-11, 9.001651507523079e-11, 9.341507428706208e-11, 9.674443190998971e-11, 1.0001099254308699e-10, 1.0322031424037093e-10, 1.0637725422757427e-10, 1.0948611461891744e-10, 1.1255067711157807e-10, 1.1557434870246297e-10, 1.1856014781042035e-10, 1.2151082917633005e-10, 1.2442885610752796e-10, 1.2731647680563896e-10, 1.3017574518325858e-10, 1.330085347417409e-10, 1.3581656632677408e-10, 1.386014220061682e-10, 1.413645728254309e-10, 1.4410737880776736e-10, 1.4683107507629245e-10, 1.4953686899854546e-10, 1.522258291641876e-10, 1.5489899640730442e-10, 1.575573282952547e-10, 1.6020171300645814e-10, 1.628330109637588e-10, 1.6545202707884954e-10, 1.68059510752272e-10, 1.7065616975120435e-10, 1.73242697965037e-10, 1.758197337720091e-10, 1.783878739169964e-10, 1.8094774290045024e-10, 1.834998542005195e-10, 1.8604476292871652e-10, 1.8858298256319017e-10, 1.9111498494872592e-10, 1.9364125580789704e-10, 1.9616222535212557e-10, 1.9867835154840918e-10, 2.011900368525943e-10, 2.0369768372052732e-10, 2.062016807302669e-10, 2.0870240258208383e-10, 2.1120022397624894e-10, 2.136955057352452e-10, 2.1618855317040442e-10, 2.1867974098199738e-10, 2.2116936060356807e-10, 2.2365774510202385e-10, 2.2614519978869652e-10, 2.2863201609713002e-10, 2.3111849933865614e-10, 2.3360494094681883e-10, 2.3609159072179864e-10, 2.3857874009713953e-10, 2.4106666662859766e-10, 2.4355562011635357e-10, 2.460458781161634e-10, 2.485376904282077e-10, 2.5103127909709144e-10, 2.5352694943414633e-10, 2.560248957284017e-10, 2.585253955356137e-10, 2.610286709003873e-10, 2.6353494386732734e-10, 2.6604446423661443e-10, 2.6855745405285347e-10, 2.71074163116225e-10, 2.7359478571575835e-10, 2.7611959940720965e-10, 2.786487707240326e-10, 2.8118254946640775e-10, 2.8372118543451563e-10, 2.8626484516180994e-10, 2.8881380620404684e-10, 2.9136826285025563e-10, 2.9392840938946563e-10, 2.96494523377433e-10, 2.990667713476114e-10, 3.016454031001814e-10, 3.042306406797479e-10, 3.068226783753403e-10, 3.09421765987139e-10, 3.12028125559749e-10, 3.1464195138219964e-10, 3.17263521010247e-10, 3.1989300097734485e-10, 3.225306410836737e-10, 3.2517669112941405e-10, 3.2783134540359526e-10, 3.3049485370639786e-10, 3.3316743808242677e-10, 3.3584937608743815e-10, 3.385408342548857e-10, 3.4124211789610115e-10, 3.4395342130011386e-10, 3.4667499426710435e-10, 3.494071143528288e-10, 3.521500313574677e-10, 3.54903967325626e-10, 3.576691720574843e-10, 3.6044595086437425e-10, 3.632345535464765e-10, 3.660352021483959e-10, 3.688482297370399e-10, 3.716738583570134e-10, 3.7451239331964814e-10, 3.773641121807003e-10, 3.802292924959261e-10, 3.831082673322328e-10, 3.8600128648980103e-10, 3.8890865527996255e-10, 3.9183070676962473e-10, 3.9476774627011935e-10, 3.977200790927782e-10, 4.006880383045086e-10, 4.0367195697221803e-10, 4.066721681628138e-10, 4.0968900494320337e-10, 4.127228558914453e-10, 4.15774054074447e-10, 4.188429603146915e-10, 4.2192993543466173e-10, 4.25035395767992e-10, 4.2815970213716525e-10, 4.313032986313914e-10, 4.3446651831757777e-10, 4.376498607960855e-10, 4.408536868893975e-10, 4.4407846844229937e-10, 4.4732464954400086e-10, 4.5059267428371186e-10, 4.538830145062178e-10, 4.5719619756745544e-10, 4.605326675566346e-10, 4.638929240741163e-10, 4.672775499869886e-10, 4.706869893844612e-10, 4.74121908400349e-10, 4.775827511238617e-10, 4.810701836888143e-10, 4.845848167178701e-10, 4.881271498113904e-10, 4.916979601254923e-10, 4.952977472605369e-10, 4.989272883726414e-10, 5.025872495956207e-10, 5.062783525744408e-10, 5.100013189540675e-10, 5.13756870379467e-10, 5.175458395179078e-10, 5.21369003525507e-10, 5.252272505806843e-10, 5.29121357839557e-10, 5.330522134805449e-10, 5.3702081670437e-10, 5.41028055689452e-10, 5.450749851476644e-10, 5.491624932574268e-10, 5.532918012640664e-10, 5.574638528571541e-10, 5.616799247931681e-10, 5.659410717839819e-10, 5.702485705860738e-10, 5.746036979559221e-10, 5.790077306500052e-10, 5.83462111958255e-10, 5.879682296594524e-10, 5.925275825546805e-10, 5.971417249561739e-10, 6.01812211176167e-10, 6.065408175714992e-10, 6.113292094767075e-10, 6.16179329782085e-10, 6.21092954844471e-10, 6.260721940876124e-10, 6.311191569352559e-10, 6.362359528111483e-10, 6.414249686947926e-10, 6.466885360545405e-10, 6.520292639144998e-10, 6.574497612987784e-10, 6.629528592760892e-10, 6.685415554485985e-10, 6.742187919073217e-10, 6.799880103436351e-10, 6.858525969377638e-10, 6.918161599145378e-10, 6.978825850545434e-10, 7.040559801829716e-10, 7.103406751696184e-10, 7.167412219288849e-10, 7.232625609532306e-10, 7.2990985477972e-10, 7.366885990123251e-10, 7.436047333442275e-10, 7.506645305355164e-10, 7.57874762946642e-10, 7.652426470272644e-10, 7.727759543385559e-10, 7.804830115532013e-10, 7.883728114777e-10, 7.964550685635174e-10, 8.047402189070851e-10, 8.132396422944055e-10, 8.219657177122031e-10, 8.309318788590758e-10, 8.401527806789488e-10, 8.496445214056791e-10, 8.594246980742071e-10, 8.695127395874636e-10, 8.799300732498239e-10, 8.90700457834015e-10, 9.01850316648023e-10, 9.134091816243028e-10, 9.254100818978372e-10, 9.37890431984556e-10, 9.508922538259412e-10, 9.64463842123564e-10, 9.78660263939446e-10, 9.935448019859905e-10, 1.0091912860943353e-09, 1.0256859805934937e-09, 1.0431305819125214e-09, 1.0616465484503124e-09, 1.0813799855569073e-09, 1.1025096391392708e-09, 1.1252564435793033e-09, 1.149898620766976e-09, 1.176793218427008e-09, 1.2064089727203964e-09, 1.2393785997488749e-09, 1.2765849488616254e-09, 1.319313880365769e-09, 1.36954347862428e-09, 1.4305497897382224e-09, 1.5083649884672923e-09, 1.6160853766322703e-09, 1.7921247819074893e-09]); - fe = $toNativeArray($kindFloat32, [1, 0.9381436705589294, 0.900469958782196, 0.8717043399810791, 0.847785472869873, 0.8269932866096497, 0.8084216713905334, 0.7915276288986206, 0.7759568691253662, 0.7614634037017822, 0.7478685975074768, 0.7350381016731262, 0.7228676676750183, 0.7112747430801392, 0.7001926302909851, 0.6895664930343628, 0.6793505549430847, 0.669506311416626, 0.6600008606910706, 0.6508058309555054, 0.6418967247009277, 0.633251965045929, 0.62485271692276, 0.6166821718215942, 0.608725368976593, 0.6009689569473267, 0.5934008955955505, 0.5860103368759155, 0.5787873864173889, 0.5717230439186096, 0.5648092031478882, 0.5580382943153381, 0.5514034032821655, 0.5448982119560242, 0.5385168790817261, 0.5322538614273071, 0.526104211807251, 0.5200631618499756, 0.5141264200210571, 0.5082897543907166, 0.5025495290756226, 0.4969019889831543, 0.4913438558578491, 0.4858720004558563, 0.48048335313796997, 0.4751752018928528, 0.4699448347091675, 0.4647897481918335, 0.4597076177597046, 0.4546961486339569, 0.4497532546520233, 0.44487687945365906, 0.4400651156902313, 0.4353161156177521, 0.4306281507015228, 0.42599955201148987, 0.42142874002456665, 0.4169141948223114, 0.4124544560909271, 0.40804818272590637, 0.4036940038204193, 0.39939069747924805, 0.3951369822025299, 0.39093172550201416, 0.38677382469177246, 0.38266217708587646, 0.378595769405365, 0.37457355856895447, 0.37059465050697327, 0.366658091545105, 0.362762987613678, 0.358908474445343, 0.35509374737739563, 0.35131800174713135, 0.3475804924964905, 0.34388044476509094, 0.34021714329719543, 0.33658990263938904, 0.3329980671405792, 0.3294409513473511, 0.32591795921325684, 0.32242849469184875, 0.3189719021320343, 0.3155476748943329, 0.31215524673461914, 0.3087940812110901, 0.30546361207962036, 0.30216339230537415, 0.29889291524887085, 0.29565170407295227, 0.2924392819404602, 0.2892552316188812, 0.28609907627105713, 0.2829704284667969, 0.27986884117126465, 0.2767939269542694, 0.2737452983856201, 0.2707225978374481, 0.26772540807724, 0.26475343108177185, 0.2618062496185303, 0.258883535861969, 0.2559850215911865, 0.25311028957366943, 0.25025907158851624, 0.24743106961250305, 0.2446259707212448, 0.24184346199035645, 0.23908329010009766, 0.23634515702724457, 0.2336287796497345, 0.23093391954898834, 0.22826029360294342, 0.22560766339302063, 0.22297576069831848, 0.22036437690258026, 0.21777324378490448, 0.21520215272903442, 0.212650865316391, 0.21011915802955627, 0.20760682225227356, 0.20511364936828613, 0.20263944566249847, 0.20018397271633148, 0.19774706661701202, 0.1953285187482834, 0.19292815029621124, 0.19054576754570007, 0.18818120658397675, 0.18583425879478455, 0.18350479006767273, 0.18119260668754578, 0.17889754474163055, 0.17661945521831512, 0.17435817420482635, 0.1721135377883911, 0.16988539695739746, 0.16767361760139465, 0.16547803580760956, 0.16329853236675262, 0.16113494336605072, 0.1589871346950531, 0.15685498714447021, 0.15473836660385132, 0.15263713896274567, 0.1505511850118637, 0.1484803706407547, 0.14642459154129028, 0.1443837285041809, 0.14235764741897583, 0.1403462439775467, 0.13834942877292633, 0.136367067694664, 0.13439907133579254, 0.1324453204870224, 0.1305057406425476, 0.12858019769191742, 0.12666863203048706, 0.12477091699838638, 0.12288697808980942, 0.1210167184472084, 0.11916005611419678, 0.11731690168380737, 0.11548716574907303, 0.11367076635360718, 0.11186762899160385, 0.11007767915725708, 0.1083008274435997, 0.10653700679540634, 0.10478614270687103, 0.1030481606721878, 0.10132300108671188, 0.0996105819940567, 0.09791085124015808, 0.09622374176979065, 0.09454918652772903, 0.09288713335990906, 0.09123751521110535, 0.08960027992725372, 0.08797537535429001, 0.08636274188756943, 0.0847623273730278, 0.08317409455776215, 0.08159798383712769, 0.08003395050764084, 0.07848194986581802, 0.07694194465875626, 0.07541389018297195, 0.07389774918556213, 0.07239348441362381, 0.070901058614254, 0.06942043453454971, 0.06795158982276917, 0.06649449467658997, 0.06504911929368973, 0.06361543387174606, 0.06219341605901718, 0.06078304722905159, 0.0593843050301075, 0.05799717456102371, 0.05662164092063904, 0.05525768920779228, 0.05390531197190285, 0.05256449431180954, 0.05123523622751236, 0.04991753399372101, 0.04861138388514519, 0.047316793352365494, 0.04603376239538193, 0.044762298464775085, 0.04350241273641586, 0.04225412383675575, 0.04101744294166565, 0.039792392402887344, 0.03857899457216263, 0.03737728297710419, 0.03618728369474411, 0.03500903770327568, 0.03384258225560188, 0.0326879620552063, 0.031545232981443405, 0.030414443463087082, 0.0292956605553627, 0.028188949450850487, 0.027094384655356407, 0.02601204626262188, 0.024942025542259216, 0.023884421214461327, 0.022839335724711418, 0.021806888282299042, 0.020787203684449196, 0.019780423492193222, 0.018786700442433357, 0.017806200310587883, 0.016839107498526573, 0.015885621309280396, 0.014945968054234982, 0.01402039173990488, 0.013109165243804455, 0.012212592177093029, 0.011331013403832912, 0.010464809834957123, 0.009614413604140282, 0.008780314587056637, 0.007963077165186405, 0.007163353264331818, 0.0063819061033427715, 0.005619642324745655, 0.004877655766904354, 0.004157294984906912, 0.003460264764726162, 0.0027887988835573196, 0.0021459676790982485, 0.001536299823783338, 0.0009672692976891994, 0.0004541343660093844]); - kn = $toNativeArray($kindUint32, [1991057938, 0, 1611602771, 1826899878, 1918584482, 1969227037, 2001281515, 2023368125, 2039498179, 2051788381, 2061460127, 2069267110, 2075699398, 2081089314, 2085670119, 2089610331, 2093034710, 2096037586, 2098691595, 2101053571, 2103168620, 2105072996, 2106796166, 2108362327, 2109791536, 2111100552, 2112303493, 2113412330, 2114437283, 2115387130, 2116269447, 2117090813, 2117856962, 2118572919, 2119243101, 2119871411, 2120461303, 2121015852, 2121537798, 2122029592, 2122493434, 2122931299, 2123344971, 2123736059, 2124106020, 2124456175, 2124787725, 2125101763, 2125399283, 2125681194, 2125948325, 2126201433, 2126441213, 2126668298, 2126883268, 2127086657, 2127278949, 2127460589, 2127631985, 2127793506, 2127945490, 2128088244, 2128222044, 2128347141, 2128463758, 2128572095, 2128672327, 2128764606, 2128849065, 2128925811, 2128994934, 2129056501, 2129110560, 2129157136, 2129196237, 2129227847, 2129251929, 2129268426, 2129277255, 2129278312, 2129271467, 2129256561, 2129233410, 2129201800, 2129161480, 2129112170, 2129053545, 2128985244, 2128906855, 2128817916, 2128717911, 2128606255, 2128482298, 2128345305, 2128194452, 2128028813, 2127847342, 2127648860, 2127432031, 2127195339, 2126937058, 2126655214, 2126347546, 2126011445, 2125643893, 2125241376, 2124799783, 2124314271, 2123779094, 2123187386, 2122530867, 2121799464, 2120980787, 2120059418, 2119015917, 2117825402, 2116455471, 2114863093, 2112989789, 2110753906, 2108037662, 2104664315, 2100355223, 2094642347, 2086670106, 2074676188, 2054300022, 2010539237]); - wn = $toNativeArray($kindFloat32, [1.7290404663583558e-09, 1.2680928529462676e-10, 1.689751810696194e-10, 1.9862687883343e-10, 2.223243117382978e-10, 2.4244936613904144e-10, 2.601613091623989e-10, 2.761198769629658e-10, 2.9073962681813725e-10, 3.042996965518796e-10, 3.169979556627567e-10, 3.289802041894774e-10, 3.4035738116777736e-10, 3.5121602848242617e-10, 3.61625090983253e-10, 3.7164057942185025e-10, 3.813085680537398e-10, 3.906675816178762e-10, 3.997501218933053e-10, 4.0858399996679395e-10, 4.1719308563337165e-10, 4.255982233303257e-10, 4.3381759295968436e-10, 4.4186720948857783e-10, 4.497613115272969e-10, 4.57512583373898e-10, 4.6513240481438345e-10, 4.726310454117311e-10, 4.800177477726209e-10, 4.873009773476156e-10, 4.944885056978876e-10, 5.015873272284921e-10, 5.086040477664255e-10, 5.155446070048697e-10, 5.224146670812502e-10, 5.292193350214802e-10, 5.359634958068682e-10, 5.426517013518151e-10, 5.492881705038144e-10, 5.558769555769061e-10, 5.624218868405251e-10, 5.689264614971989e-10, 5.75394121238304e-10, 5.818281967329142e-10, 5.882316855831959e-10, 5.946076964136182e-10, 6.009590047817426e-10, 6.072883862451306e-10, 6.135985053390414e-10, 6.19892026598734e-10, 6.261713370037114e-10, 6.324390455780815e-10, 6.386973727678935e-10, 6.449488165749528e-10, 6.511955974453087e-10, 6.574400468473129e-10, 6.636843297158634e-10, 6.699307220081607e-10, 6.761814441702541e-10, 6.824387166481927e-10, 6.887046488657234e-10, 6.949815167800466e-10, 7.012714853260604e-10, 7.075767749498141e-10, 7.13899661608508e-10, 7.202424212593428e-10, 7.266072743483676e-10, 7.329966078550854e-10, 7.394128087589991e-10, 7.458582640396116e-10, 7.523354716987285e-10, 7.588469852493063e-10, 7.653954137154528e-10, 7.719834771435785e-10, 7.786139510912449e-10, 7.852897221383159e-10, 7.920137878869582e-10, 7.987892014504894e-10, 8.056192379868321e-10, 8.125072836762115e-10, 8.194568912323064e-10, 8.264716688799467e-10, 8.3355555791087e-10, 8.407127216614185e-10, 8.479473234679347e-10, 8.552640262671218e-10, 8.626675485068347e-10, 8.701631637464402e-10, 8.777562010564566e-10, 8.854524335966119e-10, 8.932581896381464e-10, 9.011799639857543e-10, 9.092249730890956e-10, 9.174008219758889e-10, 9.25715837318819e-10, 9.341788453909317e-10, 9.42799727177146e-10, 9.515889187738935e-10, 9.605578554783278e-10, 9.697193048552322e-10, 9.790869226478094e-10, 9.886760299337993e-10, 9.985036131254788e-10, 1.008588212947359e-09, 1.0189509236369076e-09, 1.0296150598776421e-09, 1.040606933955246e-09, 1.0519566329136865e-09, 1.0636980185552147e-09, 1.0758701707302976e-09, 1.0885182755160372e-09, 1.101694735439196e-09, 1.115461056855338e-09, 1.1298901814171813e-09, 1.1450695946990663e-09, 1.1611052119775422e-09, 1.178127595480305e-09, 1.1962995039027646e-09, 1.2158286599728285e-09, 1.2369856250415978e-09, 1.2601323318151003e-09, 1.2857697129220469e-09, 1.3146201904845611e-09, 1.3477839955200466e-09, 1.3870635751089821e-09, 1.43574030442295e-09, 1.5008658760251592e-09, 1.6030947680434338e-09]); - fn = $toNativeArray($kindFloat32, [1, 0.963599681854248, 0.9362826943397522, 0.9130436182022095, 0.8922816514968872, 0.8732430338859558, 0.8555005788803101, 0.8387836217880249, 0.8229072093963623, 0.8077383041381836, 0.7931770086288452, 0.7791460752487183, 0.7655841708183289, 0.7524415850639343, 0.7396772503852844, 0.7272568941116333, 0.7151514887809753, 0.7033361196517944, 0.6917891502380371, 0.6804918646812439, 0.6694276928901672, 0.6585819721221924, 0.6479418277740479, 0.6374954581260681, 0.6272324919700623, 0.6171433925628662, 0.6072195172309875, 0.5974531769752502, 0.5878370404243469, 0.5783646702766418, 0.5690299868583679, 0.5598273873329163, 0.550751805305481, 0.5417983531951904, 0.5329626798629761, 0.5242405533790588, 0.5156282186508179, 0.5071220397949219, 0.49871864914894104, 0.4904148280620575, 0.48220765590667725, 0.47409430146217346, 0.466072142124176, 0.45813870429992676, 0.45029163360595703, 0.44252872467041016, 0.4348478317260742, 0.42724698781967163, 0.41972434520721436, 0.41227802634239197, 0.40490642189979553, 0.39760786294937134, 0.3903807997703552, 0.3832238018512726, 0.3761354684829712, 0.3691144585609436, 0.36215949058532715, 0.3552693724632263, 0.3484429717063904, 0.3416791558265686, 0.33497685194015503, 0.32833510637283325, 0.3217529058456421, 0.3152293860912323, 0.30876362323760986, 0.3023548424243927, 0.2960021495819092, 0.2897048592567444, 0.28346219658851624, 0.2772735059261322, 0.271138072013855, 0.2650552988052368, 0.25902456045150757, 0.25304529070854187, 0.24711695313453674, 0.24123899638652802, 0.23541094362735748, 0.22963231801986694, 0.22390270233154297, 0.21822164952754974, 0.21258877217769623, 0.20700371265411377, 0.20146611332893372, 0.1959756463766098, 0.19053204357624054, 0.18513499200344086, 0.17978426814079285, 0.1744796335697174, 0.16922089457511902, 0.16400785744190216, 0.1588403731584549, 0.15371830761432648, 0.14864157140254974, 0.14361007511615753, 0.13862377405166626, 0.13368265330791473, 0.12878671288490295, 0.12393598258495331, 0.11913054436445236, 0.11437050998210907, 0.10965602099895477, 0.1049872562289238, 0.10036443918943405, 0.09578784555196762, 0.09125780314207077, 0.08677466958761215, 0.08233889937400818, 0.07795098423957825, 0.07361150532960892, 0.06932111829519272, 0.06508058309555054, 0.06089077144861221, 0.05675266310572624, 0.05266740173101425, 0.048636294901371, 0.044660862535238266, 0.040742866694927216, 0.03688438981771469, 0.03308788686990738, 0.029356317594647408, 0.025693291798233986, 0.02210330404341221, 0.018592102453112602, 0.015167297795414925, 0.011839478276669979, 0.0086244847625494, 0.005548994988203049, 0.0026696291752159595]); - rngCooked = $toNativeArray($kindInt64, [new $Int64(-973649357, 3952672746), new $Int64(-1065661887, 3130416987), new $Int64(324977939, 3414273807), new $Int64(1241840476, 2806224363), new $Int64(-1477934308, 1997590414), new $Int64(2103305448, 2402795971), new $Int64(1663160183, 1140819369), new $Int64(1120601685, 1788868961), new $Int64(1848035537, 1089001426), new $Int64(1235702047, 873593504), new $Int64(1911387977, 581324885), new $Int64(-1654874170, 1609182556), new $Int64(1069394745, 1241596776), new $Int64(1895445337, 1771189259), new $Int64(-1374618802, 3467012610), new $Int64(-140526423, 2344407434), new $Int64(-1745367887, 782467244), new $Int64(26335124, 3404933915), new $Int64(1063924276, 618867887), new $Int64(-968700782, 520164395), new $Int64(-1591572833, 1341358184), new $Int64(-1515085039, 665794848), new $Int64(1527227641, 3183648150), new $Int64(1781176124, 696329606), new $Int64(1789146075, 4151988961), new $Int64(-2087444114, 998951326), new $Int64(-612324923, 1364957564), new $Int64(63173359, 4090230633), new $Int64(-1498029007, 4009697548), new $Int64(248009524, 2569622517), new $Int64(778703922, 3742421481), new $Int64(-1109106023, 1506914633), new $Int64(1738099768, 1983412561), new $Int64(236311649, 1436266083), new $Int64(-1111517500, 3922894967), new $Int64(-1336974714, 1792680179), new $Int64(563141142, 1188796351), new $Int64(1349617468, 405968250), new $Int64(1044074554, 433754187), new $Int64(870549669, 4073162024), new $Int64(-1094251604, 433121399), new $Int64(2451824, 4162580594), new $Int64(-137262572, 4132415622), new $Int64(-1536231048, 3033822028), new $Int64(2016407895, 824682382), new $Int64(2366218, 3583765414), new $Int64(-624604839, 535386927), new $Int64(1637219058, 2286693689), new $Int64(1453075389, 2968466525), new $Int64(193683513, 1351410206), new $Int64(-283806096, 1412813499), new $Int64(492736522, 4126267639), new $Int64(512765208, 2105529399), new $Int64(2132966268, 2413882233), new $Int64(947457634, 32226200), new $Int64(1149341356, 2032329073), new $Int64(106485445, 1356518208), new $Int64(-2067810156, 3430061722), new $Int64(-1484435135, 3820169661), new $Int64(-1665985194, 2981816134), new $Int64(1017155588, 4184371017), new $Int64(206574701, 2119206761), new $Int64(-852109057, 2472200560), new $Int64(-560457548, 2853524696), new $Int64(1307803389, 1681119904), new $Int64(-174986835, 95608918), new $Int64(392686347, 3690479145), new $Int64(-1205570926, 1397922290), new $Int64(-1159314025, 1516129515), new $Int64(-320178155, 1547420459), new $Int64(1311333971, 1470949486), new $Int64(-1953469798, 1336785672), new $Int64(-45086614, 4131677129), new $Int64(-1392278100, 4246329084), new $Int64(-1142500187, 3788585631), new $Int64(-66478285, 3080389532), new $Int64(-646438364, 2215402037), new $Int64(391002300, 1171593935), new $Int64(1408774047, 1423855166), new $Int64(-519177718, 2276716302), new $Int64(-368453140, 2068027241), new $Int64(1369359303, 3427553297), new $Int64(189241615, 3289637845), new $Int64(1057480830, 3486407650), new $Int64(-1512910664, 3071877822), new $Int64(1159653919, 3363620705), new $Int64(-934256930, 4159821533), new $Int64(-76621938, 1894661), new $Int64(-674493898, 1156868282), new $Int64(348271067, 776219088), new $Int64(-501428838, 2425634259), new $Int64(1716021749, 680510161), new $Int64(-574263456, 1310101429), new $Int64(1095885995, 2964454134), new $Int64(-325695512, 3467098407), new $Int64(1990672920, 2109628894), new $Int64(-2139648704, 1232604732), new $Int64(-1838070714, 3261916179), new $Int64(1699175360, 434597899), new $Int64(235436061, 1624796439), new $Int64(-1626402839, 3589632480), new $Int64(1198416575, 864579159), new $Int64(-1938748161, 1380889830), new $Int64(619206309, 2654509477), new $Int64(1419738251, 1468209306), new $Int64(-1744284772, 100794388), new $Int64(-1191421458, 2991674471), new $Int64(-208666741, 2224662036), new $Int64(-173659161, 977097250), new $Int64(1351320195, 726419512), new $Int64(-183459897, 1747974366), new $Int64(-753095183, 1556430604), new $Int64(-1049492215, 1080776742), new $Int64(-385846958, 280794874), new $Int64(117767733, 919835643), new $Int64(-967009426, 3434019658), new $Int64(-1951414480, 2461941785), new $Int64(133215641, 3615001066), new $Int64(417204809, 3103414427), new $Int64(790056561, 3380809712), new $Int64(-1267681408, 2724693469), new $Int64(547796833, 598827710), new $Int64(-1846559452, 3452273442), new $Int64(-75778224, 649274915), new $Int64(-801301329, 2585724112), new $Int64(-1510934263, 3165579553), new $Int64(1185578221, 2635894283), new $Int64(-52910178, 2053289721), new $Int64(985976581, 3169337108), new $Int64(1170569632, 144717764), new $Int64(1079216270, 1383666384), new $Int64(-124804942, 681540375), new $Int64(1375448925, 537050586), new $Int64(-1964768344, 315246468), new $Int64(226402871, 849323088), new $Int64(-885062465, 45543944), new $Int64(-946445250, 2319052083), new $Int64(-40708194, 3613090841), new $Int64(560472520, 2992171180), new $Int64(-381863169, 2068244785), new $Int64(917538188, 4239862634), new $Int64(-1369555809, 3892253031), new $Int64(720683925, 958186149), new $Int64(-423297785, 1877702262), new $Int64(1357886971, 837674867), new $Int64(1837048883, 1507589294), new $Int64(1905518400, 873336795), new $Int64(-1879761037, 2764496274), new $Int64(-1806480530, 4196182374), new $Int64(-1066765755, 550964545), new $Int64(818747069, 420611474), new $Int64(-1924830376, 204265180), new $Int64(1549974541, 1787046383), new $Int64(1215581865, 3102292318), new $Int64(418321538, 1552199393), new $Int64(1243493047, 980542004), new $Int64(267284263, 3293718720), new $Int64(1179528763, 3771917473), new $Int64(599484404, 2195808264), new $Int64(252818753, 3894702887), new $Int64(-1367475956, 2099949527), new $Int64(1424094358, 338442522), new $Int64(490737398, 637158004), new $Int64(-1727621530, 281976339), new $Int64(574970164, 3619802330), new $Int64(-431930823, 3084554784), new $Int64(-1264611183, 4129772886), new $Int64(-2104399043, 1680378557), new $Int64(-1621962591, 3339087776), new $Int64(1680500332, 4220317857), new $Int64(-1935828963, 2959322499), new $Int64(1675600481, 1488354890), new $Int64(-834863562, 3958162143), new $Int64(-1226511573, 2773705983), new $Int64(1876039582, 225908689), new $Int64(-1183735113, 908216283), new $Int64(-605696219, 3574646075), new $Int64(-1827723091, 1936937569), new $Int64(1519770881, 75492235), new $Int64(816689472, 1935193178), new $Int64(2142521206, 2018250883), new $Int64(455141620, 3943126022), new $Int64(-601399488, 3066544345), new $Int64(1932392669, 2793082663), new $Int64(-1239009361, 3297036421), new $Int64(1640597065, 2206987825), new $Int64(-553246738, 807894872), new $Int64(-1781325307, 766252117), new $Int64(2060649606, 3833114345), new $Int64(845619743, 1255067973), new $Int64(1201145605, 741697208), new $Int64(-1476242608, 2810093753), new $Int64(1109032642, 4229340371), new $Int64(1462188720, 1361684224), new $Int64(-1159399429, 1906263026), new $Int64(475781207, 3904421704), new $Int64(-623537128, 1769075545), new $Int64(1062308525, 2621599764), new $Int64(1279509432, 3431891480), new $Int64(-1742751146, 1871896503), new $Int64(128756421, 1412808876), new $Int64(1605404688, 952876175), new $Int64(-230443691, 1824438899), new $Int64(1662295856, 1005035476), new $Int64(-156574141, 527508597), new $Int64(1288873303, 3066806859), new $Int64(565995893, 3244940914), new $Int64(-889746188, 209092916), new $Int64(-247669406, 1242699167), new $Int64(-713830396, 456723774), new $Int64(1776978905, 1001252870), new $Int64(1468772157, 2026725874), new $Int64(857254202, 2137562569), new $Int64(765939740, 3183366709), new $Int64(1533887628, 2612072960), new $Int64(56977098, 1727148468), new $Int64(-1197583895, 3803658212), new $Int64(1883670356, 479946959), new $Int64(685713571, 1562982345), new $Int64(-1946242443, 1766109365), new $Int64(700596547, 3257093788), new $Int64(-184714929, 2365720207), new $Int64(93384808, 3742754173), new $Int64(-458385235, 2878193673), new $Int64(1096135042, 2174002182), new $Int64(-834260953, 3573511231), new $Int64(-754572527, 1760299077), new $Int64(-1375627191, 2260779833), new $Int64(-866019274, 1452805722), new $Int64(-1229671918, 2940011802), new $Int64(1890251082, 1886183802), new $Int64(893897673, 2514369088), new $Int64(1644345561, 3924317791), new $Int64(-1974867432, 500935732), new $Int64(1403501753, 676580929), new $Int64(-1565912283, 1184984890), new $Int64(-691968413, 1271474274), new $Int64(-1828754738, 3163791473), new $Int64(2051027584, 2842487377), new $Int64(1511537551, 2170968612), new $Int64(573262976, 3535856740), new $Int64(-2053227187, 1488599718), new $Int64(-1180531831, 3408913763), new $Int64(-2086531912, 2501050084), new $Int64(-875130448, 1639124157), new $Int64(-2009482504, 4088176393), new $Int64(1574896563, 3989947576), new $Int64(-165243708, 3414355209), new $Int64(-792329287, 2275136352), new $Int64(-2057774345, 2151835223), new $Int64(-931144933, 1654534827), new $Int64(-679921451, 377892833), new $Int64(-482716010, 660204544), new $Int64(85706799, 390828249), new $Int64(-1422172693, 3402783878), new $Int64(-1468634160, 3717936603), new $Int64(1113532086, 2211058823), new $Int64(1564224320, 2692150867), new $Int64(1952770442, 1928910388), new $Int64(788716862, 3931011137), new $Int64(1083670504, 1112701047), new $Int64(-68150572, 2452299106), new $Int64(-896164822, 2337204777), new $Int64(1774877857, 273889282), new $Int64(1798719843, 1462008793), new $Int64(2138834788, 1554494002), new $Int64(-1194967131, 182675323), new $Int64(-1598554764, 1882802136), new $Int64(589279648, 3700220025), new $Int64(381039426, 3083431543), new $Int64(-851859191, 3622207527), new $Int64(338126939, 432729309), new $Int64(-1667470126, 2391914317), new $Int64(-1849558151, 235747924), new $Int64(2120733629, 3088823825), new $Int64(-745079795, 2314658321), new $Int64(1165929723, 2957634338), new $Int64(501323675, 4117056981), new $Int64(1564699815, 1482500298), new $Int64(-740826490, 840489337), new $Int64(799522364, 3483178565), new $Int64(532129761, 2074004656), new $Int64(724246478, 3643392642), new $Int64(-665153481, 1583624461), new $Int64(-885822954, 287473085), new $Int64(1667835381, 3136843981), new $Int64(1138806821, 1266970974), new $Int64(135185781, 1998688839), new $Int64(392094735, 1492900209), new $Int64(1031326774, 1538112737), new $Int64(-2070568842, 2207265429), new $Int64(-1886797613, 963263315), new $Int64(1671145500, 2295892134), new $Int64(1068469660, 2002560897), new $Int64(-356250305, 1369254035), new $Int64(33436120, 3353312708), new $Int64(57507843, 947771099), new $Int64(-1945755145, 1747061399), new $Int64(1507240140, 2047354631), new $Int64(720000810, 4165367136), new $Int64(479265078, 3388864963), new $Int64(-952181250, 286492130), new $Int64(2045622690, 2795735007), new $Int64(-715730566, 3703961339), new $Int64(-148436487, 1797825479), new $Int64(1429039600, 1116589674), new $Int64(-1665420098, 2593309206), new $Int64(1329049334, 3404995677), new $Int64(-750579440, 3453462936), new $Int64(1014767077, 3016498634), new $Int64(75698599, 1650371545), new $Int64(1592007860, 212344364), new $Int64(1127766888, 3843932156), new $Int64(-748019856, 3573129983), new $Int64(-890581831, 665897820), new $Int64(1071492673, 1675628772), new $Int64(243225682, 2831752928), new $Int64(2120298836, 1486294219), new $Int64(-1954407413, 268782709), new $Int64(-1002123503, 4186179080), new $Int64(624342951, 1613720397), new $Int64(857179861, 2703686015), new $Int64(-911618704, 2205342611), new $Int64(-672703993, 1411666394), new $Int64(-1528454899, 677744900), new $Int64(-1876628533, 4172867247), new $Int64(135494707, 2163418403), new $Int64(849547544, 2841526879), new $Int64(-1117516959, 1082141470), new $Int64(-1770111792, 4046134367), new $Int64(51415528, 2142943655), new $Int64(-249824333, 3124627521), new $Int64(998228909, 219992939), new $Int64(-1078790951, 1756846531), new $Int64(1283749206, 1225118210), new $Int64(-525858006, 1647770243), new $Int64(-2035959705, 444807907), new $Int64(2036369448, 3952076173), new $Int64(53201823, 1461839639), new $Int64(315761893, 3699250910), new $Int64(702974850, 1373688981), new $Int64(734022261, 147523747), new $Int64(-2047330906, 1211276581), new $Int64(1294440951, 2548832680), new $Int64(1144696256, 1995631888), new $Int64(-1992983070, 2011457303), new $Int64(-1351022674, 3057425772), new $Int64(667839456, 81484597), new $Int64(-1681980888, 3646681560), new $Int64(-1372462725, 635548515), new $Int64(602489502, 2508044581), new $Int64(-1794220117, 1014917157), new $Int64(719992433, 3214891315), new $Int64(-1294799037, 959582252), new $Int64(226415134, 3347040449), new $Int64(-362868096, 4102971975), new $Int64(397887437, 4078022210), new $Int64(-536803826, 2851767182), new $Int64(-1398321012, 1540160644), new $Int64(-1549098876, 1057290595), new $Int64(-112592988, 3907769253), new $Int64(579300318, 4248952684), new $Int64(-1054576049, 132554364), new $Int64(-1085862414, 1029351092), new $Int64(697840928, 2583007416), new $Int64(298619124, 1486185789), new $Int64(55905697, 2871589073), new $Int64(2017643612, 723203291), new $Int64(146250550, 2494333952), new $Int64(-1082993397, 2230939180), new $Int64(-1804568072, 3943232912), new $Int64(1768732449, 2181367922), new $Int64(-729261111, 2889274791), new $Int64(1824032949, 2046728161), new $Int64(1653899792, 1376052477), new $Int64(1022327048, 381236993), new $Int64(-1113097690, 3188942166), new $Int64(-74480109, 350070824), new $Int64(144881592, 61758415), new $Int64(-741824226, 3492950336), new $Int64(-2030042720, 3093818430), new $Int64(-453590535, 2962480613), new $Int64(-1912050708, 3154871160), new $Int64(-1636478569, 3228564679), new $Int64(610731502, 888276216), new $Int64(-946702974, 3574998604), new $Int64(-1277068380, 1967526716), new $Int64(-1556147941, 1554691298), new $Int64(-1573024234, 339944798), new $Int64(1223764147, 1154515356), new $Int64(1825645307, 967516237), new $Int64(1546195135, 596588202), new $Int64(-1867600880, 3764362170), new $Int64(-1655392592, 266611402), new $Int64(-393255880, 2047856075), new $Int64(-1000726433, 21444105), new $Int64(-949424754, 3065563181), new $Int64(-232418803, 1140663212), new $Int64(633187674, 2323741028), new $Int64(2126290159, 3103873707), new $Int64(1008658319, 2766828349), new $Int64(-485587503, 1970872996), new $Int64(1628585413, 3766615585), new $Int64(-595148528, 2036813414), new $Int64(-1994877121, 3105536507), new $Int64(13954645, 3396176938), new $Int64(-721402003, 1377154485), new $Int64(-61839181, 3807014186), new $Int64(543009040, 3710110597), new $Int64(-1751425519, 916420443), new $Int64(734556788, 2103831255), new $Int64(-1766161494, 717331943), new $Int64(-1574598896, 3550505941), new $Int64(45939673, 378749927), new $Int64(-1997615719, 611017331), new $Int64(592130075, 758907650), new $Int64(1012992349, 154266815), new $Int64(-1040454942, 1407468696), new $Int64(-1678191250, 970098704), new $Int64(-285057486, 1971660656), new $Int64(998365243, 3332747885), new $Int64(1947089649, 1935189867), new $Int64(1510248801, 203520055), new $Int64(-1305165746, 3916463034), new $Int64(-388598655, 3474113316), new $Int64(1036101639, 316544223), new $Int64(-1773744891, 1650844677), new $Int64(-907191419, 4267565603), new $Int64(-1070275024, 2501167616), new $Int64(-1520651863, 3929401789), new $Int64(-2091360852, 337170252), new $Int64(-960502090, 2061966842), new $Int64(-304190848, 2508461464), new $Int64(-1941471116, 2791377107), new $Int64(1240791848, 1227227588), new $Int64(1813978778, 1709681848), new $Int64(1153692192, 3768820575), new $Int64(-1002297449, 2887126398), new $Int64(-1447111334, 296561685), new $Int64(700300844, 3729960077), new $Int64(-1572311344, 372833036), new $Int64(2078875613, 2409779288), new $Int64(1829161290, 555274064), new $Int64(-1105595719, 4239804901), new $Int64(1839403216, 3723486978), new $Int64(-1649093095, 2145871984), new $Int64(-1582765715, 3565480803), new $Int64(-1568653827, 2197313814), new $Int64(974785092, 3613674566), new $Int64(438638731, 3042093666), new $Int64(-96556264, 3324034321), new $Int64(869420878, 3708873369), new $Int64(946682149, 1698090092), new $Int64(1618900382, 4213940712), new $Int64(-1843479747, 2087477361), new $Int64(-1766167800, 2407950639), new $Int64(-1296225558, 3942568569), new $Int64(-1223900450, 4088074412), new $Int64(723260036, 2964773675), new $Int64(-673921829, 1539178386), new $Int64(1062961552, 2694849566), new $Int64(460977733, 2120273838), new $Int64(-1604570740, 2484608657), new $Int64(880846449, 2956190677), new $Int64(1970902366, 4223313749), new $Int64(662161910, 3502682327), new $Int64(705634754, 4133891139), new $Int64(-1031359300, 1166449596), new $Int64(1038247601, 3362705993), new $Int64(93734798, 3892921029), new $Int64(1876124043, 786869787), new $Int64(1057490746, 1046342263), new $Int64(242763728, 493777327), new $Int64(-853573201, 3304827646), new $Int64(616460742, 125356352), new $Int64(499300063, 74094113), new $Int64(-795586925, 2500816079), new $Int64(-490248444, 514015239), new $Int64(1377565129, 543520454), new $Int64(-2039776725, 3614531153), new $Int64(2056746300, 2356753985), new $Int64(1390062617, 2018141668), new $Int64(131272971, 2087974891), new $Int64(-1502927041, 3166972343), new $Int64(372256200, 1517638666), new $Int64(-935275664, 173466846), new $Int64(-695774461, 4241513471), new $Int64(-1413550842, 2783126920), new $Int64(1972004134, 4167264826), new $Int64(29260506, 3907395640), new $Int64(-910901561, 1539634186), new $Int64(-595957298, 178241987), new $Int64(-113277636, 182168164), new $Int64(-1102530459, 2386154934), new $Int64(1379126408, 4077374341), new $Int64(-2114679722, 1732699140), new $Int64(-421057745, 1041306002), new $Int64(1860414813, 2068001749), new $Int64(1005320202, 3208962910), new $Int64(844054010, 697710380), new $Int64(-1509359403, 2228431183), new $Int64(-810313977, 3554678728), new $Int64(-750989047, 173470263), new $Int64(-85886265, 3848297795), new $Int64(-926936977, 246236185), new $Int64(-1984190461, 2066374846), new $Int64(1771673660, 312890749), new $Int64(703378057, 3573310289), new $Int64(-598851901, 143166754), new $Int64(613554316, 2081511079), new $Int64(1197802104, 486038032), new $Int64(-1906483789, 2982218564), new $Int64(364901986, 1000939191), new $Int64(1902782651, 2750454885), new $Int64(-671844857, 3375313137), new $Int64(-1643868040, 881302957), new $Int64(-1508784745, 2514186393), new $Int64(-1703622845, 360024739), new $Int64(1399671872, 292500025), new $Int64(1381210821, 2276300752), new $Int64(521803381, 4069087683), new $Int64(-1938982667, 1637778212), new $Int64(720490469, 1676670893), new $Int64(1067262482, 3855174429), new $Int64(2114075974, 2067248671), new $Int64(-89426259, 2884561259), new $Int64(-805741095, 2456511185), new $Int64(983726246, 561175414), new $Int64(-1719489563, 432588903), new $Int64(885133709, 4059399550), new $Int64(-93096266, 1075014784), new $Int64(-1733832628, 2728058415), new $Int64(1839142064, 1299703678), new $Int64(1262333188, 2347583393), new $Int64(1285481956, 2468164145), new $Int64(-1158354011, 1140014346), new $Int64(2033889184, 1936972070), new $Int64(-1737578993, 3870530098), new $Int64(-484494257, 1717789158), new $Int64(-232997156, 1153452491), new $Int64(-990424416, 3948827651), new $Int64(-1357145630, 2101413152), new $Int64(1495744672, 3854091229), new $Int64(83644069, 4215565463), new $Int64(-1385277313, 1202710438), new $Int64(-564909037, 2072216740), new $Int64(705690639, 2066751068), new $Int64(-2113583312, 173902580), new $Int64(-741983806, 142459001), new $Int64(172391592, 1889151926), new $Int64(-498943125, 3034199774), new $Int64(1618587731, 516490102), new $Int64(93114264, 3692577783), new $Int64(-2078821353, 2953948865), new $Int64(-320938673, 4041040923), new $Int64(-1942517976, 592046130), new $Int64(-705643640, 384297211), new $Int64(-2051649464, 265863924), new $Int64(2101717619, 1333136237), new $Int64(1499611781, 1406273556), new $Int64(1074670496, 426305476), new $Int64(125704633, 2750898176), new $Int64(488068495, 1633944332), new $Int64(2037723464, 3236349343), new $Int64(-1703423246, 4013676611), new $Int64(1718532237, 2265047407), new $Int64(1433593806, 875071080), new $Int64(-343047503, 1418843655), new $Int64(2009228711, 451657300), new $Int64(1229446621, 1866374663), new $Int64(1653472867, 1551455622), new $Int64(577191481, 3560962459), new $Int64(1669204077, 3347903778), new $Int64(-298327194, 2675874918), new $Int64(-1831355577, 2762991672), new $Int64(530492383, 3689068477), new $Int64(844089962, 4071997905), new $Int64(1508155730, 1381702441), new $Int64(2089931018, 2373284878), new $Int64(-864267462, 2143983064), new $Int64(308739063, 1938207195), new $Int64(1754949306, 1188152253), new $Int64(1272345009, 615870490), new $Int64(742653194, 2662252621), new $Int64(1477718295, 3839976789), new $Int64(-2091334213, 306752547), new $Int64(-1426688067, 2162363077), new $Int64(-57052633, 2767224719), new $Int64(-1471624099, 2628837712), new $Int64(1678405918, 2967771969), new $Int64(1694285728, 499792248), new $Int64(-1744131281, 4285253508), new $Int64(962357072, 2856511070), new $Int64(679471692, 2526409716), new $Int64(-1793706473, 1240875658), new $Int64(-914893422, 2577342868), new $Int64(-1001298215, 4136853496), new $Int64(-1477114974, 2403540137), new $Int64(1372824515, 1371410668), new $Int64(-176562048, 371758825), new $Int64(-441063112, 1528834084), new $Int64(-71688630, 1504757260), new $Int64(-1461820072, 699052551), new $Int64(-505543539, 3347789870), new $Int64(1951619734, 3430604759), new $Int64(2119672219, 1935601723), new $Int64(966789690, 834676166)]); - globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(false), $assertType(NewSource(new $Int64(0, 1)), Source64))); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["net"] = (function() { - var $pkg = {}, $init, context, errors, js, bytealg, nettrace, poll, singleflight, dnsmessage, io, rand, os, runtime, sort, sync, atomic, syscall, time, policyTableEntry, policyTable, byMaskLength, Interface, Flags, ipv6ZoneCache, IP, IPMask, IPNet, IPAddr, HardwareAddr, Addr, OpError, timeout, temporary, ParseError, AddrError, file, sockaddr, ptrType, sliceType, sliceType$1, ptrType$5, ptrType$9, ptrType$13, ptrType$18, ptrType$22, ptrType$23, sliceType$7, sliceType$8, ptrType$24, ptrType$25, arrayType$2, ptrType$31, ptrType$32, arrayType$6, ptrType$48, mapType$1, mapType$2, ptrType$49, ptrType$52, rfc6724policyTable, errLameReferral, errCannotUnmarshalDNSMessage, errCannotMarshalDNSMessage, errServerMisbehaving, errInvalidDNSResponse, errNoAnswerFromDNSServer, errServerTemporarlyMisbehaving, testHookLookupIP, errInvalidInterface, errInvalidInterfaceIndex, errInvalidInterfaceName, errNoSuchInterface, errNoSuchMulticastInterface, flagNames, zoneCache, v4InV6Prefix, classAMask, classBMask, classCMask, netGo, errNoSuitableAddress, errMissingAddress, errCanceled, aLongTimeAgo, errNoSuchHost, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, init, mustCIDR, init$1, isConnError, interfaceByIndex, interfaceTable, newLink, linkFlags, interfaceAddrTable, addrTable, newAddr, interfaceMulticastAddrTable, parseProcNetIGMP, parseProcNetIGMP6, IPv4, IPv4Mask, CIDRMask, isZeros, allFF, ubtoa, hexString, ipEmptyString, simpleMaskLength, networkNumberAndMask, parseIPv4, parseIPv6, ParseIP, ParseCIDR, open, countAnyByte, splitAtBytes, dtoi, xtoi, xtoi2, uitoa, appendHex; - context = $packages["context"]; - errors = $packages["errors"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - bytealg = $packages["internal/bytealg"]; - nettrace = $packages["internal/nettrace"]; - poll = $packages["internal/poll"]; - singleflight = $packages["internal/singleflight"]; - dnsmessage = $packages["internal/x/net/dns/dnsmessage"]; - io = $packages["io"]; - rand = $packages["math/rand"]; - os = $packages["os"]; - runtime = $packages["runtime"]; - sort = $packages["sort"]; - sync = $packages["sync"]; - atomic = $packages["sync/atomic"]; - syscall = $packages["syscall"]; - time = $packages["time"]; - policyTableEntry = $pkg.policyTableEntry = $newType(0, $kindStruct, "net.policyTableEntry", true, "net", false, function(Prefix_, Precedence_, Label_) { - this.$val = this; - if (arguments.length === 0) { - this.Prefix = ptrType$5.nil; - this.Precedence = 0; - this.Label = 0; - return; - } - this.Prefix = Prefix_; - this.Precedence = Precedence_; - this.Label = Label_; - }); - policyTable = $pkg.policyTable = $newType(12, $kindSlice, "net.policyTable", true, "net", false, null); - byMaskLength = $pkg.byMaskLength = $newType(12, $kindSlice, "net.byMaskLength", true, "net", false, null); - Interface = $pkg.Interface = $newType(0, $kindStruct, "net.Interface", true, "net", true, function(Index_, MTU_, Name_, HardwareAddr_, Flags_) { - this.$val = this; - if (arguments.length === 0) { - this.Index = 0; - this.MTU = 0; - this.Name = ""; - this.HardwareAddr = HardwareAddr.nil; - this.Flags = 0; - return; - } - this.Index = Index_; - this.MTU = MTU_; - this.Name = Name_; - this.HardwareAddr = HardwareAddr_; - this.Flags = Flags_; - }); - Flags = $pkg.Flags = $newType(4, $kindUint, "net.Flags", true, "net", true, null); - ipv6ZoneCache = $pkg.ipv6ZoneCache = $newType(0, $kindStruct, "net.ipv6ZoneCache", true, "net", false, function(RWMutex_, lastFetched_, toIndex_, toName_) { - this.$val = this; - if (arguments.length === 0) { - this.RWMutex = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0); - this.lastFetched = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil); - this.toIndex = false; - this.toName = false; - return; - } - this.RWMutex = RWMutex_; - this.lastFetched = lastFetched_; - this.toIndex = toIndex_; - this.toName = toName_; - }); - IP = $pkg.IP = $newType(12, $kindSlice, "net.IP", true, "net", true, null); - IPMask = $pkg.IPMask = $newType(12, $kindSlice, "net.IPMask", true, "net", true, null); - IPNet = $pkg.IPNet = $newType(0, $kindStruct, "net.IPNet", true, "net", true, function(IP_, Mask_) { - this.$val = this; - if (arguments.length === 0) { - this.IP = IP.nil; - this.Mask = IPMask.nil; - return; - } - this.IP = IP_; - this.Mask = Mask_; - }); - IPAddr = $pkg.IPAddr = $newType(0, $kindStruct, "net.IPAddr", true, "net", true, function(IP_, Zone_) { - this.$val = this; - if (arguments.length === 0) { - this.IP = IP.nil; - this.Zone = ""; - return; - } - this.IP = IP_; - this.Zone = Zone_; - }); - HardwareAddr = $pkg.HardwareAddr = $newType(12, $kindSlice, "net.HardwareAddr", true, "net", true, null); - Addr = $pkg.Addr = $newType(8, $kindInterface, "net.Addr", true, "net", true, null); - OpError = $pkg.OpError = $newType(0, $kindStruct, "net.OpError", true, "net", true, function(Op_, Net_, Source_, Addr_, Err_) { - this.$val = this; - if (arguments.length === 0) { - this.Op = ""; - this.Net = ""; - this.Source = $ifaceNil; - this.Addr = $ifaceNil; - this.Err = $ifaceNil; - return; - } - this.Op = Op_; - this.Net = Net_; - this.Source = Source_; - this.Addr = Addr_; - this.Err = Err_; - }); - timeout = $pkg.timeout = $newType(8, $kindInterface, "net.timeout", true, "net", false, null); - temporary = $pkg.temporary = $newType(8, $kindInterface, "net.temporary", true, "net", false, null); - ParseError = $pkg.ParseError = $newType(0, $kindStruct, "net.ParseError", true, "net", true, function(Type_, Text_) { - this.$val = this; - if (arguments.length === 0) { - this.Type = ""; - this.Text = ""; - return; - } - this.Type = Type_; - this.Text = Text_; - }); - AddrError = $pkg.AddrError = $newType(0, $kindStruct, "net.AddrError", true, "net", true, function(Err_, Addr_) { - this.$val = this; - if (arguments.length === 0) { - this.Err = ""; - this.Addr = ""; - return; - } - this.Err = Err_; - this.Addr = Addr_; - }); - file = $pkg.file = $newType(0, $kindStruct, "net.file", true, "net", false, function(file_, data_, atEOF_) { - this.$val = this; - if (arguments.length === 0) { - this.file = ptrType$18.nil; - this.data = sliceType$1.nil; - this.atEOF = false; - return; - } - this.file = file_; - this.data = data_; - this.atEOF = atEOF_; - }); - sockaddr = $pkg.sockaddr = $newType(8, $kindInterface, "net.sockaddr", true, "net", false, null); - ptrType = $ptrType(time.Location); - sliceType = $sliceType($String); - sliceType$1 = $sliceType($Uint8); - ptrType$5 = $ptrType(IPNet); - ptrType$9 = $ptrType(IPAddr); - ptrType$13 = $ptrType(OpError); - ptrType$18 = $ptrType(os.File); - ptrType$22 = $ptrType(file); - ptrType$23 = $ptrType(Interface); - sliceType$7 = $sliceType(Addr); - sliceType$8 = $sliceType(Interface); - ptrType$24 = $ptrType(syscall.IfInfomsg); - ptrType$25 = $ptrType(syscall.IfAddrmsg); - arrayType$2 = $arrayType($Uint8, 4); - ptrType$31 = $ptrType(os.SyscallError); - ptrType$32 = $ptrType(AddrError); - arrayType$6 = $arrayType($Uint8, 20); - ptrType$48 = $ptrType(ipv6ZoneCache); - mapType$1 = $mapType($String, $Int); - mapType$2 = $mapType($Int, $String); - ptrType$49 = $ptrType(IP); - ptrType$52 = $ptrType(ParseError); - init = function() { - var $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = sort.Sort(sort.Reverse(($subslice(new byMaskLength(rfc6724policyTable.$array), rfc6724policyTable.$offset, rfc6724policyTable.$offset + rfc6724policyTable.$length)))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - byMaskLength.prototype.Len = function() { - var s; - s = this; - return s.$length; - }; - $ptrType(byMaskLength).prototype.Len = function() { return this.$get().Len(); }; - byMaskLength.prototype.Swap = function(i, j) { - var _tmp, _tmp$1, i, j, s; - s = this; - _tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), policyTableEntry); - _tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), policyTableEntry); - policyTableEntry.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp); - policyTableEntry.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1); - }; - $ptrType(byMaskLength).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; - byMaskLength.prototype.Less = function(i, j) { - var _tuple, _tuple$1, i, isize, j, jsize, s; - s = this; - _tuple = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Prefix.Mask.Size(); - isize = _tuple[0]; - _tuple$1 = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Prefix.Mask.Size(); - jsize = _tuple$1[0]; - return isize < jsize; - }; - $ptrType(byMaskLength).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; - mustCIDR = function(s) { - var _r$9, _tuple, err, ip, ipNet, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ip = $f.ip; ipNet = $f.ipNet; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tuple = ParseCIDR(s); - ip = _tuple[0]; - ipNet = _tuple[1]; - err = _tuple[2]; - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1: - _r$9 = err.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - $panic(new $String(_r$9)); - /* } */ case 2: - if (!((ip.$length === 16))) { - $panic(new $String("unexpected IP length")); - } - $s = -1; return ipNet; - /* */ } return; } if ($f === undefined) { $f = { $blk: mustCIDR }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ip = ip; $f.ipNet = ipNet; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - policyTable.prototype.Classify = function(ip) { - var _i, _ref, ent, ip, t; - t = this; - _ref = t; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - ent = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), policyTableEntry); - if (ent.Prefix.Contains(ip)) { - return ent; - } - _i++; - } - return new policyTableEntry.ptr(ptrType$5.nil, 0, 0); - }; - $ptrType(policyTable).prototype.Classify = function(ip) { return this.$get().Classify(ip); }; - init$1 = function() { - netGo = true; - }; - isConnError = function(err) { - var _tuple, err, ok, se; - _tuple = $assertType(err, syscall.Errno, true); - se = _tuple[0]; - ok = _tuple[1]; - if (ok) { - return (se === 104) || (se === 103); - } - return false; - }; - Flags.prototype.String = function() { - var _i, _ref, f, i, name, s, y; - f = this.$val; - s = ""; - _ref = flagNames; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!((((f & (((y = ((i >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { - if (!(s === "")) { - s = s + ("|"); - } - s = s + (name); - } - _i++; - } - if (s === "") { - s = "0"; - } - return s; - }; - $ptrType(Flags).prototype.String = function() { return new Flags(this.$get()).String(); }; - Interface.ptr.prototype.Addrs = function() { - var _r$9, _tuple, err, ifat, ifi, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ifat = $f.ifat; ifi = $f.ifi; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - ifi = this; - if (ifi === ptrType$23.nil) { - $s = -1; return [sliceType$7.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)]; - } - _r$9 = interfaceAddrTable(ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - ifat = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err); - } - $s = -1; return [ifat, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Interface.ptr.prototype.Addrs }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ifat = ifat; $f.ifi = ifi; $f.$s = $s; $f.$r = $r; return $f; - }; - Interface.prototype.Addrs = function() { return this.$val.Addrs(); }; - Interface.ptr.prototype.MulticastAddrs = function() { - var _r$9, _tuple, err, ifat, ifi, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ifat = $f.ifat; ifi = $f.ifi; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - ifi = this; - if (ifi === ptrType$23.nil) { - $s = -1; return [sliceType$7.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)]; - } - _r$9 = interfaceMulticastAddrTable(ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - ifat = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err); - } - $s = -1; return [ifat, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Interface.ptr.prototype.MulticastAddrs }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ifat = ifat; $f.ifi = ifi; $f.$s = $s; $f.$r = $r; return $f; - }; - Interface.prototype.MulticastAddrs = function() { return this.$val.MulticastAddrs(); }; - interfaceByIndex = function(ift, index) { - var _i, _ref, ifi, ift, index; - _ref = ift; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - ifi = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Interface); - if (index === ifi.Index) { - return [ifi, $ifaceNil]; - } - _i++; - } - return [ptrType$23.nil, errNoSuchInterface]; - }; - interfaceTable = function(ifindex) { - var _1, _i, _r$9, _ref, _tuple, _tuple$1, _tuple$2, attrs, err, err$1, ifim, ifindex, ift, m, msgs, tab, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; attrs = $f.attrs; err = $f.err; err$1 = $f.err$1; ifim = $f.ifim; ifindex = $f.ifindex; ift = $f.ift; m = $f.m; msgs = $f.msgs; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - m = [m]; - _r$9 = syscall.NetlinkRIB(18, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - tab = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [sliceType$8.nil, os.NewSyscallError("netlinkrib", err)]; - } - _tuple$1 = syscall.ParseNetlinkMessage(tab); - msgs = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [sliceType$8.nil, os.NewSyscallError("parsenetlinkmessage", err)]; - } - ift = sliceType$8.nil; - _ref = msgs; - _i = 0; - loop: - while (true) { - if (!(_i < _ref.$length)) { break; } - m[0] = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkMessage); - _1 = m[0].Header.Type; - if (_1 === (3)) { - break loop; - } else if (_1 === (16)) { - ifim = ($pointerOfStructConversion(($sliceToArray(m[0].Data)), ptrType$24)); - if ((ifindex === 0) || (ifindex === ((ifim.Index >> 0)))) { - _tuple$2 = syscall.ParseNetlinkRouteAttr(m[0]); - attrs = _tuple$2[0]; - err$1 = _tuple$2[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [sliceType$8.nil, os.NewSyscallError("parsenetlinkrouteattr", err$1)]; - } - ift = $append(ift, newLink(ifim, attrs)); - if (ifindex === ((ifim.Index >> 0))) { - break loop; - } - } - } - _i++; - } - $s = -1; return [ift, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: interfaceTable }; } $f._1 = _1; $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.attrs = attrs; $f.err = err; $f.err$1 = err$1; $f.ifim = ifim; $f.ifindex = ifindex; $f.ift = ift; $f.m = m; $f.msgs = msgs; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f; - }; - newLink = function(ifim, attrs) { - var _1, _2, _3, _4, _i, _i$1, _ref, _ref$1, a, attrs, b, ifi, ifim, nonzero, x, x$1; - ifi = new Interface.ptr(((ifim.Index >> 0)), 0, "", HardwareAddr.nil, linkFlags(ifim.Flags)); - _ref = attrs; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkRouteAttr); - _1 = a.Attr.Type; - if (_1 === (1)) { - _2 = a.Value.$length; - if (_2 === (4)) { - _3 = ifim.Type; - if ((_3 === (768)) || (_3 === (778)) || (_3 === (776))) { - _i++; - continue; - } - } else if (_2 === (16)) { - _4 = ifim.Type; - if ((_4 === (769)) || (_4 === (823))) { - _i++; - continue; - } - } - nonzero = false; - _ref$1 = a.Value; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - b = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - if (!((b === 0))) { - nonzero = true; - break; - } - _i$1++; - } - if (nonzero) { - ifi.HardwareAddr = (x = a.Value, $subslice(new HardwareAddr(x.$array), x.$offset, x.$offset + x.$length)); - } - } else if (_1 === (3)) { - ifi.Name = ($bytesToString($subslice(a.Value, 0, (a.Value.$length - 1 >> 0)))); - } else if (_1 === (4)) { - ifi.MTU = (((x$1 = $subslice(a.Value, 0, 4), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) >> 0)); - } - _i++; - } - return ifi; - }; - linkFlags = function(rawFlags) { - var f, rawFlags; - f = 0; - if (!((((rawFlags & 1) >>> 0) === 0))) { - f = (f | (1)) >>> 0; - } - if (!((((rawFlags & 2) >>> 0) === 0))) { - f = (f | (2)) >>> 0; - } - if (!((((rawFlags & 8) >>> 0) === 0))) { - f = (f | (4)) >>> 0; - } - if (!((((rawFlags & 16) >>> 0) === 0))) { - f = (f | (8)) >>> 0; - } - if (!((((rawFlags & 4096) >>> 0) === 0))) { - f = (f | (16)) >>> 0; - } - return f; - }; - interfaceAddrTable = function(ifi) { - var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, ifat, ifi, ift, msgs, tab, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; ifat = $f.ifat; ifi = $f.ifi; ift = $f.ift; msgs = $f.msgs; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$9 = syscall.NetlinkRIB(22, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - tab = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [sliceType$7.nil, os.NewSyscallError("netlinkrib", err)]; - } - _tuple$1 = syscall.ParseNetlinkMessage(tab); - msgs = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [sliceType$7.nil, os.NewSyscallError("parsenetlinkmessage", err)]; - } - ift = sliceType$8.nil; - /* */ if (ifi === ptrType$23.nil) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (ifi === ptrType$23.nil) { */ case 2: - err$1 = $ifaceNil; - _r$10 = interfaceTable(0); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _tuple$2 = _r$10; - ift = _tuple$2[0]; - err$1 = _tuple$2[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [sliceType$7.nil, err$1]; - } - /* } */ case 3: - _tuple$3 = addrTable(ift, ifi, msgs); - ifat = _tuple$3[0]; - err = _tuple$3[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [sliceType$7.nil, err]; - } - $s = -1; return [ifat, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: interfaceAddrTable }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.ifat = ifat; $f.ifi = ifi; $f.ift = ift; $f.msgs = msgs; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f; - }; - addrTable = function(ift, ifi, msgs) { - var _1, _i, _ref, _tuple, _tuple$1, attrs, err, err$1, ifa, ifam, ifat, ifi, ift, m, msgs; - ifat = sliceType$7.nil; - _ref = msgs; - _i = 0; - loop: - while (true) { - if (!(_i < _ref.$length)) { break; } - m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkMessage); - _1 = m.Header.Type; - if (_1 === (3)) { - break loop; - } else if (_1 === (20)) { - ifam = ($pointerOfStructConversion(($sliceToArray(m.Data)), ptrType$25)); - if (!((ift.$length === 0)) || (ifi.Index === ((ifam.Index >> 0)))) { - if (!((ift.$length === 0))) { - err = $ifaceNil; - _tuple = interfaceByIndex(ift, ((ifam.Index >> 0))); - ifi = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return [sliceType$7.nil, err]; - } - } - _tuple$1 = syscall.ParseNetlinkRouteAttr(m); - attrs = _tuple$1[0]; - err$1 = _tuple$1[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - return [sliceType$7.nil, os.NewSyscallError("parsenetlinkrouteattr", err$1)]; - } - ifa = newAddr(ifam, attrs); - if (!($interfaceIsEqual(ifa, $ifaceNil))) { - ifat = $append(ifat, ifa); - } - } - } - _i++; - } - return [ifat, $ifaceNil]; - }; - newAddr = function(ifam, attrs) { - var _1, _i, _i$1, _ref, _ref$1, a, a$1, attrs, ifa, ifam, ipPointToPoint, x, x$1, x$2, x$3; - ipPointToPoint = false; - _ref = attrs; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkRouteAttr); - if (a.Attr.Type === 2) { - ipPointToPoint = true; - break; - } - _i++; - } - _ref$1 = attrs; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - a$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), syscall.NetlinkRouteAttr); - if (ipPointToPoint && (a$1.Attr.Type === 1)) { - _i$1++; - continue; - } - _1 = ifam.Family; - if (_1 === (2)) { - return new IPNet.ptr(IPv4((x = a$1.Value, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), (x$1 = a$1.Value, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])), (x$2 = a$1.Value, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2])), (x$3 = a$1.Value, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3]))), CIDRMask(((ifam.Prefixlen >> 0)), 32)); - } else if (_1 === (10)) { - ifa = new IPNet.ptr($makeSlice(IP, 16), CIDRMask(((ifam.Prefixlen >> 0)), 128)); - $copySlice(ifa.IP, a$1.Value); - return ifa; - } - _i$1++; - } - return $ifaceNil; - }; - interfaceMulticastAddrTable = function(ifi) { - var _r$10, _r$9, ifi, ifmat4, ifmat6, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; ifi = $f.ifi; ifmat4 = $f.ifmat4; ifmat6 = $f.ifmat6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$9 = parseProcNetIGMP("/proc/net/igmp", ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - ifmat4 = _r$9; - _r$10 = parseProcNetIGMP6("/proc/net/igmp6", ifi); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - ifmat6 = _r$10; - $s = -1; return [$appendSlice(ifmat4, ifmat6), $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: interfaceMulticastAddrTable }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.ifi = ifi; $f.ifmat4 = ifmat4; $f.ifmat6 = ifmat6; $f.$s = $s; $f.$r = $r; return $f; - }; - parseProcNetIGMP = function(path, ifi) { - var _q, _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, f, fd, i, i$1, ifi, ifma, ifmat, l, name, ok, path, x, x$1, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; f = $f.f; fd = $f.fd; i = $f.i; i$1 = $f.i$1; ifi = $f.ifi; ifma = $f.ifma; ifmat = $f.ifmat; l = $f.l; name = $f.name; ok = $f.ok; path = $f.path; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - _r$9 = open(path); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - fd = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return sliceType$7.nil; - } - $deferred.push([$methodVal(fd, "close"), []]); - ifmat = sliceType$7.nil; - name = ""; - _r$10 = fd.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _r$10; - b = $makeSlice(sliceType$1, 4); - _r$11 = fd.readLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - _tuple$1 = _r$11; - l = _tuple$1[0]; - ok = _tuple$1[1]; - /* while (true) { */ case 4: - /* if (!(ok)) { break; } */ if(!(ok)) { $s = 5; continue; } - f = splitAtBytes(l, " :\r\t\n"); - /* */ if (f.$length < 4) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (f.$length < 4) { */ case 6: - _r$12 = fd.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - _tuple$2 = _r$12; - l = _tuple$2[0]; - ok = _tuple$2[1]; - /* continue; */ $s = 4; continue; - /* } */ case 7: - if (!((l.charCodeAt(0) === 32)) && !((l.charCodeAt(0) === 9))) { - name = (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]); - } else if (((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]).length === 8)) { - if (ifi === ptrType$23.nil || name === ifi.Name) { - i = 0; - while (true) { - if (!((i + 1 >> 0) < (0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]).length)) { break; } - _tuple$3 = xtoi2($substring((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]), i, (i + 2 >> 0)), 0); - (x = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x] = _tuple$3[0])); - i = i + (2) >> 0; - } - i$1 = (x$1 = $subslice(b, 0, 4), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); - ifma = new IPAddr.ptr(IPv4((((i$1 >>> 24 >>> 0) << 24 >>> 24)), (((i$1 >>> 16 >>> 0) << 24 >>> 24)), (((i$1 >>> 8 >>> 0) << 24 >>> 24)), ((i$1 << 24 >>> 24))), ""); - ifmat = $append(ifmat, ifma); - } - } - _r$13 = fd.readLine(); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } - _tuple$4 = _r$13; - l = _tuple$4[0]; - ok = _tuple$4[1]; - /* } */ $s = 4; continue; case 5: - $s = -1; return ifmat; - /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseProcNetIGMP }; } $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.f = f; $f.fd = fd; $f.i = i; $f.i$1 = i$1; $f.ifi = ifi; $f.ifma = ifma; $f.ifmat = ifmat; $f.l = l; $f.name = name; $f.ok = ok; $f.path = path; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - parseProcNetIGMP6 = function(path, ifi) { - var _q, _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, f, fd, i, ifi, ifma, ifmat, l, ok, path, x, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; f = $f.f; fd = $f.fd; i = $f.i; ifi = $f.ifi; ifma = $f.ifma; ifmat = $f.ifmat; l = $f.l; ok = $f.ok; path = $f.path; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - _r$9 = open(path); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - fd = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return sliceType$7.nil; - } - $deferred.push([$methodVal(fd, "close"), []]); - ifmat = sliceType$7.nil; - b = $makeSlice(sliceType$1, 16); - _r$10 = fd.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _tuple$1 = _r$10; - l = _tuple$1[0]; - ok = _tuple$1[1]; - /* while (true) { */ case 3: - /* if (!(ok)) { break; } */ if(!(ok)) { $s = 4; continue; } - f = splitAtBytes(l, " \r\t\n"); - /* */ if (f.$length < 6) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (f.$length < 6) { */ case 5: - _r$11 = fd.readLine(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - _tuple$2 = _r$11; - l = _tuple$2[0]; - ok = _tuple$2[1]; - /* continue; */ $s = 3; continue; - /* } */ case 6: - if (ifi === ptrType$23.nil || (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]) === ifi.Name) { - i = 0; - while (true) { - if (!((i + 1 >> 0) < (2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]).length)) { break; } - _tuple$3 = xtoi2($substring((2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]), i, (i + 2 >> 0)), 0); - (x = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x] = _tuple$3[0])); - i = i + (2) >> 0; - } - ifma = new IPAddr.ptr(new IP([(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]), (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]), (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]), (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]), (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]), (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]), (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]), (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]), (8 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 8]), (9 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 9]), (10 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 10]), (11 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 11]), (12 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 12]), (13 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 13]), (14 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 14]), (15 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 15])]), ""); - ifmat = $append(ifmat, ifma); - } - _r$12 = fd.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } - _tuple$4 = _r$12; - l = _tuple$4[0]; - ok = _tuple$4[1]; - /* } */ $s = 3; continue; case 4: - $s = -1; return ifmat; - /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseProcNetIGMP6 }; } $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.f = f; $f.fd = fd; $f.i = i; $f.ifi = ifi; $f.ifma = ifma; $f.ifmat = ifmat; $f.l = l; $f.ok = ok; $f.path = path; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - IPv4 = function(a, b, c, d) { - var a, b, c, d, p; - p = $makeSlice(IP, 16); - $copySlice(p, v4InV6Prefix); - (12 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 12] = a); - (13 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 13] = b); - (14 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 14] = c); - (15 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 15] = d); - return p; - }; - $pkg.IPv4 = IPv4; - IPv4Mask = function(a, b, c, d) { - var a, b, c, d, p; - p = $makeSlice(IPMask, 4); - (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = a); - (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = b); - (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = c); - (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = d); - return p; - }; - $pkg.IPv4Mask = IPv4Mask; - CIDRMask = function(ones, bits) { - var _q, bits, i, l, m, n, ones, y; - if (!((bits === 32)) && !((bits === 128))) { - return IPMask.nil; - } - if (ones < 0 || ones > bits) { - return IPMask.nil; - } - l = (_q = bits / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - m = $makeSlice(IPMask, l); - n = ((ones >>> 0)); - i = 0; - while (true) { - if (!(i < l)) { break; } - if (n >= 8) { - ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = 255); - n = n - (8) >>> 0; - i = i + (1) >> 0; - continue; - } - ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = (~(((y = n, y < 32 ? (255 >>> y) : 0) << 24 >>> 24)) << 24 >>> 24)); - n = 0; - i = i + (1) >> 0; - } - return m; - }; - $pkg.CIDRMask = CIDRMask; - IP.prototype.IsUnspecified = function() { - var ip; - ip = this; - return ip.Equal($pkg.IPv4zero) || ip.Equal($pkg.IPv6unspecified); - }; - $ptrType(IP).prototype.IsUnspecified = function() { return this.$get().IsUnspecified(); }; - IP.prototype.IsLoopback = function() { - var ip, ip4; - ip = this; - ip4 = ip.To4(); - if (!(ip4 === IP.nil)) { - return (0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 127; - } - return ip.Equal($pkg.IPv6loopback); - }; - $ptrType(IP).prototype.IsLoopback = function() { return this.$get().IsLoopback(); }; - IP.prototype.IsMulticast = function() { - var ip, ip4; - ip = this; - ip4 = ip.To4(); - if (!(ip4 === IP.nil)) { - return (((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) & 240) >>> 0) === 224; - } - return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255); - }; - $ptrType(IP).prototype.IsMulticast = function() { return this.$get().IsMulticast(); }; - IP.prototype.IsInterfaceLocalMulticast = function() { - var ip; - ip = this; - return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 1); - }; - $ptrType(IP).prototype.IsInterfaceLocalMulticast = function() { return this.$get().IsInterfaceLocalMulticast(); }; - IP.prototype.IsLinkLocalMulticast = function() { - var ip, ip4; - ip = this; - ip4 = ip.To4(); - if (!(ip4 === IP.nil)) { - return ((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 224) && ((1 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 1]) === 0) && ((2 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 2]) === 0); - } - return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 2); - }; - $ptrType(IP).prototype.IsLinkLocalMulticast = function() { return this.$get().IsLinkLocalMulticast(); }; - IP.prototype.IsLinkLocalUnicast = function() { - var ip, ip4; - ip = this; - ip4 = ip.To4(); - if (!(ip4 === IP.nil)) { - return ((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 169) && ((1 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 1]) === 254); - } - return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 254) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 192) >>> 0) === 128); - }; - $ptrType(IP).prototype.IsLinkLocalUnicast = function() { return this.$get().IsLinkLocalUnicast(); }; - IP.prototype.IsGlobalUnicast = function() { - var ip; - ip = this; - return ((ip.$length === 4) || (ip.$length === 16)) && !ip.Equal($pkg.IPv4bcast) && !ip.IsUnspecified() && !ip.IsLoopback() && !ip.IsMulticast() && !ip.IsLinkLocalUnicast(); - }; - $ptrType(IP).prototype.IsGlobalUnicast = function() { return this.$get().IsGlobalUnicast(); }; - isZeros = function(p) { - var i, p; - i = 0; - while (true) { - if (!(i < p.$length)) { break; } - if (!((((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === 0))) { - return false; - } - i = i + (1) >> 0; - } - return true; - }; - IP.prototype.To4 = function() { - var ip; - ip = this; - if (ip.$length === 4) { - return ip; - } - if ((ip.$length === 16) && isZeros($subslice(ip, 0, 10)) && ((10 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 10]) === 255) && ((11 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 11]) === 255)) { - return $subslice(ip, 12, 16); - } - return IP.nil; - }; - $ptrType(IP).prototype.To4 = function() { return this.$get().To4(); }; - IP.prototype.To16 = function() { - var ip; - ip = this; - if (ip.$length === 4) { - return IPv4((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]), (1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]), (2 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 2]), (3 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 3])); - } - if (ip.$length === 16) { - return ip; - } - return IP.nil; - }; - $ptrType(IP).prototype.To16 = function() { return this.$get().To16(); }; - IP.prototype.DefaultMask = function() { - var ip; - ip = this; - ip = ip.To4(); - if (ip === IP.nil) { - return IPMask.nil; - } - if ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 128) { - return classAMask; - } else if ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 192) { - return classBMask; - } else { - return classCMask; - } - }; - $ptrType(IP).prototype.DefaultMask = function() { return this.$get().DefaultMask(); }; - allFF = function(b) { - var _i, _ref, b, c; - _ref = b; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (!((c === 255))) { - return false; - } - _i++; - } - return true; - }; - IP.prototype.Mask = function(mask) { - var i, ip, mask, n, out, x, x$1; - ip = this; - if ((mask.$length === 16) && (ip.$length === 4) && allFF((x = $subslice(mask, 0, 12), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)))) { - mask = $subslice(mask, 12); - } - if ((mask.$length === 4) && (ip.$length === 16) && bytealg.Equal((x$1 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix)) { - ip = $subslice(ip, 12); - } - n = ip.$length; - if (!((n === mask.$length))) { - return IP.nil; - } - out = $makeSlice(IP, n); - i = 0; - while (true) { - if (!(i < n)) { break; } - ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = ((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & ((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i])) >>> 0)); - i = i + (1) >> 0; - } - return out; - }; - $ptrType(IP).prototype.Mask = function(mask) { return this.$get().Mask(mask); }; - ubtoa = function(dst, start, v) { - var _q, _q$1, _q$2, _r$10, _r$11, _r$9, dst, start, v, x, x$1, x$2; - if (v < 10) { - ((start < 0 || start >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + start] = (v + 48 << 24 >>> 24)); - return 1; - } else if (v < 100) { - (x = start + 1 >> 0, ((x < 0 || x >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x] = ((_r$9 = v % 10, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24))); - ((start < 0 || start >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + start] = ((_q = v / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24)); - return 2; - } - (x$1 = start + 2 >> 0, ((x$1 < 0 || x$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$1] = ((_r$10 = v % 10, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24))); - (x$2 = start + 1 >> 0, ((x$2 < 0 || x$2 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$2] = ((_r$11 = ((_q$1 = v / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$11 === _r$11 ? _r$11 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24))); - ((start < 0 || start >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + start] = ((_q$2 = v / 100, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >>> 0 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24)); - return 3; - }; - IP.prototype.String = function() { - var b, b$1, e0, e1, i, i$1, ip, j, n, p, p4, x, x$1; - ip = this; - p = ip; - if (ip.$length === 0) { - return ""; - } - p4 = p.To4(); - if (p4.$length === 4) { - b = $makeSlice(sliceType$1, 15); - n = ubtoa(b, 0, (0 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 0])); - ((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = 46); - n = n + (1) >> 0; - n = n + (ubtoa(b, n, (1 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 1]))) >> 0; - ((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = 46); - n = n + (1) >> 0; - n = n + (ubtoa(b, n, (2 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 2]))) >> 0; - ((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = 46); - n = n + (1) >> 0; - n = n + (ubtoa(b, n, (3 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 3]))) >> 0; - return ($bytesToString($subslice(b, 0, n))); - } - if (!((p.$length === 16))) { - return "?" + hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length)); - } - e0 = -1; - e1 = -1; - i = 0; - while (true) { - if (!(i < 16)) { break; } - j = i; - while (true) { - if (!(j < 16 && (((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) === 0) && ((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) === 0))) { break; } - j = j + (2) >> 0; - } - if (j > i && (j - i >> 0) > (e1 - e0 >> 0)) { - e0 = i; - e1 = j; - i = j; - } - i = i + (2) >> 0; - } - if ((e1 - e0 >> 0) <= 2) { - e0 = -1; - e1 = -1; - } - b$1 = $makeSlice(sliceType$1, 0, 39); - i$1 = 0; - while (true) { - if (!(i$1 < 16)) { break; } - if (i$1 === e0) { - b$1 = $append(b$1, 58, 58); - i$1 = e1; - if (i$1 >= 16) { - break; - } - } else if (i$1 > 0) { - b$1 = $append(b$1, 58); - } - b$1 = appendHex(b$1, (((((((i$1 < 0 || i$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i$1]) >>> 0)) << 8 >>> 0)) | (((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])) >>> 0))) >>> 0); - i$1 = i$1 + (2) >> 0; - } - return ($bytesToString(b$1)); - }; - $ptrType(IP).prototype.String = function() { return this.$get().String(); }; - hexString = function(b) { - var _i, _ref, _tmp, _tmp$1, b, i, s, tn, x, x$1; - s = $makeSlice(sliceType$1, ($imul(b.$length, 2))); - _ref = b; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - tn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - _tmp = "0123456789abcdef".charCodeAt((tn >>> 4 << 24 >>> 24)); - _tmp$1 = "0123456789abcdef".charCodeAt(((tn & 15) >>> 0)); - (x = $imul(i, 2), ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x] = _tmp)); - (x$1 = ($imul(i, 2)) + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1] = _tmp$1)); - _i++; - } - return ($bytesToString(s)); - }; - ipEmptyString = function(ip) { - var ip; - if (ip.$length === 0) { - return ""; - } - return ip.String(); - }; - IP.prototype.MarshalText = function() { - var ip; - ip = this; - if (ip.$length === 0) { - return [(new sliceType$1($stringToBytes(""))), $ifaceNil]; - } - if (!((ip.$length === 4)) && !((ip.$length === 16))) { - return [sliceType$1.nil, new AddrError.ptr("invalid IP address", hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length)))]; - } - return [(new sliceType$1($stringToBytes(ip.String()))), $ifaceNil]; - }; - $ptrType(IP).prototype.MarshalText = function() { return this.$get().MarshalText(); }; - $ptrType(IP).prototype.UnmarshalText = function(text) { - var ip, s, text, x; - ip = this; - if (text.$length === 0) { - ip.$set(IP.nil); - return $ifaceNil; - } - s = ($bytesToString(text)); - x = ParseIP(s); - if (x === IP.nil) { - return new ParseError.ptr("IP address", s); - } - ip.$set(x); - return $ifaceNil; - }; - IP.prototype.Equal = function(x) { - var ip, x, x$1, x$2, x$3, x$4; - ip = this; - if (ip.$length === x.$length) { - return bytealg.Equal($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)); - } - if ((ip.$length === 4) && (x.$length === 16)) { - return bytealg.Equal((x$1 = $subslice(x, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix) && bytealg.Equal($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), (x$2 = $subslice(x, 12), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length))); - } - if ((ip.$length === 16) && (x.$length === 4)) { - return bytealg.Equal((x$3 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), v4InV6Prefix) && bytealg.Equal((x$4 = $subslice(ip, 12), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)); - } - return false; - }; - $ptrType(IP).prototype.Equal = function(x) { return this.$get().Equal(x); }; - simpleMaskLength = function(mask) { - var _i, _ref, i, mask, n, v, y; - n = 0; - _ref = mask; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (v === 255) { - n = n + (8) >> 0; - _i++; - continue; - } - while (true) { - if (!(!((((v & 128) >>> 0) === 0)))) { break; } - n = n + (1) >> 0; - v = (y = (1), y < 32 ? (v << y) : 0) << 24 >>> 24; - } - if (!((v === 0))) { - return -1; - } - i = i + (1) >> 0; - while (true) { - if (!(i < mask.$length)) { break; } - if (!((((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i]) === 0))) { - return -1; - } - i = i + (1) >> 0; - } - break; - } - return n; - }; - IPMask.prototype.Size = function() { - var _tmp, _tmp$1, _tmp$2, _tmp$3, bits, m, ones; - ones = 0; - bits = 0; - m = this; - _tmp = simpleMaskLength(m); - _tmp$1 = $imul(m.$length, 8); - ones = _tmp; - bits = _tmp$1; - if (ones === -1) { - _tmp$2 = 0; - _tmp$3 = 0; - ones = _tmp$2; - bits = _tmp$3; - return [ones, bits]; - } - return [ones, bits]; - }; - $ptrType(IPMask).prototype.Size = function() { return this.$get().Size(); }; - IPMask.prototype.String = function() { - var m; - m = this; - if (m.$length === 0) { - return ""; - } - return hexString($subslice(new sliceType$1(m.$array), m.$offset, m.$offset + m.$length)); - }; - $ptrType(IPMask).prototype.String = function() { return this.$get().String(); }; - networkNumberAndMask = function(n) { - var _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, ip, m, n; - ip = IP.nil; - m = IPMask.nil; - ip = n.IP.To4(); - if (ip === IP.nil) { - ip = n.IP; - if (!((ip.$length === 16))) { - _tmp = IP.nil; - _tmp$1 = IPMask.nil; - ip = _tmp; - m = _tmp$1; - return [ip, m]; - } - } - m = n.Mask; - _1 = m.$length; - if (_1 === (4)) { - if (!((ip.$length === 4))) { - _tmp$2 = IP.nil; - _tmp$3 = IPMask.nil; - ip = _tmp$2; - m = _tmp$3; - return [ip, m]; - } - } else if (_1 === (16)) { - if (ip.$length === 4) { - m = $subslice(m, 12); - } - } else { - _tmp$4 = IP.nil; - _tmp$5 = IPMask.nil; - ip = _tmp$4; - m = _tmp$5; - return [ip, m]; - } - return [ip, m]; - }; - IPNet.ptr.prototype.Contains = function(ip) { - var _tuple, i, ip, l, m, n, nn, x; - n = this; - _tuple = networkNumberAndMask(n); - nn = _tuple[0]; - m = _tuple[1]; - x = ip.To4(); - if (!(x === IP.nil)) { - ip = x; - } - l = ip.$length; - if (!((l === nn.$length))) { - return false; - } - i = 0; - while (true) { - if (!(i < l)) { break; } - if (!((((((i < 0 || i >= nn.$length) ? ($throwRuntimeError("index out of range"), undefined) : nn.$array[nn.$offset + i]) & ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i])) >>> 0) === ((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i])) >>> 0)))) { - return false; - } - i = i + (1) >> 0; - } - return true; - }; - IPNet.prototype.Contains = function(ip) { return this.$val.Contains(ip); }; - IPNet.ptr.prototype.Network = function() { - var n; - n = this; - return "ip+net"; - }; - IPNet.prototype.Network = function() { return this.$val.Network(); }; - IPNet.ptr.prototype.String = function() { - var _tuple, l, m, n, nn; - n = this; - _tuple = networkNumberAndMask(n); - nn = _tuple[0]; - m = _tuple[1]; - if (nn === IP.nil || m === IPMask.nil) { - return ""; - } - l = simpleMaskLength(m); - if (l === -1) { - return nn.String() + "/" + m.String(); - } - return nn.String() + "/" + uitoa(((l >>> 0))); - }; - IPNet.prototype.String = function() { return this.$val.String(); }; - parseIPv4 = function(s) { - var _tuple, c, i, n, ok, p, s; - p = arrayType$2.zero(); - i = 0; - while (true) { - if (!(i < 4)) { break; } - if (s.length === 0) { - return IP.nil; - } - if (i > 0) { - if (!((s.charCodeAt(0) === 46))) { - return IP.nil; - } - s = $substring(s, 1); - } - _tuple = dtoi(s); - n = _tuple[0]; - c = _tuple[1]; - ok = _tuple[2]; - if (!ok || n > 255) { - return IP.nil; - } - s = $substring(s, c); - ((i < 0 || i >= p.length) ? ($throwRuntimeError("index out of range"), undefined) : p[i] = ((n << 24 >>> 24))); - i = i + (1) >> 0; - } - if (!((s.length === 0))) { - return IP.nil; - } - return IPv4(p[0], p[1], p[2], p[3]); - }; - parseIPv6 = function(s) { - var _tuple, c, ellipsis, i, ip, ip4, j, j$1, n, n$1, ok, s, x, x$1, x$2, x$3, x$4; - ip = IP.nil; - ip = $makeSlice(IP, 16); - ellipsis = -1; - if (s.length >= 2 && (s.charCodeAt(0) === 58) && (s.charCodeAt(1) === 58)) { - ellipsis = 0; - s = $substring(s, 2); - if (s.length === 0) { - ip = ip; - return ip; - } - } - i = 0; - while (true) { - if (!(i < 16)) { break; } - _tuple = xtoi(s); - n = _tuple[0]; - c = _tuple[1]; - ok = _tuple[2]; - if (!ok || n > 65535) { - ip = IP.nil; - return ip; - } - if (c < s.length && (s.charCodeAt(c) === 46)) { - if (ellipsis < 0 && !((i === 12))) { - ip = IP.nil; - return ip; - } - if ((i + 4 >> 0) > 16) { - ip = IP.nil; - return ip; - } - ip4 = parseIPv4(s); - if (ip4 === IP.nil) { - ip = IP.nil; - return ip; - } - ((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (12 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 12])); - (x = i + 1 >> 0, ((x < 0 || x >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x] = (13 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 13]))); - (x$1 = i + 2 >> 0, ((x$1 < 0 || x$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$1] = (14 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 14]))); - (x$2 = i + 3 >> 0, ((x$2 < 0 || x$2 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$2] = (15 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 15]))); - s = ""; - i = i + (4) >> 0; - break; - } - ((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (((n >> 8 >> 0) << 24 >>> 24))); - (x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$3] = ((n << 24 >>> 24)))); - i = i + (2) >> 0; - s = $substring(s, c); - if (s.length === 0) { - break; - } - if (!((s.charCodeAt(0) === 58)) || (s.length === 1)) { - ip = IP.nil; - return ip; - } - s = $substring(s, 1); - if (s.charCodeAt(0) === 58) { - if (ellipsis >= 0) { - ip = IP.nil; - return ip; - } - ellipsis = i; - s = $substring(s, 1); - if (s.length === 0) { - break; - } - } - } - if (!((s.length === 0))) { - ip = IP.nil; - return ip; - } - if (i < 16) { - if (ellipsis < 0) { - ip = IP.nil; - return ip; - } - n$1 = 16 - i >> 0; - j = i - 1 >> 0; - while (true) { - if (!(j >= ellipsis)) { break; } - (x$4 = j + n$1 >> 0, ((x$4 < 0 || x$4 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$4] = ((j < 0 || j >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j]))); - j = j - (1) >> 0; - } - j$1 = (ellipsis + n$1 >> 0) - 1 >> 0; - while (true) { - if (!(j$1 >= ellipsis)) { break; } - ((j$1 < 0 || j$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j$1] = 0); - j$1 = j$1 - (1) >> 0; - } - } else if (ellipsis >= 0) { - ip = IP.nil; - return ip; - } - ip = ip; - return ip; - }; - ParseIP = function(s) { - var _1, i, s; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - _1 = s.charCodeAt(i); - if (_1 === (46)) { - return parseIPv4(s); - } else if (_1 === (58)) { - return parseIPv6(s); - } - i = i + (1) >> 0; - } - return IP.nil; - }; - $pkg.ParseIP = ParseIP; - ParseCIDR = function(s) { - var _tmp, _tmp$1, _tuple, addr, i, ip, iplen, m, mask, n, ok, s; - i = bytealg.IndexByteString(s, 47); - if (i < 0) { - return [IP.nil, ptrType$5.nil, new ParseError.ptr("CIDR address", s)]; - } - _tmp = $substring(s, 0, i); - _tmp$1 = $substring(s, (i + 1 >> 0)); - addr = _tmp; - mask = _tmp$1; - iplen = 4; - ip = parseIPv4(addr); - if (ip === IP.nil) { - iplen = 16; - ip = parseIPv6(addr); - } - _tuple = dtoi(mask); - n = _tuple[0]; - i = _tuple[1]; - ok = _tuple[2]; - if (ip === IP.nil || !ok || !((i === mask.length)) || n < 0 || n > ($imul(8, iplen))) { - return [IP.nil, ptrType$5.nil, new ParseError.ptr("CIDR address", s)]; - } - m = CIDRMask(n, $imul(8, iplen)); - return [ip, new IPNet.ptr(ip.Mask(m), m), $ifaceNil]; - }; - $pkg.ParseCIDR = ParseCIDR; - IPAddr.ptr.prototype.Network = function() { - var a; - a = this; - return "ip"; - }; - IPAddr.prototype.Network = function() { return this.$val.Network(); }; - IPAddr.ptr.prototype.String = function() { - var a, ip; - a = this; - if (a === ptrType$9.nil) { - return ""; - } - ip = ipEmptyString(a.IP); - if (!(a.Zone === "")) { - return ip + "%" + a.Zone; - } - return ip; - }; - IPAddr.prototype.String = function() { return this.$val.String(); }; - HardwareAddr.prototype.String = function() { - var _i, _ref, a, b, buf, i; - a = this; - if (a.$length === 0) { - return ""; - } - buf = $makeSlice(sliceType$1, 0, (($imul(a.$length, 3)) - 1 >> 0)); - _ref = a; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = _i; - b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - if (i > 0) { - buf = $append(buf, 58); - } - buf = $append(buf, "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24))); - buf = $append(buf, "0123456789abcdef".charCodeAt(((b & 15) >>> 0))); - _i++; - } - return ($bytesToString(buf)); - }; - $ptrType(HardwareAddr).prototype.String = function() { return this.$get().String(); }; - OpError.ptr.prototype.Error = function() { - var _r$10, _r$11, _r$9, e, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; e = $f.e; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - if (e === ptrType$13.nil) { - $s = -1; return ""; - } - s = e.Op; - if (!(e.Net === "")) { - s = s + (" " + e.Net); - } - /* */ if (!($interfaceIsEqual(e.Source, $ifaceNil))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!($interfaceIsEqual(e.Source, $ifaceNil))) { */ case 1: - _r$9 = e.Source.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - s = s + (" " + _r$9); - /* } */ case 2: - /* */ if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { */ case 4: - if (!($interfaceIsEqual(e.Source, $ifaceNil))) { - s = s + ("->"); - } else { - s = s + (" "); - } - _r$10 = e.Addr.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - s = s + (_r$10); - /* } */ case 5: - _r$11 = e.Err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - s = s + (": " + _r$11); - $s = -1; return s; - /* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Error }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f.e = e; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - OpError.prototype.Error = function() { return this.$val.Error(); }; - OpError.ptr.prototype.Timeout = function() { - var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; e = $f.e; ne = $f.ne; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; t = $f.t; t$1 = $f.t$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _tuple = $assertType(e.Err, ptrType$31, true); - ne = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _tuple$1 = $assertType(ne.Err, timeout, true); - t = _tuple$1[0]; - ok$1 = _tuple$1[1]; - if (!(ok$1)) { _v = false; $s = 3; continue s; } - _r$9 = t.Timeout(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _v = _r$9; case 3: - $s = -1; return _v; - /* } */ case 2: - _tuple$2 = $assertType(e.Err, timeout, true); - t$1 = _tuple$2[0]; - ok$2 = _tuple$2[1]; - if (!(ok$2)) { _v$1 = false; $s = 5; continue s; } - _r$10 = t$1.Timeout(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _v$1 = _r$10; case 5: - $s = -1; return _v$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Timeout }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.e = e; $f.ne = ne; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.t = t; $f.t$1 = t$1; $f.$s = $s; $f.$r = $r; return $f; - }; - OpError.prototype.Timeout = function() { return this.$val.Timeout(); }; - OpError.ptr.prototype.Temporary = function() { - var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; e = $f.e; ne = $f.ne; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; t = $f.t; t$1 = $f.t$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - if (e.Op === "accept" && isConnError(e.Err)) { - $s = -1; return true; - } - _tuple = $assertType(e.Err, ptrType$31, true); - ne = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _tuple$1 = $assertType(ne.Err, temporary, true); - t = _tuple$1[0]; - ok$1 = _tuple$1[1]; - if (!(ok$1)) { _v = false; $s = 3; continue s; } - _r$9 = t.Temporary(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _v = _r$9; case 3: - $s = -1; return _v; - /* } */ case 2: - _tuple$2 = $assertType(e.Err, temporary, true); - t$1 = _tuple$2[0]; - ok$2 = _tuple$2[1]; - if (!(ok$2)) { _v$1 = false; $s = 5; continue s; } - _r$10 = t$1.Temporary(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _v$1 = _r$10; case 5: - $s = -1; return _v$1; - /* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Temporary }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.e = e; $f.ne = ne; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.t = t; $f.t$1 = t$1; $f.$s = $s; $f.$r = $r; return $f; - }; - OpError.prototype.Temporary = function() { return this.$val.Temporary(); }; - ParseError.ptr.prototype.Error = function() { - var e; - e = this; - return "invalid " + e.Type + ": " + e.Text; - }; - ParseError.prototype.Error = function() { return this.$val.Error(); }; - AddrError.ptr.prototype.Error = function() { - var e, s; - e = this; - if (e === ptrType$32.nil) { - return ""; - } - s = e.Err; - if (!(e.Addr === "")) { - s = "address " + e.Addr + ": " + s; - } - return s; - }; - AddrError.prototype.Error = function() { return this.$val.Error(); }; - AddrError.ptr.prototype.Timeout = function() { - var e; - e = this; - return false; - }; - AddrError.prototype.Timeout = function() { return this.$val.Timeout(); }; - AddrError.ptr.prototype.Temporary = function() { - var e; - e = this; - return false; - }; - AddrError.prototype.Temporary = function() { return this.$val.Temporary(); }; - file.ptr.prototype.close = function() { - var _r$9, f, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - f = this; - _r$9 = f.file.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _r$9; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.close }; } $f._r$9 = _r$9; $f.f = f; $f.$s = $s; $f.$r = $r; return $f; - }; - file.prototype.close = function() { return this.$val.close(); }; - file.ptr.prototype.getLineFromData = function() { - var data, f, i, n, ok, s; - s = ""; - ok = false; - f = this; - data = f.data; - i = 0; - i = 0; - while (true) { - if (!(i < data.$length)) { break; } - if (((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]) === 10) { - s = ($bytesToString($subslice(data, 0, i))); - ok = true; - i = i + (1) >> 0; - n = data.$length - i >> 0; - $copySlice($subslice(data, 0), $subslice(data, i)); - f.data = $subslice(data, 0, n); - return [s, ok]; - } - i = i + (1) >> 0; - } - if (f.atEOF && f.data.$length > 0) { - s = ($bytesToString(data)); - f.data = $subslice(f.data, 0, 0); - ok = true; - } - return [s, ok]; - }; - file.prototype.getLineFromData = function() { return this.$val.getLineFromData(); }; - file.ptr.prototype.readLine = function() { - var _r$9, _tuple, _tuple$1, _tuple$2, err, f, ln, n, ok, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; f = $f.f; ln = $f.ln; n = $f.n; ok = $f.ok; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = ""; - ok = false; - f = this; - _tuple = f.getLineFromData(); - s = _tuple[0]; - ok = _tuple[1]; - if (ok) { - $s = -1; return [s, ok]; - } - /* */ if (f.data.$length < f.data.$capacity) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (f.data.$length < f.data.$capacity) { */ case 1: - ln = f.data.$length; - _r$9 = io.ReadFull(f.file, $subslice(f.data, ln, f.data.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple$1 = _r$9; - n = _tuple$1[0]; - err = _tuple$1[1]; - if (n >= 0) { - f.data = $subslice(f.data, 0, (ln + n >> 0)); - } - if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) { - f.atEOF = true; - } - /* } */ case 2: - _tuple$2 = f.getLineFromData(); - s = _tuple$2[0]; - ok = _tuple$2[1]; - $s = -1; return [s, ok]; - /* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.readLine }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.f = f; $f.ln = ln; $f.n = n; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - file.prototype.readLine = function() { return this.$val.readLine(); }; - open = function(name) { - var _r$9, _tuple, err, fd, name, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; fd = $f.fd; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$9 = os.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _tuple = _r$9; - fd = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$22.nil, err]; - } - $s = -1; return [new file.ptr(fd, $makeSlice(sliceType$1, 0, 65536), false), $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: open }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.name = name; $f.$s = $s; $f.$r = $r; return $f; - }; - countAnyByte = function(s, t) { - var i, n, s, t; - n = 0; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (bytealg.IndexByteString(t, s.charCodeAt(i)) >= 0) { - n = n + (1) >> 0; - } - i = i + (1) >> 0; - } - return n; - }; - splitAtBytes = function(s, t) { - var a, i, last$1, n, s, t; - a = $makeSlice(sliceType, (1 + countAnyByte(s, t) >> 0)); - n = 0; - last$1 = 0; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (bytealg.IndexByteString(t, s.charCodeAt(i)) >= 0) { - if (last$1 < i) { - ((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = $substring(s, last$1, i)); - n = n + (1) >> 0; - } - last$1 = i + 1 >> 0; - } - i = i + (1) >> 0; - } - if (last$1 < s.length) { - ((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = $substring(s, last$1)); - n = n + (1) >> 0; - } - return $subslice(a, 0, n); - }; - dtoi = function(s) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s; - n = 0; - i = 0; - ok = false; - n = 0; - i = 0; - while (true) { - if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; } - n = ($imul(n, 10)) + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0; - if (n >= 16777215) { - _tmp = 16777215; - _tmp$1 = i; - _tmp$2 = false; - n = _tmp; - i = _tmp$1; - ok = _tmp$2; - return [n, i, ok]; - } - i = i + (1) >> 0; - } - if (i === 0) { - _tmp$3 = 0; - _tmp$4 = 0; - _tmp$5 = false; - n = _tmp$3; - i = _tmp$4; - ok = _tmp$5; - return [n, i, ok]; - } - _tmp$6 = n; - _tmp$7 = i; - _tmp$8 = true; - n = _tmp$6; - i = _tmp$7; - ok = _tmp$8; - return [n, i, ok]; - }; - xtoi = function(s) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s; - n = 0; - i = 0; - ok = false; - n = 0; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) { - n = $imul(n, (16)); - n = n + ((((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0))) >> 0; - } else if (97 <= s.charCodeAt(i) && s.charCodeAt(i) <= 102) { - n = $imul(n, (16)); - n = n + (((((s.charCodeAt(i) - 97 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0; - } else if (65 <= s.charCodeAt(i) && s.charCodeAt(i) <= 70) { - n = $imul(n, (16)); - n = n + (((((s.charCodeAt(i) - 65 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0; - } else { - break; - } - if (n >= 16777215) { - _tmp = 0; - _tmp$1 = i; - _tmp$2 = false; - n = _tmp; - i = _tmp$1; - ok = _tmp$2; - return [n, i, ok]; - } - i = i + (1) >> 0; - } - if (i === 0) { - _tmp$3 = 0; - _tmp$4 = i; - _tmp$5 = false; - n = _tmp$3; - i = _tmp$4; - ok = _tmp$5; - return [n, i, ok]; - } - _tmp$6 = n; - _tmp$7 = i; - _tmp$8 = true; - n = _tmp$6; - i = _tmp$7; - ok = _tmp$8; - return [n, i, ok]; - }; - xtoi2 = function(s, e) { - var _tuple, e, ei, n, ok, s; - if (s.length > 2 && !((s.charCodeAt(2) === e))) { - return [0, false]; - } - _tuple = xtoi($substring(s, 0, 2)); - n = _tuple[0]; - ei = _tuple[1]; - ok = _tuple[2]; - return [((n << 24 >>> 24)), ok && (ei === 2)]; - }; - uitoa = function(val) { - var _q, buf, i, q, val; - if (val === 0) { - return "0"; - } - buf = arrayType$6.zero(); - i = 19; - while (true) { - if (!(val >= 10)) { break; } - q = (_q = val / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); - ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + val >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24))); - i = i - (1) >> 0; - val = q; - } - ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + val >>> 0) << 24 >>> 24))); - return ($bytesToString($subslice(new sliceType$1(buf), i))); - }; - appendHex = function(dst, i) { - var dst, i, j, v, y; - if (i === 0) { - return $append(dst, 48); - } - j = 7; - while (true) { - if (!(j >= 0)) { break; } - v = (y = ((($imul(j, 4)) >>> 0)), y < 32 ? (i >>> y) : 0) >>> 0; - if (v > 0) { - dst = $append(dst, "0123456789abcdef".charCodeAt(((v & 15) >>> 0))); - } - j = j - (1) >> 0; - } - return dst; - }; - policyTable.methods = [{prop: "Classify", name: "Classify", pkg: "", typ: $funcType([IP], [policyTableEntry], false)}]; - byMaskLength.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; - ptrType$23.methods = [{prop: "Addrs", name: "Addrs", pkg: "", typ: $funcType([], [sliceType$7, $error], false)}, {prop: "MulticastAddrs", name: "MulticastAddrs", pkg: "", typ: $funcType([], [sliceType$7, $error], false)}]; - Flags.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$48.methods = [{prop: "update", name: "update", pkg: "net", typ: $funcType([sliceType$8, $Bool], [$Bool], false)}, {prop: "name", name: "name", pkg: "net", typ: $funcType([$Int], [$String], false)}, {prop: "index", name: "index", pkg: "net", typ: $funcType([$String], [$Int], false)}]; - IP.methods = [{prop: "IsUnspecified", name: "IsUnspecified", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLoopback", name: "IsLoopback", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsMulticast", name: "IsMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInterfaceLocalMulticast", name: "IsInterfaceLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalMulticast", name: "IsLinkLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalUnicast", name: "IsLinkLocalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsGlobalUnicast", name: "IsGlobalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "To4", name: "To4", pkg: "", typ: $funcType([], [IP], false)}, {prop: "To16", name: "To16", pkg: "", typ: $funcType([], [IP], false)}, {prop: "DefaultMask", name: "DefaultMask", pkg: "", typ: $funcType([], [IPMask], false)}, {prop: "Mask", name: "Mask", pkg: "", typ: $funcType([IPMask], [IP], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([IP], [$Bool], false)}, {prop: "matchAddrFamily", name: "matchAddrFamily", pkg: "net", typ: $funcType([IP], [$Bool], false)}]; - ptrType$49.methods = [{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]; - IPMask.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$5.methods = [{prop: "Contains", name: "Contains", pkg: "", typ: $funcType([IP], [$Bool], false)}, {prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$9.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "opAddr", name: "opAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}]; - HardwareAddr.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$13.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$52.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$32.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$22.methods = [{prop: "close", name: "close", pkg: "net", typ: $funcType([], [], false)}, {prop: "getLineFromData", name: "getLineFromData", pkg: "net", typ: $funcType([], [$String, $Bool], false)}, {prop: "readLine", name: "readLine", pkg: "net", typ: $funcType([], [$String, $Bool], false)}]; - policyTableEntry.init("", [{prop: "Prefix", name: "Prefix", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "Precedence", name: "Precedence", embedded: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Label", name: "Label", embedded: false, exported: true, typ: $Uint8, tag: ""}]); - policyTable.init(policyTableEntry); - byMaskLength.init(policyTableEntry); - Interface.init("", [{prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "MTU", name: "MTU", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "HardwareAddr", name: "HardwareAddr", embedded: false, exported: true, typ: HardwareAddr, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: Flags, tag: ""}]); - ipv6ZoneCache.init("net", [{prop: "RWMutex", name: "RWMutex", embedded: true, exported: true, typ: sync.RWMutex, tag: ""}, {prop: "lastFetched", name: "lastFetched", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "toIndex", name: "toIndex", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "toName", name: "toName", embedded: false, exported: false, typ: mapType$2, tag: ""}]); - IP.init($Uint8); - IPMask.init($Uint8); - IPNet.init("", [{prop: "IP", name: "IP", embedded: false, exported: true, typ: IP, tag: ""}, {prop: "Mask", name: "Mask", embedded: false, exported: true, typ: IPMask, tag: ""}]); - IPAddr.init("", [{prop: "IP", name: "IP", embedded: false, exported: true, typ: IP, tag: ""}, {prop: "Zone", name: "Zone", embedded: false, exported: true, typ: $String, tag: ""}]); - HardwareAddr.init($Uint8); - Addr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); - OpError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Net", name: "Net", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Source", name: "Source", embedded: false, exported: true, typ: Addr, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: Addr, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); - timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); - temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]); - ParseError.init("", [{prop: "Type", name: "Type", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}]); - AddrError.init("", [{prop: "Err", name: "Err", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: $String, tag: ""}]); - file.init("net", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "atEOF", name: "atEOF", embedded: false, exported: false, typ: $Bool, tag: ""}]); - sockaddr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bytealg.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = nettrace.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = poll.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = singleflight.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = dnsmessage.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = rand.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = os.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sort.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = atomic.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = syscall.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - netGo = false; - errLameReferral = errors.New("lame referral"); - errCannotUnmarshalDNSMessage = errors.New("cannot unmarshal DNS message"); - errCannotMarshalDNSMessage = errors.New("cannot marshal DNS message"); - errServerMisbehaving = errors.New("server misbehaving"); - errInvalidDNSResponse = errors.New("invalid DNS response"); - errNoAnswerFromDNSServer = errors.New("no answer from DNS server"); - errServerTemporarlyMisbehaving = errors.New("server misbehaving"); - testHookLookupIP = (function $b(ctx, fn, network, host) { - var _r, ctx, fn, host, network, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; ctx = $f.ctx; fn = $f.fn; host = $f.host; network = $f.network; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = fn(ctx, network, host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f.ctx = ctx; $f.fn = fn; $f.host = host; $f.network = network; $f.$s = $s; $f.$r = $r; return $f; - }); - errInvalidInterface = errors.New("invalid network interface"); - errInvalidInterfaceIndex = errors.New("invalid network interface index"); - errInvalidInterfaceName = errors.New("invalid network interface name"); - errNoSuchInterface = errors.New("no such network interface"); - errNoSuchMulticastInterface = errors.New("no such multicast network interface"); - flagNames = new sliceType(["up", "broadcast", "loopback", "pointtopoint", "multicast"]); - zoneCache = new ipv6ZoneCache.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), {}, {}); - v4InV6Prefix = new sliceType$1([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255]); - $pkg.IPv4bcast = IPv4(255, 255, 255, 255); - $pkg.IPv4allsys = IPv4(224, 0, 0, 1); - $pkg.IPv4allrouter = IPv4(224, 0, 0, 2); - $pkg.IPv4zero = IPv4(0, 0, 0, 0); - $pkg.IPv6unspecified = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); - $pkg.IPv6loopback = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); - classAMask = IPv4Mask(255, 0, 0, 0); - classBMask = IPv4Mask(255, 255, 0, 0); - classCMask = IPv4Mask(255, 255, 255, 0); - errNoSuitableAddress = errors.New("no suitable address found"); - errMissingAddress = errors.New("missing address"); - errCanceled = errors.New("operation was canceled"); - $pkg.ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection"); - aLongTimeAgo = $clone(time.Unix(new $Int64(0, 1), new $Int64(0, 0)), time.Time); - errNoSuchHost = errors.New("no such host"); - _r = mustCIDR("::1/128"); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r$1 = mustCIDR("::/0"); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$2 = mustCIDR("::ffff:0:0/96"); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$3 = mustCIDR("2002::/16"); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _r$4 = mustCIDR("2001::/32"); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$5 = mustCIDR("fc00::/7"); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$6 = mustCIDR("::/96"); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _r$7 = mustCIDR("fec0::/10"); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _r$8 = mustCIDR("3ffe::/16"); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - rfc6724policyTable = new policyTable([new policyTableEntry.ptr(_r, 50, 0), new policyTableEntry.ptr(_r$1, 40, 1), new policyTableEntry.ptr(_r$2, 35, 4), new policyTableEntry.ptr(_r$3, 30, 2), new policyTableEntry.ptr(_r$4, 5, 5), new policyTableEntry.ptr(_r$5, 3, 13), new policyTableEntry.ptr(_r$6, 1, 3), new policyTableEntry.ptr(_r$7, 1, 11), new policyTableEntry.ptr(_r$8, 1, 12)]); - $r = init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - init$1(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["net/url"] = (function() { - var $pkg = {}, $init, errors, fmt, sort, strconv, strings, Error, timeout, temporary, EscapeError, InvalidHostError, URL, Userinfo, Values, sliceType, arrayType, ptrType, ptrType$1, sliceType$1, ptrType$2, sliceType$2, ptrType$3, ishex, unhex, shouldEscape, QueryUnescape, unescape, QueryEscape, escape, User, UserPassword, getscheme, split, Parse, parse, parseAuthority, parseHost, validEncodedPath, validOptionalPort, ParseQuery, parseQuery, resolvePath, splitHostPort, validUserinfo, stringContainsCTLByte; - errors = $packages["errors"]; - fmt = $packages["fmt"]; - sort = $packages["sort"]; - strconv = $packages["strconv"]; - strings = $packages["strings"]; - Error = $pkg.Error = $newType(0, $kindStruct, "url.Error", true, "net/url", true, function(Op_, URL_, Err_) { - this.$val = this; - if (arguments.length === 0) { - this.Op = ""; - this.URL = ""; - this.Err = $ifaceNil; - return; - } - this.Op = Op_; - this.URL = URL_; - this.Err = Err_; - }); - timeout = $pkg.timeout = $newType(8, $kindInterface, "url.timeout", true, "net/url", false, null); - temporary = $pkg.temporary = $newType(8, $kindInterface, "url.temporary", true, "net/url", false, null); - EscapeError = $pkg.EscapeError = $newType(8, $kindString, "url.EscapeError", true, "net/url", true, null); - InvalidHostError = $pkg.InvalidHostError = $newType(8, $kindString, "url.InvalidHostError", true, "net/url", true, null); - URL = $pkg.URL = $newType(0, $kindStruct, "url.URL", true, "net/url", true, function(Scheme_, Opaque_, User_, Host_, Path_, RawPath_, ForceQuery_, RawQuery_, Fragment_) { - this.$val = this; - if (arguments.length === 0) { - this.Scheme = ""; - this.Opaque = ""; - this.User = ptrType.nil; - this.Host = ""; - this.Path = ""; - this.RawPath = ""; - this.ForceQuery = false; - this.RawQuery = ""; - this.Fragment = ""; - return; - } - this.Scheme = Scheme_; - this.Opaque = Opaque_; - this.User = User_; - this.Host = Host_; - this.Path = Path_; - this.RawPath = RawPath_; - this.ForceQuery = ForceQuery_; - this.RawQuery = RawQuery_; - this.Fragment = Fragment_; - }); - Userinfo = $pkg.Userinfo = $newType(0, $kindStruct, "url.Userinfo", true, "net/url", true, function(username_, password_, passwordSet_) { - this.$val = this; - if (arguments.length === 0) { - this.username = ""; - this.password = ""; - this.passwordSet = false; - return; - } - this.username = username_; - this.password = password_; - this.passwordSet = passwordSet_; - }); - Values = $pkg.Values = $newType(4, $kindMap, "url.Values", true, "net/url", true, null); - sliceType = $sliceType($Uint8); - arrayType = $arrayType($Uint8, 64); - ptrType = $ptrType(Userinfo); - ptrType$1 = $ptrType(URL); - sliceType$1 = $sliceType($emptyInterface); - ptrType$2 = $ptrType(strings.Builder); - sliceType$2 = $sliceType($String); - ptrType$3 = $ptrType(Error); - Error.ptr.prototype.Error = function() { - var _r, e, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return e.Op + " " + e.URL + ": " + _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; - }; - Error.prototype.Error = function() { return this.$val.Error(); }; - Error.ptr.prototype.Timeout = function() { - var _r, _tuple, _v, e, ok, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _tuple = $assertType(e.Err, timeout, true); - t = _tuple[0]; - ok = _tuple[1]; - if (!(ok)) { _v = false; $s = 1; continue s; } - _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 1: - $s = -1; return _v; - /* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Error.prototype.Timeout = function() { return this.$val.Timeout(); }; - Error.ptr.prototype.Temporary = function() { - var _r, _tuple, _v, e, ok, t, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - _tuple = $assertType(e.Err, temporary, true); - t = _tuple[0]; - ok = _tuple[1]; - if (!(ok)) { _v = false; $s = 1; continue s; } - _r = t.Temporary(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 1: - $s = -1; return _v; - /* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Temporary }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f; - }; - Error.prototype.Temporary = function() { return this.$val.Temporary(); }; - ishex = function(c) { - var c; - if (48 <= c && c <= 57) { - return true; - } else if (97 <= c && c <= 102) { - return true; - } else if (65 <= c && c <= 70) { - return true; - } - return false; - }; - unhex = function(c) { - var c; - if (48 <= c && c <= 57) { - return c - 48 << 24 >>> 24; - } else if (97 <= c && c <= 102) { - return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24; - } else if (65 <= c && c <= 70) { - return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24; - } - return 0; - }; - EscapeError.prototype.Error = function() { - var e; - e = this.$val; - return "invalid URL escape " + strconv.Quote((e)); - }; - $ptrType(EscapeError).prototype.Error = function() { return new EscapeError(this.$get()).Error(); }; - InvalidHostError.prototype.Error = function() { - var e; - e = this.$val; - return "invalid character " + strconv.Quote((e)) + " in host name"; - }; - $ptrType(InvalidHostError).prototype.Error = function() { return new InvalidHostError(this.$get()).Error(); }; - shouldEscape = function(c, mode) { - var _1, _2, _3, _4, c, mode; - if (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57) { - return false; - } - if ((mode === 3) || (mode === 4)) { - _1 = c; - if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (91)) || (_1 === (93)) || (_1 === (60)) || (_1 === (62)) || (_1 === (34))) { - return false; - } - } - _2 = c; - if ((_2 === (45)) || (_2 === (95)) || (_2 === (46)) || (_2 === (126))) { - return false; - } else if ((_2 === (36)) || (_2 === (38)) || (_2 === (43)) || (_2 === (44)) || (_2 === (47)) || (_2 === (58)) || (_2 === (59)) || (_2 === (61)) || (_2 === (63)) || (_2 === (64))) { - _3 = mode; - if (_3 === (1)) { - return c === 63; - } else if (_3 === (2)) { - return (c === 47) || (c === 59) || (c === 44) || (c === 63); - } else if (_3 === (5)) { - return (c === 64) || (c === 47) || (c === 63) || (c === 58); - } else if (_3 === (6)) { - return true; - } else if (_3 === (7)) { - return false; - } - } - if (mode === 7) { - _4 = c; - if ((_4 === (33)) || (_4 === (40)) || (_4 === (41)) || (_4 === (42))) { - return false; - } - } - return true; - }; - QueryUnescape = function(s) { - var s; - return unescape(s, 6); - }; - $pkg.QueryUnescape = QueryUnescape; - unescape = function(s, mode) { - var _1, _2, hasPlus, i, i$1, j, mode, n, s, t, v; - n = 0; - hasPlus = false; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - _1 = s.charCodeAt(i); - if (_1 === (37)) { - n = n + (1) >> 0; - if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { - s = $substring(s, i); - if (s.length > 3) { - s = $substring(s, 0, 3); - } - return ["", new EscapeError((s))]; - } - if ((mode === 3) && unhex(s.charCodeAt((i + 1 >> 0))) < 8 && !($substring(s, i, (i + 3 >> 0)) === "%25")) { - return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))]; - } - if (mode === 4) { - v = ((unhex(s.charCodeAt((i + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i + 2 >> 0)))) >>> 0; - if (!($substring(s, i, (i + 3 >> 0)) === "%25") && !((v === 32)) && shouldEscape(v, 3)) { - return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))]; - } - } - i = i + (3) >> 0; - } else if (_1 === (43)) { - hasPlus = mode === 6; - i = i + (1) >> 0; - } else { - if (((mode === 3) || (mode === 4)) && s.charCodeAt(i) < 128 && shouldEscape(s.charCodeAt(i), mode)) { - return ["", new InvalidHostError(($substring(s, i, (i + 1 >> 0))))]; - } - i = i + (1) >> 0; - } - } - if ((n === 0) && !hasPlus) { - return [s, $ifaceNil]; - } - t = $makeSlice(sliceType, (s.length - ($imul(2, n)) >> 0)); - j = 0; - i$1 = 0; - while (true) { - if (!(i$1 < s.length)) { break; } - _2 = s.charCodeAt(i$1); - if (_2 === (37)) { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = (((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0)); - j = j + (1) >> 0; - i$1 = i$1 + (3) >> 0; - } else if (_2 === (43)) { - if (mode === 6) { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 32); - } else { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43); - } - j = j + (1) >> 0; - i$1 = i$1 + (1) >> 0; - } else { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1)); - j = j + (1) >> 0; - i$1 = i$1 + (1) >> 0; - } - } - return [($bytesToString(t)), $ifaceNil]; - }; - QueryEscape = function(s) { - var s; - return escape(s, 6); - }; - $pkg.QueryEscape = QueryEscape; - escape = function(s, mode) { - var _tmp, _tmp$1, buf, c, c$1, hexCount, i, i$1, i$2, j, mode, required, s, spaceCount, t, x, x$1; - _tmp = 0; - _tmp$1 = 0; - spaceCount = _tmp; - hexCount = _tmp$1; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - c = s.charCodeAt(i); - if (shouldEscape(c, mode)) { - if ((c === 32) && (mode === 6)) { - spaceCount = spaceCount + (1) >> 0; - } else { - hexCount = hexCount + (1) >> 0; - } - } - i = i + (1) >> 0; - } - if ((spaceCount === 0) && (hexCount === 0)) { - return s; - } - buf = arrayType.zero(); - t = sliceType.nil; - required = s.length + ($imul(2, hexCount)) >> 0; - if (required <= 64) { - t = $subslice(new sliceType(buf), 0, required); - } else { - t = $makeSlice(sliceType, required); - } - if (hexCount === 0) { - $copyString(t, s); - i$1 = 0; - while (true) { - if (!(i$1 < s.length)) { break; } - if (s.charCodeAt(i$1) === 32) { - ((i$1 < 0 || i$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i$1] = 43); - } - i$1 = i$1 + (1) >> 0; - } - return ($bytesToString(t)); - } - j = 0; - i$2 = 0; - while (true) { - if (!(i$2 < s.length)) { break; } - c$1 = s.charCodeAt(i$2); - if ((c$1 === 32) && (mode === 6)) { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43); - j = j + (1) >> 0; - } else if (shouldEscape(c$1, mode)) { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 37); - (x = j + 1 >> 0, ((x < 0 || x >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x] = "0123456789ABCDEF".charCodeAt((c$1 >>> 4 << 24 >>> 24)))); - (x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$1] = "0123456789ABCDEF".charCodeAt(((c$1 & 15) >>> 0)))); - j = j + (3) >> 0; - } else { - ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$2)); - j = j + (1) >> 0; - } - i$2 = i$2 + (1) >> 0; - } - return ($bytesToString(t)); - }; - User = function(username) { - var username; - return new Userinfo.ptr(username, "", false); - }; - $pkg.User = User; - UserPassword = function(username, password) { - var password, username; - return new Userinfo.ptr(username, password, true); - }; - $pkg.UserPassword = UserPassword; - Userinfo.ptr.prototype.Username = function() { - var u; - u = this; - if (u === ptrType.nil) { - return ""; - } - return u.username; - }; - Userinfo.prototype.Username = function() { return this.$val.Username(); }; - Userinfo.ptr.prototype.Password = function() { - var u; - u = this; - if (u === ptrType.nil) { - return ["", false]; - } - return [u.password, u.passwordSet]; - }; - Userinfo.prototype.Password = function() { return this.$val.Password(); }; - Userinfo.ptr.prototype.String = function() { - var s, u; - u = this; - if (u === ptrType.nil) { - return ""; - } - s = escape(u.username, 5); - if (u.passwordSet) { - s = s + (":" + escape(u.password, 5)); - } - return s; - }; - Userinfo.prototype.String = function() { return this.$val.String(); }; - getscheme = function(rawurl) { - var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, err, i, path, rawurl, scheme; - scheme = ""; - path = ""; - err = $ifaceNil; - i = 0; - while (true) { - if (!(i < rawurl.length)) { break; } - c = rawurl.charCodeAt(i); - if (97 <= c && c <= 122 || 65 <= c && c <= 90) { - } else if (48 <= c && c <= 57 || (c === 43) || (c === 45) || (c === 46)) { - if (i === 0) { - _tmp = ""; - _tmp$1 = rawurl; - _tmp$2 = $ifaceNil; - scheme = _tmp; - path = _tmp$1; - err = _tmp$2; - return [scheme, path, err]; - } - } else if ((c === 58)) { - if (i === 0) { - _tmp$3 = ""; - _tmp$4 = ""; - _tmp$5 = errors.New("missing protocol scheme"); - scheme = _tmp$3; - path = _tmp$4; - err = _tmp$5; - return [scheme, path, err]; - } - _tmp$6 = $substring(rawurl, 0, i); - _tmp$7 = $substring(rawurl, (i + 1 >> 0)); - _tmp$8 = $ifaceNil; - scheme = _tmp$6; - path = _tmp$7; - err = _tmp$8; - return [scheme, path, err]; - } else { - _tmp$9 = ""; - _tmp$10 = rawurl; - _tmp$11 = $ifaceNil; - scheme = _tmp$9; - path = _tmp$10; - err = _tmp$11; - return [scheme, path, err]; - } - i = i + (1) >> 0; - } - _tmp$12 = ""; - _tmp$13 = rawurl; - _tmp$14 = $ifaceNil; - scheme = _tmp$12; - path = _tmp$13; - err = _tmp$14; - return [scheme, path, err]; - }; - split = function(s, c, cutc) { - var c, cutc, i, s; - i = strings.Index(s, c); - if (i < 0) { - return [s, ""]; - } - if (cutc) { - return [$substring(s, 0, i), $substring(s, (i + c.length >> 0))]; - } - return [$substring(s, 0, i), $substring(s, i)]; - }; - Parse = function(rawurl) { - var _r, _tuple, _tuple$1, _tuple$2, err, frag, rawurl, u, url, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; frag = $f.frag; rawurl = $f.rawurl; u = $f.u; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _tuple = split(rawurl, "#", true); - u = _tuple[0]; - frag = _tuple[1]; - _r = parse(u, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - url = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, new Error.ptr("parse", u, err)]; - } - if (frag === "") { - $s = -1; return [url, $ifaceNil]; - } - _tuple$2 = unescape(frag, 7); - url.Fragment = _tuple$2[0]; - err = _tuple$2[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, new Error.ptr("parse", rawurl, err)]; - } - $s = -1; return [url, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.frag = frag; $f.rawurl = rawurl; $f.u = u; $f.url = url; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Parse = Parse; - parse = function(rawurl, viaRequest) { - var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, colon, err, err$1, rawurl, rest, slash, url, viaRequest, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; authority = $f.authority; colon = $f.colon; err = $f.err; err$1 = $f.err$1; rawurl = $f.rawurl; rest = $f.rest; slash = $f.slash; url = $f.url; viaRequest = $f.viaRequest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - rest = ""; - err = $ifaceNil; - if (stringContainsCTLByte(rawurl)) { - $s = -1; return [ptrType$1.nil, errors.New("net/url: invalid control character in URL")]; - } - if (rawurl === "" && viaRequest) { - $s = -1; return [ptrType$1.nil, errors.New("empty url")]; - } - url = new URL.ptr("", "", ptrType.nil, "", "", "", false, "", ""); - if (rawurl === "*") { - url.Path = "*"; - $s = -1; return [url, $ifaceNil]; - } - _tuple = getscheme(rawurl); - url.Scheme = _tuple[0]; - rest = _tuple[1]; - err = _tuple[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err]; - } - _r = strings.ToLower(url.Scheme); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - url.Scheme = _r; - if (strings.HasSuffix(rest, "?") && (strings.Count(rest, "?") === 1)) { - url.ForceQuery = true; - rest = $substring(rest, 0, (rest.length - 1 >> 0)); - } else { - _tuple$1 = split(rest, "?", true); - rest = _tuple$1[0]; - url.RawQuery = _tuple$1[1]; - } - if (!strings.HasPrefix(rest, "/")) { - if (!(url.Scheme === "")) { - url.Opaque = rest; - $s = -1; return [url, $ifaceNil]; - } - if (viaRequest) { - $s = -1; return [ptrType$1.nil, errors.New("invalid URI for request")]; - } - colon = strings.Index(rest, ":"); - slash = strings.Index(rest, "/"); - if (colon >= 0 && (slash < 0 || colon < slash)) { - $s = -1; return [ptrType$1.nil, errors.New("first path segment in URL cannot contain colon")]; - } - } - /* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 2: - authority = ""; - _tuple$2 = split($substring(rest, 2), "/", false); - authority = _tuple$2[0]; - rest = _tuple$2[1]; - _r$1 = parseAuthority(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$3 = _r$1; - url.User = _tuple$3[0]; - url.Host = _tuple$3[1]; - err = _tuple$3[2]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err]; - } - /* } */ case 3: - err$1 = url.setPath(rest); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err$1]; - } - $s = -1; return [url, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.authority = authority; $f.colon = colon; $f.err = err; $f.err$1 = err$1; $f.rawurl = rawurl; $f.rest = rest; $f.slash = slash; $f.url = url; $f.viaRequest = viaRequest; $f.$s = $s; $f.$r = $r; return $f; - }; - parseAuthority = function(authority) { - var _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, authority, err, host, i, password, user, userinfo, username, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; authority = $f.authority; err = $f.err; host = $f.host; i = $f.i; password = $f.password; user = $f.user; userinfo = $f.userinfo; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - user = ptrType.nil; - host = ""; - err = $ifaceNil; - i = strings.LastIndex(authority, "@"); - /* */ if (i < 0) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (i < 0) { */ case 1: - _r = parseHost(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - host = _tuple[0]; - err = _tuple[1]; - $s = 3; continue; - /* } else { */ case 2: - _r$1 = parseHost($substring(authority, (i + 1 >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - host = _tuple$1[0]; - err = _tuple$1[1]; - /* } */ case 3: - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp = ptrType.nil; - _tmp$1 = ""; - _tmp$2 = err; - user = _tmp; - host = _tmp$1; - err = _tmp$2; - $s = -1; return [user, host, err]; - } - if (i < 0) { - _tmp$3 = ptrType.nil; - _tmp$4 = host; - _tmp$5 = $ifaceNil; - user = _tmp$3; - host = _tmp$4; - err = _tmp$5; - $s = -1; return [user, host, err]; - } - userinfo = $substring(authority, 0, i); - if (!validUserinfo(userinfo)) { - _tmp$6 = ptrType.nil; - _tmp$7 = ""; - _tmp$8 = errors.New("net/url: invalid userinfo"); - user = _tmp$6; - host = _tmp$7; - err = _tmp$8; - $s = -1; return [user, host, err]; - } - if (!strings.Contains(userinfo, ":")) { - _tuple$2 = unescape(userinfo, 5); - userinfo = _tuple$2[0]; - err = _tuple$2[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$9 = ptrType.nil; - _tmp$10 = ""; - _tmp$11 = err; - user = _tmp$9; - host = _tmp$10; - err = _tmp$11; - $s = -1; return [user, host, err]; - } - user = User(userinfo); - } else { - _tuple$3 = split(userinfo, ":", true); - username = _tuple$3[0]; - password = _tuple$3[1]; - _tuple$4 = unescape(username, 5); - username = _tuple$4[0]; - err = _tuple$4[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$12 = ptrType.nil; - _tmp$13 = ""; - _tmp$14 = err; - user = _tmp$12; - host = _tmp$13; - err = _tmp$14; - $s = -1; return [user, host, err]; - } - _tuple$5 = unescape(password, 5); - password = _tuple$5[0]; - err = _tuple$5[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp$15 = ptrType.nil; - _tmp$16 = ""; - _tmp$17 = err; - user = _tmp$15; - host = _tmp$16; - err = _tmp$17; - $s = -1; return [user, host, err]; - } - user = UserPassword(username, password); - } - _tmp$18 = user; - _tmp$19 = host; - _tmp$20 = $ifaceNil; - user = _tmp$18; - host = _tmp$19; - err = _tmp$20; - $s = -1; return [user, host, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parseAuthority }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.authority = authority; $f.err = err; $f.host = host; $f.i = i; $f.password = password; $f.user = user; $f.userinfo = userinfo; $f.username = username; $f.$s = $s; $f.$r = $r; return $f; - }; - parseHost = function(host) { - var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, colonPort, colonPort$1, err, err$1, host, host1, host2, host3, i, i$1, zone, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; colonPort = $f.colonPort; colonPort$1 = $f.colonPort$1; err = $f.err; err$1 = $f.err$1; host = $f.host; host1 = $f.host1; host2 = $f.host2; host3 = $f.host3; i = $f.i; i$1 = $f.i$1; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* */ if (strings.HasPrefix(host, "[")) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (strings.HasPrefix(host, "[")) { */ case 1: - i = strings.LastIndex(host, "]"); - if (i < 0) { - $s = -1; return ["", errors.New("missing ']' in host")]; - } - colonPort = $substring(host, (i + 1 >> 0)); - /* */ if (!validOptionalPort(colonPort)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if (!validOptionalPort(colonPort)) { */ case 4: - _r = fmt.Errorf("invalid port %q after host", new sliceType$1([new $String(colonPort)])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return ["", _r]; - /* } */ case 5: - zone = strings.Index($substring(host, 0, i), "%25"); - if (zone >= 0) { - _tuple = unescape($substring(host, 0, zone), 3); - host1 = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return ["", err]; - } - _tuple$1 = unescape($substring(host, zone, i), 4); - host2 = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return ["", err]; - } - _tuple$2 = unescape($substring(host, i), 3); - host3 = _tuple$2[0]; - err = _tuple$2[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return ["", err]; - } - $s = -1; return [host1 + host2 + host3, $ifaceNil]; - } - $s = 3; continue; - /* } else { */ case 2: - i$1 = strings.LastIndex(host, ":"); - /* */ if (!((i$1 === -1))) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!((i$1 === -1))) { */ case 7: - colonPort$1 = $substring(host, i$1); - /* */ if (!validOptionalPort(colonPort$1)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (!validOptionalPort(colonPort$1)) { */ case 9: - _r$1 = fmt.Errorf("invalid port %q after host", new sliceType$1([new $String(colonPort$1)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return ["", _r$1]; - /* } */ case 10: - /* } */ case 8: - /* } */ case 3: - err$1 = $ifaceNil; - _tuple$3 = unescape(host, 3); - host = _tuple$3[0]; - err$1 = _tuple$3[1]; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - $s = -1; return ["", err$1]; - } - $s = -1; return [host, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: parseHost }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.colonPort = colonPort; $f.colonPort$1 = colonPort$1; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.host1 = host1; $f.host2 = host2; $f.host3 = host3; $f.i = i; $f.i$1 = i$1; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f; - }; - URL.ptr.prototype.setPath = function(p) { - var _tuple, err, escp, p, path, u; - u = this; - _tuple = unescape(p, 1); - path = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - u.Path = path; - escp = escape(path, 1); - if (p === escp) { - u.RawPath = ""; - } else { - u.RawPath = p; - } - return $ifaceNil; - }; - URL.prototype.setPath = function(p) { return this.$val.setPath(p); }; - URL.ptr.prototype.EscapedPath = function() { - var _tuple, err, p, u; - u = this; - if (!(u.RawPath === "") && validEncodedPath(u.RawPath)) { - _tuple = unescape(u.RawPath, 1); - p = _tuple[0]; - err = _tuple[1]; - if ($interfaceIsEqual(err, $ifaceNil) && p === u.Path) { - return u.RawPath; - } - } - if (u.Path === "*") { - return "*"; - } - return escape(u.Path, 1); - }; - URL.prototype.EscapedPath = function() { return this.$val.EscapedPath(); }; - validEncodedPath = function(s) { - var _1, i, s; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - _1 = s.charCodeAt(i); - if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (64))) { - } else if ((_1 === (91)) || (_1 === (93))) { - } else if (_1 === (37)) { - } else if (shouldEscape(s.charCodeAt(i), 1)) { - return false; - } - i = i + (1) >> 0; - } - return true; - }; - validOptionalPort = function(port) { - var _i, _ref, _rune, b, port; - if (port === "") { - return true; - } - if (!((port.charCodeAt(0) === 58))) { - return false; - } - _ref = $substring(port, 1); - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - b = _rune[0]; - if (b < 48 || b > 57) { - return false; - } - _i += _rune[1]; - } - return true; - }; - URL.ptr.prototype.String = function() { - var buf, h, i, path, u, ui; - u = this; - buf = new strings.Builder.ptr(ptrType$2.nil, sliceType.nil); - if (!(u.Scheme === "")) { - buf.WriteString(u.Scheme); - buf.WriteByte(58); - } - if (!(u.Opaque === "")) { - buf.WriteString(u.Opaque); - } else { - if (!(u.Scheme === "") || !(u.Host === "") || !(u.User === ptrType.nil)) { - if (!(u.Host === "") || !(u.Path === "") || !(u.User === ptrType.nil)) { - buf.WriteString("//"); - } - ui = u.User; - if (!(ui === ptrType.nil)) { - buf.WriteString(ui.String()); - buf.WriteByte(64); - } - h = u.Host; - if (!(h === "")) { - buf.WriteString(escape(h, 3)); - } - } - path = u.EscapedPath(); - if (!(path === "") && !((path.charCodeAt(0) === 47)) && !(u.Host === "")) { - buf.WriteByte(47); - } - if (buf.Len() === 0) { - i = strings.IndexByte(path, 58); - if (i > -1 && (strings.IndexByte($substring(path, 0, i), 47) === -1)) { - buf.WriteString("./"); - } - } - buf.WriteString(path); - } - if (u.ForceQuery || !(u.RawQuery === "")) { - buf.WriteByte(63); - buf.WriteString(u.RawQuery); - } - if (!(u.Fragment === "")) { - buf.WriteByte(35); - buf.WriteString(escape(u.Fragment, 7)); - } - return buf.String(); - }; - URL.prototype.String = function() { return this.$val.String(); }; - Values.prototype.Get = function(key) { - var _entry, key, v, vs; - v = this.$val; - if (v === false) { - return ""; - } - vs = (_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil); - if (vs.$length === 0) { - return ""; - } - return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]); - }; - $ptrType(Values).prototype.Get = function(key) { return new Values(this.$get()).Get(key); }; - Values.prototype.Set = function(key, value) { - var _key, key, v, value; - v = this.$val; - _key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$2([value]) }; - }; - $ptrType(Values).prototype.Set = function(key, value) { return new Values(this.$get()).Set(key, value); }; - Values.prototype.Add = function(key, value) { - var _entry, _key, key, v, value; - v = this.$val; - _key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil), value) }; - }; - $ptrType(Values).prototype.Add = function(key, value) { return new Values(this.$get()).Add(key, value); }; - Values.prototype.Del = function(key) { - var key, v; - v = this.$val; - delete v[$String.keyFor(key)]; - }; - $ptrType(Values).prototype.Del = function(key) { return new Values(this.$get()).Del(key); }; - ParseQuery = function(query) { - var err, m, query; - m = {}; - err = parseQuery(m, query); - return [m, err]; - }; - $pkg.ParseQuery = ParseQuery; - parseQuery = function(m, query) { - var _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err1, i, i$1, key, m, query, value; - err = $ifaceNil; - while (true) { - if (!(!(query === ""))) { break; } - key = query; - i = strings.IndexAny(key, "&;"); - if (i >= 0) { - _tmp = $substring(key, 0, i); - _tmp$1 = $substring(key, (i + 1 >> 0)); - key = _tmp; - query = _tmp$1; - } else { - query = ""; - } - if (key === "") { - continue; - } - value = ""; - i$1 = strings.Index(key, "="); - if (i$1 >= 0) { - _tmp$2 = $substring(key, 0, i$1); - _tmp$3 = $substring(key, (i$1 + 1 >> 0)); - key = _tmp$2; - value = _tmp$3; - } - _tuple = QueryUnescape(key); - key = _tuple[0]; - err1 = _tuple[1]; - if (!($interfaceIsEqual(err1, $ifaceNil))) { - if ($interfaceIsEqual(err, $ifaceNil)) { - err = err1; - } - continue; - } - _tuple$1 = QueryUnescape(value); - value = _tuple$1[0]; - err1 = _tuple$1[1]; - if (!($interfaceIsEqual(err1, $ifaceNil))) { - if ($interfaceIsEqual(err, $ifaceNil)) { - err = err1; - } - continue; - } - _key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = m[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil), value) }; - } - err = err; - return err; - }; - Values.prototype.Encode = function() { - var _entry, _entry$1, _i, _i$1, _i$2, _keys, _ref, _ref$1, _ref$2, buf, k, k$1, keyEscaped, keys, v, v$1, vs, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; buf = $f.buf; k = $f.k; k$1 = $f.k$1; keyEscaped = $f.keyEscaped; keys = $f.keys; v = $f.v; v$1 = $f.v$1; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - v = this.$val; - if (v === false) { - $s = -1; return ""; - } - buf = new strings.Builder.ptr(ptrType$2.nil, sliceType.nil); - keys = $makeSlice(sliceType$2, 0, $keys(v).length); - _ref = v; - _i = 0; - _keys = $keys(_ref); - while (true) { - if (!(_i < _keys.length)) { break; } - _entry = _ref[_keys[_i]]; - if (_entry === undefined) { - _i++; - continue; - } - k = _entry.k; - keys = $append(keys, k); - _i++; - } - $r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _ref$1 = keys; - _i$1 = 0; - while (true) { - if (!(_i$1 < _ref$1.$length)) { break; } - k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); - vs = (_entry$1 = v[$String.keyFor(k$1)], _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil); - keyEscaped = QueryEscape(k$1); - _ref$2 = vs; - _i$2 = 0; - while (true) { - if (!(_i$2 < _ref$2.$length)) { break; } - v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); - if (buf.Len() > 0) { - buf.WriteByte(38); - } - buf.WriteString(keyEscaped); - buf.WriteByte(61); - buf.WriteString(QueryEscape(v$1)); - _i$2++; - } - _i$1++; - } - $s = -1; return buf.String(); - /* */ } return; } if ($f === undefined) { $f = { $blk: Values.prototype.Encode }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.buf = buf; $f.k = k; $f.k$1 = k$1; $f.keyEscaped = keyEscaped; $f.keys = keys; $f.v = v; $f.v$1 = v$1; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(Values).prototype.Encode = function() { return new Values(this.$get()).Encode(); }; - resolvePath = function(base, ref) { - var _1, _i, _ref, base, dst, elem, full, i, last, ref, src, x; - full = ""; - if (ref === "") { - full = base; - } else if (!((ref.charCodeAt(0) === 47))) { - i = strings.LastIndex(base, "/"); - full = $substring(base, 0, (i + 1 >> 0)) + ref; - } else { - full = ref; - } - if (full === "") { - return ""; - } - dst = sliceType$2.nil; - src = strings.Split(full, "/"); - _ref = src; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - elem = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - _1 = elem; - if (_1 === (".")) { - } else if (_1 === ("..")) { - if (dst.$length > 0) { - dst = $subslice(dst, 0, (dst.$length - 1 >> 0)); - } - } else { - dst = $append(dst, elem); - } - _i++; - } - last = (x = src.$length - 1 >> 0, ((x < 0 || x >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x])); - if (last === "." || last === "..") { - dst = $append(dst, ""); - } - return "/" + strings.TrimPrefix(strings.Join(dst, "/"), "/"); - }; - URL.ptr.prototype.IsAbs = function() { - var u; - u = this; - return !(u.Scheme === ""); - }; - URL.prototype.IsAbs = function() { return this.$val.IsAbs(); }; - URL.ptr.prototype.Parse = function(ref) { - var _r, _tuple, err, ref, refurl, u, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; ref = $f.ref; refurl = $f.refurl; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - u = this; - _r = Parse(ref); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - refurl = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$1.nil, err]; - } - $s = -1; return [u.ResolveReference(refurl), $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.Parse }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ref = ref; $f.refurl = refurl; $f.u = u; $f.$s = $s; $f.$r = $r; return $f; - }; - URL.prototype.Parse = function(ref) { return this.$val.Parse(ref); }; - URL.ptr.prototype.ResolveReference = function(ref) { - var ref, u, url; - u = this; - url = $clone(ref, URL); - if (ref.Scheme === "") { - url.Scheme = u.Scheme; - } - if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType.nil)) { - url.setPath(resolvePath(ref.EscapedPath(), "")); - return url; - } - if (!(ref.Opaque === "")) { - url.User = ptrType.nil; - url.Host = ""; - url.Path = ""; - return url; - } - if (ref.Path === "" && ref.RawQuery === "") { - url.RawQuery = u.RawQuery; - if (ref.Fragment === "") { - url.Fragment = u.Fragment; - } - } - url.Host = u.Host; - url.User = u.User; - url.setPath(resolvePath(u.EscapedPath(), ref.EscapedPath())); - return url; - }; - URL.prototype.ResolveReference = function(ref) { return this.$val.ResolveReference(ref); }; - URL.ptr.prototype.Query = function() { - var _tuple, u, v; - u = this; - _tuple = ParseQuery(u.RawQuery); - v = _tuple[0]; - return v; - }; - URL.prototype.Query = function() { return this.$val.Query(); }; - URL.ptr.prototype.RequestURI = function() { - var result, u; - u = this; - result = u.Opaque; - if (result === "") { - result = u.EscapedPath(); - if (result === "") { - result = "/"; - } - } else { - if (strings.HasPrefix(result, "//")) { - result = u.Scheme + ":" + result; - } - } - if (u.ForceQuery || !(u.RawQuery === "")) { - result = result + ("?" + u.RawQuery); - } - return result; - }; - URL.prototype.RequestURI = function() { return this.$val.RequestURI(); }; - URL.ptr.prototype.Hostname = function() { - var _tuple, host, u; - u = this; - _tuple = splitHostPort(u.Host); - host = _tuple[0]; - return host; - }; - URL.prototype.Hostname = function() { return this.$val.Hostname(); }; - URL.ptr.prototype.Port = function() { - var _tuple, port, u; - u = this; - _tuple = splitHostPort(u.Host); - port = _tuple[1]; - return port; - }; - URL.prototype.Port = function() { return this.$val.Port(); }; - splitHostPort = function(hostport) { - var _tmp, _tmp$1, colon, host, hostport, port; - host = ""; - port = ""; - host = hostport; - colon = strings.LastIndexByte(host, 58); - if (!((colon === -1)) && validOptionalPort($substring(host, colon))) { - _tmp = $substring(host, 0, colon); - _tmp$1 = $substring(host, (colon + 1 >> 0)); - host = _tmp; - port = _tmp$1; - } - if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]")) { - host = $substring(host, 1, (host.length - 1 >> 0)); - } - return [host, port]; - }; - URL.ptr.prototype.MarshalBinary = function() { - var _tmp, _tmp$1, err, text, u; - text = sliceType.nil; - err = $ifaceNil; - u = this; - _tmp = (new sliceType($stringToBytes(u.String()))); - _tmp$1 = $ifaceNil; - text = _tmp; - err = _tmp$1; - return [text, err]; - }; - URL.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); }; - URL.ptr.prototype.UnmarshalBinary = function(text) { - var _r, _tuple, err, text, u, u1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; text = $f.text; u = $f.u; u1 = $f.u1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - u = this; - _r = Parse(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - u1 = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return err; - } - URL.copy(u, u1); - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.UnmarshalBinary }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.text = text; $f.u = u; $f.u1 = u1; $f.$s = $s; $f.$r = $r; return $f; - }; - URL.prototype.UnmarshalBinary = function(text) { return this.$val.UnmarshalBinary(text); }; - validUserinfo = function(s) { - var _1, _i, _ref, _rune, r, s; - _ref = s; - _i = 0; - while (true) { - if (!(_i < _ref.length)) { break; } - _rune = $decodeRune(_ref, _i); - r = _rune[0]; - if (65 <= r && r <= 90) { - _i += _rune[1]; - continue; - } - if (97 <= r && r <= 122) { - _i += _rune[1]; - continue; - } - if (48 <= r && r <= 57) { - _i += _rune[1]; - continue; - } - _1 = r; - if ((_1 === (45)) || (_1 === (46)) || (_1 === (95)) || (_1 === (58)) || (_1 === (126)) || (_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (37)) || (_1 === (64))) { - _i += _rune[1]; - continue; - } else { - return false; - } - _i += _rune[1]; - } - return true; - }; - stringContainsCTLByte = function(s) { - var b, i, s; - i = 0; - while (true) { - if (!(i < s.length)) { break; } - b = s.charCodeAt(i); - if (b < 32 || (b === 127)) { - return true; - } - i = i + (1) >> 0; - } - return false; - }; - ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; - EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - InvalidHostError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$1.methods = [{prop: "setPath", name: "setPath", pkg: "net/url", typ: $funcType([$String], [$error], false)}, {prop: "EscapedPath", name: "EscapedPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String], [ptrType$1, $error], false)}, {prop: "ResolveReference", name: "ResolveReference", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Query", name: "Query", pkg: "", typ: $funcType([], [Values], false)}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Hostname", name: "Hostname", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Port", name: "Port", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType], [$error], false)}]; - ptrType.methods = [{prop: "Username", name: "Username", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Password", name: "Password", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - Values.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([], [$String], false)}]; - Error.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); - timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); - temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]); - URL.init("", [{prop: "Scheme", name: "Scheme", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "User", name: "User", embedded: false, exported: true, typ: ptrType, tag: ""}, {prop: "Host", name: "Host", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "RawPath", name: "RawPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ForceQuery", name: "ForceQuery", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "RawQuery", name: "RawQuery", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", embedded: false, exported: true, typ: $String, tag: ""}]); - Userinfo.init("net/url", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "password", name: "password", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", embedded: false, exported: false, typ: $Bool, tag: ""}]); - Values.init($String, sliceType$2); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket"] = (function() { - var $pkg = {}, $init, bytes, fmt, js, websocketjs, io, net, url, time, addr, closeError, deadlineErr, conn, messageEvent, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, chanType, errDeadlineReached, beginHandlerOpen, beginHandlerClose, Dial, getFrameData; - bytes = $packages["bytes"]; - fmt = $packages["fmt"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - websocketjs = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs"]; - io = $packages["io"]; - net = $packages["net"]; - url = $packages["net/url"]; - time = $packages["time"]; - addr = $pkg.addr = $newType(0, $kindStruct, "websocket.addr", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(URL_) { - this.$val = this; - if (arguments.length === 0) { - this.URL = ptrType$4.nil; - return; - } - this.URL = URL_; - }); - closeError = $pkg.closeError = $newType(0, $kindStruct, "websocket.closeError", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(Object_, Code_, Reason_, WasClean_) { - this.$val = this; - if (arguments.length === 0) { - this.Object = null; - this.Code = 0; - this.Reason = ""; - this.WasClean = false; - return; - } - this.Object = Object_; - this.Code = Code_; - this.Reason = Reason_; - this.WasClean = WasClean_; - }); - deadlineErr = $pkg.deadlineErr = $newType(0, $kindStruct, "websocket.deadlineErr", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function() { - this.$val = this; - if (arguments.length === 0) { - return; - } - }); - conn = $pkg.conn = $newType(0, $kindStruct, "websocket.conn", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(WebSocket_, ch_, readBuf_, readDeadline_) { - this.$val = this; - if (arguments.length === 0) { - this.WebSocket = ptrType.nil; - this.ch = $chanNil; - this.readBuf = ptrType$1.nil; - this.readDeadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil); - return; - } - this.WebSocket = WebSocket_; - this.ch = ch_; - this.readBuf = readBuf_; - this.readDeadline = readDeadline_; - }); - messageEvent = $pkg.messageEvent = $newType(0, $kindStruct, "websocket.messageEvent", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", false, function(Object_, Data_) { - this.$val = this; - if (arguments.length === 0) { - this.Object = null; - this.Data = null; - return; - } - this.Object = Object_; - this.Data = Data_; - }); - sliceType = $sliceType($emptyInterface); - ptrType = $ptrType(websocketjs.WebSocket); - ptrType$1 = $ptrType(bytes.Reader); - ptrType$2 = $ptrType(time.Location); - ptrType$3 = $ptrType(messageEvent); - sliceType$1 = $sliceType($Uint8); - ptrType$4 = $ptrType(url.URL); - ptrType$5 = $ptrType(addr); - ptrType$6 = $ptrType(closeError); - ptrType$7 = $ptrType(js.Object); - ptrType$8 = $ptrType(deadlineErr); - ptrType$9 = $ptrType(conn); - chanType = $chanType(ptrType$3, false, false); - addr.ptr.prototype.Network = function() { - var addr$1; - addr$1 = this; - return "websocket"; - }; - addr.prototype.Network = function() { return this.$val.Network(); }; - beginHandlerOpen = function(ch, removeHandlers) { - var ch, removeHandlers; - return (function $b(ev) { - var ev, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; ev = $f.ev; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = removeHandlers(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $close(ch); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.ev = ev; $f.$s = $s; $f.$r = $r; return $f; - }); - }; - closeError.ptr.prototype.Error = function() { - var _r, cleanStmt, e, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cleanStmt = $f.cleanStmt; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - e = this; - cleanStmt = ""; - if (!!(e.Object.wasClean)) { - cleanStmt = "clean"; - } else { - cleanStmt = "unclean"; - } - _r = fmt.Sprintf("CloseEvent: (%s) (%d) %s", new sliceType([new $String(cleanStmt), new $Int(($parseInt(e.Object.code) >> 0)), new $String($internalize(e.Object.reason, $String))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: closeError.ptr.prototype.Error }; } $f._r = _r; $f.cleanStmt = cleanStmt; $f.e = e; $f.$s = $s; $f.$r = $r; return $f; - }; - closeError.prototype.Error = function() { return this.$val.Error(); }; - beginHandlerClose = function(ch, removeHandlers) { - var ch, removeHandlers; - return (function $b(ev) { - var ev, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; ev = $f.ev; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - ev = [ev]; - $r = removeHandlers(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $go((function(ev) { return function $b() { - var $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = $send(ch, new closeError.ptr(ev[0], 0, "", false)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $close(ch); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f; - }; })(ev), []); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.ev = ev; $f.$s = $s; $f.$r = $r; return $f; - }); - }; - deadlineErr.ptr.prototype.Error = function() { - var e; - e = this; - return "i/o timeout: deadline reached"; - }; - deadlineErr.prototype.Error = function() { return this.$val.Error(); }; - deadlineErr.ptr.prototype.Timeout = function() { - var e; - e = this; - return true; - }; - deadlineErr.prototype.Timeout = function() { return this.$val.Timeout(); }; - deadlineErr.ptr.prototype.Temporary = function() { - var e; - e = this; - return true; - }; - deadlineErr.prototype.Temporary = function() { return this.$val.Temporary(); }; - Dial = function(url$1) { - var _r, _tuple, _tuple$1, closeHandler, conn$1, err, ok, openCh, openHandler, removeHandlers, url$1, ws, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; closeHandler = $f.closeHandler; conn$1 = $f.conn$1; err = $f.err; ok = $f.ok; openCh = $f.openCh; openHandler = $f.openHandler; removeHandlers = $f.removeHandlers; url$1 = $f.url$1; ws = $f.ws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - closeHandler = [closeHandler]; - openHandler = [openHandler]; - ws = [ws]; - _tuple = websocketjs.New(url$1); - ws[0] = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [$ifaceNil, err]; - } - conn$1 = new conn.ptr(ws[0], new $Chan(ptrType$3, 1), ptrType$1.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil)); - conn$1.initialize(); - openCh = new $Chan($error, 1); - openHandler[0] = $throwNilPointerError; - closeHandler[0] = $throwNilPointerError; - removeHandlers = (function(closeHandler, openHandler, ws) { return function() { - ws[0].RemoveEventListener("open", false, openHandler[0]); - ws[0].RemoveEventListener("close", false, closeHandler[0]); - }; })(closeHandler, openHandler, ws); - openHandler[0] = beginHandlerOpen(openCh, removeHandlers); - closeHandler[0] = beginHandlerClose(openCh, removeHandlers); - ws[0].AddEventListener("open", false, openHandler[0]); - ws[0].AddEventListener("close", false, closeHandler[0]); - _r = $recv(openCh); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - err = _tuple$1[0]; - ok = _tuple$1[1]; - if (ok && !($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [$ifaceNil, err]; - } - $s = -1; return [conn$1, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Dial }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.closeHandler = closeHandler; $f.conn$1 = conn$1; $f.err = err; $f.ok = ok; $f.openCh = openCh; $f.openHandler = openHandler; $f.removeHandlers = removeHandlers; $f.url$1 = url$1; $f.ws = ws; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Dial = Dial; - conn.ptr.prototype.onMessage = function(event) { - var c, event; - c = this; - $go((function $b() { - var $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = $send(c.ch, new messageEvent.ptr(event, null)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f; - }), []); - }; - conn.prototype.onMessage = function(event) { return this.$val.onMessage(event); }; - conn.ptr.prototype.onClose = function(event) { - var c, event; - c = this; - $go((function $b() { - var $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = $send(c.ch, ptrType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f; - }), []); - }; - conn.prototype.onClose = function(event) { return this.$val.onClose(event); }; - conn.ptr.prototype.initialize = function() { - var c; - c = this; - c.WebSocket.Object.binaryType = $externalize("arraybuffer", $String); - c.WebSocket.AddEventListener("message", false, $methodVal(c, "onMessage")); - c.WebSocket.AddEventListener("close", false, $methodVal(c, "onClose")); - }; - conn.prototype.initialize = function() { return this.$val.initialize(); }; - conn.ptr.prototype.handleFrame = function(message, ok) { - var c, message, ok; - c = this; - if (!ok) { - return [ptrType$3.nil, io.EOF]; - } else if (message === ptrType$3.nil) { - $close(c.ch); - return [ptrType$3.nil, io.EOF]; - } - return [message, $ifaceNil]; - }; - conn.prototype.handleFrame = function(message, ok) { return this.$val.handleFrame(message, ok); }; - conn.ptr.prototype.receiveFrame = function(observeDeadline) { - var _r, _selection, _selection$1, _tuple, _tuple$1, c, deadlineChan, item, item$1, now, observeDeadline, ok, ok$1, timer, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; deadlineChan = $f.deadlineChan; item = $f.item; item$1 = $f.item$1; now = $f.now; observeDeadline = $f.observeDeadline; ok = $f.ok; ok$1 = $f.ok$1; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - c = this; - deadlineChan = $chanNil; - /* */ if (observeDeadline && !$clone(c.readDeadline, time.Time).IsZero()) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (observeDeadline && !$clone(c.readDeadline, time.Time).IsZero()) { */ case 1: - now = $clone(time.Now(), time.Time); - if ($clone(now, time.Time).After($clone(c.readDeadline, time.Time))) { - _selection = $select([[c.ch], []]); - if (_selection[0] === 0) { - _tuple = _selection[1]; - item = _tuple[0]; - ok = _tuple[1]; - $s = -1; return c.handleFrame(item, ok); - } else if (_selection[0] === 1) { - $s = -1; return [ptrType$3.nil, errDeadlineReached]; - } - } - timer = time.NewTimer($clone(c.readDeadline, time.Time).Sub($clone(now, time.Time))); - $deferred.push([$methodVal(timer, "Stop"), []]); - deadlineChan = timer.C; - /* } */ case 2: - _r = $select([[c.ch], [deadlineChan]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection$1 = _r; - if (_selection$1[0] === 0) { - _tuple$1 = _selection$1[1]; - item$1 = _tuple$1[0]; - ok$1 = _tuple$1[1]; - $s = -1; return c.handleFrame(item$1, ok$1); - } else if (_selection$1[0] === 1) { - $s = -1; return [ptrType$3.nil, errDeadlineReached]; - } - $s = -1; return [ptrType$3.nil, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.receiveFrame }; } $f._r = _r; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.deadlineChan = deadlineChan; $f.item = item; $f.item$1 = item$1; $f.now = now; $f.observeDeadline = observeDeadline; $f.ok = ok; $f.ok$1 = ok$1; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - conn.prototype.receiveFrame = function(observeDeadline) { return this.$val.receiveFrame(observeDeadline); }; - getFrameData = function(obj) { - var constructor, obj, uint8Array; - constructor = obj.constructor; - if (constructor === $global.ArrayBuffer) { - uint8Array = new ($global.Uint8Array)(obj); - return $assertType($internalize(uint8Array, $emptyInterface), sliceType$1); - } - return (new sliceType$1($stringToBytes($internalize(obj, $String)))); - }; - conn.ptr.prototype.Read = function(b) { - var _r, _tmp, _tmp$1, _tuple, _tuple$1, b, c, err, frame, n, receivedBytes, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; c = $f.c; err = $f.err; frame = $f.frame; n = $f.n; receivedBytes = $f.receivedBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - c = this; - if (!(c.readBuf === ptrType$1.nil)) { - _tuple = c.readBuf.Read(b); - n = _tuple[0]; - err = _tuple[1]; - if ($interfaceIsEqual(err, io.EOF)) { - c.readBuf = ptrType$1.nil; - err = $ifaceNil; - } - if (n > 0) { - $s = -1; return [n, err]; - } - } - _r = c.receiveFrame(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - frame = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - receivedBytes = getFrameData(frame.Object.data); - n = $copySlice(b, receivedBytes); - if (n >= receivedBytes.$length) { - $s = -1; return [n, err]; - } - c.readBuf = bytes.NewReader($subslice(receivedBytes, n)); - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.c = c; $f.err = err; $f.frame = frame; $f.n = n; $f.receivedBytes = receivedBytes; $f.$s = $s; $f.$r = $r; return $f; - }; - conn.prototype.Read = function(b) { return this.$val.Read(b); }; - conn.ptr.prototype.Write = function(b) { - var _tmp, _tmp$1, _tmp$2, _tmp$3, b, c, err, n; - n = 0; - err = $ifaceNil; - c = this; - err = c.WebSocket.Send(b); - if (!($interfaceIsEqual(err, $ifaceNil))) { - _tmp = 0; - _tmp$1 = err; - n = _tmp; - err = _tmp$1; - return [n, err]; - } - _tmp$2 = b.$length; - _tmp$3 = $ifaceNil; - n = _tmp$2; - err = _tmp$3; - return [n, err]; - }; - conn.prototype.Write = function(b) { return this.$val.Write(b); }; - conn.ptr.prototype.LocalAddr = function() { - var c; - c = this; - $panic(new $String("we are unable to implement websocket.conn.LocalAddr() due to limitations in the underlying JavaScript API")); - }; - conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); }; - conn.ptr.prototype.RemoteAddr = function() { - var _r, _tuple, c, err, wsURL, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; wsURL = $f.wsURL; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - c = this; - _r = url.Parse($internalize(c.WebSocket.Object.url, $String)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - wsURL = _tuple[0]; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $panic(err); - } - $s = -1; return new addr.ptr(wsURL); - /* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.RemoteAddr }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.wsURL = wsURL; $f.$s = $s; $f.$r = $r; return $f; - }; - conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); }; - conn.ptr.prototype.SetDeadline = function(t) { - var c, t; - c = this; - time.Time.copy(c.readDeadline, t); - return $ifaceNil; - }; - conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; - conn.ptr.prototype.SetReadDeadline = function(t) { - var c, t; - c = this; - time.Time.copy(c.readDeadline, t); - return $ifaceNil; - }; - conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; - conn.ptr.prototype.SetWriteDeadline = function(t) { - var c, t; - c = this; - return $ifaceNil; - }; - conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; - ptrType$5.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; - ptrType$8.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; - ptrType$9.methods = [{prop: "onMessage", name: "onMessage", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([ptrType$7], [], false)}, {prop: "onClose", name: "onClose", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([ptrType$7], [], false)}, {prop: "initialize", name: "initialize", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([], [], false)}, {prop: "handleFrame", name: "handleFrame", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([ptrType$3, $Bool], [ptrType$3, $error], false)}, {prop: "receiveFrame", name: "receiveFrame", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", typ: $funcType([$Bool], [ptrType$3, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}]; - addr.init("", [{prop: "URL", name: "URL", embedded: true, exported: true, typ: ptrType$4, tag: ""}]); - closeError.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType$7, tag: ""}, {prop: "Code", name: "Code", embedded: false, exported: true, typ: $Int, tag: "js:\"code\""}, {prop: "Reason", name: "Reason", embedded: false, exported: true, typ: $String, tag: "js:\"reason\""}, {prop: "WasClean", name: "WasClean", embedded: false, exported: true, typ: $Bool, tag: "js:\"wasClean\""}]); - deadlineErr.init("", []); - conn.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket", [{prop: "WebSocket", name: "WebSocket", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "ch", name: "ch", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "readBuf", name: "readBuf", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "readDeadline", name: "readDeadline", embedded: false, exported: false, typ: time.Time, tag: ""}]); - messageEvent.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType$7, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: ptrType$7, tag: "js:\"data\""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = websocketjs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = net.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = url.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - errDeadlineReached = new deadlineErr.ptr(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["container/heap"] = (function() { - var $pkg = {}, $init, sort, Push, Pop, up, down; - sort = $packages["sort"]; - Push = function(h, x) { - var _arg, _arg$1, _r, h, x, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; h = $f.h; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = h.Push(x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _arg = h; - _r = h.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg$1 = _r - 1 >> 0; - $r = up(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Push }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.h = h; $f.x = x; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Push = Push; - Pop = function(h) { - var _r, _r$1, _r$2, h, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; h = $f.h; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = h.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - n = _r - 1 >> 0; - $r = h.Swap(0, n); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r$1 = down(h, 0, n); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - _r$2 = h.Pop(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $s = -1; return _r$2; - /* */ } return; } if ($f === undefined) { $f = { $blk: Pop }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.h = h; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Pop = Pop; - up = function(h, j) { - var _q, _r, _v, h, i, j, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _v = $f._v; h = $f.h; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - /* while (true) { */ case 1: - i = (_q = ((j - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - if (i === j) { _v = true; $s = 5; continue s; } - _r = h.Less(j, i); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = !_r; case 5: - /* */ if (_v) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (_v) { */ case 3: - /* break; */ $s = 2; continue; - /* } */ case 4: - $r = h.Swap(i, j); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - j = i; - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: up }; } $f._q = _q; $f._r = _r; $f._v = _v; $f.h = h; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f; - }; - down = function(h, i0, n) { - var _r, _r$1, _v, h, i, i0, j, j1, j2, n, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; h = $f.h; i = $f.i; i0 = $f.i0; j = $f.j; j1 = $f.j1; j2 = $f.j2; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - i = i0; - /* while (true) { */ case 1: - j1 = ($imul(2, i)) + 1 >> 0; - if (j1 >= n || j1 < 0) { - /* break; */ $s = 2; continue; - } - j = j1; - j2 = j1 + 1 >> 0; - if (!(j2 < n)) { _v = false; $s = 5; continue s; } - _r = h.Less(j2, j1); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _v = _r; case 5: - /* */ if (_v) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (_v) { */ case 3: - j = j2; - /* } */ case 4: - _r$1 = h.Less(j, i); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - /* */ if (!_r$1) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (!_r$1) { */ case 7: - /* break; */ $s = 2; continue; - /* } */ case 8: - $r = h.Swap(i, j); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - i = j; - /* } */ $s = 1; continue; case 2: - $s = -1; return i > i0; - /* */ } return; } if ($f === undefined) { $f = { $blk: down }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.h = h; $f.i = i; $f.i0 = i0; $f.j = j; $f.j1 = j1; $f.j2 = j2; $f.n = n; $f.$s = $s; $f.$r = $r; return $f; - }; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = sort.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux"] = (function() { - var $pkg = {}, $init, heap, binary, errors, fmt, io, math, net, sync, atomic, time, Allocator, Frame, rawHeader, updHeader, Config, writeRequest, writeResult, buffersWriter, Session, shaperHeap, Stream, ptrType, sliceType, sliceType$1, sliceType$2, ptrType$1, ptrType$2, structType, ptrType$3, interfaceType, interfaceType$1, ptrType$4, arrayType, ptrType$5, sliceType$3, ptrType$6, ptrType$7, chanType, chanType$1, chanType$2, mapType, chanType$3, chanType$4, chanType$5, defaultAllocator, debruijinPos, init, NewAllocator, msb, newFrame, DefaultConfig, VerifyConfig, Client, newSession, newStream; - heap = $packages["container/heap"]; - binary = $packages["encoding/binary"]; - errors = $packages["errors"]; - fmt = $packages["fmt"]; - io = $packages["io"]; - math = $packages["math"]; - net = $packages["net"]; - sync = $packages["sync"]; - atomic = $packages["sync/atomic"]; - time = $packages["time"]; - Allocator = $pkg.Allocator = $newType(0, $kindStruct, "smux.Allocator", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(buffers_) { - this.$val = this; - if (arguments.length === 0) { - this.buffers = sliceType.nil; - return; - } - this.buffers = buffers_; - }); - Frame = $pkg.Frame = $newType(0, $kindStruct, "smux.Frame", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(ver_, cmd_, sid_, data_) { - this.$val = this; - if (arguments.length === 0) { - this.ver = 0; - this.cmd = 0; - this.sid = 0; - this.data = sliceType$1.nil; - return; - } - this.ver = ver_; - this.cmd = cmd_; - this.sid = sid_; - this.data = data_; - }); - rawHeader = $pkg.rawHeader = $newType(8, $kindArray, "smux.rawHeader", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); - updHeader = $pkg.updHeader = $newType(8, $kindArray, "smux.updHeader", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); - Config = $pkg.Config = $newType(0, $kindStruct, "smux.Config", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(Version_, KeepAliveInterval_, KeepAliveTimeout_, MaxFrameSize_, MaxReceiveBuffer_, MaxStreamBuffer_) { - this.$val = this; - if (arguments.length === 0) { - this.Version = 0; - this.KeepAliveInterval = new time.Duration(0, 0); - this.KeepAliveTimeout = new time.Duration(0, 0); - this.MaxFrameSize = 0; - this.MaxReceiveBuffer = 0; - this.MaxStreamBuffer = 0; - return; - } - this.Version = Version_; - this.KeepAliveInterval = KeepAliveInterval_; - this.KeepAliveTimeout = KeepAliveTimeout_; - this.MaxFrameSize = MaxFrameSize_; - this.MaxReceiveBuffer = MaxReceiveBuffer_; - this.MaxStreamBuffer = MaxStreamBuffer_; - }); - writeRequest = $pkg.writeRequest = $newType(0, $kindStruct, "smux.writeRequest", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, function(prio_, frame_, result_) { - this.$val = this; - if (arguments.length === 0) { - this.prio = new $Uint64(0, 0); - this.frame = new Frame.ptr(0, 0, 0, sliceType$1.nil); - this.result = $chanNil; - return; - } - this.prio = prio_; - this.frame = frame_; - this.result = result_; - }); - writeResult = $pkg.writeResult = $newType(0, $kindStruct, "smux.writeResult", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, function(n_, err_) { - this.$val = this; - if (arguments.length === 0) { - this.n = 0; - this.err = $ifaceNil; - return; - } - this.n = n_; - this.err = err_; - }); - buffersWriter = $pkg.buffersWriter = $newType(8, $kindInterface, "smux.buffersWriter", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); - Session = $pkg.Session = $newType(0, $kindStruct, "smux.Session", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(conn_, config_, nextStreamID_, nextStreamIDLock_, bucket_, bucketNotify_, streams_, streamLock_, die_, dieOnce_, socketReadError_, socketWriteError_, chSocketReadError_, chSocketWriteError_, socketReadErrorOnce_, socketWriteErrorOnce_, protoError_, chProtoError_, protoErrorOnce_, chAccepts_, dataReady_, goAway_, deadline_, shaper_, writes_) { - this.$val = this; - if (arguments.length === 0) { - this.conn = $ifaceNil; - this.config = ptrType$1.nil; - this.nextStreamID = 0; - this.nextStreamIDLock = new sync.Mutex.ptr(0, 0); - this.bucket = 0; - this.bucketNotify = $chanNil; - this.streams = false; - this.streamLock = new sync.Mutex.ptr(0, 0); - this.die = $chanNil; - this.dieOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); - this.socketReadError = new atomic.Value.ptr($ifaceNil); - this.socketWriteError = new atomic.Value.ptr($ifaceNil); - this.chSocketReadError = $chanNil; - this.chSocketWriteError = $chanNil; - this.socketReadErrorOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); - this.socketWriteErrorOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); - this.protoError = new atomic.Value.ptr($ifaceNil); - this.chProtoError = $chanNil; - this.protoErrorOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); - this.chAccepts = $chanNil; - this.dataReady = 0; - this.goAway = 0; - this.deadline = new atomic.Value.ptr($ifaceNil); - this.shaper = $chanNil; - this.writes = $chanNil; - return; - } - this.conn = conn_; - this.config = config_; - this.nextStreamID = nextStreamID_; - this.nextStreamIDLock = nextStreamIDLock_; - this.bucket = bucket_; - this.bucketNotify = bucketNotify_; - this.streams = streams_; - this.streamLock = streamLock_; - this.die = die_; - this.dieOnce = dieOnce_; - this.socketReadError = socketReadError_; - this.socketWriteError = socketWriteError_; - this.chSocketReadError = chSocketReadError_; - this.chSocketWriteError = chSocketWriteError_; - this.socketReadErrorOnce = socketReadErrorOnce_; - this.socketWriteErrorOnce = socketWriteErrorOnce_; - this.protoError = protoError_; - this.chProtoError = chProtoError_; - this.protoErrorOnce = protoErrorOnce_; - this.chAccepts = chAccepts_; - this.dataReady = dataReady_; - this.goAway = goAway_; - this.deadline = deadline_; - this.shaper = shaper_; - this.writes = writes_; - }); - shaperHeap = $pkg.shaperHeap = $newType(12, $kindSlice, "smux.shaperHeap", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", false, null); - Stream = $pkg.Stream = $newType(0, $kindStruct, "smux.Stream", true, "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", true, function(id_, sess_, buffers_, heads_, bufferLock_, frameSize_, chReadEvent_, die_, dieOnce_, chFinEvent_, finEventOnce_, readDeadline_, writeDeadline_, numRead_, numWritten_, incr_, peerConsumed_, peerWindow_, chUpdate_) { - this.$val = this; - if (arguments.length === 0) { - this.id = 0; - this.sess = ptrType$2.nil; - this.buffers = sliceType$3.nil; - this.heads = sliceType$3.nil; - this.bufferLock = new sync.Mutex.ptr(0, 0); - this.frameSize = 0; - this.chReadEvent = $chanNil; - this.die = $chanNil; - this.dieOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); - this.chFinEvent = $chanNil; - this.finEventOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0); - this.readDeadline = new atomic.Value.ptr($ifaceNil); - this.writeDeadline = new atomic.Value.ptr($ifaceNil); - this.numRead = 0; - this.numWritten = 0; - this.incr = 0; - this.peerConsumed = 0; - this.peerWindow = 0; - this.chUpdate = $chanNil; - return; - } - this.id = id_; - this.sess = sess_; - this.buffers = buffers_; - this.heads = heads_; - this.bufferLock = bufferLock_; - this.frameSize = frameSize_; - this.chReadEvent = chReadEvent_; - this.die = die_; - this.dieOnce = dieOnce_; - this.chFinEvent = chFinEvent_; - this.finEventOnce = finEventOnce_; - this.readDeadline = readDeadline_; - this.writeDeadline = writeDeadline_; - this.numRead = numRead_; - this.numWritten = numWritten_; - this.incr = incr_; - this.peerConsumed = peerConsumed_; - this.peerWindow = peerWindow_; - this.chUpdate = chUpdate_; - }); - ptrType = $ptrType(Allocator); - sliceType = $sliceType(sync.Pool); - sliceType$1 = $sliceType($Uint8); - sliceType$2 = $sliceType($emptyInterface); - ptrType$1 = $ptrType(Config); - ptrType$2 = $ptrType(Session); - structType = $structType("", []); - ptrType$3 = $ptrType(Stream); - interfaceType = $interfaceType([{prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}]); - interfaceType$1 = $interfaceType([{prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}]); - ptrType$4 = $ptrType($Int32); - arrayType = $arrayType($Uint8, 8); - ptrType$5 = $ptrType(shaperHeap); - sliceType$3 = $sliceType(sliceType$1); - ptrType$6 = $ptrType(time.Timer); - ptrType$7 = $ptrType($Uint32); - chanType = $chanType(writeResult, false, false); - chanType$1 = $chanType(time.Time, false, true); - chanType$2 = $chanType(structType, false, false); - mapType = $mapType($Uint32, ptrType$3); - chanType$3 = $chanType(ptrType$3, false, false); - chanType$4 = $chanType(writeRequest, false, false); - chanType$5 = $chanType(structType, false, true); - init = function() { - defaultAllocator = NewAllocator(); - }; - NewAllocator = function() { - var _i, _ref, alloc, i, k, x; - alloc = new Allocator.ptr(sliceType.nil); - alloc.buffers = $makeSlice(sliceType, 17); - _ref = alloc.buffers; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - i = [i]; - k = _i; - i[0] = k; - (x = alloc.buffers, ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k])).New = (function(i) { return function() { - var y; - return $makeSlice(sliceType$1, ((y = ((i[0] >>> 0)), y < 32 ? (1 << y) : 0) >> 0)); - }; })(i); - _i++; - } - return alloc; - }; - $pkg.NewAllocator = NewAllocator; - Allocator.ptr.prototype.Get = function(size) { - var _r, _r$1, alloc, bits, size, x, x$1, x$2, y, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; alloc = $f.alloc; bits = $f.bits; size = $f.size; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - alloc = this; - if (size <= 0 || size > 65536) { - $s = -1; return sliceType$1.nil; - } - bits = msb(size); - /* */ if (size === ((y = bits, y < 32 ? (1 << y) : 0) >> 0)) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (size === ((y = bits, y < 32 ? (1 << y) : 0) >> 0)) { */ case 1: - _r = (x = alloc.buffers, ((bits < 0 || bits >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + bits])).Get(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return $subslice($assertType(_r, sliceType$1), 0, size); - /* } else { */ case 2: - _r$1 = (x$1 = alloc.buffers, x$2 = bits + 1 << 24 >>> 24, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).Get(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - $s = -1; return $subslice($assertType(_r$1, sliceType$1), 0, size); - /* } */ case 3: - $s = -1; return sliceType$1.nil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Allocator.ptr.prototype.Get }; } $f._r = _r; $f._r$1 = _r$1; $f.alloc = alloc; $f.bits = bits; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.y = y; $f.$s = $s; $f.$r = $r; return $f; - }; - Allocator.prototype.Get = function(size) { return this.$val.Get(size); }; - Allocator.ptr.prototype.Put = function(buf) { - var alloc, bits, buf, x, y; - alloc = this; - bits = msb(buf.$capacity); - if ((buf.$capacity === 0) || buf.$capacity > 65536 || !((buf.$capacity === ((y = bits, y < 32 ? (1 << y) : 0) >> 0)))) { - return errors.New("allocator Put() incorrect buffer size"); - } - (x = alloc.buffers, ((bits < 0 || bits >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + bits])).Put(buf); - return $ifaceNil; - }; - Allocator.prototype.Put = function(buf) { return this.$val.Put(buf); }; - msb = function(size) { - var size, v, x; - v = ((size >>> 0)); - v = (v | ((v >>> 1 >>> 0))) >>> 0; - v = (v | ((v >>> 2 >>> 0))) >>> 0; - v = (v | ((v >>> 4 >>> 0))) >>> 0; - v = (v | ((v >>> 8 >>> 0))) >>> 0; - v = (v | ((v >>> 16 >>> 0))) >>> 0; - return (x = (($imul(v, 130329821) >>> 0)) >>> 27 >>> 0, ((x < 0 || x >= debruijinPos.length) ? ($throwRuntimeError("index out of range"), undefined) : debruijinPos[x])); - }; - newFrame = function(version, cmd, sid) { - var cmd, sid, version; - return new Frame.ptr(version, cmd, sid, sliceType$1.nil); - }; - rawHeader.prototype.Version = function() { - var h; - h = this.$val; - return h[0]; - }; - $ptrType(rawHeader).prototype.Version = function() { return new rawHeader(this.$get()).Version(); }; - rawHeader.prototype.Cmd = function() { - var h; - h = this.$val; - return h[1]; - }; - $ptrType(rawHeader).prototype.Cmd = function() { return new rawHeader(this.$get()).Cmd(); }; - rawHeader.prototype.Length = function() { - var h; - h = this.$val; - return $clone(binary.LittleEndian, binary.littleEndian).Uint16($subslice(new sliceType$1(h), 2)); - }; - $ptrType(rawHeader).prototype.Length = function() { return new rawHeader(this.$get()).Length(); }; - rawHeader.prototype.StreamID = function() { - var h; - h = this.$val; - return $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType$1(h), 4)); - }; - $ptrType(rawHeader).prototype.StreamID = function() { return new rawHeader(this.$get()).StreamID(); }; - rawHeader.prototype.String = function() { - var _r, h, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - h = this.$val; - _r = fmt.Sprintf("Version:%d Cmd:%d StreamID:%d Length:%d", new sliceType$2([new $Uint8(new rawHeader($clone(h, rawHeader)).Version()), new $Uint8(new rawHeader($clone(h, rawHeader)).Cmd()), new $Uint32(new rawHeader($clone(h, rawHeader)).StreamID()), new $Uint16(new rawHeader($clone(h, rawHeader)).Length())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* */ } return; } if ($f === undefined) { $f = { $blk: rawHeader.prototype.String }; } $f._r = _r; $f.h = h; $f.$s = $s; $f.$r = $r; return $f; - }; - $ptrType(rawHeader).prototype.String = function() { return new rawHeader(this.$get()).String(); }; - updHeader.prototype.Consumed = function() { - var h; - h = this.$val; - return $clone(binary.LittleEndian, binary.littleEndian).Uint32(new sliceType$1(h)); - }; - $ptrType(updHeader).prototype.Consumed = function() { return new updHeader(this.$get()).Consumed(); }; - updHeader.prototype.Window = function() { - var h; - h = this.$val; - return $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType$1(h), 4)); - }; - $ptrType(updHeader).prototype.Window = function() { return new updHeader(this.$get()).Window(); }; - DefaultConfig = function() { - return new Config.ptr(1, new time.Duration(2, 1410065408), new time.Duration(6, 4230196224), 32768, 4194304, 65536); - }; - $pkg.DefaultConfig = DefaultConfig; - VerifyConfig = function(config) { - var _r, config, x, x$1, x$2, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; config = $f.config; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (!((config.Version === 1) || (config.Version === 2))) { - $s = -1; return errors.New("unsupported protocol version"); - } - if ((x = config.KeepAliveInterval, (x.$high === 0 && x.$low === 0))) { - $s = -1; return errors.New("keep-alive interval must be positive"); - } - /* */ if ((x$1 = config.KeepAliveTimeout, x$2 = config.KeepAliveInterval, (x$1.$high < x$2.$high || (x$1.$high === x$2.$high && x$1.$low < x$2.$low)))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if ((x$1 = config.KeepAliveTimeout, x$2 = config.KeepAliveInterval, (x$1.$high < x$2.$high || (x$1.$high === x$2.$high && x$1.$low < x$2.$low)))) { */ case 1: - _r = fmt.Errorf("keep-alive timeout must be larger than keep-alive interval", new sliceType$2([])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - if (config.MaxFrameSize <= 0) { - $s = -1; return errors.New("max frame size must be positive"); - } - if (config.MaxFrameSize > 65535) { - $s = -1; return errors.New("max frame size must not be larger than 65535"); - } - if (config.MaxReceiveBuffer <= 0) { - $s = -1; return errors.New("max receive buffer must be positive"); - } - if (config.MaxStreamBuffer <= 0) { - $s = -1; return errors.New("max stream buffer must be positive"); - } - if (config.MaxStreamBuffer > config.MaxReceiveBuffer) { - $s = -1; return errors.New("max stream buffer must not be larger than max receive buffer"); - } - if (config.MaxStreamBuffer > 2147483647) { - $s = -1; return errors.New("max stream buffer cannot be larger than 2147483647"); - } - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: VerifyConfig }; } $f._r = _r; $f.config = config; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.VerifyConfig = VerifyConfig; - Client = function(conn, config) { - var _r, config, conn, err, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; config = $f.config; conn = $f.conn; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - if (config === ptrType$1.nil) { - config = DefaultConfig(); - } - _r = VerifyConfig(config); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err = _r; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$2.nil, err]; - } - $s = -1; return [newSession(config, conn, true), $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Client }; } $f._r = _r; $f.config = config; $f.conn = conn; $f.err = err; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Client = Client; - newSession = function(config, conn, client) { - var client, config, conn, s; - s = new Session.ptr($ifaceNil, ptrType$1.nil, 0, new sync.Mutex.ptr(0, 0), 0, $chanNil, false, new sync.Mutex.ptr(0, 0), $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new atomic.Value.ptr($ifaceNil), new atomic.Value.ptr($ifaceNil), $chanNil, $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new atomic.Value.ptr($ifaceNil), $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $chanNil, 0, 0, new atomic.Value.ptr($ifaceNil), $chanNil, $chanNil); - s.die = new $Chan(structType, 0); - s.conn = conn; - s.config = config; - s.streams = {}; - s.chAccepts = new $Chan(ptrType$3, 1024); - s.bucket = ((config.MaxReceiveBuffer >> 0)); - s.bucketNotify = new $Chan(structType, 1); - s.shaper = new $Chan(writeRequest, 0); - s.writes = new $Chan(writeRequest, 0); - s.chSocketReadError = new $Chan(structType, 0); - s.chSocketWriteError = new $Chan(structType, 0); - s.chProtoError = new $Chan(structType, 0); - if (client) { - s.nextStreamID = 1; - } else { - s.nextStreamID = 0; - } - $go($methodVal(s, "shaperLoop"), []); - $go($methodVal(s, "recvLoop"), []); - $go($methodVal(s, "sendLoop"), []); - $go($methodVal(s, "keepalive"), []); - return s; - }; - Session.ptr.prototype.OpenStream = function() { - var _key, _r, _r$1, _selection, _tuple, err, s, sid, stream, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _tuple = $f._tuple; err = $f.err; s = $f.s; sid = $f.sid; stream = $f.stream; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - s = this; - if (s.IsClosed()) { - $s = -1; return [ptrType$3.nil, io.ErrClosedPipe]; - } - $r = s.nextStreamIDLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if (s.goAway > 0) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (s.goAway > 0) { */ case 2: - $r = s.nextStreamIDLock.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return [ptrType$3.nil, $pkg.ErrGoAway]; - /* } */ case 3: - s.nextStreamID = s.nextStreamID + (2) >>> 0; - sid = s.nextStreamID; - /* */ if (sid === (_r = sid % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (sid === (_r = sid % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) { */ case 5: - s.goAway = 1; - $r = s.nextStreamIDLock.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return [ptrType$3.nil, $pkg.ErrGoAway]; - /* } */ case 6: - $r = s.nextStreamIDLock.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - stream = newStream(sid, s.config.MaxFrameSize, s); - _r$1 = s.writeFrame($clone(newFrame(((s.config.Version << 24 >>> 24)), 0, sid), Frame)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - err = _tuple[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return [ptrType$3.nil, err]; - } - $r = s.streamLock.Lock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(s.streamLock, "Unlock"), []]); - _selection = $select([[s.chSocketReadError], [s.chSocketWriteError], [s.die], []]); - if (_selection[0] === 0) { - $s = -1; return [ptrType$3.nil, $assertType(s.socketReadError.Load(), $error)]; - } else if (_selection[0] === 1) { - $s = -1; return [ptrType$3.nil, $assertType(s.socketWriteError.Load(), $error)]; - } else if (_selection[0] === 2) { - $s = -1; return [ptrType$3.nil, io.ErrClosedPipe]; - } else if (_selection[0] === 3) { - _key = sid; (s.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: stream }; - $s = -1; return [stream, $ifaceNil]; - } - $s = -1; return [ptrType$3.nil, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.OpenStream }; } $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._tuple = _tuple; $f.err = err; $f.s = s; $f.sid = sid; $f.stream = stream; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Session.prototype.OpenStream = function() { return this.$val.OpenStream(); }; - Session.ptr.prototype.Open = function() { - var _r, _returncast, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _returncast = $f._returncast; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _r = s.OpenStream(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _returncast = _r; - $s = -1; return [_returncast[0], _returncast[1]]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.Open }; } $f._r = _r; $f._returncast = _returncast; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.Open = function() { return this.$val.Open(); }; - Session.ptr.prototype.AcceptStream = function() { - var _r, _selection, _tuple, d, deadline, ok, s, stream, timer, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _tuple = $f._tuple; d = $f.d; deadline = $f.deadline; ok = $f.ok; s = $f.s; stream = $f.stream; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - s = this; - deadline = $chanNil; - _tuple = $assertType(s.deadline.Load(), time.Time, true); - d = $clone(_tuple[0], time.Time); - ok = _tuple[1]; - if (ok && !$clone(d, time.Time).IsZero()) { - timer = time.NewTimer(time.Until($clone(d, time.Time))); - $deferred.push([$methodVal(timer, "Stop"), []]); - deadline = timer.C; - } - _r = $select([[s.chAccepts], [deadline], [s.chSocketReadError], [s.chProtoError], [s.die]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection = _r; - if (_selection[0] === 0) { - stream = _selection[1][0]; - $s = -1; return [stream, $ifaceNil]; - } else if (_selection[0] === 1) { - $s = -1; return [ptrType$3.nil, $pkg.ErrTimeout]; - } else if (_selection[0] === 2) { - $s = -1; return [ptrType$3.nil, $assertType(s.socketReadError.Load(), $error)]; - } else if (_selection[0] === 3) { - $s = -1; return [ptrType$3.nil, $assertType(s.protoError.Load(), $error)]; - } else if (_selection[0] === 4) { - $s = -1; return [ptrType$3.nil, io.ErrClosedPipe]; - } - $s = -1; return [ptrType$3.nil, $ifaceNil]; - /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$3.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.AcceptStream }; } $f._r = _r; $f._selection = _selection; $f._tuple = _tuple; $f.d = d; $f.deadline = deadline; $f.ok = ok; $f.s = s; $f.stream = stream; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Session.prototype.AcceptStream = function() { return this.$val.AcceptStream(); }; - Session.ptr.prototype.Accept = function() { - var _r, _returncast, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _returncast = $f._returncast; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _r = s.AcceptStream(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _returncast = _r; - $s = -1; return [_returncast[0], _returncast[1]]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.Accept }; } $f._r = _r; $f._returncast = _returncast; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.Accept = function() { return this.$val.Accept(); }; - Session.ptr.prototype.Close = function() { - var _entry, _entry$1, _i, _keys, _r, _ref, k, once, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _keys = $f._keys; _r = $f._r; _ref = $f._ref; k = $f.k; once = $f.once; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - once = [once]; - s = [s]; - s[0] = this; - once[0] = false; - $r = s[0].dieOnce.Do((function(once, s) { return function() { - $close(s[0].die); - once[0] = true; - }; })(once, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if (once[0]) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (once[0]) { */ case 2: - $r = s[0].streamLock.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _ref = s[0].streams; - _i = 0; - _keys = $keys(_ref); - /* while (true) { */ case 6: - /* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 7; continue; } - _entry = _ref[_keys[_i]]; - if (_entry === undefined) { - _i++; - /* continue; */ $s = 6; continue; - } - k = _entry.k; - $r = (_entry$1 = s[0].streams[$Uint32.keyFor(k)], _entry$1 !== undefined ? _entry$1.v : ptrType$3.nil).sessionClose(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _i++; - /* } */ $s = 6; continue; case 7: - $r = s[0].streamLock.Unlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r = s[0].conn.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } else { */ case 3: - $s = -1; return io.ErrClosedPipe; - /* } */ case 4: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.Close }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f.k = k; $f.once = once; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.Close = function() { return this.$val.Close(); }; - Session.ptr.prototype.notifyBucket = function() { - var _selection, s, $r; - /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; s = $f.s; $r = $f.$r; } - s = this; - _selection = $select([[s.bucketNotify, new structType.ptr()], []]); - if (_selection[0] === 0) { - } else if (_selection[0] === 1) { - } - /* */ if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyBucket }; } $f._selection = _selection; $f.s = s; $f.$r = $r; return $f; - }; - Session.prototype.notifyBucket = function() { return this.$val.notifyBucket(); }; - Session.ptr.prototype.notifyReadError = function(err) { - var err, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - err = [err]; - s = [s]; - s[0] = this; - $r = s[0].socketReadErrorOnce.Do((function(err, s) { return function() { - s[0].socketReadError.Store(err[0]); - $close(s[0].chSocketReadError); - }; })(err, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyReadError }; } $f.err = err; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.notifyReadError = function(err) { return this.$val.notifyReadError(err); }; - Session.ptr.prototype.notifyWriteError = function(err) { - var err, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - err = [err]; - s = [s]; - s[0] = this; - $r = s[0].socketWriteErrorOnce.Do((function(err, s) { return function() { - s[0].socketWriteError.Store(err[0]); - $close(s[0].chSocketWriteError); - }; })(err, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyWriteError }; } $f.err = err; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.notifyWriteError = function(err) { return this.$val.notifyWriteError(err); }; - Session.ptr.prototype.notifyProtoError = function(err) { - var err, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - err = [err]; - s = [s]; - s[0] = this; - $r = s[0].protoErrorOnce.Do((function(err, s) { return function() { - s[0].protoError.Store(err[0]); - $close(s[0].chProtoError); - }; })(err, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.notifyProtoError }; } $f.err = err; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.notifyProtoError = function(err) { return this.$val.notifyProtoError(err); }; - Session.ptr.prototype.IsClosed = function() { - var _selection, s, $r; - /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; s = $f.s; $r = $f.$r; } - s = this; - _selection = $select([[s.die], []]); - if (_selection[0] === 0) { - return true; - } else if (_selection[0] === 1) { - return false; - } - /* */ if ($f === undefined) { $f = { $blk: Session.ptr.prototype.IsClosed }; } $f._selection = _selection; $f.s = s; $f.$r = $r; return $f; - }; - Session.prototype.IsClosed = function() { return this.$val.IsClosed(); }; - Session.ptr.prototype.NumStreams = function() { - var s, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - s = this; - if (s.IsClosed()) { - $s = -1; return 0; - } - $r = s.streamLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $deferred.push([$methodVal(s.streamLock, "Unlock"), []]); - $s = -1; return $keys(s.streams).length; - /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.NumStreams }; } $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Session.prototype.NumStreams = function() { return this.$val.NumStreams(); }; - Session.ptr.prototype.SetDeadline = function(t) { - var s, t; - s = this; - s.deadline.Store(new t.constructor.elem(t)); - return $ifaceNil; - }; - Session.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; - Session.ptr.prototype.LocalAddr = function() { - var _r, _tuple, ok, s, ts, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _tuple = $assertType(s.conn, interfaceType, true); - ts = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _r = ts.LocalAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.LocalAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.LocalAddr = function() { return this.$val.LocalAddr(); }; - Session.ptr.prototype.RemoteAddr = function() { - var _r, _tuple, ok, s, ts, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _tuple = $assertType(s.conn, interfaceType$1, true); - ts = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _r = ts.RemoteAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.RemoteAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); }; - Session.ptr.prototype.streamClosed = function(sid) { - var _entry, _r, n, s, sid, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; n = $f.n; s = $f.s; sid = $f.sid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - $r = s.streamLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r = (_entry = s.streams[$Uint32.keyFor(sid)], _entry !== undefined ? _entry.v : ptrType$3.nil).recycleTokens(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - n = _r; - if (n > 0) { - if (atomic.AddInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s))), ((n >> 0))) > 0) { - s.notifyBucket(); - } - } - delete s.streams[$Uint32.keyFor(sid)]; - $r = s.streamLock.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.streamClosed }; } $f._entry = _entry; $f._r = _r; $f.n = n; $f.s = s; $f.sid = sid; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.streamClosed = function(sid) { return this.$val.streamClosed(sid); }; - Session.ptr.prototype.returnTokens = function(n) { - var n, s; - s = this; - if (atomic.AddInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s))), ((n >> 0))) > 0) { - s.notifyBucket(); - } - }; - Session.prototype.returnTokens = function(n) { return this.$val.returnTokens(n); }; - Session.ptr.prototype.recvLoop = function() { - var _1, _entry, _entry$1, _entry$2, _entry$3, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _selection$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, err, err$1, err$2, hdr, newbuf, ok, ok$1, ok$2, ok$3, s, sid, stream, stream$1, stream$2, stream$3, updHdr, written, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hdr = $f.hdr; newbuf = $f.newbuf; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; s = $f.s; sid = $f.sid; stream = $f.stream; stream$1 = $f.stream$1; stream$2 = $f.stream$2; stream$3 = $f.stream$3; updHdr = $f.updHdr; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - hdr = arrayType.zero(); - updHdr = arrayType.zero(); - /* while (true) { */ case 1: - /* while (true) { */ case 3: - /* if (!(atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) <= 0 && !s.IsClosed())) { break; } */ if(!(atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) <= 0 && !s.IsClosed())) { $s = 4; continue; } - _r = $select([[s.bucketNotify], [s.die]]); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection = _r; - if (_selection[0] === 0) { - } else if (_selection[0] === 1) { - $s = -1; return; - } - /* } */ $s = 3; continue; case 4: - _r$1 = io.ReadFull(s.conn, new sliceType$1(hdr)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - err = _tuple[1]; - /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 7: - atomic.StoreInt32((s.$ptr_dataReady || (s.$ptr_dataReady = new ptrType$4(function() { return this.$target.dataReady; }, function($v) { this.$target.dataReady = $v; }, s))), 1); - /* */ if (!((new rawHeader($clone(hdr, rawHeader)).Version() === ((s.config.Version << 24 >>> 24))))) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (!((new rawHeader($clone(hdr, rawHeader)).Version() === ((s.config.Version << 24 >>> 24))))) { */ case 10: - $r = s.notifyProtoError($pkg.ErrInvalidProtocol); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 11: - sid = new rawHeader($clone(hdr, rawHeader)).StreamID(); - _1 = new rawHeader($clone(hdr, rawHeader)).Cmd(); - /* */ if (_1 === (3)) { $s = 14; continue; } - /* */ if (_1 === (0)) { $s = 15; continue; } - /* */ if (_1 === (1)) { $s = 16; continue; } - /* */ if (_1 === (2)) { $s = 17; continue; } - /* */ if (_1 === (4)) { $s = 18; continue; } - /* */ $s = 19; continue; - /* if (_1 === (3)) { */ case 14: - $s = 20; continue; - /* } else if (_1 === (0)) { */ case 15: - $r = s.streamLock.Lock(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _tuple$1 = (_entry = s.streams[$Uint32.keyFor(sid)], _entry !== undefined ? [_entry.v, true] : [ptrType$3.nil, false]); - ok = _tuple$1[1]; - /* */ if (!ok) { $s = 22; continue; } - /* */ $s = 23; continue; - /* if (!ok) { */ case 22: - stream = newStream(sid, s.config.MaxFrameSize, s); - _key = sid; (s.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: stream }; - _r$2 = $select([[s.chAccepts, stream], [s.die]]); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _selection$1 = _r$2; - if (_selection$1[0] === 0) { - } else if (_selection$1[0] === 1) { - } - /* } */ case 23: - $r = s.streamLock.Unlock(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 20; continue; - /* } else if (_1 === (1)) { */ case 16: - $r = s.streamLock.Lock(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _tuple$2 = (_entry$1 = s.streams[$Uint32.keyFor(sid)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$3.nil, false]); - stream$1 = _tuple$2[0]; - ok$1 = _tuple$2[1]; - /* */ if (ok$1) { $s = 27; continue; } - /* */ $s = 28; continue; - /* if (ok$1) { */ case 27: - $r = stream$1.fin(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - stream$1.notifyReadEvent(); - /* } */ case 28: - $r = s.streamLock.Unlock(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 20; continue; - /* } else if (_1 === (2)) { */ case 17: - /* */ if (new rawHeader($clone(hdr, rawHeader)).Length() > 0) { $s = 31; continue; } - /* */ $s = 32; continue; - /* if (new rawHeader($clone(hdr, rawHeader)).Length() > 0) { */ case 31: - _r$3 = defaultAllocator.Get(((new rawHeader($clone(hdr, rawHeader)).Length() >> 0))); /* */ $s = 33; case 33: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - newbuf = _r$3; - _r$4 = io.ReadFull(s.conn, newbuf); /* */ $s = 34; case 34: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple$3 = _r$4; - written = _tuple$3[0]; - err$1 = _tuple$3[1]; - /* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 35; continue; } - /* */ $s = 36; continue; - /* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 35: - $r = s.streamLock.Lock(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _tuple$4 = (_entry$2 = s.streams[$Uint32.keyFor(sid)], _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$3.nil, false]); - stream$2 = _tuple$4[0]; - ok$2 = _tuple$4[1]; - /* */ if (ok$2) { $s = 39; continue; } - /* */ $s = 40; continue; - /* if (ok$2) { */ case 39: - _r$5 = stream$2.pushBytes(newbuf); /* */ $s = 41; case 41: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _r$5; - atomic.AddInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s))), -((written >> 0))); - stream$2.notifyReadEvent(); - /* } */ case 40: - $r = s.streamLock.Unlock(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 37; continue; - /* } else { */ case 36: - $r = s.notifyReadError(err$1); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 37: - /* } */ case 32: - $s = 20; continue; - /* } else if (_1 === (4)) { */ case 18: - _r$6 = io.ReadFull(s.conn, new sliceType$1(updHdr)); /* */ $s = 44; case 44: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _tuple$5 = _r$6; - err$2 = _tuple$5[1]; - /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 45; continue; } - /* */ $s = 46; continue; - /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 45: - $r = s.streamLock.Lock(); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _tuple$6 = (_entry$3 = s.streams[$Uint32.keyFor(sid)], _entry$3 !== undefined ? [_entry$3.v, true] : [ptrType$3.nil, false]); - stream$3 = _tuple$6[0]; - ok$3 = _tuple$6[1]; - if (ok$3) { - stream$3.update(new updHeader($clone(updHdr, updHeader)).Consumed(), new updHeader($clone(updHdr, updHeader)).Window()); - } - $r = s.streamLock.Unlock(); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 47; continue; - /* } else { */ case 46: - $r = s.notifyReadError(err$2); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 47: - $s = 20; continue; - /* } else { */ case 19: - $r = s.notifyProtoError($pkg.ErrInvalidProtocol); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 20: - case 13: - $s = 9; continue; - /* } else { */ case 8: - $r = s.notifyReadError(err); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 9: - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.recvLoop }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hdr = hdr; $f.newbuf = newbuf; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.s = s; $f.sid = sid; $f.stream = stream; $f.stream$1 = stream$1; $f.stream$2 = stream$2; $f.stream$3 = stream$3; $f.updHdr = updHdr; $f.written = written; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.recvLoop = function() { return this.$val.recvLoop(); }; - Session.ptr.prototype.keepalive = function() { - var _r, _r$1, _r$2, _selection, s, tickerPing, tickerTimeout, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _selection = $f._selection; s = $f.s; tickerPing = $f.tickerPing; tickerTimeout = $f.tickerTimeout; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - s = this; - tickerPing = time.NewTicker(s.config.KeepAliveInterval); - tickerTimeout = time.NewTicker(s.config.KeepAliveTimeout); - $deferred.push([$methodVal(tickerPing, "Stop"), []]); - $deferred.push([$methodVal(tickerTimeout, "Stop"), []]); - /* while (true) { */ case 1: - _r = $select([[tickerPing.C], [tickerTimeout.C], [s.die]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection = _r; - /* */ if (_selection[0] === 0) { $s = 4; continue; } - /* */ if (_selection[0] === 1) { $s = 5; continue; } - /* */ if (_selection[0] === 2) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (_selection[0] === 0) { */ case 4: - _r$1 = s.writeFrameInternal($clone(newFrame(((s.config.Version << 24 >>> 24)), 3, 0), Frame), tickerPing.C, new $Uint64(0, 0)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - s.notifyBucket(); - $s = 7; continue; - /* } else if (_selection[0] === 1) { */ case 5: - /* */ if (!atomic.CompareAndSwapInt32((s.$ptr_dataReady || (s.$ptr_dataReady = new ptrType$4(function() { return this.$target.dataReady; }, function($v) { this.$target.dataReady = $v; }, s))), 1, 0)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (!atomic.CompareAndSwapInt32((s.$ptr_dataReady || (s.$ptr_dataReady = new ptrType$4(function() { return this.$target.dataReady; }, function($v) { this.$target.dataReady = $v; }, s))), 1, 0)) { */ case 9: - /* */ if (atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) > 0) { $s = 11; continue; } - /* */ $s = 12; continue; - /* if (atomic.LoadInt32((s.$ptr_bucket || (s.$ptr_bucket = new ptrType$4(function() { return this.$target.bucket; }, function($v) { this.$target.bucket = $v; }, s)))) > 0) { */ case 11: - _r$2 = s.Close(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _r$2; - $s = -1; return; - /* } */ case 12: - /* } */ case 10: - $s = 7; continue; - /* } else if (_selection[0] === 2) { */ case 6: - $s = -1; return; - /* } */ case 7: - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Session.ptr.prototype.keepalive }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._selection = _selection; $f.s = s; $f.tickerPing = tickerPing; $f.tickerTimeout = tickerTimeout; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Session.prototype.keepalive = function() { return this.$val.keepalive(); }; - Session.ptr.prototype.shaperLoop = function() { - var _r, _r$1, _selection, chWrite, next, r, reqs, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; chWrite = $f.chWrite; next = $f.next; r = $f.r; reqs = $f.reqs; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - reqs = [reqs]; - s = this; - reqs[0] = shaperHeap.nil; - next = new writeRequest.ptr(new $Uint64(0, 0), new Frame.ptr(0, 0, 0, sliceType$1.nil), $chanNil); - chWrite = $chanNil; - /* while (true) { */ case 1: - /* */ if (reqs[0].$length > 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (reqs[0].$length > 0) { */ case 3: - chWrite = s.writes; - _r = heap.Pop((reqs.$ptr || (reqs.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, reqs)))); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - writeRequest.copy(next, $assertType(_r, writeRequest)); - $s = 5; continue; - /* } else { */ case 4: - chWrite = $chanNil; - /* } */ case 5: - _r$1 = $select([[s.die], [s.shaper], [chWrite, $clone(next, writeRequest)]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _selection = _r$1; - /* */ if (_selection[0] === 0) { $s = 8; continue; } - /* */ if (_selection[0] === 1) { $s = 9; continue; } - /* */ if (_selection[0] === 2) { $s = 10; continue; } - /* */ $s = 11; continue; - /* if (_selection[0] === 0) { */ case 8: - $s = -1; return; - /* } else if (_selection[0] === 1) { */ case 9: - r = $clone(_selection[1][0], writeRequest); - /* */ if (!(chWrite === $chanNil)) { $s = 12; continue; } - /* */ $s = 13; continue; - /* if (!(chWrite === $chanNil)) { */ case 12: - $r = heap.Push((reqs.$ptr || (reqs.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, reqs))), new next.constructor.elem(next)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 13: - $r = heap.Push((reqs.$ptr || (reqs.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, reqs))), new r.constructor.elem(r)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = 11; continue; - /* } else if (_selection[0] === 2) { */ case 10: - /* } */ case 11: - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.shaperLoop }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f.chWrite = chWrite; $f.next = next; $f.r = r; $f.reqs = reqs; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.shaperLoop = function() { return this.$val.shaperLoop(); }; - Session.ptr.prototype.sendLoop = function() { - var _r, _r$1, _r$2, _selection, _tuple, _tuple$1, _tuple$2, buf, bw, err, n, ok, request, result, s, vec, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; buf = $f.buf; bw = $f.bw; err = $f.err; n = $f.n; ok = $f.ok; request = $f.request; result = $f.result; s = $f.s; vec = $f.vec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - buf = sliceType$1.nil; - n = 0; - err = $ifaceNil; - vec = sliceType$3.nil; - _tuple = $assertType(s.conn, buffersWriter, true); - bw = _tuple[0]; - ok = _tuple[1]; - if (ok) { - buf = $makeSlice(sliceType$1, 8); - vec = $makeSlice(sliceType$3, 2); - } else { - buf = $makeSlice(sliceType$1, 65544); - } - /* while (true) { */ case 1: - _r = $select([[s.die], [s.writes]]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection = _r; - /* */ if (_selection[0] === 0) { $s = 4; continue; } - /* */ if (_selection[0] === 1) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_selection[0] === 0) { */ case 4: - $s = -1; return; - /* } else if (_selection[0] === 1) { */ case 5: - request = $clone(_selection[1][0], writeRequest); - (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = request.frame.ver); - (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1] = request.frame.cmd); - $clone(binary.LittleEndian, binary.littleEndian).PutUint16($subslice(buf, 2), ((request.frame.data.$length << 16 >>> 16))); - $clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(buf, 4), request.frame.sid); - /* */ if (vec.$length > 0) { $s = 7; continue; } - /* */ $s = 8; continue; - /* if (vec.$length > 0) { */ case 7: - (0 >= vec.$length ? ($throwRuntimeError("index out of range"), undefined) : vec.$array[vec.$offset + 0] = $subslice(buf, 0, 8)); - (1 >= vec.$length ? ($throwRuntimeError("index out of range"), undefined) : vec.$array[vec.$offset + 1] = request.frame.data); - _r$1 = bw.WriteBuffers(vec); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - n = _tuple$1[0]; - err = _tuple$1[1]; - $s = 9; continue; - /* } else { */ case 8: - $copySlice($subslice(buf, 8), request.frame.data); - _r$2 = s.conn.Write($subslice(buf, 0, (8 + request.frame.data.$length >> 0))); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$2 = _r$2; - n = _tuple$2[0]; - err = _tuple$2[1]; - /* } */ case 9: - n = n - (8) >> 0; - if (n < 0) { - n = 0; - } - result = new writeResult.ptr(n, err); - $r = $send(request.result, $clone($clone(result, writeResult), writeResult)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $close(request.result); - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; } - /* */ $s = 14; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13: - $r = s.notifyWriteError(err); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* } */ case 14: - /* } */ case 6: - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.sendLoop }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.buf = buf; $f.bw = bw; $f.err = err; $f.n = n; $f.ok = ok; $f.request = request; $f.result = result; $f.s = s; $f.vec = vec; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.sendLoop = function() { return this.$val.sendLoop(); }; - Session.ptr.prototype.writeFrame = function(f) { - var _r, _tuple, err, f, n, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - s = this; - _r = s.writeFrameInternal($clone(f, Frame), $chanNil, new $Uint64(0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.writeFrame }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.writeFrame = function(f) { return this.$val.writeFrame(f); }; - Session.ptr.prototype.writeFrameInternal = function(f, deadline, prio) { - var _r, _r$1, _selection, _selection$1, deadline, f, prio, req, result, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _selection$1 = $f._selection$1; deadline = $f.deadline; f = $f.f; prio = $f.prio; req = $f.req; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - req = new writeRequest.ptr(prio, $clone(f, Frame), new $Chan(writeResult, 1)); - _r = $select([[s.shaper, $clone(req, writeRequest)], [s.die], [s.chSocketWriteError], [deadline]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection = _r; - /* */ if (_selection[0] === 0) { $s = 2; continue; } - /* */ if (_selection[0] === 1) { $s = 3; continue; } - /* */ if (_selection[0] === 2) { $s = 4; continue; } - /* */ if (_selection[0] === 3) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (_selection[0] === 0) { */ case 2: - $s = 6; continue; - /* } else if (_selection[0] === 1) { */ case 3: - $s = -1; return [0, io.ErrClosedPipe]; - /* } else if (_selection[0] === 2) { */ case 4: - $s = -1; return [0, $assertType(s.socketWriteError.Load(), $error)]; - /* } else if (_selection[0] === 3) { */ case 5: - $s = -1; return [0, $pkg.ErrTimeout]; - /* } */ case 6: - _r$1 = $select([[req.result], [s.die], [s.chSocketWriteError], [deadline]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _selection$1 = _r$1; - if (_selection$1[0] === 0) { - result = $clone(_selection$1[1][0], writeResult); - $s = -1; return [result.n, result.err]; - } else if (_selection$1[0] === 1) { - $s = -1; return [0, io.ErrClosedPipe]; - } else if (_selection$1[0] === 2) { - $s = -1; return [0, $assertType(s.socketWriteError.Load(), $error)]; - } else if (_selection$1[0] === 3) { - $s = -1; return [0, $pkg.ErrTimeout]; - } - $s = -1; return [0, $ifaceNil]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Session.ptr.prototype.writeFrameInternal }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._selection$1 = _selection$1; $f.deadline = deadline; $f.f = f; $f.prio = prio; $f.req = req; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Session.prototype.writeFrameInternal = function(f, deadline, prio) { return this.$val.writeFrameInternal(f, deadline, prio); }; - shaperHeap.prototype.Len = function() { - var h; - h = this; - return h.$length; - }; - $ptrType(shaperHeap).prototype.Len = function() { return this.$get().Len(); }; - shaperHeap.prototype.Less = function(i, j) { - var h, i, j, x, x$1; - h = this; - return (x = ((i < 0 || i >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + i]).prio, x$1 = ((j < 0 || j >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + j]).prio, (x.$high < x$1.$high || (x.$high === x$1.$high && x.$low < x$1.$low))); - }; - $ptrType(shaperHeap).prototype.Less = function(i, j) { return this.$get().Less(i, j); }; - shaperHeap.prototype.Swap = function(i, j) { - var _tmp, _tmp$1, h, i, j; - h = this; - _tmp = $clone(((j < 0 || j >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + j]), writeRequest); - _tmp$1 = $clone(((i < 0 || i >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + i]), writeRequest); - writeRequest.copy(((i < 0 || i >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + i]), _tmp); - writeRequest.copy(((j < 0 || j >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + j]), _tmp$1); - }; - $ptrType(shaperHeap).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); }; - $ptrType(shaperHeap).prototype.Push = function(x) { - var h, x; - h = this; - h.$set($append(h.$get(), $assertType(x, writeRequest))); - }; - $ptrType(shaperHeap).prototype.Pop = function() { - var h, n, old, x, x$1; - h = this; - old = h.$get(); - n = old.$length; - x$1 = $clone((x = n - 1 >> 0, ((x < 0 || x >= old.$length) ? ($throwRuntimeError("index out of range"), undefined) : old.$array[old.$offset + x])), writeRequest); - h.$set($subslice(old, 0, (n - 1 >> 0))); - return new x$1.constructor.elem(x$1); - }; - newStream = function(id, frameSize, sess) { - var frameSize, id, s, sess; - s = new Stream.ptr(0, ptrType$2.nil, sliceType$3.nil, sliceType$3.nil, new sync.Mutex.ptr(0, 0), 0, $chanNil, $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $chanNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new atomic.Value.ptr($ifaceNil), new atomic.Value.ptr($ifaceNil), 0, 0, 0, 0, 0, $chanNil); - s.id = id; - s.chReadEvent = new $Chan(structType, 1); - s.chUpdate = new $Chan(structType, 1); - s.frameSize = frameSize; - s.sess = sess; - s.die = new $Chan(structType, 0); - s.chFinEvent = new $Chan(structType, 0); - s.peerWindow = 262144; - return s; - }; - Stream.ptr.prototype.ID = function() { - var s; - s = this; - return s.id; - }; - Stream.prototype.ID = function() { return this.$val.ID(); }; - Stream.ptr.prototype.Read = function(b) { - var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, ew, n, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; err = $f.err; ew = $f.ew; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - s = this; - /* while (true) { */ case 1: - _r = s.tryRead(b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - /* */ if ($interfaceIsEqual(err, $pkg.ErrWouldBlock)) { $s = 4; continue; } - /* */ $s = 5; continue; - /* if ($interfaceIsEqual(err, $pkg.ErrWouldBlock)) { */ case 4: - _r$1 = s.waitRead(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - ew = _r$1; - if (!($interfaceIsEqual(ew, $ifaceNil))) { - _tmp = 0; - _tmp$1 = ew; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - $s = 6; continue; - /* } else { */ case 5: - _tmp$2 = n; - _tmp$3 = err; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - /* } */ case 6: - /* } */ $s = 1; continue; case 2: - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.ew = ew; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.Read = function(b) { return this.$val.Read(b); }; - Stream.ptr.prototype.tryRead = function(b) { - var _r, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, err, n, s, x, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - s = this; - /* */ if (s.sess.config.Version === 2) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (s.sess.config.Version === 2) { */ case 1: - _r = s.tryReadv2(b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* } */ case 2: - if (b.$length === 0) { - _tmp = 0; - _tmp$1 = $ifaceNil; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - $r = s.bufferLock.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (s.buffers.$length > 0) { - n = $copySlice(b, (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); - (x$2 = s.buffers, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = s.buffers, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), n))); - if ((x$3 = s.buffers, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).$length === 0) { - (x$4 = s.buffers, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = sliceType$1.nil)); - s.buffers = $subslice(s.buffers, 1); - defaultAllocator.Put((x$5 = s.heads, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))); - s.heads = $subslice(s.heads, 1); - } - } - $r = s.bufferLock.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (n > 0) { - s.sess.returnTokens(n); - _tmp$2 = n; - _tmp$3 = $ifaceNil; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - _selection = $select([[s.die], []]); - if (_selection[0] === 0) { - _tmp$4 = 0; - _tmp$5 = io.EOF; - n = _tmp$4; - err = _tmp$5; - $s = -1; return [n, err]; - } else if (_selection[0] === 1) { - _tmp$6 = 0; - _tmp$7 = $pkg.ErrWouldBlock; - n = _tmp$6; - err = _tmp$7; - $s = -1; return [n, err]; - } - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.tryRead }; } $f._r = _r; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.tryRead = function(b) { return this.$val.tryRead(b); }; - Stream.ptr.prototype.tryReadv2 = function(b) { - var _q, _r, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, b, err, err$1, n, notifyConsumed, s, x, x$1, x$2, x$3, x$4, x$5, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; b = $f.b; err = $f.err; err$1 = $f.err$1; n = $f.n; notifyConsumed = $f.notifyConsumed; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - err = $ifaceNil; - s = this; - if (b.$length === 0) { - _tmp = 0; - _tmp$1 = $ifaceNil; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - notifyConsumed = 0; - $r = s.bufferLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (s.buffers.$length > 0) { - n = $copySlice(b, (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); - (x$2 = s.buffers, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = s.buffers, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), n))); - if ((x$3 = s.buffers, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).$length === 0) { - (x$4 = s.buffers, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = sliceType$1.nil)); - s.buffers = $subslice(s.buffers, 1); - defaultAllocator.Put((x$5 = s.heads, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))); - s.heads = $subslice(s.heads, 1); - } - } - s.numRead = s.numRead + (((n >>> 0))) >>> 0; - s.incr = s.incr + (((n >>> 0))) >>> 0; - if (s.incr >= (((_q = s.sess.config.MaxStreamBuffer / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >>> 0)) || (s.numRead === ((n >>> 0)))) { - notifyConsumed = s.numRead; - s.incr = 0; - } - $r = s.bufferLock.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if (n > 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (n > 0) { */ case 3: - s.sess.returnTokens(n); - /* */ if (notifyConsumed > 0) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (notifyConsumed > 0) { */ case 5: - _r = s.sendWindowUpdate(notifyConsumed); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - err$1 = _r; - _tmp$2 = n; - _tmp$3 = err$1; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - /* } else { */ case 6: - _tmp$4 = n; - _tmp$5 = $ifaceNil; - n = _tmp$4; - err = _tmp$5; - $s = -1; return [n, err]; - /* } */ case 7: - /* } */ case 4: - _selection = $select([[s.die], []]); - if (_selection[0] === 0) { - _tmp$6 = 0; - _tmp$7 = io.EOF; - n = _tmp$6; - err = _tmp$7; - $s = -1; return [n, err]; - } else if (_selection[0] === 1) { - _tmp$8 = 0; - _tmp$9 = $pkg.ErrWouldBlock; - n = _tmp$8; - err = _tmp$9; - $s = -1; return [n, err]; - } - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.tryReadv2 }; } $f._q = _q; $f._r = _r; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.notifyConsumed = notifyConsumed; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.tryReadv2 = function(b) { return this.$val.tryReadv2(b); }; - Stream.ptr.prototype.WriteTo = function(w) { - var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, buf, err, ew, ew$1, n, nw, s, w, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; ew = $f.ew; ew$1 = $f.ew$1; n = $f.n; nw = $f.nw; s = $f.s; w = $f.w; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = new $Int64(0, 0); - err = $ifaceNil; - s = this; - /* */ if (s.sess.config.Version === 2) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (s.sess.config.Version === 2) { */ case 1: - _r = s.writeTov2(w); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* } */ case 2: - /* while (true) { */ case 4: - buf = sliceType$1.nil; - $r = s.bufferLock.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (s.buffers.$length > 0) { - buf = (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - s.buffers = $subslice(s.buffers, 1); - s.heads = $subslice(s.heads, 1); - } - $r = s.bufferLock.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if (!(buf === sliceType$1.nil)) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (!(buf === sliceType$1.nil)) { */ case 8: - _r$1 = w.Write(buf); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - nw = _tuple$1[0]; - ew = _tuple$1[1]; - s.sess.returnTokens(buf.$length); - defaultAllocator.Put(buf); - if (nw > 0) { - n = (x$1 = (new $Int64(0, nw)), new $Int64(n.$high + x$1.$high, n.$low + x$1.$low)); - } - if (!($interfaceIsEqual(ew, $ifaceNil))) { - _tmp = n; - _tmp$1 = ew; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - $s = 10; continue; - /* } else { */ case 9: - _r$2 = s.waitRead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - ew$1 = _r$2; - if (!($interfaceIsEqual(ew$1, $ifaceNil))) { - _tmp$2 = n; - _tmp$3 = ew$1; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - /* } */ case 10: - /* } */ $s = 4; continue; case 5: - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.WriteTo }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.ew = ew; $f.ew$1 = ew$1; $f.n = n; $f.nw = nw; $f.s = s; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); }; - Stream.ptr.prototype.writeTov2 = function(w) { - var _q, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, err, err$1, ew, ew$1, n, notifyConsumed, nw, s, w, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; buf = $f.buf; err = $f.err; err$1 = $f.err$1; ew = $f.ew; ew$1 = $f.ew$1; n = $f.n; notifyConsumed = $f.notifyConsumed; nw = $f.nw; s = $f.s; w = $f.w; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = new $Int64(0, 0); - err = $ifaceNil; - s = this; - /* while (true) { */ case 1: - notifyConsumed = 0; - buf = sliceType$1.nil; - $r = s.bufferLock.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - if (s.buffers.$length > 0) { - buf = (x = s.buffers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); - s.buffers = $subslice(s.buffers, 1); - s.heads = $subslice(s.heads, 1); - } - s.numRead = s.numRead + (((buf.$length >>> 0))) >>> 0; - s.incr = s.incr + (((buf.$length >>> 0))) >>> 0; - if (s.incr >= (((_q = s.sess.config.MaxStreamBuffer / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >>> 0)) || (s.numRead === ((buf.$length >>> 0)))) { - notifyConsumed = s.numRead; - s.incr = 0; - } - $r = s.bufferLock.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if (!(buf === sliceType$1.nil)) { $s = 5; continue; } - /* */ $s = 6; continue; - /* if (!(buf === sliceType$1.nil)) { */ case 5: - _r = w.Write(buf); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - nw = _tuple[0]; - ew = _tuple[1]; - s.sess.returnTokens(buf.$length); - defaultAllocator.Put(buf); - if (nw > 0) { - n = (x$1 = (new $Int64(0, nw)), new $Int64(n.$high + x$1.$high, n.$low + x$1.$low)); - } - if (!($interfaceIsEqual(ew, $ifaceNil))) { - _tmp = n; - _tmp$1 = ew; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - /* */ if (notifyConsumed > 0) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (notifyConsumed > 0) { */ case 9: - _r$1 = s.sendWindowUpdate(notifyConsumed); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - err$1 = _r$1; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp$2 = n; - _tmp$3 = err$1; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - /* } */ case 10: - $s = 7; continue; - /* } else { */ case 6: - _r$2 = s.waitRead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - ew$1 = _r$2; - if (!($interfaceIsEqual(ew$1, $ifaceNil))) { - _tmp$4 = n; - _tmp$5 = ew$1; - n = _tmp$4; - err = _tmp$5; - $s = -1; return [n, err]; - } - /* } */ case 7: - /* } */ $s = 1; continue; case 2: - $s = -1; return [n, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.writeTov2 }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.ew = ew; $f.ew$1 = ew$1; $f.n = n; $f.notifyConsumed = notifyConsumed; $f.nw = nw; $f.s = s; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.writeTov2 = function(w) { return this.$val.writeTov2(w); }; - Stream.ptr.prototype.sendWindowUpdate = function(consumed) { - var _r, _tuple, _tuple$1, consumed, d, deadline, err, frame, hdr, ok, s, timer, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; consumed = $f.consumed; d = $f.d; deadline = $f.deadline; err = $f.err; frame = $f.frame; hdr = $f.hdr; ok = $f.ok; s = $f.s; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - s = this; - timer = ptrType$6.nil; - deadline = $chanNil; - _tuple = $assertType(s.readDeadline.Load(), time.Time, true); - d = $clone(_tuple[0], time.Time); - ok = _tuple[1]; - if (ok && !$clone(d, time.Time).IsZero()) { - timer = time.NewTimer(time.Until($clone(d, time.Time))); - $deferred.push([$methodVal(timer, "Stop"), []]); - deadline = timer.C; - } - frame = $clone(newFrame(((s.sess.config.Version << 24 >>> 24)), 4, s.id), Frame); - hdr = arrayType.zero(); - $clone(binary.LittleEndian, binary.littleEndian).PutUint32(new sliceType$1(hdr), consumed); - $clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType$1(hdr), 4), ((s.sess.config.MaxStreamBuffer >>> 0))); - frame.data = new sliceType$1(hdr); - _r = s.sess.writeFrameInternal($clone(frame, Frame), deadline, new $Uint64(0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - err = _tuple$1[1]; - $s = -1; return err; - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.sendWindowUpdate }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.consumed = consumed; $f.d = d; $f.deadline = deadline; $f.err = err; $f.frame = frame; $f.hdr = hdr; $f.ok = ok; $f.s = s; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Stream.prototype.sendWindowUpdate = function(consumed) { return this.$val.sendWindowUpdate(consumed); }; - Stream.ptr.prototype.waitRead = function() { - var _r, _selection, _tuple, d, deadline, ok, s, timer, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _selection = $f._selection; _tuple = $f._tuple; d = $f.d; deadline = $f.deadline; ok = $f.ok; s = $f.s; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - s = this; - timer = ptrType$6.nil; - deadline = $chanNil; - _tuple = $assertType(s.readDeadline.Load(), time.Time, true); - d = $clone(_tuple[0], time.Time); - ok = _tuple[1]; - if (ok && !$clone(d, time.Time).IsZero()) { - timer = time.NewTimer(time.Until($clone(d, time.Time))); - $deferred.push([$methodVal(timer, "Stop"), []]); - deadline = timer.C; - } - _r = $select([[s.chReadEvent], [s.chFinEvent], [s.sess.chSocketReadError], [s.sess.chProtoError], [deadline], [s.die]]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _selection = _r; - if (_selection[0] === 0) { - $s = -1; return $ifaceNil; - } else if (_selection[0] === 1) { - $s = -1; return io.EOF; - } else if (_selection[0] === 2) { - $s = -1; return $assertType(s.sess.socketReadError.Load(), $error); - } else if (_selection[0] === 3) { - $s = -1; return $assertType(s.sess.protoError.Load(), $error); - } else if (_selection[0] === 4) { - $s = -1; return $pkg.ErrTimeout; - } else if (_selection[0] === 5) { - $s = -1; return io.ErrClosedPipe; - } - $s = -1; return $ifaceNil; - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.waitRead }; } $f._r = _r; $f._selection = _selection; $f._tuple = _tuple; $f.d = d; $f.deadline = deadline; $f.ok = ok; $f.s = s; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Stream.prototype.waitRead = function() { return this.$val.waitRead(); }; - Stream.ptr.prototype.Write = function(b) { - var _r, _r$1, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, b, bts, d, deadline, err, err$1, frame, n, n$1, ok, s, sent, sz, timer, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; bts = $f.bts; d = $f.d; deadline = $f.deadline; err = $f.err; err$1 = $f.err$1; frame = $f.frame; n = $f.n; n$1 = $f.n$1; ok = $f.ok; s = $f.s; sent = $f.sent; sz = $f.sz; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - n = 0; - err = $ifaceNil; - s = this; - /* */ if (s.sess.config.Version === 2) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (s.sess.config.Version === 2) { */ case 1: - _r = s.writeV2(b); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - n = _tuple[0]; - err = _tuple[1]; - $s = -1; return [n, err]; - /* } */ case 2: - deadline = $chanNil; - _tuple$1 = $assertType(s.writeDeadline.Load(), time.Time, true); - d = $clone(_tuple$1[0], time.Time); - ok = _tuple$1[1]; - if (ok && !$clone(d, time.Time).IsZero()) { - timer = time.NewTimer(time.Until($clone(d, time.Time))); - $deferred.push([$methodVal(timer, "Stop"), []]); - deadline = timer.C; - } - _selection = $select([[s.die], []]); - if (_selection[0] === 0) { - _tmp = 0; - _tmp$1 = io.ErrClosedPipe; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } else if (_selection[0] === 1) { - } - sent = 0; - frame = $clone(newFrame(((s.sess.config.Version << 24 >>> 24)), 2, s.id), Frame); - bts = b; - /* while (true) { */ case 4: - /* if (!(bts.$length > 0)) { break; } */ if(!(bts.$length > 0)) { $s = 5; continue; } - sz = bts.$length; - if (sz > s.frameSize) { - sz = s.frameSize; - } - frame.data = $subslice(bts, 0, sz); - bts = $subslice(bts, sz); - _r$1 = s.sess.writeFrameInternal($clone(frame, Frame), deadline, (new $Uint64(0, s.numWritten))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$2 = _r$1; - n$1 = _tuple$2[0]; - err$1 = _tuple$2[1]; - s.numWritten = s.numWritten + (1) >>> 0; - sent = sent + (n$1) >> 0; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp$2 = sent; - _tmp$3 = err$1; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } - /* } */ $s = 4; continue; case 5: - _tmp$4 = sent; - _tmp$5 = $ifaceNil; - n = _tmp$4; - err = _tmp$5; - $s = -1; return [n, err]; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.bts = bts; $f.d = d; $f.deadline = deadline; $f.err = err; $f.err$1 = err$1; $f.frame = frame; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.s = s; $f.sent = sent; $f.sz = sz; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Stream.prototype.Write = function(b) { return this.$val.Write(b); }; - Stream.ptr.prototype.writeV2 = function(b) { - var _r, _r$1, _selection, _selection$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, bts, d, deadline, err, err$1, frame, inflight, n, n$1, ok, s, sent, sz, timer, win, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _selection = $f._selection; _selection$1 = $f._selection$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; bts = $f.bts; d = $f.d; deadline = $f.deadline; err = $f.err; err$1 = $f.err$1; frame = $f.frame; inflight = $f.inflight; n = $f.n; n$1 = $f.n$1; ok = $f.ok; s = $f.s; sent = $f.sent; sz = $f.sz; timer = $f.timer; win = $f.win; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - n = 0; - err = $ifaceNil; - s = this; - if (b.$length === 0) { - _tmp = 0; - _tmp$1 = $ifaceNil; - n = _tmp; - err = _tmp$1; - $s = -1; return [n, err]; - } - _selection = $select([[s.die], []]); - if (_selection[0] === 0) { - _tmp$2 = 0; - _tmp$3 = io.ErrClosedPipe; - n = _tmp$2; - err = _tmp$3; - $s = -1; return [n, err]; - } else if (_selection[0] === 1) { - } - deadline = $chanNil; - _tuple = $assertType(s.writeDeadline.Load(), time.Time, true); - d = $clone(_tuple[0], time.Time); - ok = _tuple[1]; - if (ok && !$clone(d, time.Time).IsZero()) { - timer = time.NewTimer(time.Until($clone(d, time.Time))); - $deferred.push([$methodVal(timer, "Stop"), []]); - deadline = timer.C; - } - sent = 0; - frame = $clone(newFrame(((s.sess.config.Version << 24 >>> 24)), 2, s.id), Frame); - /* while (true) { */ case 1: - bts = sliceType$1.nil; - inflight = (((atomic.LoadUint32((s.$ptr_numWritten || (s.$ptr_numWritten = new ptrType$7(function() { return this.$target.numWritten; }, function($v) { this.$target.numWritten = $v; }, s)))) - atomic.LoadUint32((s.$ptr_peerConsumed || (s.$ptr_peerConsumed = new ptrType$7(function() { return this.$target.peerConsumed; }, function($v) { this.$target.peerConsumed = $v; }, s)))) >>> 0) >> 0)); - if (inflight < 0) { - _tmp$4 = 0; - _tmp$5 = $pkg.ErrConsumed; - n = _tmp$4; - err = _tmp$5; - $s = -1; return [n, err]; - } - win = ((atomic.LoadUint32((s.$ptr_peerWindow || (s.$ptr_peerWindow = new ptrType$7(function() { return this.$target.peerWindow; }, function($v) { this.$target.peerWindow = $v; }, s)))) >> 0)) - inflight >> 0; - /* */ if (win > 0) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (win > 0) { */ case 3: - if (win > ((b.$length >> 0))) { - bts = b; - b = sliceType$1.nil; - } else { - bts = $subslice(b, 0, win); - b = $subslice(b, win); - } - /* while (true) { */ case 5: - /* if (!(bts.$length > 0)) { break; } */ if(!(bts.$length > 0)) { $s = 6; continue; } - sz = bts.$length; - if (sz > s.frameSize) { - sz = s.frameSize; - } - frame.data = $subslice(bts, 0, sz); - bts = $subslice(bts, sz); - _r = s.sess.writeFrameInternal($clone(frame, Frame), deadline, (new $Uint64(0, atomic.LoadUint32((s.$ptr_numWritten || (s.$ptr_numWritten = new ptrType$7(function() { return this.$target.numWritten; }, function($v) { this.$target.numWritten = $v; }, s))))))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - n$1 = _tuple$1[0]; - err$1 = _tuple$1[1]; - atomic.AddUint32((s.$ptr_numWritten || (s.$ptr_numWritten = new ptrType$7(function() { return this.$target.numWritten; }, function($v) { this.$target.numWritten = $v; }, s))), ((sz >>> 0))); - sent = sent + (n$1) >> 0; - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - _tmp$6 = sent; - _tmp$7 = err$1; - n = _tmp$6; - err = _tmp$7; - $s = -1; return [n, err]; - } - /* } */ $s = 5; continue; case 6: - /* } */ case 4: - /* */ if (b.$length > 0) { $s = 8; continue; } - /* */ $s = 9; continue; - /* if (b.$length > 0) { */ case 8: - _r$1 = $select([[s.chFinEvent], [s.die], [deadline], [s.sess.chSocketWriteError], [s.chUpdate]]); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _selection$1 = _r$1; - if (_selection$1[0] === 0) { - _tmp$8 = 0; - _tmp$9 = io.EOF; - n = _tmp$8; - err = _tmp$9; - $s = -1; return [n, err]; - } else if (_selection$1[0] === 1) { - _tmp$10 = sent; - _tmp$11 = io.ErrClosedPipe; - n = _tmp$10; - err = _tmp$11; - $s = -1; return [n, err]; - } else if (_selection$1[0] === 2) { - _tmp$12 = sent; - _tmp$13 = $pkg.ErrTimeout; - n = _tmp$12; - err = _tmp$13; - $s = -1; return [n, err]; - } else if (_selection$1[0] === 3) { - _tmp$14 = sent; - _tmp$15 = $assertType(s.sess.socketWriteError.Load(), $error); - n = _tmp$14; - err = _tmp$15; - $s = -1; return [n, err]; - } else if (_selection$1[0] === 4) { - /* continue; */ $s = 1; continue; - } - $s = 10; continue; - /* } else { */ case 9: - _tmp$16 = sent; - _tmp$17 = $ifaceNil; - n = _tmp$16; - err = _tmp$17; - $s = -1; return [n, err]; - /* } */ case 10: - /* } */ $s = 1; continue; case 2: - $s = -1; return [n, err]; - /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.writeV2 }; } $f._r = _r; $f._r$1 = _r$1; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.bts = bts; $f.d = d; $f.deadline = deadline; $f.err = err; $f.err$1 = err$1; $f.frame = frame; $f.inflight = inflight; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.s = s; $f.sent = sent; $f.sz = sz; $f.timer = timer; $f.win = win; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Stream.prototype.writeV2 = function(b) { return this.$val.writeV2(b); }; - Stream.ptr.prototype.Close = function() { - var _r, _tuple, err, once, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; once = $f.once; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - once = [once]; - s = [s]; - s[0] = this; - once[0] = false; - err = $ifaceNil; - $r = s[0].dieOnce.Do((function(once, s) { return function() { - $close(s[0].die); - once[0] = true; - }; })(once, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if (once[0]) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (once[0]) { */ case 2: - _r = s[0].sess.writeFrame($clone(newFrame(((s[0].sess.config.Version << 24 >>> 24)), 1, s[0].id), Frame)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - err = _tuple[1]; - $r = s[0].sess.streamClosed(s[0].id); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return err; - /* } else { */ case 3: - $s = -1; return io.ErrClosedPipe; - /* } */ case 4: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.Close }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.once = once; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.Close = function() { return this.$val.Close(); }; - Stream.ptr.prototype.GetDieCh = function() { - var s; - s = this; - return s.die; - }; - Stream.prototype.GetDieCh = function() { return this.$val.GetDieCh(); }; - Stream.ptr.prototype.SetReadDeadline = function(t) { - var s, t; - s = this; - s.readDeadline.Store(new t.constructor.elem(t)); - s.notifyReadEvent(); - return $ifaceNil; - }; - Stream.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); }; - Stream.ptr.prototype.SetWriteDeadline = function(t) { - var s, t; - s = this; - s.writeDeadline.Store(new t.constructor.elem(t)); - return $ifaceNil; - }; - Stream.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); }; - Stream.ptr.prototype.SetDeadline = function(t) { - var err, err$1, s, t; - s = this; - err = s.SetReadDeadline($clone(t, time.Time)); - if (!($interfaceIsEqual(err, $ifaceNil))) { - return err; - } - err$1 = s.SetWriteDeadline($clone(t, time.Time)); - if (!($interfaceIsEqual(err$1, $ifaceNil))) { - return err$1; - } - return $ifaceNil; - }; - Stream.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); }; - Stream.ptr.prototype.sessionClose = function() { - var s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = [s]; - s[0] = this; - $r = s[0].dieOnce.Do((function(s) { return function() { - $close(s[0].die); - }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.sessionClose }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.sessionClose = function() { return this.$val.sessionClose(); }; - Stream.ptr.prototype.LocalAddr = function() { - var _r, _tuple, ok, s, ts, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _tuple = $assertType(s.sess.conn, interfaceType, true); - ts = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _r = ts.LocalAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.LocalAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.LocalAddr = function() { return this.$val.LocalAddr(); }; - Stream.ptr.prototype.RemoteAddr = function() { - var _r, _tuple, ok, s, ts, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; s = $f.s; ts = $f.ts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = this; - _tuple = $assertType(s.sess.conn, interfaceType$1, true); - ts = _tuple[0]; - ok = _tuple[1]; - /* */ if (ok) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (ok) { */ case 1: - _r = ts.RemoteAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - $s = -1; return _r; - /* } */ case 2: - $s = -1; return $ifaceNil; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.RemoteAddr }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.ts = ts; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); }; - Stream.ptr.prototype.pushBytes = function(buf) { - var buf, err, s, written, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; buf = $f.buf; err = $f.err; s = $f.s; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - written = 0; - err = $ifaceNil; - s = this; - $r = s.bufferLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - s.buffers = $append(s.buffers, buf); - s.heads = $append(s.heads, buf); - $r = s.bufferLock.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return [written, err]; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.pushBytes }; } $f.buf = buf; $f.err = err; $f.s = s; $f.written = written; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.pushBytes = function(buf) { return this.$val.pushBytes(buf); }; - Stream.ptr.prototype.recycleTokens = function() { - var _i, _ref, k, n, s, x, x$1, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; k = $f.k; n = $f.n; s = $f.s; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - n = 0; - s = this; - $r = s.bufferLock.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _ref = s.buffers; - _i = 0; - while (true) { - if (!(_i < _ref.$length)) { break; } - k = _i; - n = n + ((x = s.buffers, ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k])).$length) >> 0; - defaultAllocator.Put((x$1 = s.heads, ((k < 0 || k >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + k]))); - _i++; - } - s.buffers = sliceType$3.nil; - s.heads = sliceType$3.nil; - $r = s.bufferLock.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return n; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.recycleTokens }; } $f._i = _i; $f._ref = _ref; $f.k = k; $f.n = n; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.recycleTokens = function() { return this.$val.recycleTokens(); }; - Stream.ptr.prototype.notifyReadEvent = function() { - var _selection, s, $r; - /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; s = $f.s; $r = $f.$r; } - s = this; - _selection = $select([[s.chReadEvent, new structType.ptr()], []]); - if (_selection[0] === 0) { - } else if (_selection[0] === 1) { - } - /* */ if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.notifyReadEvent }; } $f._selection = _selection; $f.s = s; $f.$r = $r; return $f; - }; - Stream.prototype.notifyReadEvent = function() { return this.$val.notifyReadEvent(); }; - Stream.ptr.prototype.update = function(consumed, window) { - var _selection, consumed, s, window, $r; - /* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; consumed = $f.consumed; s = $f.s; window = $f.window; $r = $f.$r; } - s = this; - atomic.StoreUint32((s.$ptr_peerConsumed || (s.$ptr_peerConsumed = new ptrType$7(function() { return this.$target.peerConsumed; }, function($v) { this.$target.peerConsumed = $v; }, s))), consumed); - atomic.StoreUint32((s.$ptr_peerWindow || (s.$ptr_peerWindow = new ptrType$7(function() { return this.$target.peerWindow; }, function($v) { this.$target.peerWindow = $v; }, s))), window); - _selection = $select([[s.chUpdate, new structType.ptr()], []]); - if (_selection[0] === 0) { - } else if (_selection[0] === 1) { - } - /* */ if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.update }; } $f._selection = _selection; $f.consumed = consumed; $f.s = s; $f.window = window; $f.$r = $r; return $f; - }; - Stream.prototype.update = function(consumed, window) { return this.$val.update(consumed, window); }; - Stream.ptr.prototype.fin = function() { - var s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = [s]; - s[0] = this; - $r = s[0].finEventOnce.Do((function(s) { return function() { - $close(s[0].chFinEvent); - }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Stream.ptr.prototype.fin }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - Stream.prototype.fin = function() { return this.$val.fin(); }; - ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$Int], [sliceType$1], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]; - rawHeader.methods = [{prop: "Version", name: "Version", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "Cmd", name: "Cmd", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "StreamID", name: "StreamID", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; - updHeader.methods = [{prop: "Consumed", name: "Consumed", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Window", name: "Window", pkg: "", typ: $funcType([], [$Uint32], false)}]; - ptrType$2.methods = [{prop: "OpenStream", name: "OpenStream", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([], [io.ReadWriteCloser, $error], false)}, {prop: "AcceptStream", name: "AcceptStream", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [io.ReadWriteCloser, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "notifyBucket", name: "notifyBucket", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "notifyReadError", name: "notifyReadError", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$error], [], false)}, {prop: "notifyWriteError", name: "notifyWriteError", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$error], [], false)}, {prop: "notifyProtoError", name: "notifyProtoError", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$error], [], false)}, {prop: "IsClosed", name: "IsClosed", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "NumStreams", name: "NumStreams", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "streamClosed", name: "streamClosed", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Uint32], [], false)}, {prop: "returnTokens", name: "returnTokens", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Int], [], false)}, {prop: "recvLoop", name: "recvLoop", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "keepalive", name: "keepalive", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "shaperLoop", name: "shaperLoop", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "sendLoop", name: "sendLoop", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([Frame], [$Int, $error], false)}, {prop: "writeFrameInternal", name: "writeFrameInternal", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([Frame, chanType$1, $Uint64], [$Int, $error], false)}]; - shaperHeap.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; - ptrType$5.methods = [{prop: "Push", name: "Push", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [$emptyInterface], false)}]; - ptrType$3.methods = [{prop: "ID", name: "ID", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "tryRead", name: "tryRead", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "tryReadv2", name: "tryReadv2", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "writeTov2", name: "writeTov2", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "sendWindowUpdate", name: "sendWindowUpdate", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Uint32], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "writeV2", name: "writeV2", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "GetDieCh", name: "GetDieCh", pkg: "", typ: $funcType([], [chanType$5], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "sessionClose", name: "sessionClose", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "pushBytes", name: "pushBytes", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "recycleTokens", name: "recycleTokens", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [$Int], false)}, {prop: "notifyReadEvent", name: "notifyReadEvent", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}, {prop: "update", name: "update", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([$Uint32, $Uint32], [], false)}, {prop: "fin", name: "fin", pkg: "github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", typ: $funcType([], [], false)}]; - Allocator.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "buffers", name: "buffers", embedded: false, exported: false, typ: sliceType, tag: ""}]); - Frame.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "ver", name: "ver", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "cmd", name: "cmd", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "sid", name: "sid", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}]); - rawHeader.init($Uint8, 8); - updHeader.init($Uint8, 8); - Config.init("", [{prop: "Version", name: "Version", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "KeepAliveInterval", name: "KeepAliveInterval", embedded: false, exported: true, typ: time.Duration, tag: ""}, {prop: "KeepAliveTimeout", name: "KeepAliveTimeout", embedded: false, exported: true, typ: time.Duration, tag: ""}, {prop: "MaxFrameSize", name: "MaxFrameSize", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxReceiveBuffer", name: "MaxReceiveBuffer", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxStreamBuffer", name: "MaxStreamBuffer", embedded: false, exported: true, typ: $Int, tag: ""}]); - writeRequest.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "prio", name: "prio", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "frame", name: "frame", embedded: false, exported: false, typ: Frame, tag: ""}, {prop: "result", name: "result", embedded: false, exported: false, typ: chanType, tag: ""}]); - writeResult.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "n", name: "n", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); - buffersWriter.init([{prop: "WriteBuffers", name: "WriteBuffers", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}]); - Session.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "conn", name: "conn", embedded: false, exported: false, typ: io.ReadWriteCloser, tag: ""}, {prop: "config", name: "config", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "nextStreamID", name: "nextStreamID", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nextStreamIDLock", name: "nextStreamIDLock", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "bucket", name: "bucket", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "bucketNotify", name: "bucketNotify", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "streams", name: "streams", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "streamLock", name: "streamLock", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "die", name: "die", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "dieOnce", name: "dieOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "socketReadError", name: "socketReadError", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "socketWriteError", name: "socketWriteError", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "chSocketReadError", name: "chSocketReadError", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "chSocketWriteError", name: "chSocketWriteError", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "socketReadErrorOnce", name: "socketReadErrorOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "socketWriteErrorOnce", name: "socketWriteErrorOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "protoError", name: "protoError", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "chProtoError", name: "chProtoError", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "protoErrorOnce", name: "protoErrorOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "chAccepts", name: "chAccepts", embedded: false, exported: false, typ: chanType$3, tag: ""}, {prop: "dataReady", name: "dataReady", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "goAway", name: "goAway", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "deadline", name: "deadline", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "shaper", name: "shaper", embedded: false, exported: false, typ: chanType$4, tag: ""}, {prop: "writes", name: "writes", embedded: false, exported: false, typ: chanType$4, tag: ""}]); - shaperHeap.init(writeRequest); - Stream.init("github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux", [{prop: "id", name: "id", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "sess", name: "sess", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "buffers", name: "buffers", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "heads", name: "heads", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "bufferLock", name: "bufferLock", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "frameSize", name: "frameSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "chReadEvent", name: "chReadEvent", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "die", name: "die", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "dieOnce", name: "dieOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "chFinEvent", name: "chFinEvent", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "finEventOnce", name: "finEventOnce", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "readDeadline", name: "readDeadline", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "writeDeadline", name: "writeDeadline", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "numRead", name: "numRead", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "numWritten", name: "numWritten", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "incr", name: "incr", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "peerConsumed", name: "peerConsumed", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "peerWindow", name: "peerWindow", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "chUpdate", name: "chUpdate", embedded: false, exported: false, typ: chanType$2, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = heap.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = net.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = atomic.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - defaultAllocator = ptrType.nil; - debruijinPos = $toNativeArray($kindUint8, [0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31]); - $pkg.ErrInvalidProtocol = errors.New("invalid protocol"); - $pkg.ErrConsumed = errors.New("peer consumed more than sent"); - $pkg.ErrGoAway = errors.New("stream id overflows, should start a new connection"); - $pkg.ErrTimeout = errors.New("timeout"); - $pkg.ErrWouldBlock = errors.New("operation would block on IO"); - init(); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/bridge"] = (function() { - var $pkg = {}, $init, fmt, proto, websocket, smux, io, time, Settings, sliceType, ptrType, Bridge; - fmt = $packages["fmt"]; - proto = $packages["github.com/xiaokangwang/BrowserBridge/proto"]; - websocket = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/gopherjs/websocket"]; - smux = $packages["github.com/xiaokangwang/BrowserBridge/vendor/github.com/xtaci/smux"]; - io = $packages["io"]; - time = $packages["time"]; - Settings = $pkg.Settings = $newType(0, $kindStruct, "bridge.Settings", true, "github.com/xiaokangwang/BrowserBridge/bridge", true, function(DialAddr_) { - this.$val = this; - if (arguments.length === 0) { - this.DialAddr = ""; - return; - } - this.DialAddr = DialAddr_; - }); - sliceType = $sliceType($emptyInterface); - ptrType = $ptrType(smux.Config); - Bridge = function(s) { - var DoConnect, _r, delay, s, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; DoConnect = $f.DoConnect; _r = $f._r; delay = $f.delay; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - s = [s]; - /* while (true) { */ case 1: - delay = time.NewTimer(new time.Duration(0, 1000000000)); - DoConnect = (function(s) { return function $b() { - var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, conn, err, err$1, smuxc, stream, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; conn = $f.conn; err = $f.err; err$1 = $f.err$1; smuxc = $f.smuxc; stream = $f.stream; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = websocket.Dial(s[0].DialAddr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - conn = _tuple[0]; - err = _tuple[1]; - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: - _r$1 = fmt.Println(new sliceType([err, new $String(s[0].DialAddr)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $s = -1; return; - /* } */ case 3: - _r$2 = smux.Client(conn, ptrType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - _tuple$1 = _r$2; - smuxc = _tuple$1[0]; - err = _tuple$1[1]; - if (!($interfaceIsEqual(err, $ifaceNil))) { - $s = -1; return; - } - /* while (true) { */ case 6: - stream = [stream]; - _r$3 = smuxc.Accept(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _tuple$2 = _r$3; - stream[0] = _tuple$2[0]; - err$1 = _tuple$2[1]; - /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9: - _r$4 = fmt.Println(new sliceType([err$1])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _r$4; - $s = -1; return; - /* } */ case 10: - $go((function(s, stream) { return function $b() { - var _r$10, _r$11, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple$3, _tuple$4, conn2, err$2, req, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; conn2 = $f.conn2; err$2 = $f.err$2; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r$5 = proto.ReadRequest(stream[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } - _tuple$3 = _r$5; - err$2 = _tuple$3[0]; - req = _tuple$3[1]; - /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 2: - _r$6 = fmt.Println(new sliceType([err$2])); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } - _r$6; - $s = -1; return; - /* } */ case 3: - _r$7 = websocket.Dial(req.Destination); /* */ $s = 5; case 5: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } - _tuple$4 = _r$7; - conn2 = _tuple$4[0]; - err$2 = _tuple$4[1]; - /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 6: - _r$8 = fmt.Println(new sliceType([err$2])); /* */ $s = 8; case 8: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } - _r$8; - _r$9 = stream[0].Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } - _r$9; - $s = -1; return; - /* } */ case 7: - $go(io.Copy, [stream[0], conn2]); - _r$10 = io.Copy(conn2, stream[0]); /* */ $s = 10; case 10: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } - _r$10; - _r$11 = stream[0].Close(); /* */ $s = 11; case 11: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } - _r$11; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.conn2 = conn2; $f.err$2 = err$2; $f.req = req; $f.$s = $s; $f.$r = $r; return $f; - }; })(s, stream), []); - /* } */ $s = 6; continue; case 7: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.conn = conn; $f.err = err; $f.err$1 = err$1; $f.smuxc = smuxc; $f.stream = stream; $f.$s = $s; $f.$r = $r; return $f; - }; })(s); - $r = DoConnect(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r = $recv(delay.C); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r[0]; - /* } */ $s = 1; continue; case 2: - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Bridge }; } $f.DoConnect = DoConnect; $f._r = _r; $f.delay = delay; $f.s = s; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Bridge = Bridge; - Settings.init("", [{prop: "DialAddr", name: "DialAddr", embedded: false, exported: true, typ: $String, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = proto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = websocket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = smux.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["log"] = (function() { - var $pkg = {}, $init, fmt, nosync, io, os, runtime, time, Logger, sliceType, arrayType, ptrType, sliceType$1, ptrType$1, std, New, itoa, Println; - fmt = $packages["fmt"]; - nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; - io = $packages["io"]; - os = $packages["os"]; - runtime = $packages["runtime"]; - time = $packages["time"]; - Logger = $pkg.Logger = $newType(0, $kindStruct, "log.Logger", true, "log", true, function(mu_, prefix_, flag_, out_, buf_) { - this.$val = this; - if (arguments.length === 0) { - this.mu = new nosync.Mutex.ptr(false); - this.prefix = ""; - this.flag = 0; - this.out = $ifaceNil; - this.buf = sliceType.nil; - return; - } - this.mu = mu_; - this.prefix = prefix_; - this.flag = flag_; - this.out = out_; - this.buf = buf_; - }); - sliceType = $sliceType($Uint8); - arrayType = $arrayType($Uint8, 20); - ptrType = $ptrType(sliceType); - sliceType$1 = $sliceType($emptyInterface); - ptrType$1 = $ptrType(Logger); - New = function(out, prefix, flag) { - var flag, out, prefix; - return new Logger.ptr(new nosync.Mutex.ptr(false), prefix, flag, out, sliceType.nil); - }; - $pkg.New = New; - Logger.ptr.prototype.SetOutput = function(w) { - var l, w, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - l.out = w; - /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } - }; - Logger.prototype.SetOutput = function(w) { return this.$val.SetOutput(w); }; - itoa = function(buf, i, wid) { - var _q, b, bp, buf, i, q, wid; - b = arrayType.zero(); - bp = 19; - while (true) { - if (!(i >= 10 || wid > 1)) { break; } - wid = wid - (1) >> 0; - q = (_q = i / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); - ((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = ((((48 + i >> 0) - ($imul(q, 10)) >> 0) << 24 >>> 24))); - bp = bp - (1) >> 0; - i = q; - } - ((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = (((48 + i >> 0) << 24 >>> 24))); - buf.$set($appendSlice(buf.$get(), $subslice(new sliceType(b), bp))); - }; - Logger.ptr.prototype.formatHeader = function(buf, t, file, line) { - var _q, _r, _r$1, _tuple, _tuple$1, buf, day, file, hour, i, l, line, min, month, sec, short$1, t, year, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; day = $f.day; file = $f.file; hour = $f.hour; i = $f.i; l = $f.l; line = $f.line; min = $f.min; month = $f.month; sec = $f.sec; short$1 = $f.short$1; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - buf.$set($appendSlice(buf.$get(), l.prefix)); - /* */ if (!(((l.flag & 7) === 0))) { $s = 1; continue; } - /* */ $s = 2; continue; - /* if (!(((l.flag & 7) === 0))) { */ case 1: - if (!(((l.flag & 32) === 0))) { - time.Time.copy(t, $clone(t, time.Time).UTC()); - } - /* */ if (!(((l.flag & 1) === 0))) { $s = 3; continue; } - /* */ $s = 4; continue; - /* if (!(((l.flag & 1) === 0))) { */ case 3: - _r = $clone(t, time.Time).Date(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple = _r; - year = _tuple[0]; - month = _tuple[1]; - day = _tuple[2]; - itoa(buf, year, 4); - buf.$set($append(buf.$get(), 47)); - itoa(buf, ((month >> 0)), 2); - buf.$set($append(buf.$get(), 47)); - itoa(buf, day, 2); - buf.$set($append(buf.$get(), 32)); - /* } */ case 4: - /* */ if (!(((l.flag & 6) === 0))) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if (!(((l.flag & 6) === 0))) { */ case 6: - _r$1 = $clone(t, time.Time).Clock(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple$1 = _r$1; - hour = _tuple$1[0]; - min = _tuple$1[1]; - sec = _tuple$1[2]; - itoa(buf, hour, 2); - buf.$set($append(buf.$get(), 58)); - itoa(buf, min, 2); - buf.$set($append(buf.$get(), 58)); - itoa(buf, sec, 2); - if (!(((l.flag & 4) === 0))) { - buf.$set($append(buf.$get(), 46)); - itoa(buf, (_q = $clone(t, time.Time).Nanosecond() / 1000, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 6); - } - buf.$set($append(buf.$get(), 32)); - /* } */ case 7: - /* } */ case 2: - if (!(((l.flag & 24) === 0))) { - if (!(((l.flag & 16) === 0))) { - short$1 = file; - i = file.length - 1 >> 0; - while (true) { - if (!(i > 0)) { break; } - if (file.charCodeAt(i) === 47) { - short$1 = $substring(file, (i + 1 >> 0)); - break; - } - i = i - (1) >> 0; - } - file = short$1; - } - buf.$set($appendSlice(buf.$get(), file)); - buf.$set($append(buf.$get(), 58)); - itoa(buf, line, -1); - buf.$set($appendSlice(buf.$get(), ": ")); - } - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.formatHeader }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.day = day; $f.file = file; $f.hour = hour; $f.i = i; $f.l = l; $f.line = line; $f.min = min; $f.month = month; $f.sec = sec; $f.short$1 = short$1; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.formatHeader = function(buf, t, file, line) { return this.$val.formatHeader(buf, t, file, line); }; - Logger.ptr.prototype.Output = function(calldepth, s) { - var _r, _tuple, _tuple$1, calldepth, err, file, l, line, now, ok, s, $s, $deferred, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; calldepth = $f.calldepth; err = $f.err; file = $f.file; l = $f.l; line = $f.line; now = $f.now; ok = $f.ok; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - now = $clone(time.Now(), time.Time); - file = ""; - line = 0; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - if (!(((l.flag & 24) === 0))) { - l.mu.Unlock(); - ok = false; - _tuple = runtime.Caller(calldepth); - file = _tuple[1]; - line = _tuple[2]; - ok = _tuple[3]; - if (!ok) { - file = "???"; - line = 0; - } - l.mu.Lock(); - } - l.buf = $subslice(l.buf, 0, 0); - $r = l.formatHeader((l.$ptr_buf || (l.$ptr_buf = new ptrType(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, l))), $clone(now, time.Time), file, line); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - l.buf = $appendSlice(l.buf, s); - if ((s.length === 0) || !((s.charCodeAt((s.length - 1 >> 0)) === 10))) { - l.buf = $append(l.buf, 10); - } - _r = l.out.Write(l.buf); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _tuple$1 = _r; - err = _tuple$1[1]; - $s = -1; return err; - /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Output }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.calldepth = calldepth; $f.err = err; $f.file = file; $f.l = l; $f.line = line; $f.now = now; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } } - }; - Logger.prototype.Output = function(calldepth, s) { return this.$val.Output(calldepth, s); }; - Logger.ptr.prototype.Printf = function(format, v) { - var _arg, _r, _r$1, format, l, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Printf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Printf = function(format, v) { return this.$val.Printf(format, v); }; - Logger.ptr.prototype.Print = function(v) { - var _arg, _r, _r$1, l, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Print }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Print = function(v) { return this.$val.Print(v); }; - Logger.ptr.prototype.Println = function(v) { - var _arg, _r, _r$1, l, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Println }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Println = function(v) { return this.$val.Println(v); }; - Logger.ptr.prototype.Fatal = function(v) { - var _arg, _r, _r$1, l, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - os.Exit(1); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatal }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Fatal = function(v) { return this.$val.Fatal(v); }; - Logger.ptr.prototype.Fatalf = function(format, v) { - var _arg, _r, _r$1, format, l, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - os.Exit(1); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Fatalf = function(format, v) { return this.$val.Fatalf(format, v); }; - Logger.ptr.prototype.Fatalln = function(v) { - var _arg, _r, _r$1, l, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - os.Exit(1); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalln }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Fatalln = function(v) { return this.$val.Fatalln(v); }; - Logger.ptr.prototype.Panic = function(v) { - var _r, _r$1, l, s, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - s = _r; - _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $panic(new $String(s)); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panic }; } $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Panic = function(v) { return this.$val.Panic(v); }; - Logger.ptr.prototype.Panicf = function(format, v) { - var _r, _r$1, format, l, s, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - s = _r; - _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $panic(new $String(s)); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicf }; } $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Panicf = function(format, v) { return this.$val.Panicf(format, v); }; - Logger.ptr.prototype.Panicln = function(v) { - var _r, _r$1, l, s, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - l = this; - _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - s = _r; - _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $panic(new $String(s)); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicln }; } $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - Logger.prototype.Panicln = function(v) { return this.$val.Panicln(v); }; - Logger.ptr.prototype.Flags = function() { - var l, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - return l.flag; - /* */ } catch(err) { $err = err; return 0; } finally { $callDeferred($deferred, $err); } - }; - Logger.prototype.Flags = function() { return this.$val.Flags(); }; - Logger.ptr.prototype.SetFlags = function(flag) { - var flag, l, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - l.flag = flag; - /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } - }; - Logger.prototype.SetFlags = function(flag) { return this.$val.SetFlags(flag); }; - Logger.ptr.prototype.Prefix = function() { - var l, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - return l.prefix; - /* */ } catch(err) { $err = err; return ""; } finally { $callDeferred($deferred, $err); } - }; - Logger.prototype.Prefix = function() { return this.$val.Prefix(); }; - Logger.ptr.prototype.SetPrefix = function(prefix) { - var l, prefix, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - l.prefix = prefix; - /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); } - }; - Logger.prototype.SetPrefix = function(prefix) { return this.$val.SetPrefix(prefix); }; - Logger.ptr.prototype.Writer = function() { - var l, $deferred; - /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred); - l = this; - l.mu.Lock(); - $deferred.push([$methodVal(l.mu, "Unlock"), []]); - return l.out; - /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } - }; - Logger.prototype.Writer = function() { return this.$val.Writer(); }; - Println = function(v) { - var _arg, _r, _r$1, v, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _arg = _r; - _r$1 = std.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _r$1; - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: Println }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.Println = Println; - ptrType$1.methods = [{prop: "SetOutput", name: "SetOutput", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "formatHeader", name: "formatHeader", pkg: "log", typ: $funcType([ptrType, time.Time, $String, $Int], [], false)}, {prop: "Output", name: "Output", pkg: "", typ: $funcType([$Int, $String], [$error], false)}, {prop: "Printf", name: "Printf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Print", name: "Print", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Println", name: "Println", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatal", name: "Fatal", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatalf", name: "Fatalf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Fatalln", name: "Fatalln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panic", name: "Panic", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panicf", name: "Panicf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Panicln", name: "Panicln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Flags", name: "Flags", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetFlags", name: "SetFlags", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetPrefix", name: "SetPrefix", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Writer", name: "Writer", pkg: "", typ: $funcType([], [io.Writer], false)}]; - Logger.init("log", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "flag", name: "flag", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "out", name: "out", embedded: false, exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}]); - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - std = New(os.Stderr, "", 3); - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); -$packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"] = (function() { - var $pkg = {}, $init, fmt, js, bridge, log, url, sliceType, main; - fmt = $packages["fmt"]; - js = $packages["github.com/gopherjs/gopherjs/js"]; - bridge = $packages["github.com/xiaokangwang/BrowserBridge/bridge"]; - log = $packages["log"]; - url = $packages["net/url"]; - sliceType = $sliceType($emptyInterface); - main = function() { - var _r, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - _r = fmt.Println(new sliceType([new $String("V3")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } - _r; - $go((function $b() { - var _r$1, _r$2, _r$3, _tuple, err, host, link, urlw, $s, $r; - /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; err = $f.err; host = $f.host; link = $f.link; urlw = $f.urlw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - link = $internalize($global.window.location.href, $String); - _r$1 = url.Parse(link); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - _tuple = _r$1; - urlw = _tuple[0]; - err = _tuple[1]; - /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } - /* */ $s = 3; continue; - /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: - $r = log.Println(new sliceType([err])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* } */ case 3: - host = urlw.Host; - _r$2 = fmt.Sprintf("ws://%v/link", new sliceType([new $String(host)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - $r = log.Println(new sliceType([new $String(_r$2)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - _r$3 = fmt.Sprintf("ws://%v/link", new sliceType([new $String(host)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - $r = bridge.Bridge(new bridge.Settings.ptr(_r$3)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $global.location.reload(); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.host = host; $f.link = link; $f.urlw = urlw; $f.$s = $s; $f.$r = $r; return $f; - }), []); - $s = -1; return; - /* */ } return; } if ($f === undefined) { $f = { $blk: main }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f; - }; - $init = function() { - $pkg.$init = function() {}; - /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: - $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = bridge.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = log.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $r = url.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - /* */ if ($pkg === $mainPkg) { $s = 6; continue; } - /* */ $s = 7; continue; - /* if ($pkg === $mainPkg) { */ case 6: - $r = main(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } - $mainFinished = true; - /* } */ case 7: - /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; - }; - $pkg.$init = $init; - return $pkg; -})(); +var $global,$module;if(Error.stackTraceLimit=1/0,"undefined"!=typeof window?$global=window:"undefined"!=typeof self?$global=self:"undefined"!=typeof global?($global=global).require=require:$global=this,void 0===$global||void 0===$global.Array)throw new Error("no global object found");"undefined"!=typeof module&&($module=module);var $throwRuntimeError,$packages={},$idCounter=0,$keys=function(e){return e?Object.keys(e):[]},$flushConsole=function(){},$throwNilPointerError=function(){$throwRuntimeError("invalid memory address or nil pointer dereference")},$call=function(e,n,r){return e.apply(n,r)},$makeFunc=function(e){return function(){return $externalize(e(this,new($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments,[]))),$emptyInterface)}},$unused=function(e){},$mapArray=function(e,n){for(var r=new e.constructor(e.length),t=0;te.$capacity||t>e.$capacity)&&$throwRuntimeError("slice bounds out of range"),e===e.constructor.nil)return e;var i=new e.constructor(e.$array);return i.$offset=e.$offset+n,i.$length=r-n,i.$capacity=t-n,i},$substring=function(e,n,r){return(n<0||re.length)&&$throwRuntimeError("slice bounds out of range"),e.substring(n,r)},$sliceToArray=function(e){return e.$array.constructor!==Array?e.$array.subarray(e.$offset,e.$offset+e.$length):e.$array.slice(e.$offset,e.$offset+e.$length)},$decodeRune=function(e,n){var r=e.charCodeAt(n);if(r<128)return[r,1];if(r!=r||r<192)return[65533,1];var t=e.charCodeAt(n+1);if(t!=t||t<128||192<=t)return[65533,1];if(r<224)return(a=(31&r)<<6|63&t)<=127?[65533,1]:[a,2];var i=e.charCodeAt(n+2);if(i!=i||i<128||192<=i)return[65533,1];if(r<240)return(a=(15&r)<<12|(63&t)<<6|63&i)<=2047?[65533,1]:55296<=a&&a<=57343?[65533,1]:[a,3];var a,o=e.charCodeAt(n+3);return o!=o||o<128||192<=o?[65533,1]:r<248?(a=(7&r)<<18|(63&t)<<12|(63&i)<<6|63&o)<=65535||11141111114111||55296<=e&&e<=57343)&&(e=65533),e<=127?String.fromCharCode(e):e<=2047?String.fromCharCode(192|e>>6,128|63&e):e<=65535?String.fromCharCode(224|e>>12,128|e>>6&63,128|63&e):String.fromCharCode(240|e>>18,128|e>>12&63,128|e>>6&63,128|63&e)},$stringToBytes=function(e){for(var n=new Uint8Array(e.length),r=0;rt){for(var o=i-1;o>=0;o--)a.copy(e[r+o],n[t+o]);return}for(o=0;ot)for(o=i-1;o>=0;o--)e[r+o]=n[t+o];else for(o=0;o$)if(a=0,$=Math.max(o,e.$capacity<1024?2*e.$capacity:Math.floor(5*e.$capacity/4)),e.$array.constructor===Array){(i=e.$array.slice(e.$offset,e.$offset+e.$length)).length=$;for(var c=e.constructor.elem.zero,u=e.$length;u<$;u++)i[u]=c()}else(i=new e.$array.constructor($)).set(e.$array.subarray(e.$offset,e.$offset+e.$length));$copyArray(i,n,a+e.$length,r,t,e.constructor.elem);var l=new e.constructor(i);return l.$offset=a,l.$length=o,l.$capacity=$,l},$equal=function(e,n,r){if(r===$jsObjectPtr)return e===n;switch(r.kind){case $kindComplex64:case $kindComplex128:return e.$real===n.$real&&e.$imag===n.$imag;case $kindInt64:case $kindUint64:return e.$high===n.$high&&e.$low===n.$low;case $kindArray:if(e.length!==n.length)return!1;for(var t=0;t>>16&65535)*t+r*(n>>>16&65535)<<16>>>0)>>0},$floatKey=function(e){return e!=e?"NaN$"+ ++$idCounter:String(e)},$flatten64=function(e){return 4294967296*e.$high+e.$low},$shiftLeft64=function(e,n){return 0===n?e:n<32?new e.constructor(e.$high<>>32-n,e.$low<>>0):n<64?new e.constructor(e.$low<>n,(e.$low>>>n|e.$high<<32-n)>>>0):n<64?new e.constructor(e.$high>>31,e.$high>>n-32>>>0):e.$high<0?new e.constructor(-1,4294967295):new e.constructor(0,0)},$shiftRightUint64=function(e,n){return 0===n?e:n<32?new e.constructor(e.$high>>>n,(e.$low>>>n|e.$high<<32-n)>>>0):n<64?new e.constructor(0,e.$high>>>n-32):new e.constructor(0,0)},$mul64=function(e,n){var r=0,t=0;0!=(1&n.$low)&&(r=e.$high,t=e.$low);for(var i=1;i<32;i++)0!=(n.$low&1<>>32-i,t+=e.$low<>>0);for(i=0;i<32;i++)0!=(n.$high&1<$||a===$&&o>c);)$=($<<1|c>>>31)>>>0,c=c<<1>>>0,s++;for(var f=0;f<=s;f++)u=u<<1|l>>>31,l=l<<1>>>0,(a>$||a===$&&o>=c)&&(a-=$,(o-=c)<0&&(a--,o+=4294967296),4294967296===++l&&(u++,l=0)),c=(c>>>1|$<<31)>>>0,$>>>=1;return r?new e.constructor(a*i,o*i):new e.constructor(u*t,l*t)},$divComplex=function(e,n){var r=e.$real===1/0||e.$real===-1/0||e.$imag===1/0||e.$imag===-1/0,t=n.$real===1/0||n.$real===-1/0||n.$imag===1/0||n.$imag===-1/0,i=!r&&(e.$real!=e.$real||e.$imag!=e.$imag),a=!t&&(n.$real!=n.$real||n.$imag!=n.$imag);if(i||a)return new e.constructor(NaN,NaN);if(r&&!t)return new e.constructor(1/0,1/0);if(!r&&t)return new e.constructor(0,0);if(0===n.$real&&0===n.$imag)return 0===e.$real&&0===e.$imag?new e.constructor(NaN,NaN):new e.constructor(1/0,1/0);if(Math.abs(n.$real)<=Math.abs(n.$imag)){var o=n.$real/n.$imag,$=n.$real*o+n.$imag;return new e.constructor((e.$real*o+e.$imag)/$,(e.$imag*o-e.$real)/$)}o=n.$imag/n.$real,$=n.$imag*o+n.$real;return new e.constructor((e.$imag*o+e.$real)/$,(e.$imag-e.$real*o)/$)},$kindBool=1,$kindInt=2,$kindInt8=3,$kindInt16=4,$kindInt32=5,$kindInt64=6,$kindUint=7,$kindUint8=8,$kindUint16=9,$kindUint32=10,$kindUint64=11,$kindUintptr=12,$kindFloat32=13,$kindFloat64=14,$kindComplex64=15,$kindComplex128=16,$kindArray=17,$kindChan=18,$kindFunc=19,$kindInterface=20,$kindMap=21,$kindPtr=22,$kindSlice=23,$kindString=24,$kindStruct=25,$kindUnsafePointer=26,$methodSynthesizers=[],$addMethodSynthesizer=function(e){null!==$methodSynthesizers?$methodSynthesizers.push(e):e()},$synthesizeMethods=function(){$methodSynthesizers.forEach(function(e){e()}),$methodSynthesizers=null},$ifaceKeyFor=function(e){if(e===$ifaceNil)return"nil";var n=e.constructor;return n.string+"$"+n.keyFor(e.$val)},$identity=function(e){return e},$typeIDCounter=0,$idKey=function(e){return void 0===e.$id&&($idCounter++,e.$id=$idCounter),String(e.$id)},$newType=function(e,n,r,t,i,a,o){var $;switch(n){case $kindBool:case $kindInt:case $kindInt8:case $kindInt16:case $kindInt32:case $kindUint:case $kindUint8:case $kindUint16:case $kindUint32:case $kindUintptr:case $kindUnsafePointer:($=function(e){this.$val=e}).wrapped=!0,$.keyFor=$identity;break;case $kindString:($=function(e){this.$val=e}).wrapped=!0,$.keyFor=function(e){return"$"+e};break;case $kindFloat32:case $kindFloat64:($=function(e){this.$val=e}).wrapped=!0,$.keyFor=function(e){return $floatKey(e)};break;case $kindInt64:($=function(e,n){this.$high=e+Math.floor(Math.ceil(n)/4294967296)>>0,this.$low=n>>>0,this.$val=this}).keyFor=function(e){return e.$high+"$"+e.$low};break;case $kindUint64:($=function(e,n){this.$high=e+Math.floor(Math.ceil(n)/4294967296)>>>0,this.$low=n>>>0,this.$val=this}).keyFor=function(e){return e.$high+"$"+e.$low};break;case $kindComplex64:($=function(e,n){this.$real=$fround(e),this.$imag=$fround(n),this.$val=this}).keyFor=function(e){return e.$real+"$"+e.$imag};break;case $kindComplex128:($=function(e,n){this.$real=e,this.$imag=n,this.$val=this}).keyFor=function(e){return e.$real+"$"+e.$imag};break;case $kindArray:($=function(e){this.$val=e}).wrapped=!0,$.ptr=$newType(4,$kindPtr,"*"+r,!1,"",!1,function(e){this.$get=function(){return e},this.$set=function(e){$.copy(this,e)},this.$val=e}),$.init=function(e,n){$.elem=e,$.len=n,$.comparable=e.comparable,$.keyFor=function(n){return Array.prototype.join.call($mapArray(n,function(n){return String(e.keyFor(n)).replace(/\\/g,"\\\\").replace(/\$/g,"\\$")}),"$")},$.copy=function(n,r){$copyArray(n,r,0,0,r.length,e)},$.ptr.init($),Object.defineProperty($.ptr.nil,"nilCheck",{get:$throwNilPointerError})};break;case $kindChan:($=function(e){this.$val=e}).wrapped=!0,$.keyFor=$idKey,$.init=function(e,n,r){$.elem=e,$.sendOnly=n,$.recvOnly=r};break;case $kindFunc:($=function(e){this.$val=e}).wrapped=!0,$.init=function(e,n,r){$.params=e,$.results=n,$.variadic=r,$.comparable=!1};break;case $kindInterface:($={implementedBy:{},missingMethodFor:{}}).keyFor=$ifaceKeyFor,$.init=function(e){$.methods=e,e.forEach(function(e){$ifaceNil[e.prop]=$throwNilPointerError})};break;case $kindMap:($=function(e){this.$val=e}).wrapped=!0,$.init=function(e,n){$.key=e,$.elem=n,$.comparable=!1};break;case $kindPtr:($=o||function(e,n,r){this.$get=e,this.$set=n,this.$target=r,this.$val=this}).keyFor=$idKey,$.init=function(e){$.elem=e,$.wrapped=e.kind===$kindArray,$.nil=new $($throwNilPointerError,$throwNilPointerError)};break;case $kindSlice:($=function(e){e.constructor!==$.nativeArray&&(e=new $.nativeArray(e)),this.$array=e,this.$offset=0,this.$length=e.length,this.$capacity=e.length,this.$val=this}).init=function(e){$.elem=e,$.comparable=!1,$.nativeArray=$nativeArray(e.kind),$.nil=new $([])};break;case $kindStruct:($=function(e){this.$val=e}).wrapped=!0,$.ptr=$newType(4,$kindPtr,"*"+r,!1,i,a,o),$.ptr.elem=$,$.ptr.prototype.$get=function(){return this},$.ptr.prototype.$set=function(e){$.copy(this,e)},$.init=function(e,n){$.pkgPath=e,$.fields=n,n.forEach(function(e){e.typ.comparable||($.comparable=!1)}),$.keyFor=function(e){var r=e.$val;return $mapArray(n,function(e){return String(e.typ.keyFor(r[e.prop])).replace(/\\/g,"\\\\").replace(/\$/g,"\\$")}).join("$")},$.copy=function(e,r){for(var t=0;t0;){var a=[],o=[];t.forEach(function(e){if(!i[e.typ.string])switch(i[e.typ.string]=!0,e.typ.named&&(o=o.concat(e.typ.methods),e.indirect&&(o=o.concat($ptrType(e.typ).methods))),e.typ.kind){case $kindStruct:e.typ.fields.forEach(function(n){if(n.embedded){var r=n.typ,t=r.kind===$kindPtr;a.push({typ:t?r.elem:r,indirect:e.indirect||t})}});break;case $kindInterface:o=o.concat(e.typ.methods)}}),o.forEach(function(e){void 0===n[e.name]&&(n[e.name]=e)}),t=a}return e.methodSetCache=[],Object.keys(n).sort().forEach(function(r){e.methodSetCache.push(n[r])}),e.methodSetCache},$Bool=$newType(1,$kindBool,"bool",!0,"",!1,null),$Int=$newType(4,$kindInt,"int",!0,"",!1,null),$Int8=$newType(1,$kindInt8,"int8",!0,"",!1,null),$Int16=$newType(2,$kindInt16,"int16",!0,"",!1,null),$Int32=$newType(4,$kindInt32,"int32",!0,"",!1,null),$Int64=$newType(8,$kindInt64,"int64",!0,"",!1,null),$Uint=$newType(4,$kindUint,"uint",!0,"",!1,null),$Uint8=$newType(1,$kindUint8,"uint8",!0,"",!1,null),$Uint16=$newType(2,$kindUint16,"uint16",!0,"",!1,null),$Uint32=$newType(4,$kindUint32,"uint32",!0,"",!1,null),$Uint64=$newType(8,$kindUint64,"uint64",!0,"",!1,null),$Uintptr=$newType(4,$kindUintptr,"uintptr",!0,"",!1,null),$Float32=$newType(4,$kindFloat32,"float32",!0,"",!1,null),$Float64=$newType(8,$kindFloat64,"float64",!0,"",!1,null),$Complex64=$newType(8,$kindComplex64,"complex64",!0,"",!1,null),$Complex128=$newType(16,$kindComplex128,"complex128",!0,"",!1,null),$String=$newType(8,$kindString,"string",!0,"",!1,null),$UnsafePointer=$newType(4,$kindUnsafePointer,"unsafe.Pointer",!0,"",!1,null),$nativeArray=function(e){switch(e){case $kindInt:return Int32Array;case $kindInt8:return Int8Array;case $kindInt16:return Int16Array;case $kindInt32:return Int32Array;case $kindUint:return Uint32Array;case $kindUint8:return Uint8Array;case $kindUint16:return Uint16Array;case $kindUint32:case $kindUintptr:return Uint32Array;case $kindFloat32:return Float32Array;case $kindFloat64:return Float64Array;default:return Array}},$toNativeArray=function(e,n){var r=$nativeArray(e);return r===Array?n:new r(n)},$arrayTypes={},$arrayType=function(e,n){var r=e.id+"$"+n,t=$arrayTypes[r];return void 0===t&&(t=$newType(12,$kindArray,"["+n+"]"+e.string,!1,"",!1,null),$arrayTypes[r]=t,t.init(e,n)),t},$chanType=function(e,n,r){var t=(r?"<-":"")+"chan"+(n?"<- ":" ")+e.string,i=n?"SendChan":r?"RecvChan":"Chan",a=e[i];return void 0===a&&(a=$newType(4,$kindChan,t,!1,"",!1,null),e[i]=a,a.init(e,n,r)),a},$Chan=function(e,n){(n<0||n>2147483647)&&$throwRuntimeError("makechan: size out of range"),this.$elem=e,this.$capacity=n,this.$buffer=[],this.$sendQueue=[],this.$recvQueue=[],this.$closed=!1},$chanNil=new $Chan(null,0);$chanNil.$sendQueue=$chanNil.$recvQueue={length:0,push:function(){},shift:function(){},indexOf:function(){return-1}};var $funcTypes={},$funcType=function(e,n,r){var t=$mapArray(e,function(e){return e.id}).join(",")+"$"+$mapArray(n,function(e){return e.id}).join(",")+"$"+r,i=$funcTypes[t];if(void 0===i){var a=$mapArray(e,function(e){return e.string});r&&(a[a.length-1]="..."+a[a.length-1].substr(2));var o="func("+a.join(", ")+")";1===n.length?o+=" "+n[0].string:n.length>1&&(o+=" ("+$mapArray(n,function(e){return e.string}).join(", ")+")"),i=$newType(4,$kindFunc,o,!1,"",!1,null),$funcTypes[t]=i,i.init(e,n,r)}return i},$interfaceTypes={},$interfaceType=function(e){var n=$mapArray(e,function(e){return e.pkg+","+e.name+","+e.typ.id}).join("$"),r=$interfaceTypes[n];if(void 0===r){var t="interface {}";0!==e.length&&(t="interface { "+$mapArray(e,function(e){return(""!==e.pkg?e.pkg+".":"")+e.name+e.typ.string.substr(4)}).join("; ")+" }"),r=$newType(8,$kindInterface,t,!1,"",!1,null),$interfaceTypes[n]=r,r.init(e)}return r},$emptyInterface=$interfaceType([]),$ifaceNil={},$error=$newType(8,$kindInterface,"error",!0,"",!1,null);$error.init([{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],!1)}]);var $panicValue,$jsObjectPtr,$jsErrorPtr,$mapTypes={},$mapType=function(e,n){var r=e.id+"$"+n.id,t=$mapTypes[r];return void 0===t&&(t=$newType(4,$kindMap,"map["+e.string+"]"+n.string,!1,"",!1,null),$mapTypes[r]=t,t.init(e,n)),t},$makeMap=function(e,n){for(var r={},t=0;t2147483647)&&$throwRuntimeError("makeslice: len out of range"),(r<0||r2147483647)&&$throwRuntimeError("makeslice: cap out of range");var t=new e.nativeArray(r);if(e.nativeArray===Array)for(var i=0;i=$curGoroutine.deferStack.length)throw n;if(null!==n){var t=null;try{$curGoroutine.deferStack.push(e),$panic(new $jsErrorPtr(n))}catch(e){t=e}return $curGoroutine.deferStack.pop(),void $callDeferred(e,t)}if(!$curGoroutine.asleep){$stackDepthOffset--;var i=$panicStackDepth,a=$panicValue,o=$curGoroutine.panicStack.pop();void 0!==o&&($panicStackDepth=$getStackDepth(),$panicValue=o);try{for(;;){if(null===e&&void 0===(e=$curGoroutine.deferStack[$curGoroutine.deferStack.length-1])){if($panicStackDepth=null,o.Object instanceof Error)throw o.Object;var $;throw $=o.constructor===$String?o.$val:void 0!==o.Error?o.Error():void 0!==o.String?o.String():o,new Error($)}var c=e.pop();if(void 0===c){if($curGoroutine.deferStack.pop(),void 0!==o){e=null;continue}return}var u=c[0].apply(c[2],c[1]);if(u&&void 0!==u.$blk){if(e.push([u.$blk,[],u]),r)throw null;return}if(void 0!==o&&null===$panicStackDepth)throw null}}finally{void 0!==o&&(null!==$panicStackDepth&&$curGoroutine.panicStack.push(o),$panicStackDepth=i,$panicValue=a),$stackDepthOffset++}}},$panic=function(e){$curGoroutine.panicStack.push(e),$callDeferred(null,null,!0)},$recover=function(){return null===$panicStackDepth||void 0!==$panicStackDepth&&$panicStackDepth!==$getStackDepth()-2?$ifaceNil:($panicStackDepth=null,$panicValue)},$throw=function(e){throw e},$noGoroutine={asleep:!1,exit:!1,deferStack:[],panicStack:[]},$curGoroutine=$noGoroutine,$totalGoroutines=0,$awakeGoroutines=0,$checkForDeadlock=!0,$mainFinished=!1,$go=function(e,n){$totalGoroutines++,$awakeGoroutines++;var r=function(){try{$curGoroutine=r;var t=e.apply(void 0,n);if(t&&void 0!==t.$blk)return e=function(){return t.$blk()},void(n=[]);r.exit=!0}catch(e){if(!r.exit)throw e}finally{$curGoroutine=$noGoroutine,r.exit&&($totalGoroutines--,r.asleep=!0),r.asleep&&($awakeGoroutines--,!$mainFinished&&0===$awakeGoroutines&&$checkForDeadlock&&(console.error("fatal error: all goroutines are asleep - deadlock!"),void 0!==$global.process&&$global.process.exit(2)))}};r.asleep=!1,r.exit=!1,r.deferStack=[],r.panicStack=[],$schedule(r)},$scheduled=[],$runScheduled=function(){try{for(var e;void 0!==(e=$scheduled.shift());)e()}finally{$scheduled.length>0&&setTimeout($runScheduled,0)}},$schedule=function(e){e.asleep&&(e.asleep=!1,$awakeGoroutines++),$scheduled.push(e),$curGoroutine===$noGoroutine&&$runScheduled()},$setTimeout=function(e,n){return $awakeGoroutines++,setTimeout(function(){$awakeGoroutines--,e()},n)},$block=function(){$curGoroutine===$noGoroutine&&$throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine"),$curGoroutine.asleep=!0},$send=function(e,n){e.$closed&&$throwRuntimeError("send on closed channel");var r=e.$recvQueue.shift();if(void 0===r){if(!(e.$buffer.length65535){var u=Math.floor((c-65536)/1024)+55296,l=(c-65536)%1024+56320;$+=String.fromCharCode(u,l)}else $+=String.fromCharCode(c)}return $;case $kindStruct:var s=$packages.time;if(void 0!==s&&e.constructor===s.Time.ptr){var f=$div64(e.UnixNano(),new $Int64(0,1e6));return new Date($flatten64(f))}var d={},p=function(e,n){if(n===$jsObjectPtr)return e;switch(n.kind){case $kindPtr:return e===n.nil?d:p(e.$get(),n.elem);case $kindStruct:var r=n.fields[0];return p(e[r.prop],r.typ);case $kindInterface:return p(e.$val,e.constructor);default:return d}},h=p(e,n);if(h!==d)return h;h={};for(i=0;i>24;case $kindInt16:return parseInt(e)<<16>>16;case $kindInt32:return parseInt(e)>>0;case $kindUint:return parseInt(e);case $kindUint8:return parseInt(e)<<24>>>24;case $kindUint16:return parseInt(e)<<16>>>16;case $kindUint32:case $kindUintptr:return parseInt(e)>>>0;case $kindInt64:case $kindUint64:return new n(0,e);case $kindFloat32:case $kindFloat64:return parseFloat(e);case $kindArray:return e.length!==n.len&&$throwRuntimeError("got array with wrong size from JavaScript native"),$mapArray(e,function(e){return $internalize(e,n.elem)});case $kindFunc:return function(){for(var t=[],i=0;i=128)return!1;return!0}; + +$packages["github.com/gopherjs/gopherjs/js"]=(function(){var $pkg={},$init,A,B,L,N,Q,E,K;A=$pkg.Object=$newType(0,$kindStruct,"js.Object",true,"github.com/gopherjs/gopherjs/js",true,function(object_){this.$val=this;if(arguments.length===0){this.object=null;return;}this.object=object_;});B=$pkg.Error=$newType(0,$kindStruct,"js.Error",true,"github.com/gopherjs/gopherjs/js",true,function(Object_){this.$val=this;if(arguments.length===0){this.Object=null;return;}this.Object=Object_;});L=$sliceType($emptyInterface);N=$ptrType(A);Q=$ptrType(B);A.ptr.prototype.Get=function(a){var a,b;b=this;return b.object[$externalize(a,$String)];};A.prototype.Get=function(a){return this.$val.Get(a);};A.ptr.prototype.Set=function(a,b){var a,b,c;c=this;c.object[$externalize(a,$String)]=$externalize(b,$emptyInterface);};A.prototype.Set=function(a,b){return this.$val.Set(a,b);};A.ptr.prototype.Delete=function(a){var a,b;b=this;delete b.object[$externalize(a,$String)];};A.prototype.Delete=function(a){return this.$val.Delete(a);};A.ptr.prototype.Length=function(){var a;a=this;return $parseInt(a.object.length);};A.prototype.Length=function(){return this.$val.Length();};A.ptr.prototype.Index=function(a){var a,b;b=this;return b.object[a];};A.prototype.Index=function(a){return this.$val.Index(a);};A.ptr.prototype.SetIndex=function(a,b){var a,b,c;c=this;c.object[a]=$externalize(b,$emptyInterface);};A.prototype.SetIndex=function(a,b){return this.$val.SetIndex(a,b);};A.ptr.prototype.Call=function(a,b){var a,b,c,d;c=this;return(d=c.object,d[$externalize(a,$String)].apply(d,$externalize(b,L)));};A.prototype.Call=function(a,b){return this.$val.Call(a,b);};A.ptr.prototype.Invoke=function(a){var a,b;b=this;return b.object.apply(undefined,$externalize(a,L));};A.prototype.Invoke=function(a){return this.$val.Invoke(a);};A.ptr.prototype.New=function(a){var a,b;b=this;return new($global.Function.prototype.bind.apply(b.object,[undefined].concat($externalize(a,L))));};A.prototype.New=function(a){return this.$val.New(a);};A.ptr.prototype.Bool=function(){var a;a=this;return!!(a.object);};A.prototype.Bool=function(){return this.$val.Bool();};A.ptr.prototype.String=function(){var a;a=this;return $internalize(a.object,$String);};A.prototype.String=function(){return this.$val.String();};A.ptr.prototype.Int=function(){var a;a=this;return $parseInt(a.object)>>0;};A.prototype.Int=function(){return this.$val.Int();};A.ptr.prototype.Int64=function(){var a;a=this;return $internalize(a.object,$Int64);};A.prototype.Int64=function(){return this.$val.Int64();};A.ptr.prototype.Uint64=function(){var a;a=this;return $internalize(a.object,$Uint64);};A.prototype.Uint64=function(){return this.$val.Uint64();};A.ptr.prototype.Float=function(){var a;a=this;return $parseFloat(a.object);};A.prototype.Float=function(){return this.$val.Float();};A.ptr.prototype.Interface=function(){var a;a=this;return $internalize(a.object,$emptyInterface);};A.prototype.Interface=function(){return this.$val.Interface();};A.ptr.prototype.Unsafe=function(){var a;a=this;return a.object;};A.prototype.Unsafe=function(){return this.$val.Unsafe();};B.ptr.prototype.Error=function(){var a;a=this;return"JavaScript error: "+$internalize(a.Object.message,$String);};B.prototype.Error=function(){return this.$val.Error();};B.ptr.prototype.Stack=function(){var a;a=this;return $internalize(a.Object.stack,$String);};B.prototype.Stack=function(){return this.$val.Stack();};E=function(a){var a;return $makeFunc(a);};$pkg.MakeFunc=E;K=function(){var a;a=new B.ptr(null);$unused(a);};N.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([$String],[N],false)},{prop:"Set",name:"Set",pkg:"",typ:$funcType([$String,$emptyInterface],[],false)},{prop:"Delete",name:"Delete",pkg:"",typ:$funcType([$String],[],false)},{prop:"Length",name:"Length",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Index",name:"Index",pkg:"",typ:$funcType([$Int],[N],false)},{prop:"SetIndex",name:"SetIndex",pkg:"",typ:$funcType([$Int,$emptyInterface],[],false)},{prop:"Call",name:"Call",pkg:"",typ:$funcType([$String,L],[N],true)},{prop:"Invoke",name:"Invoke",pkg:"",typ:$funcType([L],[N],true)},{prop:"New",name:"New",pkg:"",typ:$funcType([L],[N],true)},{prop:"Bool",name:"Bool",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Int",name:"Int",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Int64",name:"Int64",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([],[$Uint64],false)},{prop:"Float",name:"Float",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Interface",name:"Interface",pkg:"",typ:$funcType([],[$emptyInterface],false)},{prop:"Unsafe",name:"Unsafe",pkg:"",typ:$funcType([],[$Uintptr],false)}];Q.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Stack",name:"Stack",pkg:"",typ:$funcType([],[$String],false)}];A.init("github.com/gopherjs/gopherjs/js",[{prop:"object",name:"object",embedded:false,exported:false,typ:N,tag:""}]);B.init("",[{prop:"Object",name:"Object",embedded:true,exported:true,typ:N,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:K();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/cpu"]=(function(){var $pkg={},$init;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/bytealg"]=(function(){var $pkg={},$init,A,B,I,K,M;A=$packages["internal/cpu"];B=function(b,c){var b,c,d,e,f,g;if(!((b.$length===c.$length))){return false;}d=b;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(!((g===((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f])))){return false;}e++;}return true;};$pkg.Equal=B;I=function(b,c){var b,c;$panic(new $String("unimplemented"));};$pkg.Index=I;K=function(b){var b;$panic(new $String("unimplemented"));};$pkg.Cutover=K;M=function(b,c){var b,c,d;d=0;while(true){if(!(d>0;}return-1;};$pkg.IndexByteString=M;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$pkg.MaxLen=0;}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["runtime/internal/sys"]=(function(){var $pkg={},$init;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["runtime"]=(function(){var $pkg={},$init,B,C,A,E,AQ,AR,AX,BF,F,G,I,O,V,AJ,AK;B=$packages["github.com/gopherjs/gopherjs/js"];C=$packages["internal/bytealg"];A=$packages["runtime/internal/sys"];E=$pkg._type=$newType(0,$kindStruct,"runtime._type",true,"runtime",false,function(str_){this.$val=this;if(arguments.length===0){this.str="";return;}this.str=str_;});AQ=$pkg.TypeAssertionError=$newType(0,$kindStruct,"runtime.TypeAssertionError",true,"runtime",true,function(_interface_,concrete_,asserted_,missingMethod_){this.$val=this;if(arguments.length===0){this._interface=AX.nil;this.concrete=AX.nil;this.asserted=AX.nil;this.missingMethod="";return;}this._interface=_interface_;this.concrete=concrete_;this.asserted=asserted_;this.missingMethod=missingMethod_;});AR=$pkg.errorString=$newType(8,$kindString,"runtime.errorString",true,"runtime",false,null);AX=$ptrType(E);BF=$ptrType(AQ);E.ptr.prototype.string=function(){var a;a=this;return a.str;};E.prototype.string=function(){return this.$val.string();};E.ptr.prototype.pkgpath=function(){var a;a=this;return"";};E.prototype.pkgpath=function(){return this.$val.pkgpath();};F=function(){var a,b;a=$packages[$externalize("github.com/gopherjs/gopherjs/js",$String)];$jsObjectPtr=a.Object.ptr;$jsErrorPtr=a.Error.ptr;$throwRuntimeError=AK;b=$ifaceNil;b=new AQ.ptr(AX.nil,AX.nil,AX.nil,"");$unused(b);};G=function(){var a,b,c;a=$global.process;if(a===undefined){return"/";}b=a.env.GOPHERJS_GOROOT;if(!(b===undefined)){return $internalize(b,$String);}else{c=a.env.GOROOT;if(!(c===undefined)){return $internalize(c,$String);}}return"/usr/local/go";};$pkg.GOROOT=G;I=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=0;c="";d=0;e=false;f=new($global.Error)().stack.split($externalize("\n",$String))[(a+2>>0)];if(f===undefined){g=0;h="";i=0;j=false;b=g;c=h;d=i;e=j;return[b,c,d,e];}k=f.substring(($parseInt(f.indexOf($externalize("(",$String)))>>0)+1>>0,$parseInt(f.indexOf($externalize(")",$String)))>>0).split($externalize(":",$String));l=0;m=$internalize(k[0],$String);n=$parseInt(k[1])>>0;o=true;b=l;c=m;d=n;e=o;return[b,c,d,e];};$pkg.Caller=I;O=function(){$curGoroutine.exit=$externalize(true,$Bool);$throw(null);};$pkg.Goexit=O;V=function(a,b){var a,b;};$pkg.SetFinalizer=V;AJ=function(a){var a;};$pkg.KeepAlive=AJ;AK=function(a){var a;$panic(new AR((a)));};AQ.ptr.prototype.RuntimeError=function(){};AQ.prototype.RuntimeError=function(){return this.$val.RuntimeError();};AQ.ptr.prototype.Error=function(){var a,b,c,d,e;a=this;b="interface";if(!(a._interface===AX.nil)){b=a._interface.string();}c=a.asserted.string();if(a.concrete===AX.nil){return"interface conversion: "+b+" is nil, not "+c;}d=a.concrete.string();if(a.missingMethod===""){e="interface conversion: "+b+" is "+d+", not "+c;if(d===c){if(!(a.concrete.pkgpath()===a.asserted.pkgpath())){e=e+(" (types from different packages)");}else{e=e+(" (types from different scopes)");}}return e;}return"interface conversion: "+d+" is not "+c+": missing method "+a.missingMethod;};AQ.prototype.Error=function(){return this.$val.Error();};AR.prototype.RuntimeError=function(){var a;a=this.$val;};$ptrType(AR).prototype.RuntimeError=function(){return new AR(this.$get()).RuntimeError();};AR.prototype.Error=function(){var a;a=this.$val;return"runtime error: "+(a);};$ptrType(AR).prototype.Error=function(){return new AR(this.$get()).Error();};AX.methods=[{prop:"string",name:"string",pkg:"runtime",typ:$funcType([],[$String],false)},{prop:"pkgpath",name:"pkgpath",pkg:"runtime",typ:$funcType([],[$String],false)}];BF.methods=[{prop:"RuntimeError",name:"RuntimeError",pkg:"",typ:$funcType([],[],false)},{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];AR.methods=[{prop:"RuntimeError",name:"RuntimeError",pkg:"",typ:$funcType([],[],false)},{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];E.init("runtime",[{prop:"str",name:"str",embedded:false,exported:false,typ:$String,tag:""}]);AQ.init("runtime",[{prop:"_interface",name:"_interface",embedded:false,exported:false,typ:AX,tag:""},{prop:"concrete",name:"concrete",embedded:false,exported:false,typ:AX,tag:""},{prop:"asserted",name:"asserted",embedded:false,exported:false,typ:AX,tag:""},{prop:"missingMethod",name:"missingMethod",embedded:false,exported:false,typ:$String,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}F();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["errors"]=(function(){var $pkg={},$init,B,C,A;B=$pkg.errorString=$newType(0,$kindStruct,"errors.errorString",true,"errors",false,function(s_){this.$val=this;if(arguments.length===0){this.s="";return;}this.s=s_;});C=$ptrType(B);A=function(a){var a;return new B.ptr(a);};$pkg.New=A;B.ptr.prototype.Error=function(){var a;a=this;return a.s;};B.prototype.Error=function(){return this.$val.Error();};C.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];B.init("errors",[{prop:"s",name:"s",embedded:false,exported:false,typ:$String,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["math/bits"]=(function(){var $pkg={},$init,I,J,BC,H,K,N,O,AM;H=function(a){var a;return 64-AM(a)>>0;};$pkg.LeadingZeros64=H;K=function(a){var a;if(true){return N(((a>>>0)));}return O((new $Uint64(0,a)));};$pkg.TrailingZeros=K;N=function(a){var a,b;if(a===0){return 32;}return(((b=($imul((((a&(-a>>>0))>>>0)),125613361)>>>0)>>>27>>>0,((b<0||b>=I.length)?($throwRuntimeError("index out of range"),undefined):I[b]))>>0));};$pkg.TrailingZeros32=N;O=function(a){var a,b,c;if((a.$high===0&&a.$low===0)){return 64;}return(((b=$shiftRightUint64($mul64(((c=new $Uint64(-a.$high,-a.$low),new $Uint64(a.$high&c.$high,(a.$low&c.$low)>>>0))),new $Uint64(66559345,3033172745)),58),(($flatten64(b)<0||$flatten64(b)>=J.length)?($throwRuntimeError("index out of range"),undefined):J[$flatten64(b)]))>>0));};$pkg.TrailingZeros64=O;AM=function(a){var a,b;b=0;if((a.$high>1||(a.$high===1&&a.$low>=0))){a=$shiftRightUint64(a,(32));b=32;}if((a.$high>0||(a.$high===0&&a.$low>=65536))){a=$shiftRightUint64(a,(16));b=b+(16)>>0;}if((a.$high>0||(a.$high===0&&a.$low>=256))){a=$shiftRightUint64(a,(8));b=b+(8)>>0;}b=b+(((($flatten64(a)<0||$flatten64(a)>=BC.length)?($throwRuntimeError("index out of range"),undefined):BC[$flatten64(a)])>>0))>>0;return b;};$pkg.Len64=AM;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:I=$toNativeArray($kindUint8,[0,1,28,2,29,14,24,3,30,22,20,15,25,17,4,8,31,27,13,23,21,19,16,7,26,12,18,6,11,5,10,9]);J=$toNativeArray($kindUint8,[0,1,56,2,57,49,28,3,61,58,42,50,38,29,17,4,62,47,59,36,45,43,51,22,53,39,33,30,24,18,12,5,63,55,48,27,60,41,37,16,46,35,44,21,52,32,23,11,54,26,40,15,34,20,31,10,25,14,19,9,13,8,7,6]);BC=$toNativeArray($kindUint8,[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["math"]=(function(){var $pkg={},$init,A,B,FV,FW,FX,FY,C,D,G,AY,V,AF,AZ,BA,BB,BC,BD;A=$packages["github.com/gopherjs/gopherjs/js"];B=$packages["math/bits"];FV=$arrayType($Uint32,2);FW=$arrayType($Float32,2);FX=$arrayType($Float64,1);FY=$structType("math",[{prop:"uint32array",name:"uint32array",embedded:false,exported:false,typ:FV,tag:""},{prop:"float32array",name:"float32array",embedded:false,exported:false,typ:FW,tag:""},{prop:"float64array",name:"float64array",embedded:false,exported:false,typ:FX,tag:""}]);V=function(av){var av;return $parseFloat(C.exp(av));};$pkg.Exp=V;AF=function(av){var av;if(!((av===av))){return G;}return $parseFloat(C.log(av));};$pkg.Log=AF;AZ=function(){var av;av=new($global.ArrayBuffer)(8);AY.uint32array=new($global.Uint32Array)(av);AY.float32array=new($global.Float32Array)(av);AY.float64array=new($global.Float64Array)(av);};BA=function(av){var av;AY.float32array[0]=av;return AY.uint32array[0];};$pkg.Float32bits=BA;BB=function(av){var av;AY.uint32array[0]=av;return AY.float32array[0];};$pkg.Float32frombits=BB;BC=function(av){var av,aw,ax;AY.float64array[0]=av;return(aw=$shiftLeft64((new $Uint64(0,AY.uint32array[1])),32),ax=(new $Uint64(0,AY.uint32array[0])),new $Uint64(aw.$high+ax.$high,aw.$low+ax.$low));};$pkg.Float64bits=BC;BD=function(av){var av;AY.uint32array[0]=((av.$low>>>0));AY.uint32array[1]=(($shiftRightUint64(av,32).$low>>>0));return AY.float64array[0];};$pkg.Float64frombits=BD;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}AY=new FY.ptr(FV.zero(),FW.zero(),FX.zero());C=$global.Math;D=0;G=0/D;AZ();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["unicode/utf8"]=(function(){var $pkg={},$init,B,A,C,F,G,H,I,J,K,L,M,N,P,Q;B=$pkg.acceptRange=$newType(0,$kindStruct,"utf8.acceptRange",true,"unicode/utf8",false,function(lo_,hi_){this.$val=this;if(arguments.length===0){this.lo=0;this.hi=0;return;}this.lo=lo_;this.hi=hi_;});F=function(a){var a,aa,ab,ac,ad,ae,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;b=0;c=0;d=a.$length;if(d<1){e=65533;f=0;b=e;c=f;return[b,c];}g=(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]);h=((g<0||g>=A.length)?($throwRuntimeError("index out of range"),undefined):A[g]);if(h>=240){i=(((h>>0))<<31>>0)>>31>>0;j=(((((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])>>0))&~i)>>0)|(65533&i);k=1;b=j;c=k;return[b,c];}l=(h&7)>>>0;n=$clone((m=h>>>4<<24>>>24,((m<0||m>=C.length)?($throwRuntimeError("index out of range"),undefined):C[m])),B);if(d<((l>>0))){o=65533;p=1;b=o;c=p;return[b,c];}q=(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]);if(q>>0)>>0))<<6>>0)|((((q&63)>>>0)>>0));u=2;b=t;c=u;return[b,c];}v=(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]);if(v<128||191>>0)>>0))<<12>>0)|(((((q&63)>>>0)>>0))<<6>>0))|((((v&63)>>>0)>>0));z=3;b=y;c=z;return[b,c];}aa=(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]);if(aa<128||191>>0)>>0))<<18>>0)|(((((q&63)>>>0)>>0))<<12>>0))|(((((v&63)>>>0)>>0))<<6>>0))|((((aa&63)>>>0)>>0));ae=4;b=ad;c=ae;return[b,c];};$pkg.DecodeRune=F;G=function(a){var a,aa,ab,ac,ad,ae,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;b=0;c=0;d=a.length;if(d<1){e=65533;f=0;b=e;c=f;return[b,c];}g=a.charCodeAt(0);h=((g<0||g>=A.length)?($throwRuntimeError("index out of range"),undefined):A[g]);if(h>=240){i=(((h>>0))<<31>>0)>>31>>0;j=((((a.charCodeAt(0)>>0))&~i)>>0)|(65533&i);k=1;b=j;c=k;return[b,c];}l=(h&7)>>>0;n=$clone((m=h>>>4<<24>>>24,((m<0||m>=C.length)?($throwRuntimeError("index out of range"),undefined):C[m])),B);if(d<((l>>0))){o=65533;p=1;b=o;c=p;return[b,c];}q=a.charCodeAt(1);if(q>>0)>>0))<<6>>0)|((((q&63)>>>0)>>0));u=2;b=t;c=u;return[b,c];}v=a.charCodeAt(2);if(v<128||191>>0)>>0))<<12>>0)|(((((q&63)>>>0)>>0))<<6>>0))|((((v&63)>>>0)>>0));z=3;b=y;c=z;return[b,c];}aa=a.charCodeAt(3);if(aa<128||191>>0)>>0))<<18>>0)|(((((q&63)>>>0)>>0))<<12>>0))|(((((v&63)>>>0)>>0))<<6>>0))|((((aa&63)>>>0)>>0));ae=4;b=ad;c=ae;return[b,c];};$pkg.DecodeRuneInString=G;H=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=0;c=0;d=a.$length;if(d===0){e=65533;f=0;b=e;c=f;return[b,c];}g=d-1>>0;b=((((g<0||g>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+g])>>0));if(b<128){h=b;i=1;b=h;c=i;return[b,c];}j=d-4>>0;if(j<0){j=0;}g=g-(1)>>0;while(true){if(!(g>=j)){break;}if(N(((g<0||g>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+g]))){break;}g=g-(1)>>0;}if(g<0){g=0;}k=F($subslice(a,g,d));b=k[0];c=k[1];if(!(((g+c>>0)===d))){l=65533;m=1;b=l;c=m;return[b,c];}n=b;o=c;b=n;c=o;return[b,c];};$pkg.DecodeLastRune=H;I=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=0;c=0;d=a.length;if(d===0){e=65533;f=0;b=e;c=f;return[b,c];}g=d-1>>0;b=((a.charCodeAt(g)>>0));if(b<128){h=b;i=1;b=h;c=i;return[b,c];}j=d-4>>0;if(j<0){j=0;}g=g-(1)>>0;while(true){if(!(g>=j)){break;}if(N(a.charCodeAt(g))){break;}g=g-(1)>>0;}if(g<0){g=0;}k=G($substring(a,g,d));b=k[0];c=k[1];if(!(((g+c>>0)===d))){l=65533;m=1;b=l;c=m;return[b,c];}n=b;o=c;b=n;c=o;return[b,c];};$pkg.DecodeLastRuneInString=I;J=function(a){var a;if(a<0){return-1;}else if(a<=127){return 1;}else if(a<=2047){return 2;}else if(55296<=a&&a<=57343){return-1;}else if(a<=65535){return 3;}else if(a<=1114111){return 4;}return-1;};$pkg.RuneLen=J;K=function(a,b){var a,b,c;c=((b>>>0));if(c<=127){(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((b<<24>>>24)));return 1;}else if(c<=2047){$unused((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((192|(((b>>6>>0)<<24>>>24)))>>>0));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=((128|((((b<<24>>>24))&63)>>>0))>>>0));return 2;}else if((c>1114111)||(55296<=c&&c<=57343)){b=65533;$unused((2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((224|(((b>>12>>0)<<24>>>24)))>>>0));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=((128|(((((b>>6>>0)<<24>>>24))&63)>>>0))>>>0));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=((128|((((b<<24>>>24))&63)>>>0))>>>0));return 3;}else if(c<=65535){$unused((2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((224|(((b>>12>>0)<<24>>>24)))>>>0));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=((128|(((((b>>6>>0)<<24>>>24))&63)>>>0))>>>0));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=((128|((((b<<24>>>24))&63)>>>0))>>>0));return 3;}else{$unused((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((240|(((b>>18>>0)<<24>>>24)))>>>0));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=((128|(((((b>>12>>0)<<24>>>24))&63)>>>0))>>>0));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=((128|(((((b>>6>>0)<<24>>>24))&63)>>>0))>>>0));(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]=((128|((((b<<24>>>24))&63)>>>0))>>>0));return 4;}};$pkg.EncodeRune=K;L=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=a.$length;c=0;d=0;while(true){if(!(d>0;e=((d<0||d>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+d]);if(e<128){d=d+(1)>>0;continue;}f=((e<0||e>=A.length)?($throwRuntimeError("index out of range"),undefined):A[e]);if(f===241){d=d+(1)>>0;continue;}g=((((f&7)>>>0)>>0));if((d+g>>0)>b){d=d+(1)>>0;continue;}i=$clone((h=f>>>4<<24>>>24,((h<0||h>=C.length)?($throwRuntimeError("index out of range"),undefined):C[h])),B);k=(j=d+1>>0,((j<0||j>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+j]));if(k>0,((l<0||l>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+l]));if(m<128||191>0,((n<0||n>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+n]));if(o<128||191>0;}return c;};$pkg.RuneCount=L;M=function(a){var a,b,c,d,e,f,g,h,i,j,k,l;b=0;c=a.length;d=0;while(true){if(!(d>0;b=b+(1)>>0;continue;}f=((e<0||e>=A.length)?($throwRuntimeError("index out of range"),undefined):A[e]);if(f===241){d=d+(1)>>0;b=b+(1)>>0;continue;}g=((((f&7)>>>0)>>0));if((d+g>>0)>c){d=d+(1)>>0;b=b+(1)>>0;continue;}i=$clone((h=f>>>4<<24>>>24,((h<0||h>=C.length)?($throwRuntimeError("index out of range"),undefined):C[h])),B);j=a.charCodeAt((d+1>>0));if(j>0));if(k<128||191>0));if(l<128||191>0;b=b+(1)>>0;}b=b;return b;};$pkg.RuneCountInString=M;N=function(a){var a;return!((((a&192)>>>0)===128));};$pkg.RuneStart=N;P=function(a){var a,b,c,d,e,f,g,h,i,j,k;b=a.length;c=0;while(true){if(!(c>0;continue;}e=((d<0||d>=A.length)?($throwRuntimeError("index out of range"),undefined):A[d]);if(e===241){return false;}f=((((e&7)>>>0)>>0));if((c+f>>0)>b){return false;}h=$clone((g=e>>>4<<24>>>24,((g<0||g>=C.length)?($throwRuntimeError("index out of range"),undefined):C[g])),B);i=a.charCodeAt((c+1>>0));if(i>0));if(j<128||191>0));if(k<128||191>0;}return true;};$pkg.ValidString=P;Q=function(a){var a;if(0<=a&&a<55296){return true;}else if(573431&&((a.charCodeAt(1)===120)||(a.charCodeAt(1)===88))){if(a.length<3){return[new $Uint64(0,0),V("ParseUint",d)];}b=16;a=$substring(a,2);}else if((a.charCodeAt(0)===48)){b=8;a=$substring(a,1);}else{b=10;}}else{return[new $Uint64(0,0),X("ParseUint",d,b)];}if(c===0){c=32;}else if(c<0||c>64){return[new $Uint64(0,0),Y("ParseUint",d,c)];}e=new $Uint64(0,0);f=b;if(f===(10)){e=new $Uint64(429496729,2576980378);}else if(f===(16)){e=new $Uint64(268435456,0);}else{e=(g=$div64(new $Uint64(4294967295,4294967295),(new $Uint64(0,b)),false),new $Uint64(g.$high+0,g.$low+1));}i=(h=$shiftLeft64(new $Uint64(0,1),((c>>>0))),new $Uint64(h.$high-0,h.$low-1));j=new $Uint64(0,0);k=(new DE($stringToBytes(a)));l=0;while(true){if(!(l=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+l]);n=0;if(48<=m&&m<=57){n=m-48<<24>>>24;}else if(97<=m&&m<=122){n=(m-97<<24>>>24)+10<<24>>>24;}else if(65<=m&&m<=90){n=(m-65<<24>>>24)+10<<24>>>24;}else{return[new $Uint64(0,0),V("ParseUint",d)];}if(n>=((b<<24>>>24))){return[new $Uint64(0,0),V("ParseUint",d)];}if((j.$high>e.$high||(j.$high===e.$high&&j.$low>=e.$low))){return[i,W("ParseUint",d)];}j=$mul64(j,((new $Uint64(0,b))));p=(o=(new $Uint64(0,n)),new $Uint64(j.$high+o.$high,j.$low+o.$low));if((p.$highi.$high||(p.$high===i.$high&&p.$low>i.$low))){return[i,W("ParseUint",d)];}j=p;l++;}return[j,$ifaceNil];};$pkg.ParseUint=Z;AA=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;d=new $Int64(0,0);e=$ifaceNil;if(a.length===0){f=new $Int64(0,0);g=V("ParseInt",a);d=f;e=g;return[d,e];}h=a;i=false;if(a.charCodeAt(0)===43){a=$substring(a,1);}else if(a.charCodeAt(0)===45){i=true;a=$substring(a,1);}j=new $Uint64(0,0);k=Z(a,b,c);j=k[0];e=k[1];if(!($interfaceIsEqual(e,$ifaceNil))&&!($interfaceIsEqual($assertType(e,DF).Err,$pkg.ErrRange))){$assertType(e,DF).Func="ParseInt";$assertType(e,DF).Num=h;l=new $Int64(0,0);m=e;d=l;e=m;return[d,e];}if(c===0){c=32;}n=($shiftLeft64(new $Uint64(0,1),(((c-1>>0)>>>0))));if(!i&&(j.$high>n.$high||(j.$high===n.$high&&j.$low>=n.$low))){o=((p=new $Uint64(n.$high-0,n.$low-1),new $Int64(p.$high,p.$low)));q=W("ParseInt",h);d=o;e=q;return[d,e];}if(i&&(j.$high>n.$high||(j.$high===n.$high&&j.$low>n.$low))){r=(s=(new $Int64(n.$high,n.$low)),new $Int64(-s.$high,-s.$low));t=W("ParseInt",h);d=r;e=t;return[d,e];}u=(new $Int64(j.$high,j.$low));if(i){u=new $Int64(-u.$high,-u.$low);}v=u;w=$ifaceNil;d=v;e=w;return[d,e];};$pkg.ParseInt=AA;AB=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m;b=a.length;if(true&&(0=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]);g=g-(48)<<24>>>24;if(g>9){return[0,new U.ptr("Atoi",c,$pkg.ErrSyntax)];}d=($imul(d,10))+((g>>0))>>0;f++;}if(c.charCodeAt(0)===45){d=-d;}return[d,$ifaceNil];}h=AA(a,10,0);i=h[0];j=h[1];k=$assertType(j,DF,true);l=k[0];m=k[1];if(m){l.Func="Atoi";}return[(((i.$low+((i.$high>>31)*4294967296))>>0)),j];};$pkg.Atoi=AB;AC.ptr.prototype.String=function(){var a,b,c,d;a=this;b=10+a.nd>>0;if(a.dp>0){b=b+(a.dp)>>0;}if(a.dp<0){b=b+(-a.dp)>>0;}c=$makeSlice(DE,b);d=0;if((a.nd===0)){return"0";}else if(a.dp<=0){((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=48);d=d+(1)>>0;((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=46);d=d+(1)>>0;d=d+(AD($subslice(c,d,(d+-a.dp>>0))))>>0;d=d+($copySlice($subslice(c,d),$subslice(new DE(a.d),0,a.nd)))>>0;}else if(a.dp>0;((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=46);d=d+(1)>>0;d=d+($copySlice($subslice(c,d),$subslice(new DE(a.d),a.dp,a.nd)))>>0;}else{d=d+($copySlice($subslice(c,d),$subslice(new DE(a.d),0,a.nd)))>>0;d=d+(AD($subslice(c,d,((d+a.dp>>0)-a.nd>>0))))>>0;}return($bytesToString($subslice(c,0,d)));};AC.prototype.String=function(){return this.$val.String();};AD=function(a){var a,b,c,d;b=a;c=0;while(true){if(!(c=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+d]=48);c++;}return a.$length;};AE=function(a){var a,b,c;while(true){if(!(a.nd>0&&((b=a.d,c=a.nd-1>>0,((c<0||c>=b.length)?($throwRuntimeError("index out of range"),undefined):b[c]))===48))){break;}a.nd=a.nd-(1)>>0;}if(a.nd===0){a.dp=0;}};AC.ptr.prototype.Assign=function(a){var a,b,c,d,e,f,g,h;b=this;c=DG.zero();d=0;while(true){if(!((a.$high>0||(a.$high===0&&a.$low>0)))){break;}e=$div64(a,new $Uint64(0,10),false);a=(f=$mul64(new $Uint64(0,10),e),new $Uint64(a.$high-f.$high,a.$low-f.$low));((d<0||d>=c.length)?($throwRuntimeError("index out of range"),undefined):c[d]=((new $Uint64(a.$high+0,a.$low+48).$low<<24>>>24)));d=d+(1)>>0;a=e;}b.nd=0;d=d-(1)>>0;while(true){if(!(d>=0)){break;}(g=b.d,h=b.nd,((h<0||h>=g.length)?($throwRuntimeError("index out of range"),undefined):g[h]=((d<0||d>=c.length)?($throwRuntimeError("index out of range"),undefined):c[d])));b.nd=b.nd+(1)>>0;d=d-(1)>>0;}b.dp=b.nd;AE(b);};AC.prototype.Assign=function(a){return this.$val.Assign(a);};AF=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;c=0;d=0;e=0;while(true){if(!(((f=b,f<32?(e>>>f):0)>>>0)===0)){break;}if(c>=a.nd){if(e===0){a.nd=0;return;}while(true){if(!(((g=b,g<32?(e>>>g):0)>>>0)===0)){break;}e=e*10>>>0;c=c+(1)>>0;}break;}i=(((h=a.d,((c<0||c>=h.length)?($throwRuntimeError("index out of range"),undefined):h[c]))>>>0));e=((e*10>>>0)+i>>>0)-48>>>0;c=c+(1)>>0;}a.dp=a.dp-((c-1>>0))>>0;k=(((j=b,j<32?(1<>>0))-1>>>0;while(true){if(!(c=l.length)?($throwRuntimeError("index out of range"),undefined):l[c]))>>>0));o=(n=b,n<32?(e>>>n):0)>>>0;e=(e&(k))>>>0;(p=a.d,((d<0||d>=p.length)?($throwRuntimeError("index out of range"),undefined):p[d]=(((o+48>>>0)<<24>>>24))));d=d+(1)>>0;e=((e*10>>>0)+m>>>0)-48>>>0;c=c+(1)>>0;}while(true){if(!(e>0)){break;}r=(q=b,q<32?(e>>>q):0)>>>0;e=(e&(k))>>>0;if(d<800){(s=a.d,((d<0||d>=s.length)?($throwRuntimeError("index out of range"),undefined):s[d]=(((r+48>>>0)<<24>>>24))));d=d+(1)>>0;}else if(r>0){a.trunc=true;}e=e*10>>>0;}a.nd=d;AE(a);};AI=function(a,b){var a,b,c;c=0;while(true){if(!(c=a.$length){return true;}if(!((((c<0||c>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+c])===b.charCodeAt(c)))){return((c<0||c>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+c])>0;}return false;};AJ=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=((b<0||b>=AH.$length)?($throwRuntimeError("index out of range"),undefined):AH.$array[AH.$offset+b]).delta;if(AI($subslice(new DE(a.d),0,a.nd),((b<0||b>=AH.$length)?($throwRuntimeError("index out of range"),undefined):AH.$array[AH.$offset+b]).cutoff)){c=c-(1)>>0;}d=a.nd;e=a.nd+c>>0;f=0;d=d-(1)>>0;while(true){if(!(d>=0)){break;}f=f+(((g=b,g<32?((((((h=a.d,((d<0||d>=h.length)?($throwRuntimeError("index out of range"),undefined):h[d]))>>>0))-48>>>0))<>>0))>>>0;j=(i=f/10,(i===i&&i!==1/0&&i!==-1/0)?i>>>0:$throwRuntimeError("integer divide by zero"));k=f-(10*j>>>0)>>>0;e=e-(1)>>0;if(e<800){(l=a.d,((e<0||e>=l.length)?($throwRuntimeError("index out of range"),undefined):l[e]=(((k+48>>>0)<<24>>>24))));}else if(!((k===0))){a.trunc=true;}f=j;d=d-(1)>>0;}while(true){if(!(f>0)){break;}n=(m=f/10,(m===m&&m!==1/0&&m!==-1/0)?m>>>0:$throwRuntimeError("integer divide by zero"));o=f-(10*n>>>0)>>>0;e=e-(1)>>0;if(e<800){(p=a.d,((e<0||e>=p.length)?($throwRuntimeError("index out of range"),undefined):p[e]=(((o+48>>>0)<<24>>>24))));}else if(!((o===0))){a.trunc=true;}f=n;}a.nd=a.nd+(c)>>0;if(a.nd>=800){a.nd=800;}a.dp=a.dp+(c)>>0;AE(a);};AC.ptr.prototype.Shift=function(a){var a,b;b=this;if((b.nd===0)){}else if(a>0){while(true){if(!(a>28)){break;}AJ(b,28);a=a-(28)>>0;}AJ(b,((a>>>0)));}else if(a<0){while(true){if(!(a<-28)){break;}AF(b,28);a=a+(28)>>0;}AF(b,((-a>>>0)));}};AC.prototype.Shift=function(a){return this.$val.Shift(a);};AK=function(a,b){var a,b,c,d,e,f,g;if(b<0||b>=a.nd){return false;}if(((c=a.d,((b<0||b>=c.length)?($throwRuntimeError("index out of range"),undefined):c[b]))===53)&&((b+1>>0)===a.nd)){if(a.trunc){return true;}return b>0&&!(((d=(((e=a.d,f=b-1>>0,((f<0||f>=e.length)?($throwRuntimeError("index out of range"),undefined):e[f]))-48<<24>>>24))%2,d===d?d:$throwRuntimeError("integer divide by zero"))===0));}return(g=a.d,((b<0||b>=g.length)?($throwRuntimeError("index out of range"),undefined):g[b]))>=53;};AC.ptr.prototype.Round=function(a){var a,b;b=this;if(a<0||a>=b.nd){return;}if(AK(b,a)){b.RoundUp(a);}else{b.RoundDown(a);}};AC.prototype.Round=function(a){return this.$val.Round(a);};AC.ptr.prototype.RoundDown=function(a){var a,b;b=this;if(a<0||a>=b.nd){return;}b.nd=a;AE(b);};AC.prototype.RoundDown=function(a){return this.$val.RoundDown(a);};AC.ptr.prototype.RoundUp=function(a){var a,b,c,d,e,f,g;b=this;if(a<0||a>=b.nd){return;}c=a-1>>0;while(true){if(!(c>=0)){break;}e=(d=b.d,((c<0||c>=d.length)?($throwRuntimeError("index out of range"),undefined):d[c]));if(e<57){(g=b.d,((c<0||c>=g.length)?($throwRuntimeError("index out of range"),undefined):g[c]=((f=b.d,((c<0||c>=f.length)?($throwRuntimeError("index out of range"),undefined):f[c]))+(1)<<24>>>24)));b.nd=c+1>>0;return;}c=c-(1)>>0;}b.d[0]=49;b.nd=1;b.dp=b.dp+(1)>>0;};AC.prototype.RoundUp=function(a){return this.$val.RoundUp(a);};AC.ptr.prototype.RoundedInteger=function(){var a,b,c,d,e,f,g;a=this;if(a.dp>20){return new $Uint64(4294967295,4294967295);}b=0;c=new $Uint64(0,0);b=0;while(true){if(!(b=f.length)?($throwRuntimeError("index out of range"),undefined):f[b]))-48<<24>>>24))),new $Uint64(d.$high+e.$high,d.$low+e.$low));b=b+(1)>>0;}while(true){if(!(b>0;}if(AK(a,a.dp)){c=(g=new $Uint64(0,1),new $Uint64(c.$high+g.$high,c.$low+g.$low));}return c;};AC.prototype.RoundedInteger=function(){return this.$val.RoundedInteger();};AL.ptr.prototype.AssignComputeBounds=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;e=new AL.ptr(new $Uint64(0,0),0,false);f=new AL.ptr(new $Uint64(0,0),0,false);g=this;g.mant=a;g.exp=b-((d.mantbits>>0))>>0;g.neg=c;if(g.exp<=0&&(h=$shiftLeft64(($shiftRightUint64(a,((-g.exp>>>0)))),((-g.exp>>>0))),(a.$high===h.$high&&a.$low===h.$low))){g.mant=$shiftRightUint64(g.mant,(((-g.exp>>>0))));g.exp=0;i=$clone(g,AL);j=$clone(g,AL);AL.copy(e,i);AL.copy(f,j);return[e,f];}k=b-d.bias>>0;AL.copy(f,new AL.ptr((l=$mul64(new $Uint64(0,2),g.mant),new $Uint64(l.$high+0,l.$low+1)),g.exp-1>>0,g.neg));if(!((m=$shiftLeft64(new $Uint64(0,1),d.mantbits),(a.$high===m.$high&&a.$low===m.$low)))||(k===1)){AL.copy(e,new AL.ptr((n=$mul64(new $Uint64(0,2),g.mant),new $Uint64(n.$high-0,n.$low-1)),g.exp-1>>0,g.neg));}else{AL.copy(e,new AL.ptr((o=$mul64(new $Uint64(0,4),g.mant),new $Uint64(o.$high-0,o.$low-1)),g.exp-2>>0,g.neg));}return[e,f];};AL.prototype.AssignComputeBounds=function(a,b,c,d){return this.$val.AssignComputeBounds(a,b,c,d);};AL.ptr.prototype.Normalize=function(){var a,b,c;a=this;if((b=a.mant,(b.$high===0&&b.$low===0))){return 0;}c=C.LeadingZeros64(a.mant);a.mant=$shiftLeft64(a.mant,(((c>>>0))));a.exp=a.exp-(c)>>0;return((c>>>0));};AL.prototype.Normalize=function(){return this.$val.Normalize();};AL.ptr.prototype.Multiply=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;b=this;c=$shiftRightUint64(b.mant,32);d=(new $Uint64(0,((b.mant.$low>>>0))));e=c;f=d;g=$shiftRightUint64(a.mant,32);h=(new $Uint64(0,((a.mant.$low>>>0))));i=g;j=h;k=$mul64(e,j);l=$mul64(f,i);b.mant=(m=(n=$mul64(e,i),o=$shiftRightUint64(k,32),new $Uint64(n.$high+o.$high,n.$low+o.$low)),p=$shiftRightUint64(l,32),new $Uint64(m.$high+p.$high,m.$low+p.$low));u=(q=(r=(new $Uint64(0,((k.$low>>>0)))),s=(new $Uint64(0,((l.$low>>>0)))),new $Uint64(r.$high+s.$high,r.$low+s.$low)),t=$shiftRightUint64(($mul64(f,j)),32),new $Uint64(q.$high+t.$high,q.$low+t.$low));u=(v=new $Uint64(0,2147483648),new $Uint64(u.$high+v.$high,u.$low+v.$low));b.mant=(w=b.mant,x=($shiftRightUint64(u,32)),new $Uint64(w.$high+x.$high,w.$low+x.$low));b.exp=(b.exp+a.exp>>0)+64>>0;};AL.prototype.Multiply=function(a){return this.$val.Multiply(a);};AL.ptr.prototype.AssignDecimal=function(a,b,c,d,e){var a,aa,ab,ac,ad,ae,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;f=false;g=this;h=0;if(d){h=h+(4)>>0;}g.mant=a;g.exp=0;g.neg=c;j=(i=((b- -348>>0))/8,(i===i&&i!==1/0&&i!==-1/0)?i>>0:$throwRuntimeError("integer divide by zero"));if(b<-348||j>=87){f=false;return f;}l=(k=((b- -348>>0))%8,k===k?k:$throwRuntimeError("integer divide by zero"));if(l<19&&(m=(n=19-l>>0,((n<0||n>=AO.length)?($throwRuntimeError("index out of range"),undefined):AO[n])),(a.$high=AO.length)?($throwRuntimeError("index out of range"),undefined):AO[l])));g.Normalize();}else{g.Normalize();g.Multiply($clone(((l<0||l>=AM.length)?($throwRuntimeError("index out of range"),undefined):AM[l]),AL));h=h+(4)>>0;}g.Multiply($clone(((j<0||j>=AN.length)?($throwRuntimeError("index out of range"),undefined):AN[j]),AL));if(h>0){h=h+(1)>>0;}h=h+(4)>>0;o=g.Normalize();h=(p=(o),p<32?(h<>0;q=e.bias-63>>0;r=0;if(g.exp<=q){r=((63-e.mantbits>>>0)+1>>>0)+(((q-g.exp>>0)>>>0))>>>0;}else{r=63-e.mantbits>>>0;}s=$shiftLeft64(new $Uint64(0,1),((r-1>>>0)));w=(t=g.mant,u=(v=$shiftLeft64(new $Uint64(0,1),r),new $Uint64(v.$high-0,v.$low-1)),new $Uint64(t.$high&u.$high,(t.$low&u.$low)>>>0));if((x=(y=(new $Int64(s.$high,s.$low)),z=(new $Int64(0,h)),new $Int64(y.$high-z.$high,y.$low-z.$low)),aa=(new $Int64(w.$high,w.$low)),(x.$high>0)),28))/93,(d===d&&d!==1/0&&d!==-1/0)?d>>0:$throwRuntimeError("integer divide by zero"));g=(f=((e- -348>>0))/8,(f===f&&f!==1/0&&f!==-1/0)?f>>0:$throwRuntimeError("integer divide by zero"));Loop:while(true){h=(c.exp+((g<0||g>=AN.length)?($throwRuntimeError("index out of range"),undefined):AN[g]).exp>>0)+64>>0;if(h<-60){g=g+(1)>>0;}else if(h>-32){g=g-(1)>>0;}else{break Loop;}}c.Multiply($clone(((g<0||g>=AN.length)?($throwRuntimeError("index out of range"),undefined):AN[g]),AL));i=-((-348+($imul(g,8))>>0));j=g;a=i;b=j;return[a,b];};AL.prototype.frexp10=function(){return this.$val.frexp10();};AP=function(a,b,c){var a,b,c,d,e,f;d=0;e=c.frexp10();d=e[0];f=e[1];a.Multiply($clone(((f<0||f>=AN.length)?($throwRuntimeError("index out of range"),undefined):AN[f]),AL));b.Multiply($clone(((f<0||f>=AN.length)?($throwRuntimeError("index out of range"),undefined):AN[f]),AL));return d;};AL.ptr.prototype.FixedDecimal=function(a,b){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;c=this;if((d=c.mant,(d.$high===0&&d.$low===0))){a.nd=0;a.dp=0;a.neg=c.neg;return true;}if(b===0){$panic(new $String("strconv: internal error: extFloat.FixedDecimal called with n == 0"));}c.Normalize();e=c.frexp10();f=e[0];g=((-c.exp>>>0));h=(($shiftRightUint64(c.mant,g).$low>>>0));k=(i=c.mant,j=$shiftLeft64((new $Uint64(0,h)),g),new $Uint64(i.$high-j.$high,i.$low-j.$low));l=new $Uint64(0,1);m=b;n=0;o=new $Uint64(0,1);p=0;q=new $Uint64(0,1);r=p;s=q;while(true){if(!(r<20)){break;}if((t=(new $Uint64(0,h)),(s.$high>t.$high||(s.$high===t.$high&&s.$low>t.$low)))){n=r;break;}s=$mul64(s,(new $Uint64(0,10)));r=r+(1)>>0;}u=h;if(n>m){o=(v=n-m>>0,((v<0||v>=AO.length)?($throwRuntimeError("index out of range"),undefined):AO[v]));h=(w=h/(((o.$low>>>0))),(w===w&&w!==1/0&&w!==-1/0)?w>>>0:$throwRuntimeError("integer divide by zero"));u=u-(($imul(h,((o.$low>>>0)))>>>0))>>>0;}else{u=0;}x=DH.zero();y=32;z=h;while(true){if(!(z>0)){break;}ab=(aa=z/10,(aa===aa&&aa!==1/0&&aa!==-1/0)?aa>>>0:$throwRuntimeError("integer divide by zero"));z=z-(($imul(10,ab)>>>0))>>>0;y=y-(1)>>0;((y<0||y>=x.length)?($throwRuntimeError("index out of range"),undefined):x[y]=(((z+48>>>0)<<24>>>24)));z=ab;}ac=y;while(true){if(!(ac<32)){break;}(ad=a.d,ae=ac-y>>0,((ae<0||ae>=ad.$length)?($throwRuntimeError("index out of range"),undefined):ad.$array[ad.$offset+ae]=((ac<0||ac>=x.length)?($throwRuntimeError("index out of range"),undefined):x[ac])));ac=ac+(1)>>0;}af=32-y>>0;a.nd=af;a.dp=n+f>>0;m=m-(af)>>0;if(m>0){if(!((u===0))||!((o.$high===0&&o.$low===1))){$panic(new $String("strconv: internal error, rest != 0 but needed > 0"));}while(true){if(!(m>0)){break;}k=$mul64(k,(new $Uint64(0,10)));l=$mul64(l,(new $Uint64(0,10)));if((ag=$mul64(new $Uint64(0,2),l),ah=$shiftLeft64(new $Uint64(0,1),g),(ag.$high>ah.$high||(ag.$high===ah.$high&&ag.$low>ah.$low)))){return false;}ai=$shiftRightUint64(k,g);(aj=a.d,((af<0||af>=aj.$length)?($throwRuntimeError("index out of range"),undefined):aj.$array[aj.$offset+af]=((new $Uint64(ai.$high+0,ai.$low+48).$low<<24>>>24))));k=(ak=$shiftLeft64(ai,g),new $Uint64(k.$high-ak.$high,k.$low-ak.$low));af=af+(1)>>0;m=m-(1)>>0;}a.nd=af;}am=AQ(a,(al=$shiftLeft64((new $Uint64(0,u)),g),new $Uint64(al.$high|k.$high,(al.$low|k.$low)>>>0)),o,g,l);if(!am){return false;}an=a.nd-1>>0;while(true){if(!(an>=0)){break;}if(!(((ao=a.d,((an<0||an>=ao.$length)?($throwRuntimeError("index out of range"),undefined):ao.$array[ao.$offset+an]))===48))){a.nd=an+1>>0;break;}an=an-(1)>>0;}return true;};AL.prototype.FixedDecimal=function(a,b){return this.$val.FixedDecimal(a,b);};AQ=function(a,b,c,d,e){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;if((f=$shiftLeft64(c,d),(b.$high>f.$high||(b.$high===f.$high&&b.$low>f.$low)))){$panic(new $String("strconv: num > den<h.$high||(g.$high===h.$high&&g.$low>h.$low)))){$panic(new $String("strconv: \xCE\xB5 > (den<l.$high||(k.$high===l.$high&&k.$low>l.$low)))){m=a.nd-1>>0;while(true){if(!(m>=0)){break;}if((n=a.d,((m<0||m>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+m]))===57){a.nd=a.nd-(1)>>0;}else{break;}m=m-(1)>>0;}if(m<0){(o=a.d,(0>=o.$length?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+0]=49));a.nd=1;a.dp=a.dp+(1)>>0;}else{(q=a.d,((m<0||m>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+m]=((p=a.d,((m<0||m>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+m]))+(1)<<24>>>24)));}return true;}return false;};AL.ptr.prototype.ShortestDecimal=function(a,b,c){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,bb,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;d=this;if((e=d.mant,(e.$high===0&&e.$low===0))){a.nd=0;a.dp=0;a.neg=d.neg;return true;}if((d.exp===0)&&$equal(b,d,AL)&&$equal(b,c,AL)){f=DG.zero();g=23;h=d.mant;while(true){if(!((h.$high>0||(h.$high===0&&h.$low>0)))){break;}i=$div64(h,new $Uint64(0,10),false);h=(j=$mul64(new $Uint64(0,10),i),new $Uint64(h.$high-j.$high,h.$low-j.$low));((g<0||g>=f.length)?($throwRuntimeError("index out of range"),undefined):f[g]=((new $Uint64(h.$high+0,h.$low+48).$low<<24>>>24)));g=g-(1)>>0;h=i;}k=(24-g>>0)-1>>0;l=0;while(true){if(!(l=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+l]=(m=(g+1>>0)+l>>0,((m<0||m>=f.length)?($throwRuntimeError("index out of range"),undefined):f[m]))));l=l+(1)>>0;}o=k;p=k;a.nd=o;a.dp=p;while(true){if(!(a.nd>0&&((q=a.d,r=a.nd-1>>0,((r<0||r>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+r]))===48))){break;}a.nd=a.nd-(1)>>0;}if(a.nd===0){a.dp=0;}a.neg=d.neg;return true;}c.Normalize();if(d.exp>c.exp){d.mant=$shiftLeft64(d.mant,((((d.exp-c.exp>>0)>>>0))));d.exp=c.exp;}if(b.exp>c.exp){b.mant=$shiftLeft64(b.mant,((((b.exp-c.exp>>0)>>>0))));b.exp=c.exp;}s=AP(b,d,c);c.mant=(t=c.mant,u=new $Uint64(0,1),new $Uint64(t.$high+u.$high,t.$low+u.$low));b.mant=(v=b.mant,w=new $Uint64(0,1),new $Uint64(v.$high-w.$high,v.$low-w.$low));x=((-c.exp>>>0));y=(($shiftRightUint64(c.mant,x).$low>>>0));ab=(z=c.mant,aa=$shiftLeft64((new $Uint64(0,y)),x),new $Uint64(z.$high-aa.$high,z.$low-aa.$low));ae=(ac=c.mant,ad=b.mant,new $Uint64(ac.$high-ad.$high,ac.$low-ad.$low));ah=(af=c.mant,ag=d.mant,new $Uint64(af.$high-ag.$high,af.$low-ag.$low));ai=0;aj=0;ak=new $Uint64(0,1);al=aj;am=ak;while(true){if(!(al<20)){break;}if((an=(new $Uint64(0,y)),(am.$high>an.$high||(am.$high===an.$high&&am.$low>an.$low)))){ai=al;break;}am=$mul64(am,(new $Uint64(0,10)));al=al+(1)>>0;}ao=0;while(true){if(!(ao>0)-1>>0,((ap<0||ap>=AO.length)?($throwRuntimeError("index out of range"),undefined):AO[ap]));as=(ar=y/((aq.$low>>>0)),(ar===ar&&ar!==1/0&&ar!==-1/0)?ar>>>0:$throwRuntimeError("integer divide by zero"));(at=a.d,((ao<0||ao>=at.$length)?($throwRuntimeError("index out of range"),undefined):at.$array[at.$offset+ao]=(((as+48>>>0)<<24>>>24))));y=y-(($imul(as,((aq.$low>>>0)))>>>0))>>>0;av=(au=$shiftLeft64((new $Uint64(0,y)),x),new $Uint64(au.$high+ab.$high,au.$low+ab.$low));if((av.$high>0;a.dp=ai+s>>0;a.neg=d.neg;return AR(a,av,ah,ae,$shiftLeft64(aq,x),new $Uint64(0,2));}ao=ao+(1)>>0;}a.nd=ai;a.dp=a.nd+s>>0;a.neg=d.neg;aw=0;ax=new $Uint64(0,1);while(true){ab=$mul64(ab,(new $Uint64(0,10)));ax=$mul64(ax,(new $Uint64(0,10)));aw=(($shiftRightUint64(ab,x).$low>>0));(ay=a.d,az=a.nd,((az<0||az>=ay.$length)?($throwRuntimeError("index out of range"),undefined):ay.$array[ay.$offset+az]=(((aw+48>>0)<<24>>>24))));a.nd=a.nd+(1)>>0;ab=(ba=$shiftLeft64((new $Uint64(0,aw)),x),new $Uint64(ab.$high-ba.$high,ab.$low-ba.$low));if((bb=$mul64(ae,ax),(ab.$high>0;(m=a.d,((k<0||k>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+k]=((l=a.d,((k<0||k>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+k]))-(1)<<24>>>24)));b=(n=e,new $Uint64(b.$high+n.$high,b.$low+n.$low));}if((o=new $Uint64(b.$high+e.$high,b.$low+e.$low),p=(q=(r=$div64(e,new $Uint64(0,2),false),new $Uint64(c.$high+r.$high,c.$low+r.$low)),new $Uint64(q.$high+f.$high,q.$low+f.$low)),(o.$highs.$high||(b.$high===s.$high&&b.$low>s.$low)))){return false;}if((a.nd===1)&&((t=a.d,(0>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+0]))===48)){a.nd=0;a.dp=0;}return true;};AW=function(a,b,c,d,e){var a,b,c,d,e;return AX(a,b,c,d,e);};$pkg.AppendFloat=AW;AX=function(a,b,c,d,e){var a,aa,ab,ac,ad,ae,af,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;f=new $Uint64(0,0);g=DI.nil;h=e;if(h===(32)){f=(new $Uint64(0,A.Float32bits(($fround(b)))));g=AT;}else if(h===(64)){f=A.Float64bits(b);g=AU;}else{$panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize"));}j=!((i=$shiftRightUint64(f,((g.expbits+g.mantbits>>>0))),(i.$high===0&&i.$low===0)));l=(($shiftRightUint64(f,g.mantbits).$low>>0))&((((k=g.expbits,k<32?(1<>0)-1>>0));o=(m=(n=$shiftLeft64(new $Uint64(0,1),g.mantbits),new $Uint64(n.$high-0,n.$low-1)),new $Uint64(f.$high&m.$high,(f.$low&m.$low)>>>0));p=l;if(p===((((q=g.expbits,q<32?(1<>0)-1>>0))){r="";if(!((o.$high===0&&o.$low===0))){r="NaN";}else if(j){r="-Inf";}else{r="+Inf";}return $appendSlice(a,r);}else if(p===(0)){l=l+(1)>>0;}else{o=(s=$shiftLeft64(new $Uint64(0,1),g.mantbits),new $Uint64(o.$high|s.$high,(o.$low|s.$low)>>>0));}l=l+(g.bias)>>0;if(c===98){return BE(a,j,o,l,g);}if(!I){return AY(a,d,c,j,o,l,g);}t=new BB.ptr(DE.nil,0,0,false);u=false;v=d<0;if(v){w=new AL.ptr(new $Uint64(0,0),0,false);x=w.AssignComputeBounds(o,l,j,g);y=$clone(x[0],AL);z=$clone(x[1],AL);aa=DH.zero();t.d=new DE(aa);u=w.ShortestDecimal(t,y,z);if(!u){return AY(a,d,c,j,o,l,g);}ab=c;if((ab===(101))||(ab===(69))){d=BG(t.nd-1>>0,0);}else if(ab===(102)){d=BG(t.nd-t.dp>>0,0);}else if((ab===(103))||(ab===(71))){d=t.nd;}}else if(!((c===102))){ac=d;ad=c;if((ad===(101))||(ad===(69))){ac=ac+(1)>>0;}else if((ad===(103))||(ad===(71))){if(d===0){d=1;}ac=d;}if(ac<=15){ae=DG.zero();t.d=new DE(ae);af=new AL.ptr(o,l-((g.mantbits>>0))>>0,j);u=af.FixedDecimal(t,ac);}}if(!u){return AY(a,d,c,j,o,l,g);}return AZ(a,v,j,$clone(t,BB),d,c);};AY=function(a,b,c,d,e,f,g){var a,b,c,d,e,f,g,h,i,j,k,l;h=new AC.ptr(DD.zero(),0,0,false,false);h.Assign(e);h.Shift(f-((g.mantbits>>0))>>0);i=new BB.ptr(DE.nil,0,0,false);j=b<0;if(j){BA(h,e,f,g);BB.copy(i,new BB.ptr(new DE(h.d),h.nd,h.dp,false));k=c;if((k===(101))||(k===(69))){b=i.nd-1>>0;}else if(k===(102)){b=BG(i.nd-i.dp>>0,0);}else if((k===(103))||(k===(71))){b=i.nd;}}else{l=c;if((l===(101))||(l===(69))){h.Round(b+1>>0);}else if(l===(102)){h.Round(h.dp+b>>0);}else if((l===(103))||(l===(71))){if(b===0){b=1;}h.Round(b);}BB.copy(i,new BB.ptr(new DE(h.d),h.nd,h.dp,false));}return AZ(a,j,d,$clone(i,BB),b,c);};AZ=function(a,b,c,d,e,f){var a,b,c,d,e,f,g,h,i;g=f;if((g===(101))||(g===(69))){return BC(a,c,$clone(d,BB),e,f);}else if(g===(102)){return BD(a,c,$clone(d,BB),e);}else if((g===(103))||(g===(71))){h=e;if(h>d.nd&&d.nd>=d.dp){h=d.nd;}if(b){h=6;}i=d.dp-1>>0;if(i<-4||i>=h){if(e>d.nd){e=d.nd;}return BC(a,c,$clone(d,BB),e-1>>0,(f+101<<24>>>24)-103<<24>>>24);}if(e>d.dp){e=d.nd;}return BD(a,c,$clone(d,BB),BG(e-d.dp>>0,0));}return $append(a,37,f);};BA=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;if((b.$high===0&&b.$low===0)){a.nd=0;return;}e=d.bias+1>>0;if(c>e&&($imul(332,((a.dp-a.nd>>0))))>=($imul(100,((c-((d.mantbits>>0))>>0))))){return;}f=new AC.ptr(DD.zero(),0,0,false,false);f.Assign((g=$mul64(b,new $Uint64(0,2)),new $Uint64(g.$high+0,g.$low+1)));f.Shift((c-((d.mantbits>>0))>>0)-1>>0);h=new $Uint64(0,0);i=0;if((j=$shiftLeft64(new $Uint64(0,1),d.mantbits),(b.$high>j.$high||(b.$high===j.$high&&b.$low>j.$low)))||(c===e)){h=new $Uint64(b.$high-0,b.$low-1);i=c;}else{h=(k=$mul64(b,new $Uint64(0,2)),new $Uint64(k.$high-0,k.$low-1));i=c-1>>0;}l=new AC.ptr(DD.zero(),0,0,false,false);l.Assign((m=$mul64(h,new $Uint64(0,2)),new $Uint64(m.$high+0,m.$low+1)));l.Shift((i-((d.mantbits>>0))>>0)-1>>0);o=(n=$div64(b,new $Uint64(0,2),true),(n.$high===0&&n.$low===0));p=0;while(true){if(!(p=r.length)?($throwRuntimeError("index out of range"),undefined):r[p]));}t=(s=a.d,((p<0||p>=s.length)?($throwRuntimeError("index out of range"),undefined):s[p]));u=48;if(p=v.length)?($throwRuntimeError("index out of range"),undefined):v[p]));}w=!((q===t))||o&&((p+1>>0)===l.nd);x=!((t===u))&&(o||(t+1<<24>>>24)>0)>0);return;}else if(w){a.RoundDown(p+1>>0);return;}else if(x){a.RoundUp(p+1>>0);return;}p=p+(1)>>0;}};BC=function(a,b,c,d,e){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(b){a=$append(a,45);}f=48;if(!((c.nd===0))){f=(g=c.d,(0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0]));}a=$append(a,f);if(d>0){a=$append(a,46);h=1;i=BF(c.nd,d+1>>0);if(h>0;}}a=$append(a,e);j=c.dp-1>>0;if(c.nd===0){j=0;}if(j<0){f=45;j=-j;}else{f=43;}a=$append(a,f);if(j<10){a=$append(a,48,((j<<24>>>24))+48<<24>>>24);}else if(j<100){a=$append(a,(((k=j/10,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero"))<<24>>>24))+48<<24>>>24,(((l=j%10,l===l?l:$throwRuntimeError("integer divide by zero"))<<24>>>24))+48<<24>>>24);}else{a=$append(a,(((m=j/100,(m===m&&m!==1/0&&m!==-1/0)?m>>0:$throwRuntimeError("integer divide by zero"))<<24>>>24))+48<<24>>>24,(n=(((o=j/10,(o===o&&o!==1/0&&o!==-1/0)?o>>0:$throwRuntimeError("integer divide by zero"))<<24>>>24))%10,n===n?n:$throwRuntimeError("integer divide by zero"))+48<<24>>>24,(((p=j%10,p===p?p:$throwRuntimeError("integer divide by zero"))<<24>>>24))+48<<24>>>24);}return a;};BD=function(a,b,c,d){var a,b,c,d,e,f,g,h,i;if(b){a=$append(a,45);}if(c.dp>0){e=BF(c.nd,c.dp);a=$appendSlice(a,$subslice(c.d,0,e));while(true){if(!(e>0;}}else{a=$append(a,48);}if(d>0){a=$append(a,46);f=0;while(true){if(!(f>0;if(0<=h&&h=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+h]));}a=$append(a,g);f=f+(1)>>0;}}return a;};BE=function(a,b,c,d,e){var a,b,c,d,e,f,g;if(b){a=$append(a,45);}f=BS(a,c,10,false,true);a=f[0];a=$append(a,112);d=d-(((e.mantbits>>0)))>>0;if(d>=0){a=$append(a,43);}g=BS(a,(new $Uint64(0,d)),10,d<0,true);a=g[0];return a;};BF=function(a,b){var a,b;if(ab){return a;}return b;};BM=function(a,b){var a,b,c,d;if(true&&(a.$high<0||(a.$high===0&&a.$low<100))&&(b===10)){return BR(((a.$low>>0)));}c=BS(DE.nil,a,b,false,false);d=c[1];return d;};$pkg.FormatUint=BM;BN=function(a,b){var a,b,c,d;if(true&&(0>31)*4294967296))>>0)));}c=BS(DE.nil,(new $Uint64(a.$high,a.$low)),b,(a.$high<0||(a.$high===0&&a.$low<0)),false);d=c[1];return d;};$pkg.FormatInt=BN;BO=function(a){var a;return BN((new $Int64(0,a)),10);};$pkg.Itoa=BO;BR=function(a){var a;if(a<10){return $substring("0123456789abcdefghijklmnopqrstuvwxyz",a,(a+1>>0));}return $substring("00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899",($imul(a,2)),(($imul(a,2))+2>>0));};BS=function(a,b,c,d,e){var a,aa,ab,ac,ad,ae,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;f=DE.nil;g="";if(c<2||c>36){$panic(new $String("strconv: illegal AppendInt/FormatInt base"));}h=DJ.zero();i=65;if(d){b=new $Uint64(-b.$high,-b.$low);}if(c===10){if(true){while(true){if(!((b.$high>0||(b.$high===0&&b.$low>=1000000000)))){break;}j=$div64(b,new $Uint64(0,1000000000),false);l=(((k=$mul64(j,new $Uint64(0,1000000000)),new $Uint64(b.$high-k.$high,b.$low-k.$low)).$low>>>0));m=4;while(true){if(!(m>0)){break;}o=(n=l%100,n===n?n:$throwRuntimeError("integer divide by zero"))*2>>>0;l=(p=l/(100),(p===p&&p!==1/0&&p!==-1/0)?p>>>0:$throwRuntimeError("integer divide by zero"));i=i-(2)>>0;(q=i+1>>0,((q<0||q>=h.length)?($throwRuntimeError("index out of range"),undefined):h[q]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((o+1>>>0))));(r=i+0>>0,((r<0||r>=h.length)?($throwRuntimeError("index out of range"),undefined):h[r]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((o+0>>>0))));m=m-(1)>>0;}i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(((l*2>>>0)+1>>>0)));b=j;}}s=((b.$low>>>0));while(true){if(!(s>=100)){break;}u=(t=s%100,t===t?t:$throwRuntimeError("integer divide by zero"))*2>>>0;s=(v=s/(100),(v===v&&v!==1/0&&v!==-1/0)?v>>>0:$throwRuntimeError("integer divide by zero"));i=i-(2)>>0;(w=i+1>>0,((w<0||w>=h.length)?($throwRuntimeError("index out of range"),undefined):h[w]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((u+1>>>0))));(x=i+0>>0,((x<0||x>=h.length)?($throwRuntimeError("index out of range"),undefined):h[x]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((u+0>>>0))));}y=s*2>>>0;i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((y+1>>>0)));if(s>=10){i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(y));}}else if(BT(c)){z=(((C.TrailingZeros(((c>>>0)))>>>0))&7)>>>0;aa=(new $Uint64(0,c));ab=((c>>>0))-1>>>0;while(true){if(!((b.$high>aa.$high||(b.$high===aa.$high&&b.$low>=aa.$low)))){break;}i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((((b.$low>>>0))&ab)>>>0)));b=$shiftRightUint64(b,(z));}i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((b.$low>>>0))));}else{ac=(new $Uint64(0,c));while(true){if(!((b.$high>ac.$high||(b.$high===ac.$high&&b.$low>=ac.$low)))){break;}i=i-(1)>>0;ad=$div64(b,ac,false);((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((ae=$mul64(ad,ac),new $Uint64(b.$high-ae.$high,b.$low-ae.$low)).$low>>>0))));b=ad;}i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]="0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((b.$low>>>0))));}if(d){i=i-(1)>>0;((i<0||i>=h.length)?($throwRuntimeError("index out of range"),undefined):h[i]=45);}if(e){f=$appendSlice(a,$subslice(new DE(h),i));return[f,g];}g=($bytesToString($subslice(new DE(h),i)));return[f,g];};BT=function(a){var a;return(a&((a-1>>0)))===0;};BU=function(a,b,c,d){var a,b,c,d,e;return($bytesToString(BW($makeSlice(DE,0,(e=($imul(3,a.length))/2,(e===e&&e!==1/0&&e!==-1/0)?e>>0:$throwRuntimeError("integer divide by zero"))),a,b,c,d)));};BW=function(a,b,c,d,e){var a,b,c,d,e,f,g,h;a=$append(a,c);f=0;while(true){if(!(b.length>0)){break;}g=((b.charCodeAt(0)>>0));f=1;if(g>=128){h=E.DecodeRuneInString(b);g=h[0];f=h[1];}if((f===1)&&(g===65533)){a=$appendSlice(a,"\\x");a=$append(a,"0123456789abcdef".charCodeAt((b.charCodeAt(0)>>>4<<24>>>24)));a=$append(a,"0123456789abcdef".charCodeAt(((b.charCodeAt(0)&15)>>>0)));b=$substring(b,f);continue;}a=BY(a,g,c,d,e);b=$substring(b,f);}a=$append(a,c);return a;};BX=function(a,b,c,d,e){var a,b,c,d,e;a=$append(a,c);if(!E.ValidRune(b)){b=65533;}a=BY(a,b,c,d,e);a=$append(a,c);return a;};BY=function(a,b,c,d,e){var a,b,c,d,e,f,g,h,i,j;f=DK.zero();if((b===((c>>0)))||(b===92)){a=$append(a,92);a=$append(a,((b<<24>>>24)));return a;}if(d){if(b<128&&CS(b)){a=$append(a,((b<<24>>>24)));return a;}}else if(CS(b)||e&&CU(b)){g=E.EncodeRune(new DE(f),b);a=$appendSlice(a,$subslice(new DE(f),0,g));return a;}h=b;if(h===(7)){a=$appendSlice(a,"\\a");}else if(h===(8)){a=$appendSlice(a,"\\b");}else if(h===(12)){a=$appendSlice(a,"\\f");}else if(h===(10)){a=$appendSlice(a,"\\n");}else if(h===(13)){a=$appendSlice(a,"\\r");}else if(h===(9)){a=$appendSlice(a,"\\t");}else if(h===(11)){a=$appendSlice(a,"\\v");}else{if(b<32){a=$appendSlice(a,"\\x");a=$append(a,"0123456789abcdef".charCodeAt((((b<<24>>>24))>>>4<<24>>>24)));a=$append(a,"0123456789abcdef".charCodeAt(((((b<<24>>>24))&15)>>>0)));}else if(b>1114111){b=65533;a=$appendSlice(a,"\\u");i=12;while(true){if(!(i>=0)){break;}a=$append(a,"0123456789abcdef".charCodeAt((((b>>$min(((i>>>0)),31))>>0)&15)));i=i-(4)>>0;}}else if(b<65536){a=$appendSlice(a,"\\u");i=12;while(true){if(!(i>=0)){break;}a=$append(a,"0123456789abcdef".charCodeAt((((b>>$min(((i>>>0)),31))>>0)&15)));i=i-(4)>>0;}}else{a=$appendSlice(a,"\\U");j=28;while(true){if(!(j>=0)){break;}a=$append(a,"0123456789abcdef".charCodeAt((((b>>$min(((j>>>0)),31))>>0)&15)));j=j-(4)>>0;}}}return a;};BZ=function(a){var a;return BU(a,34,false,false);};$pkg.Quote=BZ;CA=function(a,b){var a,b;return BW(a,b,34,false,false);};$pkg.AppendQuote=CA;CB=function(a){var a;return BU(a,34,true,false);};$pkg.QuoteToASCII=CB;CC=function(a,b){var a,b;return BW(a,b,34,true,false);};$pkg.AppendQuoteToASCII=CC;CG=function(a,b){var a,b;return BX(a,b,39,false,false);};$pkg.AppendQuoteRune=CG;CI=function(a,b){var a,b;return BX(a,b,39,true,false);};$pkg.AppendQuoteRuneToASCII=CI;CL=function(a){var a,b,c,d;while(true){if(!(a.length>0)){break;}b=E.DecodeRuneInString(a);c=b[0];d=b[1];a=$substring(a,d);if(d>1){if(c===65279){return false;}continue;}if(c===65533){return false;}if((c<32&&!((c===9)))||(c===96)||(c===127)){return false;}}return true;};$pkg.CanBackquote=CL;CM=function(a){var a,b,c,d,e,f,g,h,i,j;b=0;c=false;d=((a>>0));if(48<=d&&d<=57){e=d-48>>0;f=true;b=e;c=f;return[b,c];}else if(97<=d&&d<=102){g=(d-97>>0)+10>>0;h=true;b=g;c=h;return[b,c];}else if(65<=d&&d<=70){i=(d-65>>0)+10>>0;j=true;b=i;c=j;return[b,c];}return[b,c];};CN=function(a,b){var a,aa,ab,ac,ad,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;c=0;d=false;e="";f=$ifaceNil;if(a.length===0){f=$pkg.ErrSyntax;return[c,d,e,f];}g=a.charCodeAt(0);if((g===b)&&((b===39)||(b===34))){f=$pkg.ErrSyntax;return[c,d,e,f];}else if(g>=128){h=E.DecodeRuneInString(a);i=h[0];j=h[1];k=i;l=true;m=$substring(a,j);n=$ifaceNil;c=k;d=l;e=m;f=n;return[c,d,e,f];}else if(!((g===92))){o=((a.charCodeAt(0)>>0));p=false;q=$substring(a,1);r=$ifaceNil;c=o;d=p;e=q;f=r;return[c,d,e,f];}if(a.length<=1){f=$pkg.ErrSyntax;return[c,d,e,f];}s=a.charCodeAt(1);a=$substring(a,2);switch(0){default:t=s;if(t===(97)){c=7;}else if(t===(98)){c=8;}else if(t===(102)){c=12;}else if(t===(110)){c=10;}else if(t===(114)){c=13;}else if(t===(116)){c=9;}else if(t===(118)){c=11;}else if((t===(120))||(t===(117))||(t===(85))){u=0;v=s;if(v===(120)){u=2;}else if(v===(117)){u=4;}else if(v===(85)){u=8;}w=0;if(a.length>0)|z;x=x+(1)>>0;}a=$substring(a,u);if(s===120){c=w;break;}if(w>1114111){f=$pkg.ErrSyntax;return[c,d,e,f];}c=w;d=true;}else if((t===(48))||(t===(49))||(t===(50))||(t===(51))||(t===(52))||(t===(53))||(t===(54))||(t===(55))){ab=((s>>0))-48>>0;if(a.length<2){f=$pkg.ErrSyntax;return[c,d,e,f];}ac=0;while(true){if(!(ac<2)){break;}ad=((a.charCodeAt(ac)>>0))-48>>0;if(ad<0||ad>7){f=$pkg.ErrSyntax;return[c,d,e,f];}ab=((ab<<3>>0))|ad;ac=ac+(1)>>0;}a=$substring(a,2);if(ab>255){f=$pkg.ErrSyntax;return[c,d,e,f];}c=ab;}else if(t===(92)){c=92;}else if((t===(39))||(t===(34))){if(!((s===b))){f=$pkg.ErrSyntax;return[c,d,e,f];}c=((s>>0));}else{f=$pkg.ErrSyntax;return[c,d,e,f];}}e=a;return[c,d,e,f];};$pkg.UnquoteChar=CN;CO=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;b=a.length;if(b<2){return["",$pkg.ErrSyntax];}c=a.charCodeAt(0);if(!((c===a.charCodeAt((b-1>>0))))){return["",$pkg.ErrSyntax];}a=$substring(a,1,(b-1>>0));if(c===96){if(CP(a,96)){return["",$pkg.ErrSyntax];}if(CP(a,13)){d=$makeSlice(DE,0,(a.length-1>>0));e=0;while(true){if(!(e>0;}return[($bytesToString(d)),$ifaceNil];}return[a,$ifaceNil];}if(!((c===34))&&!((c===39))){return["",$pkg.ErrSyntax];}if(CP(a,10)){return["",$pkg.ErrSyntax];}if(!CP(a,92)&&!CP(a,c)){f=c;if(f===(34)){if(E.ValidString(a)){return[a,$ifaceNil];}}else if(f===(39)){g=E.DecodeRuneInString(a);h=g[0];i=g[1];if((i===a.length)&&(!((h===65533))||!((i===1)))){return[a,$ifaceNil];}}}j=DK.zero();l=$makeSlice(DE,0,(k=($imul(3,a.length))/2,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero")));while(true){if(!(a.length>0)){break;}m=CN(a,c);n=m[0];o=m[1];p=m[2];q=m[3];if(!($interfaceIsEqual(q,$ifaceNil))){return["",q];}a=p;if(n<128||!o){l=$append(l,((n<<24>>>24)));}else{r=E.EncodeRune(new DE(j),n);l=$appendSlice(l,$subslice(new DE(j),0,r));}if((c===39)&&!((a.length===0))){return["",$pkg.ErrSyntax];}}return[($bytesToString(l)),$ifaceNil];};$pkg.Unquote=CO;CP=function(a,b){var a,b;return!((D.IndexByteString(a,b)===-1));};CQ=function(a,b){var a,b,c,d,e,f,g,h;c=0;d=a.$length;e=c;f=d;while(true){if(!(e>0))/2,(g===g&&g!==1/0&&g!==-1/0)?g>>0:$throwRuntimeError("integer divide by zero"))>>0;if(((h<0||h>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+h])>0;}else{f=h;}}return e;};CR=function(a,b){var a,b,c,d,e,f,g,h;c=0;d=a.$length;e=c;f=d;while(true){if(!(e>0))/2,(g===g&&g!==1/0&&g!==-1/0)?g>>0:$throwRuntimeError("integer divide by zero"))>>0;if(((h<0||h>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+h])>0;}else{f=h;}}return e;};CS=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;if(a<=255){if(32<=a&&a<=126){return true;}if(161<=a&&a<=255){return!((a===173));}return false;}if(0<=a&&a<65536){b=((a<<16>>>16));c=BH;d=BI;e=b;f=c;g=d;h=CQ(f,e);if(h>=f.$length||e<(i=(h&~1)>>0,((i<0||i>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+i]))||(j=h|1,((j<0||j>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+j]))=g.$length||!((((k<0||k>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+k])===e));}l=((a>>>0));m=BJ;n=BK;o=l;p=m;q=n;r=CR(p,o);if(r>=p.$length||o<(s=(r&~1)>>0,((s<0||s>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+s]))||(t=r|1,((t<0||t>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+t]))=131072){return true;}a=a-(65536)>>0;u=CQ(q,((a<<16>>>16)));return u>=q.$length||!((((u<0||u>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+u])===((a<<16>>>16))));};$pkg.IsPrint=CS;CU=function(a){var a,b,c;if(a>65535){return false;}b=((a<<16>>>16));c=CQ(BL,b);return c=BL.$length)?($throwRuntimeError("index out of range"),undefined):BL.$array[BL.$offset+c]));};DF.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];DL.methods=[{prop:"set",name:"set",pkg:"strconv",typ:$funcType([$String],[$Bool],false)},{prop:"floatBits",name:"floatBits",pkg:"strconv",typ:$funcType([DI],[$Uint64,$Bool],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Assign",name:"Assign",pkg:"",typ:$funcType([$Uint64],[],false)},{prop:"Shift",name:"Shift",pkg:"",typ:$funcType([$Int],[],false)},{prop:"Round",name:"Round",pkg:"",typ:$funcType([$Int],[],false)},{prop:"RoundDown",name:"RoundDown",pkg:"",typ:$funcType([$Int],[],false)},{prop:"RoundUp",name:"RoundUp",pkg:"",typ:$funcType([$Int],[],false)},{prop:"RoundedInteger",name:"RoundedInteger",pkg:"",typ:$funcType([],[$Uint64],false)}];DN.methods=[{prop:"floatBits",name:"floatBits",pkg:"strconv",typ:$funcType([DI],[$Uint64,$Bool],false)},{prop:"AssignComputeBounds",name:"AssignComputeBounds",pkg:"",typ:$funcType([$Uint64,$Int,$Bool,DI],[AL,AL],false)},{prop:"Normalize",name:"Normalize",pkg:"",typ:$funcType([],[$Uint],false)},{prop:"Multiply",name:"Multiply",pkg:"",typ:$funcType([AL],[],false)},{prop:"AssignDecimal",name:"AssignDecimal",pkg:"",typ:$funcType([$Uint64,$Int,$Bool,$Bool,DI],[$Bool],false)},{prop:"frexp10",name:"frexp10",pkg:"strconv",typ:$funcType([],[$Int,$Int],false)},{prop:"FixedDecimal",name:"FixedDecimal",pkg:"",typ:$funcType([DM,$Int],[$Bool],false)},{prop:"ShortestDecimal",name:"ShortestDecimal",pkg:"",typ:$funcType([DM,DN,DN],[$Bool],false)}];U.init("",[{prop:"Func",name:"Func",embedded:false,exported:true,typ:$String,tag:""},{prop:"Num",name:"Num",embedded:false,exported:true,typ:$String,tag:""},{prop:"Err",name:"Err",embedded:false,exported:true,typ:$error,tag:""}]);AC.init("strconv",[{prop:"d",name:"d",embedded:false,exported:false,typ:DD,tag:""},{prop:"nd",name:"nd",embedded:false,exported:false,typ:$Int,tag:""},{prop:"dp",name:"dp",embedded:false,exported:false,typ:$Int,tag:""},{prop:"neg",name:"neg",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"trunc",name:"trunc",embedded:false,exported:false,typ:$Bool,tag:""}]);AG.init("strconv",[{prop:"delta",name:"delta",embedded:false,exported:false,typ:$Int,tag:""},{prop:"cutoff",name:"cutoff",embedded:false,exported:false,typ:$String,tag:""}]);AL.init("strconv",[{prop:"mant",name:"mant",embedded:false,exported:false,typ:$Uint64,tag:""},{prop:"exp",name:"exp",embedded:false,exported:false,typ:$Int,tag:""},{prop:"neg",name:"neg",embedded:false,exported:false,typ:$Bool,tag:""}]);AS.init("strconv",[{prop:"mantbits",name:"mantbits",embedded:false,exported:false,typ:$Uint,tag:""},{prop:"expbits",name:"expbits",embedded:false,exported:false,typ:$Uint,tag:""},{prop:"bias",name:"bias",embedded:false,exported:false,typ:$Int,tag:""}]);BB.init("strconv",[{prop:"d",name:"d",embedded:false,exported:false,typ:DE,tag:""},{prop:"nd",name:"nd",embedded:false,exported:false,typ:$Int,tag:""},{prop:"dp",name:"dp",embedded:false,exported:false,typ:$Int,tag:""},{prop:"neg",name:"neg",embedded:false,exported:false,typ:$Bool,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}I=true;$pkg.ErrRange=B.New("value out of range");$pkg.ErrSyntax=B.New("invalid syntax");AH=new DA([new AG.ptr(0,""),new AG.ptr(1,"5"),new AG.ptr(1,"25"),new AG.ptr(1,"125"),new AG.ptr(2,"625"),new AG.ptr(2,"3125"),new AG.ptr(2,"15625"),new AG.ptr(3,"78125"),new AG.ptr(3,"390625"),new AG.ptr(3,"1953125"),new AG.ptr(4,"9765625"),new AG.ptr(4,"48828125"),new AG.ptr(4,"244140625"),new AG.ptr(4,"1220703125"),new AG.ptr(5,"6103515625"),new AG.ptr(5,"30517578125"),new AG.ptr(5,"152587890625"),new AG.ptr(6,"762939453125"),new AG.ptr(6,"3814697265625"),new AG.ptr(6,"19073486328125"),new AG.ptr(7,"95367431640625"),new AG.ptr(7,"476837158203125"),new AG.ptr(7,"2384185791015625"),new AG.ptr(7,"11920928955078125"),new AG.ptr(8,"59604644775390625"),new AG.ptr(8,"298023223876953125"),new AG.ptr(8,"1490116119384765625"),new AG.ptr(9,"7450580596923828125"),new AG.ptr(9,"37252902984619140625"),new AG.ptr(9,"186264514923095703125"),new AG.ptr(10,"931322574615478515625"),new AG.ptr(10,"4656612873077392578125"),new AG.ptr(10,"23283064365386962890625"),new AG.ptr(10,"116415321826934814453125"),new AG.ptr(11,"582076609134674072265625"),new AG.ptr(11,"2910383045673370361328125"),new AG.ptr(11,"14551915228366851806640625"),new AG.ptr(12,"72759576141834259033203125"),new AG.ptr(12,"363797880709171295166015625"),new AG.ptr(12,"1818989403545856475830078125"),new AG.ptr(13,"9094947017729282379150390625"),new AG.ptr(13,"45474735088646411895751953125"),new AG.ptr(13,"227373675443232059478759765625"),new AG.ptr(13,"1136868377216160297393798828125"),new AG.ptr(14,"5684341886080801486968994140625"),new AG.ptr(14,"28421709430404007434844970703125"),new AG.ptr(14,"142108547152020037174224853515625"),new AG.ptr(15,"710542735760100185871124267578125"),new AG.ptr(15,"3552713678800500929355621337890625"),new AG.ptr(15,"17763568394002504646778106689453125"),new AG.ptr(16,"88817841970012523233890533447265625"),new AG.ptr(16,"444089209850062616169452667236328125"),new AG.ptr(16,"2220446049250313080847263336181640625"),new AG.ptr(16,"11102230246251565404236316680908203125"),new AG.ptr(17,"55511151231257827021181583404541015625"),new AG.ptr(17,"277555756156289135105907917022705078125"),new AG.ptr(17,"1387778780781445675529539585113525390625"),new AG.ptr(18,"6938893903907228377647697925567626953125"),new AG.ptr(18,"34694469519536141888238489627838134765625"),new AG.ptr(18,"173472347597680709441192448139190673828125"),new AG.ptr(19,"867361737988403547205962240695953369140625")]);AM=$toNativeArray($kindStruct,[new AL.ptr(new $Uint64(2147483648,0),-63,false),new AL.ptr(new $Uint64(2684354560,0),-60,false),new AL.ptr(new $Uint64(3355443200,0),-57,false),new AL.ptr(new $Uint64(4194304000,0),-54,false),new AL.ptr(new $Uint64(2621440000,0),-50,false),new AL.ptr(new $Uint64(3276800000,0),-47,false),new AL.ptr(new $Uint64(4096000000,0),-44,false),new AL.ptr(new $Uint64(2560000000,0),-40,false)]);AN=$toNativeArray($kindStruct,[new AL.ptr(new $Uint64(4203730336,136053384),-1220,false),new AL.ptr(new $Uint64(3132023167,2722021238),-1193,false),new AL.ptr(new $Uint64(2333539104,810921078),-1166,false),new AL.ptr(new $Uint64(3477244234,1573795306),-1140,false),new AL.ptr(new $Uint64(2590748842,1432697645),-1113,false),new AL.ptr(new $Uint64(3860516611,1025131999),-1087,false),new AL.ptr(new $Uint64(2876309015,3348809418),-1060,false),new AL.ptr(new $Uint64(4286034428,3200048207),-1034,false),new AL.ptr(new $Uint64(3193344495,1097586188),-1007,false),new AL.ptr(new $Uint64(2379227053,2424306748),-980,false),new AL.ptr(new $Uint64(3545324584,827693699),-954,false),new AL.ptr(new $Uint64(2641472655,2913388981),-927,false),new AL.ptr(new $Uint64(3936100983,602835915),-901,false),new AL.ptr(new $Uint64(2932623761,1081627501),-874,false),new AL.ptr(new $Uint64(2184974969,1572261463),-847,false),new AL.ptr(new $Uint64(3255866422,1308317239),-821,false),new AL.ptr(new $Uint64(2425809519,944281679),-794,false),new AL.ptr(new $Uint64(3614737867,629291719),-768,false),new AL.ptr(new $Uint64(2693189581,2545915892),-741,false),new AL.ptr(new $Uint64(4013165208,388672741),-715,false),new AL.ptr(new $Uint64(2990041083,708162190),-688,false),new AL.ptr(new $Uint64(2227754207,3536207675),-661,false),new AL.ptr(new $Uint64(3319612455,450088378),-635,false),new AL.ptr(new $Uint64(2473304014,3139815830),-608,false),new AL.ptr(new $Uint64(3685510180,2103616900),-582,false),new AL.ptr(new $Uint64(2745919064,224385782),-555,false),new AL.ptr(new $Uint64(4091738259,3737383206),-529,false),new AL.ptr(new $Uint64(3048582568,2868871352),-502,false),new AL.ptr(new $Uint64(2271371013,1820084875),-475,false),new AL.ptr(new $Uint64(3384606560,885076051),-449,false),new AL.ptr(new $Uint64(2521728396,2444895829),-422,false),new AL.ptr(new $Uint64(3757668132,1881767613),-396,false),new AL.ptr(new $Uint64(2799680927,3102062735),-369,false),new AL.ptr(new $Uint64(4171849679,2289335700),-343,false),new AL.ptr(new $Uint64(3108270227,2410191823),-316,false),new AL.ptr(new $Uint64(2315841784,3205436779),-289,false),new AL.ptr(new $Uint64(3450873173,1697722806),-263,false),new AL.ptr(new $Uint64(2571100870,3497754540),-236,false),new AL.ptr(new $Uint64(3831238852,707476230),-210,false),new AL.ptr(new $Uint64(2854495385,1769181907),-183,false),new AL.ptr(new $Uint64(4253529586,2197867022),-157,false),new AL.ptr(new $Uint64(3169126500,2450594539),-130,false),new AL.ptr(new $Uint64(2361183241,1867548876),-103,false),new AL.ptr(new $Uint64(3518437208,3793315116),-77,false),new AL.ptr(new $Uint64(2621440000,0),-50,false),new AL.ptr(new $Uint64(3906250000,0),-24,false),new AL.ptr(new $Uint64(2910383045,2892103680),3,false),new AL.ptr(new $Uint64(2168404344,4170451332),30,false),new AL.ptr(new $Uint64(3231174267,3372684723),56,false),new AL.ptr(new $Uint64(2407412430,2078956656),83,false),new AL.ptr(new $Uint64(3587324068,2884206696),109,false),new AL.ptr(new $Uint64(2672764710,395977285),136,false),new AL.ptr(new $Uint64(3982729777,3569679143),162,false),new AL.ptr(new $Uint64(2967364920,2361961896),189,false),new AL.ptr(new $Uint64(2210859150,447440347),216,false),new AL.ptr(new $Uint64(3294436857,1114709402),242,false),new AL.ptr(new $Uint64(2454546732,2786846552),269,false),new AL.ptr(new $Uint64(3657559652,443583978),295,false),new AL.ptr(new $Uint64(2725094297,2599384906),322,false),new AL.ptr(new $Uint64(4060706939,3028118405),348,false),new AL.ptr(new $Uint64(3025462433,2044532855),375,false),new AL.ptr(new $Uint64(2254145170,1536935362),402,false),new AL.ptr(new $Uint64(3358938053,3365297469),428,false),new AL.ptr(new $Uint64(2502603868,4204241075),455,false),new AL.ptr(new $Uint64(3729170365,2577424355),481,false),new AL.ptr(new $Uint64(2778448436,3677981733),508,false),new AL.ptr(new $Uint64(4140210802,2744688476),534,false),new AL.ptr(new $Uint64(3084697427,1424604878),561,false),new AL.ptr(new $Uint64(2298278679,4062331362),588,false),new AL.ptr(new $Uint64(3424702107,3546052773),614,false),new AL.ptr(new $Uint64(2551601907,2065781727),641,false),new AL.ptr(new $Uint64(3802183132,2535403578),667,false),new AL.ptr(new $Uint64(2832847187,1558426518),694,false),new AL.ptr(new $Uint64(4221271257,2762425404),720,false),new AL.ptr(new $Uint64(3145092172,2812560400),747,false),new AL.ptr(new $Uint64(2343276271,3057687578),774,false),new AL.ptr(new $Uint64(3491753744,2790753324),800,false),new AL.ptr(new $Uint64(2601559269,3918606633),827,false),new AL.ptr(new $Uint64(3876625403,2711358621),853,false),new AL.ptr(new $Uint64(2888311001,1648096297),880,false),new AL.ptr(new $Uint64(2151959390,2057817989),907,false),new AL.ptr(new $Uint64(3206669376,61660461),933,false),new AL.ptr(new $Uint64(2389154863,1581580175),960,false),new AL.ptr(new $Uint64(3560118173,2626467905),986,false),new AL.ptr(new $Uint64(2652494738,3034782633),1013,false),new AL.ptr(new $Uint64(3952525166,3135207385),1039,false),new AL.ptr(new $Uint64(2944860731,2616258155),1066,false)]);AO=$toNativeArray($kindUint64,[new $Uint64(0,1),new $Uint64(0,10),new $Uint64(0,100),new $Uint64(0,1000),new $Uint64(0,10000),new $Uint64(0,100000),new $Uint64(0,1000000),new $Uint64(0,10000000),new $Uint64(0,100000000),new $Uint64(0,1000000000),new $Uint64(2,1410065408),new $Uint64(23,1215752192),new $Uint64(232,3567587328),new $Uint64(2328,1316134912),new $Uint64(23283,276447232),new $Uint64(232830,2764472320),new $Uint64(2328306,1874919424),new $Uint64(23283064,1569325056),new $Uint64(232830643,2808348672),new $Uint64(2328306436,2313682944)]);AT=new AS.ptr(23,8,-127);AU=new AS.ptr(52,11,-1023);BH=new DB([32,126,161,887,890,895,900,1366,1369,1418,1421,1479,1488,1514,1520,1524,1542,1563,1566,1805,1808,1866,1869,1969,1984,2042,2048,2093,2096,2139,2142,2154,2208,2237,2260,2444,2447,2448,2451,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2531,2534,2557,2561,2570,2575,2576,2579,2617,2620,2626,2631,2632,2635,2637,2641,2641,2649,2654,2662,2677,2689,2745,2748,2765,2768,2768,2784,2787,2790,2801,2809,2828,2831,2832,2835,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2915,2918,2935,2946,2954,2958,2965,2969,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3021,3024,3024,3031,3031,3046,3066,3072,3129,3133,3149,3157,3162,3168,3171,3174,3183,3192,3257,3260,3277,3285,3286,3294,3299,3302,3314,3328,3407,3412,3427,3430,3455,3458,3478,3482,3517,3520,3526,3530,3530,3535,3551,3558,3567,3570,3572,3585,3642,3647,3675,3713,3716,3719,3722,3725,3725,3732,3751,3754,3773,3776,3789,3792,3801,3804,3807,3840,3948,3953,4058,4096,4295,4301,4301,4304,4685,4688,4701,4704,4749,4752,4789,4792,4805,4808,4885,4888,4954,4957,4988,4992,5017,5024,5109,5112,5117,5120,5788,5792,5880,5888,5908,5920,5942,5952,5971,5984,6003,6016,6109,6112,6121,6128,6137,6144,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6443,6448,6459,6464,6464,6468,6509,6512,6516,6528,6571,6576,6601,6608,6618,6622,6683,6686,6780,6783,6793,6800,6809,6816,6829,6832,6846,6912,6987,6992,7036,7040,7155,7164,7223,7227,7241,7245,7304,7360,7367,7376,7417,7424,7957,7960,7965,7968,8005,8008,8013,8016,8061,8064,8147,8150,8175,8178,8190,8208,8231,8240,8286,8304,8305,8308,8348,8352,8383,8400,8432,8448,8587,8592,9254,9280,9290,9312,11123,11126,11157,11160,11193,11197,11218,11244,11247,11264,11507,11513,11559,11565,11565,11568,11623,11631,11632,11647,11670,11680,11849,11904,12019,12032,12245,12272,12283,12289,12438,12441,12543,12549,12590,12593,12730,12736,12771,12784,19893,19904,40938,40960,42124,42128,42182,42192,42539,42560,42743,42752,42935,42999,43051,43056,43065,43072,43127,43136,43205,43214,43225,43232,43261,43264,43347,43359,43388,43392,43481,43486,43574,43584,43597,43600,43609,43612,43714,43739,43766,43777,43782,43785,43790,43793,43798,43808,43877,43888,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64449,64467,64831,64848,64911,64914,64967,65008,65021,65024,65049,65056,65131,65136,65276,65281,65470,65474,65479,65482,65487,65490,65495,65498,65500,65504,65518,65532,65533]);BI=new DB([173,907,909,930,1328,1376,1416,1424,1757,2111,2143,2229,2274,2436,2473,2481,2526,2564,2601,2609,2612,2615,2621,2653,2692,2702,2706,2729,2737,2740,2758,2762,2816,2820,2857,2865,2868,2910,2948,2961,2971,2973,3017,3076,3085,3089,3113,3141,3145,3159,3204,3213,3217,3241,3252,3269,3273,3295,3312,3332,3341,3345,3397,3401,3460,3506,3516,3541,3543,3715,3721,3736,3744,3748,3750,3756,3770,3781,3783,3912,3992,4029,4045,4294,4681,4695,4697,4745,4785,4799,4801,4823,4881,5760,5901,5997,6001,6431,6751,7674,8024,8026,8028,8030,8117,8133,8156,8181,8335,11209,11311,11359,11558,11687,11695,11703,11711,11719,11727,11735,11743,11930,12352,12687,12831,13055,42927,43470,43519,43815,43823,64311,64317,64319,64322,64325,65107,65127,65141,65511]);BJ=new DC([65536,65613,65616,65629,65664,65786,65792,65794,65799,65843,65847,65947,65952,65952,66000,66045,66176,66204,66208,66256,66272,66299,66304,66339,66349,66378,66384,66426,66432,66499,66504,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66927,66927,67072,67382,67392,67413,67424,67431,67584,67589,67592,67640,67644,67644,67647,67742,67751,67759,67808,67829,67835,67867,67871,67897,67903,67903,67968,68023,68028,68047,68050,68102,68108,68147,68152,68154,68159,68167,68176,68184,68192,68255,68288,68326,68331,68342,68352,68405,68409,68437,68440,68466,68472,68497,68505,68508,68521,68527,68608,68680,68736,68786,68800,68850,68858,68863,69216,69246,69632,69709,69714,69743,69759,69825,69840,69864,69872,69881,69888,69955,69968,70006,70016,70093,70096,70132,70144,70206,70272,70313,70320,70378,70384,70393,70400,70412,70415,70416,70419,70457,70460,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70749,70784,70855,70864,70873,71040,71093,71096,71133,71168,71236,71248,71257,71264,71276,71296,71351,71360,71369,71424,71449,71453,71467,71472,71487,71840,71922,71935,71935,72192,72263,72272,72323,72326,72354,72384,72440,72704,72773,72784,72812,72816,72847,72850,72886,72960,73014,73018,73031,73040,73049,73728,74649,74752,74868,74880,75075,77824,78894,82944,83526,92160,92728,92736,92777,92782,92783,92880,92909,92912,92917,92928,92997,93008,93047,93053,93071,93952,94020,94032,94078,94095,94111,94176,94177,94208,100332,100352,101106,110592,110878,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113820,113823,118784,119029,119040,119078,119081,119154,119163,119272,119296,119365,119552,119638,119648,119665,119808,119967,119970,119970,119973,119974,119977,120074,120077,120134,120138,120485,120488,120779,120782,121483,121499,121519,122880,122904,122907,122922,124928,125124,125127,125142,125184,125258,125264,125273,125278,125279,126464,126500,126503,126523,126530,126530,126535,126548,126551,126564,126567,126619,126625,126651,126704,126705,126976,127019,127024,127123,127136,127150,127153,127221,127232,127244,127248,127339,127344,127404,127462,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,128724,128736,128748,128752,128760,128768,128883,128896,128980,129024,129035,129040,129095,129104,129113,129120,129159,129168,129197,129280,129291,129296,129356,129360,129387,129408,129431,129472,129472,129488,129510,131072,173782,173824,177972,177984,178205,178208,183969,183984,191456,194560,195101,917760,917999]);BK=new DB([12,39,59,62,399,926,2057,2102,2134,2291,2564,2580,2584,4285,4405,4576,4626,4743,4745,4750,4766,4868,4905,4913,4916,5210,5212,6813,7177,7223,7336,7431,7434,7483,7486,9327,27231,27482,27490,54357,54429,54445,54458,54460,54468,54534,54549,54557,54586,54591,54597,54609,55968,57351,57378,57381,60932,60960,60963,60968,60979,60984,60986,61000,61002,61004,61008,61011,61016,61018,61020,61022,61024,61027,61035,61043,61048,61053,61055,61066,61092,61098,61632,61648,61743,63807]);BL=new DB([160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288]);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/race"]=(function(){var $pkg={},$init,A,B,C,D,E,H,I;A=function(a){var a;};$pkg.Acquire=A;B=function(a){var a;};$pkg.Release=B;C=function(a){var a;};$pkg.ReleaseMerge=C;D=function(){};$pkg.Disable=D;E=function(){};$pkg.Enable=E;H=function(a,b){var a,b;};$pkg.ReadRange=H;I=function(a,b){var a,b;};$pkg.WriteRange=I;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["sync/atomic"]=(function(){var $pkg={},$init,A,AF,AJ,H,K,N,O,S,U,V,Y,AA;A=$packages["github.com/gopherjs/gopherjs/js"];AF=$pkg.Value=$newType(0,$kindStruct,"atomic.Value",true,"sync/atomic",true,function(v_){this.$val=this;if(arguments.length===0){this.v=$ifaceNil;return;}this.v=v_;});AJ=$ptrType(AF);H=function(ad,ae,af){var ad,ae,af;if(ad.$get()===ae){ad.$set(af);return true;}return false;};$pkg.CompareAndSwapInt32=H;K=function(ad,ae,af){var ad,ae,af,ag;if((ag=ad.$get(),(ag.$high===ae.$high&&ag.$low===ae.$low))){ad.$set(af);return true;}return false;};$pkg.CompareAndSwapUint64=K;N=function(ad,ae){var ad,ae,af;af=ad.$get()+ae>>0;ad.$set(af);return af;};$pkg.AddInt32=N;O=function(ad,ae){var ad,ae,af;af=ad.$get()+ae>>>0;ad.$set(af);return af;};$pkg.AddUint32=O;S=function(ad){var ad;return ad.$get();};$pkg.LoadInt32=S;U=function(ad){var ad;return ad.$get();};$pkg.LoadUint32=U;V=function(ad){var ad;return ad.$get();};$pkg.LoadUint64=V;Y=function(ad,ae){var ad,ae;ad.$set(ae);};$pkg.StoreInt32=Y;AA=function(ad,ae){var ad,ae;ad.$set(ae);};$pkg.StoreUint32=AA;AF.ptr.prototype.Load=function(){var ad,ae;ad=$ifaceNil;ae=this;ad=ae.v;return ad;};AF.prototype.Load=function(){return this.$val.Load();};AF.ptr.prototype.Store=function(ad){var ad,ae;ae=this;if($interfaceIsEqual(ad,$ifaceNil)){$panic(new $String("sync/atomic: store of nil value into Value"));}if(!($interfaceIsEqual(ae.v,$ifaceNil))&&!(ad.constructor===ae.v.constructor)){$panic(new $String("sync/atomic: store of inconsistently typed value into Value"));}ae.v=ad;};AF.prototype.Store=function(ad){return this.$val.Store(ad);};AJ.methods=[{prop:"Load",name:"Load",pkg:"",typ:$funcType([],[$emptyInterface],false)},{prop:"Store",name:"Store",pkg:"",typ:$funcType([$emptyInterface],[],false)}];AF.init("sync/atomic",[{prop:"v",name:"v",embedded:false,exported:false,typ:$emptyInterface,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["sync"]=(function(){var $pkg={},$init,A,C,D,B,F,Z,AA,AB,AC,AD,AO,AV,AW,AY,AZ,BA,BB,BC,BI,BL,BM,BN,BO,BR,CA,CB,CC,CD,H,I,W,AJ,G,K,L,M,N,O,P,AH,AK,AL,AT,AU;A=$packages["github.com/gopherjs/gopherjs/js"];C=$packages["internal/race"];D=$packages["runtime"];B=$packages["sync/atomic"];F=$pkg.Pool=$newType(0,$kindStruct,"sync.Pool",true,"sync",true,function(local_,localSize_,store_,New_){this.$val=this;if(arguments.length===0){this.local=0;this.localSize=0;this.store=BM.nil;this.New=$throwNilPointerError;return;}this.local=local_;this.localSize=localSize_;this.store=store_;this.New=New_;});Z=$pkg.Mutex=$newType(0,$kindStruct,"sync.Mutex",true,"sync",true,function(state_,sema_){this.$val=this;if(arguments.length===0){this.state=0;this.sema=0;return;}this.state=state_;this.sema=sema_;});AA=$pkg.Locker=$newType(8,$kindInterface,"sync.Locker",true,"sync",true,null);AB=$pkg.Once=$newType(0,$kindStruct,"sync.Once",true,"sync",true,function(m_,done_){this.$val=this;if(arguments.length===0){this.m=new Z.ptr(0,0);this.done=0;return;}this.m=m_;this.done=done_;});AC=$pkg.poolLocalInternal=$newType(0,$kindStruct,"sync.poolLocalInternal",true,"sync",false,function(private$0_,shared_,Mutex_){this.$val=this;if(arguments.length===0){this.private$0=$ifaceNil;this.shared=BM.nil;this.Mutex=new Z.ptr(0,0);return;}this.private$0=private$0_;this.shared=shared_;this.Mutex=Mutex_;});AD=$pkg.poolLocal=$newType(0,$kindStruct,"sync.poolLocal",true,"sync",false,function(poolLocalInternal_,pad_){this.$val=this;if(arguments.length===0){this.poolLocalInternal=new AC.ptr($ifaceNil,BM.nil,new Z.ptr(0,0));this.pad=CD.zero();return;}this.poolLocalInternal=poolLocalInternal_;this.pad=pad_;});AO=$pkg.notifyList=$newType(0,$kindStruct,"sync.notifyList",true,"sync",false,function(wait_,notify_,lock_,head_,tail_){this.$val=this;if(arguments.length===0){this.wait=0;this.notify=0;this.lock=0;this.head=0;this.tail=0;return;}this.wait=wait_;this.notify=notify_;this.lock=lock_;this.head=head_;this.tail=tail_;});AV=$pkg.RWMutex=$newType(0,$kindStruct,"sync.RWMutex",true,"sync",true,function(w_,writerSem_,readerSem_,readerCount_,readerWait_){this.$val=this;if(arguments.length===0){this.w=new Z.ptr(0,0);this.writerSem=0;this.readerSem=0;this.readerCount=0;this.readerWait=0;return;}this.w=w_;this.writerSem=writerSem_;this.readerSem=readerSem_;this.readerCount=readerCount_;this.readerWait=readerWait_;});AW=$pkg.rlocker=$newType(0,$kindStruct,"sync.rlocker",true,"sync",false,function(w_,writerSem_,readerSem_,readerCount_,readerWait_){this.$val=this;if(arguments.length===0){this.w=new Z.ptr(0,0);this.writerSem=0;this.readerSem=0;this.readerCount=0;this.readerWait=0;return;}this.w=w_;this.writerSem=writerSem_;this.readerSem=readerSem_;this.readerCount=readerCount_;this.readerWait=readerWait_;});AY=$ptrType(F);AZ=$sliceType(AY);BA=$ptrType($Uint32);BB=$chanType($Bool,false,false);BC=$sliceType(BB);BI=$ptrType($Int32);BL=$ptrType(AD);BM=$sliceType($emptyInterface);BN=$ptrType(AW);BO=$ptrType(AV);BR=$funcType([],[$emptyInterface],false);CA=$ptrType(Z);CB=$funcType([],[],false);CC=$ptrType(AB);CD=$arrayType($Uint8,100);F.ptr.prototype.Get=function(){var l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(l.store.$length===0){$s=1;continue;}$s=2;continue;case 1:if(!(l.New===$throwNilPointerError)){$s=3;continue;}$s=4;continue;case 3:m=l.New();$s=5;case 5:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}$s=-1;return m;case 4:$s=-1;return $ifaceNil;case 2:p=(n=l.store,o=l.store.$length-1>>0,((o<0||o>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]));l.store=$subslice(l.store,0,(l.store.$length-1>>0));$s=-1;return p;}return;}if($f===undefined){$f={$blk:F.ptr.prototype.Get};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};F.prototype.Get=function(){return this.$val.Get();};F.ptr.prototype.Put=function(l){var l,m;m=this;if($interfaceIsEqual(l,$ifaceNil)){return;}m.store=$append(m.store,l);};F.prototype.Put=function(l){return this.$val.Put(l);};G=function(l){var l;};K=function(l,m){var l,m,n,o,p,q,r,s,t,u,v,w,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(((l.$get()-(n=I[BA.keyFor(l)],n!==undefined?n.v:0)>>>0))===0){$s=1;continue;}$s=2;continue;case 1:o=new $Chan($Bool,0);if(m){p=l;(H||$throwRuntimeError("assignment to entry in nil map"))[BA.keyFor(p)]={k:p,v:$appendSlice(new BC([o]),(q=H[BA.keyFor(l)],q!==undefined?q.v:BC.nil))};}else{r=l;(H||$throwRuntimeError("assignment to entry in nil map"))[BA.keyFor(r)]={k:r,v:$append((s=H[BA.keyFor(l)],s!==undefined?s.v:BC.nil),o)};}t=$recv(o);$s=3;case 3:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}t[0];u=l;(I||$throwRuntimeError("assignment to entry in nil map"))[BA.keyFor(u)]={k:u,v:(v=I[BA.keyFor(l)],v!==undefined?v.v:0)-(1)>>>0};if((w=I[BA.keyFor(l)],w!==undefined?w.v:0)===0){delete I[BA.keyFor(l)];}case 2:l.$set(l.$get()-(1)>>>0);$s=-1;return;}return;}if($f===undefined){$f={$blk:K};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.$s=$s;$f.$r=$r;return $f;};L=function(l,m){var l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l.$set(l.$get()+(1)>>>0);o=(n=H[BA.keyFor(l)],n!==undefined?n.v:BC.nil);if(o.$length===0){$s=-1;return;}p=(0>=o.$length?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+0]);o=$subslice(o,1);q=l;(H||$throwRuntimeError("assignment to entry in nil map"))[BA.keyFor(q)]={k:q,v:o};if(o.$length===0){delete H[BA.keyFor(l)];}r=l;(I||$throwRuntimeError("assignment to entry in nil map"))[BA.keyFor(r)]={k:r,v:(s=I[BA.keyFor(l)],s!==undefined?s.v:0)+(1)>>>0};$r=$send(p,true);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:L};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};M=function(l){var l;};N=function(l){var l;return false;};O=function(){return $mul64($internalize(new($global.Date)().getTime(),$Int64),new $Int64(0,1000000));};P=function(l){var l;$throwRuntimeError($externalize(l,$String));};Z.ptr.prototype.Lock=function(){var l,m,n,o,p,q,r,s,t,u,v,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(B.CompareAndSwapInt32((l.$ptr_state||(l.$ptr_state=new BI(function(){return this.$target.state;},function($v){this.$target.state=$v;},l))),0,1)){if(false){C.Acquire((l));}$s=-1;return;}m=new $Int64(0,0);n=false;o=false;p=0;q=l.state;case 1:if(((q&5)===1)&&N(p)){$s=3;continue;}$s=4;continue;case 3:if(!o&&((q&2)===0)&&!(((q>>3>>0)===0))&&B.CompareAndSwapInt32((l.$ptr_state||(l.$ptr_state=new BI(function(){return this.$target.state;},function($v){this.$target.state=$v;},l))),q,q|2)){o=true;}AU();p=p+(1)>>0;q=l.state;$s=1;continue;case 4:r=q;if((q&4)===0){r=r|(1);}if(!(((q&5)===0))){r=r+(8)>>0;}if(n&&!(((q&1)===0))){r=r|(4);}if(o){if((r&2)===0){P("sync: inconsistent mutex state");}r=(r&~(2))>>0;}if(B.CompareAndSwapInt32((l.$ptr_state||(l.$ptr_state=new BI(function(){return this.$target.state;},function($v){this.$target.state=$v;},l))),q,r)){$s=5;continue;}$s=6;continue;case 5:if((q&5)===0){$s=2;continue;}s=!((m.$high===0&&m.$low===0));if((m.$high===0&&m.$low===0)){m=O();}$r=K((l.$ptr_sema||(l.$ptr_sema=new BA(function(){return this.$target.sema;},function($v){this.$target.sema=$v;},l))),s);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}n=n||(t=(u=O(),new $Int64(u.$high-m.$high,u.$low-m.$low)),(t.$high>0||(t.$high===0&&t.$low>1000000)));q=l.state;if(!(((q&4)===0))){if(!(((q&3)===0))||((q>>3>>0)===0)){P("sync: inconsistent mutex state");}v=-7;if(!n||((q>>3>>0)===1)){v=v-(4)>>0;}B.AddInt32((l.$ptr_state||(l.$ptr_state=new BI(function(){return this.$target.state;},function($v){this.$target.state=$v;},l))),v);$s=2;continue;}o=true;p=0;$s=7;continue;case 6:q=l.state;case 7:$s=1;continue;case 2:if(false){C.Acquire((l));}$s=-1;return;}return;}if($f===undefined){$f={$blk:Z.ptr.prototype.Lock};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.$s=$s;$f.$r=$r;return $f;};Z.prototype.Lock=function(){return this.$val.Lock();};Z.ptr.prototype.Unlock=function(){var l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(false){$unused(l.state);C.Release((l));}m=B.AddInt32((l.$ptr_state||(l.$ptr_state=new BI(function(){return this.$target.state;},function($v){this.$target.state=$v;},l))),-1);if((((m+1>>0))&1)===0){P("sync: unlock of unlocked mutex");}if((m&4)===0){$s=1;continue;}$s=2;continue;case 1:n=m;case 4:if(((n>>3>>0)===0)||!(((n&7)===0))){$s=-1;return;}m=((n-8>>0))|2;if(B.CompareAndSwapInt32((l.$ptr_state||(l.$ptr_state=new BI(function(){return this.$target.state;},function($v){this.$target.state=$v;},l))),n,m)){$s=6;continue;}$s=7;continue;case 6:$r=L((l.$ptr_sema||(l.$ptr_sema=new BA(function(){return this.$target.sema;},function($v){this.$target.sema=$v;},l))),false);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 7:n=l.state;$s=4;continue;case 5:$s=3;continue;case 2:$r=L((l.$ptr_sema||(l.$ptr_sema=new BA(function(){return this.$target.sema;},function($v){this.$target.sema=$v;},l))),true);$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 3:$s=-1;return;}return;}if($f===undefined){$f={$blk:Z.ptr.prototype.Unlock};}$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};Z.prototype.Unlock=function(){return this.$val.Unlock();};AB.ptr.prototype.Do=function(l){var l,m,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);m=this;if(B.LoadUint32((m.$ptr_done||(m.$ptr_done=new BA(function(){return this.$target.done;},function($v){this.$target.done=$v;},m))))===1){$s=-1;return;}$r=m.m.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(m.m,"Unlock"),[]]);if(m.done===0){$s=2;continue;}$s=3;continue;case 2:$deferred.push([B.StoreUint32,[(m.$ptr_done||(m.$ptr_done=new BA(function(){return this.$target.done;},function($v){this.$target.done=$v;},m))),1]]);$r=l();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 3:$s=-1;return;}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AB.ptr.prototype.Do};}$f.l=l;$f.m=m;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AB.prototype.Do=function(l){return this.$val.Do(l);};AH=function(){var l,m,n,o,p,q,r,s,t,u;l=AJ;m=0;while(true){if(!(m=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m]);((n<0||n>=AJ.$length)?($throwRuntimeError("index out of range"),undefined):AJ.$array[AJ.$offset+n]=AY.nil);p=0;while(true){if(!(p<((o.localSize>>0)))){break;}q=AL(o.local,p);q.poolLocalInternal.private$0=$ifaceNil;r=q.poolLocalInternal.shared;s=0;while(true){if(!(s=u.$length)?($throwRuntimeError("index out of range"),undefined):u.$array[u.$offset+t]=$ifaceNil));s++;}q.poolLocalInternal.shared=BM.nil;p=p+(1)>>0;}o.local=0;o.localSize=0;m++;}AJ=new AZ([]);};AK=function(){G(AH);};AL=function(l,m){var l,m,n;n=(((l)+($imul(((m>>>0)),128)>>>0)>>>0));return($pointerOfStructConversion(n,BL));};AT=function(){var l;l=new AO.ptr(0,0,0,0,0);M(20);};AU=function(){$throwRuntimeError("native function not implemented: sync.runtime_doSpin");};AV.ptr.prototype.RLock=function(){var l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(false){$unused(l.w.state);C.Disable();}if(B.AddInt32((l.$ptr_readerCount||(l.$ptr_readerCount=new BI(function(){return this.$target.readerCount;},function($v){this.$target.readerCount=$v;},l))),1)<0){$s=1;continue;}$s=2;continue;case 1:$r=K((l.$ptr_readerSem||(l.$ptr_readerSem=new BA(function(){return this.$target.readerSem;},function($v){this.$target.readerSem=$v;},l))),false);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:if(false){C.Enable();C.Acquire(((l.$ptr_readerSem||(l.$ptr_readerSem=new BA(function(){return this.$target.readerSem;},function($v){this.$target.readerSem=$v;},l)))));}$s=-1;return;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.RLock};}$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.RLock=function(){return this.$val.RLock();};AV.ptr.prototype.RUnlock=function(){var l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(false){$unused(l.w.state);C.ReleaseMerge(((l.$ptr_writerSem||(l.$ptr_writerSem=new BA(function(){return this.$target.writerSem;},function($v){this.$target.writerSem=$v;},l)))));C.Disable();}m=B.AddInt32((l.$ptr_readerCount||(l.$ptr_readerCount=new BI(function(){return this.$target.readerCount;},function($v){this.$target.readerCount=$v;},l))),-1);if(m<0){$s=1;continue;}$s=2;continue;case 1:if(((m+1>>0)===0)||((m+1>>0)===-1073741824)){C.Enable();P("sync: RUnlock of unlocked RWMutex");}if(B.AddInt32((l.$ptr_readerWait||(l.$ptr_readerWait=new BI(function(){return this.$target.readerWait;},function($v){this.$target.readerWait=$v;},l))),-1)===0){$s=3;continue;}$s=4;continue;case 3:$r=L((l.$ptr_writerSem||(l.$ptr_writerSem=new BA(function(){return this.$target.writerSem;},function($v){this.$target.writerSem=$v;},l))),false);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 4:case 2:if(false){C.Enable();}$s=-1;return;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.RUnlock};}$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.RUnlock=function(){return this.$val.RUnlock();};AV.ptr.prototype.Lock=function(){var l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(false){$unused(l.w.state);C.Disable();}$r=l.w.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}m=B.AddInt32((l.$ptr_readerCount||(l.$ptr_readerCount=new BI(function(){return this.$target.readerCount;},function($v){this.$target.readerCount=$v;},l))),-1073741824)+1073741824>>0;if(!((m===0))&&!((B.AddInt32((l.$ptr_readerWait||(l.$ptr_readerWait=new BI(function(){return this.$target.readerWait;},function($v){this.$target.readerWait=$v;},l))),m)===0))){$s=2;continue;}$s=3;continue;case 2:$r=K((l.$ptr_writerSem||(l.$ptr_writerSem=new BA(function(){return this.$target.writerSem;},function($v){this.$target.writerSem=$v;},l))),false);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 3:if(false){C.Enable();C.Acquire(((l.$ptr_readerSem||(l.$ptr_readerSem=new BA(function(){return this.$target.readerSem;},function($v){this.$target.readerSem=$v;},l)))));C.Acquire(((l.$ptr_writerSem||(l.$ptr_writerSem=new BA(function(){return this.$target.writerSem;},function($v){this.$target.writerSem=$v;},l)))));}$s=-1;return;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.Lock};}$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.Lock=function(){return this.$val.Lock();};AV.ptr.prototype.Unlock=function(){var l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(false){$unused(l.w.state);C.Release(((l.$ptr_readerSem||(l.$ptr_readerSem=new BA(function(){return this.$target.readerSem;},function($v){this.$target.readerSem=$v;},l)))));C.Disable();}m=B.AddInt32((l.$ptr_readerCount||(l.$ptr_readerCount=new BI(function(){return this.$target.readerCount;},function($v){this.$target.readerCount=$v;},l))),1073741824);if(m>=1073741824){C.Enable();P("sync: Unlock of unlocked RWMutex");}n=0;case 1:if(!(n<((m>>0)))){$s=2;continue;}$r=L((l.$ptr_readerSem||(l.$ptr_readerSem=new BA(function(){return this.$target.readerSem;},function($v){this.$target.readerSem=$v;},l))),false);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}n=n+(1)>>0;$s=1;continue;case 2:$r=l.w.Unlock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(false){C.Enable();}$s=-1;return;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.Unlock};}$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.Unlock=function(){return this.$val.Unlock();};AV.ptr.prototype.RLocker=function(){var l;l=this;return($pointerOfStructConversion(l,BN));};AV.prototype.RLocker=function(){return this.$val.RLocker();};AW.ptr.prototype.Lock=function(){var l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;$r=($pointerOfStructConversion(l,BO)).RLock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AW.ptr.prototype.Lock};}$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AW.prototype.Lock=function(){return this.$val.Lock();};AW.ptr.prototype.Unlock=function(){var l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;$r=($pointerOfStructConversion(l,BO)).RUnlock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AW.ptr.prototype.Unlock};}$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AW.prototype.Unlock=function(){return this.$val.Unlock();};AY.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([],[$emptyInterface],false)},{prop:"Put",name:"Put",pkg:"",typ:$funcType([$emptyInterface],[],false)},{prop:"getSlow",name:"getSlow",pkg:"sync",typ:$funcType([],[$emptyInterface],false)},{prop:"pin",name:"pin",pkg:"sync",typ:$funcType([],[BL],false)},{prop:"pinSlow",name:"pinSlow",pkg:"sync",typ:$funcType([],[BL],false)}];CA.methods=[{prop:"Lock",name:"Lock",pkg:"",typ:$funcType([],[],false)},{prop:"Unlock",name:"Unlock",pkg:"",typ:$funcType([],[],false)}];CC.methods=[{prop:"Do",name:"Do",pkg:"",typ:$funcType([CB],[],false)}];BO.methods=[{prop:"RLock",name:"RLock",pkg:"",typ:$funcType([],[],false)},{prop:"RUnlock",name:"RUnlock",pkg:"",typ:$funcType([],[],false)},{prop:"Lock",name:"Lock",pkg:"",typ:$funcType([],[],false)},{prop:"Unlock",name:"Unlock",pkg:"",typ:$funcType([],[],false)},{prop:"RLocker",name:"RLocker",pkg:"",typ:$funcType([],[AA],false)}];BN.methods=[{prop:"Lock",name:"Lock",pkg:"",typ:$funcType([],[],false)},{prop:"Unlock",name:"Unlock",pkg:"",typ:$funcType([],[],false)}];F.init("sync",[{prop:"local",name:"local",embedded:false,exported:false,typ:$UnsafePointer,tag:""},{prop:"localSize",name:"localSize",embedded:false,exported:false,typ:$Uintptr,tag:""},{prop:"store",name:"store",embedded:false,exported:false,typ:BM,tag:""},{prop:"New",name:"New",embedded:false,exported:true,typ:BR,tag:""}]);Z.init("sync",[{prop:"state",name:"state",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"sema",name:"sema",embedded:false,exported:false,typ:$Uint32,tag:""}]);AA.init([{prop:"Lock",name:"Lock",pkg:"",typ:$funcType([],[],false)},{prop:"Unlock",name:"Unlock",pkg:"",typ:$funcType([],[],false)}]);AB.init("sync",[{prop:"m",name:"m",embedded:false,exported:false,typ:Z,tag:""},{prop:"done",name:"done",embedded:false,exported:false,typ:$Uint32,tag:""}]);AC.init("sync",[{prop:"private$0",name:"private",embedded:false,exported:false,typ:$emptyInterface,tag:""},{prop:"shared",name:"shared",embedded:false,exported:false,typ:BM,tag:""},{prop:"Mutex",name:"Mutex",embedded:true,exported:true,typ:Z,tag:""}]);AD.init("sync",[{prop:"poolLocalInternal",name:"poolLocalInternal",embedded:true,exported:false,typ:AC,tag:""},{prop:"pad",name:"pad",embedded:false,exported:false,typ:CD,tag:""}]);AO.init("sync",[{prop:"wait",name:"wait",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"notify",name:"notify",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"lock",name:"lock",embedded:false,exported:false,typ:$Uintptr,tag:""},{prop:"head",name:"head",embedded:false,exported:false,typ:$UnsafePointer,tag:""},{prop:"tail",name:"tail",embedded:false,exported:false,typ:$UnsafePointer,tag:""}]);AV.init("sync",[{prop:"w",name:"w",embedded:false,exported:false,typ:Z,tag:""},{prop:"writerSem",name:"writerSem",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"readerSem",name:"readerSem",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"readerCount",name:"readerCount",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"readerWait",name:"readerWait",embedded:false,exported:false,typ:$Int32,tag:""}]);AW.init("sync",[{prop:"w",name:"w",embedded:false,exported:false,typ:Z,tag:""},{prop:"writerSem",name:"writerSem",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"readerSem",name:"readerSem",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"readerCount",name:"readerCount",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"readerWait",name:"readerWait",embedded:false,exported:false,typ:$Int32,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}AJ=AZ.nil;H={};I={};W=(new Uint8Array(8));AK();AT();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["unicode"]=(function(){var $pkg={},$init,O,P,Q,R,T,AF,IX,IY,IZ,JA,JB,JC,JD,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ,CA,CB,CC,CD,CE,CF,CG,CH,CI,CJ,CK,CL,CM,CN,CO,CP,CQ,CR,CS,CT,CU,CV,CW,CX,CY,CZ,DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR,DS,DT,DU,DV,DW,DX,DY,DZ,EA,EB,EC,ED,EE,EF,EG,EH,EI,EJ,EK,EL,EM,EN,EO,EP,EQ,ER,ES,ET,EU,EV,EW,EX,EY,EZ,FA,FB,FC,FD,FE,FF,FG,FH,FI,FJ,FK,FL,FM,FN,FO,FP,FQ,FR,FS,FT,FU,FV,FW,FX,FY,FZ,GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK,GL,GM,GN,GO,GP,GQ,GR,GS,GT,GU,GV,GW,GX,GY,GZ,HA,HB,IK,IL,IM,IN,IO,IP,IQ,IR,IS,IT,IU,IV,IW,A,C,E,G,I,U,V,W,X,AB,AC,AD,AG;O=$pkg.RangeTable=$newType(0,$kindStruct,"unicode.RangeTable",true,"unicode",true,function(R16_,R32_,LatinOffset_){this.$val=this;if(arguments.length===0){this.R16=IY.nil;this.R32=IZ.nil;this.LatinOffset=0;return;}this.R16=R16_;this.R32=R32_;this.LatinOffset=LatinOffset_;});P=$pkg.Range16=$newType(0,$kindStruct,"unicode.Range16",true,"unicode",true,function(Lo_,Hi_,Stride_){this.$val=this;if(arguments.length===0){this.Lo=0;this.Hi=0;this.Stride=0;return;}this.Lo=Lo_;this.Hi=Hi_;this.Stride=Stride_;});Q=$pkg.Range32=$newType(0,$kindStruct,"unicode.Range32",true,"unicode",true,function(Lo_,Hi_,Stride_){this.$val=this;if(arguments.length===0){this.Lo=0;this.Hi=0;this.Stride=0;return;}this.Lo=Lo_;this.Hi=Hi_;this.Stride=Stride_;});R=$pkg.CaseRange=$newType(0,$kindStruct,"unicode.CaseRange",true,"unicode",true,function(Lo_,Hi_,Delta_){this.$val=this;if(arguments.length===0){this.Lo=0;this.Hi=0;this.Delta=IX.zero();return;}this.Lo=Lo_;this.Hi=Hi_;this.Delta=Delta_;});T=$pkg.d=$newType(12,$kindArray,"unicode.d",true,"unicode",false,null);AF=$pkg.foldPair=$newType(0,$kindStruct,"unicode.foldPair",true,"unicode",false,function(From_,To_){this.$val=this;if(arguments.length===0){this.From=0;this.To=0;return;}this.From=From_;this.To=To_;});IX=$arrayType($Int32,3);IY=$sliceType(P);IZ=$sliceType(Q);JA=$ptrType(O);JB=$sliceType(JA);JC=$sliceType(R);JD=$sliceType(AF);A=function(b,c,d){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;e=0;f=false;if(b<0||3<=b){g=65533;h=false;e=g;f=h;return[e,f];}i=0;j=d.$length;while(true){if(!(i>0))/2,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero"))>>0;m=((l<0||l>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+l]);if(((m.Lo>>0))<=c&&c<=((m.Hi>>0))){o=((n=m.Delta,((b<0||b>=n.length)?($throwRuntimeError("index out of range"),undefined):n[b])));if(o>1114111){p=((m.Lo>>0))+((((((c-((m.Lo>>0))>>0))&~1)>>0)|(((b&1)>>0))))>>0;q=true;e=p;f=q;return[e,f];}r=c+o>>0;s=true;e=r;f=s;return[e,f];}if(c<((m.Lo>>0))){j=l;}else{i=l+1>>0;}}t=c;u=false;e=t;f=u;return[e,f];};C=function(b){var b;if(b<=255){return 48<=b&&b<=57;}return X($pkg.Digit,b);};$pkg.IsDigit=C;E=function(b){var b,c;if(((b>>>0))<=255){return!(((((c=((b<<24>>>24)),((c<0||c>=IL.length)?($throwRuntimeError("index out of range"),undefined):IL[c]))&128)>>>0)===0));}return G(b,$pkg.PrintRanges);};$pkg.IsPrint=E;G=function(b,c){var b,c,d,e,f;d=c;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(W(f,b)){return true;}e++;}return false;};$pkg.In=G;I=function(b){var b,c;if(((b>>>0))<=255){return!(((((c=((b<<24>>>24)),((c<0||c>=IL.length)?($throwRuntimeError("index out of range"),undefined):IL[c]))&96)>>>0)===0));}return X($pkg.Letter,b);};$pkg.IsLetter=I;U=function(b,c){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(b.$length<=18||c<=255){d=b;e=0;while(true){if(!(e=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+f]);if(c>>16))%g.Stride,h===h?h:$throwRuntimeError("integer divide by zero"))===0);}e++;}return false;}i=0;j=b.$length;while(true){if(!(i>0))/2,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero"))>>0;m=((l<0||l>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+l]);if(m.Lo<=c&&c<=m.Hi){return(m.Stride===1)||((n=((c-m.Lo<<16>>>16))%m.Stride,n===n?n:$throwRuntimeError("integer divide by zero"))===0);}if(c>0;}}return false;};V=function(b,c){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(b.$length<=18){d=b;e=0;while(true){if(!(e=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+f]);if(c>>0))%g.Stride,h===h?h:$throwRuntimeError("integer divide by zero"))===0);}e++;}return false;}i=0;j=b.$length;while(true){if(!(i>0))/2,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero"))>>0;m=$clone(((l<0||l>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+l]),Q);if(m.Lo<=c&&c<=m.Hi){return(m.Stride===1)||((n=((c-m.Lo>>>0))%m.Stride,n===n?n:$throwRuntimeError("integer divide by zero"))===0);}if(c>0;}}return false;};W=function(b,c){var b,c,d,e,f;d=b.R16;if(d.$length>0&&c<=(((e=d.$length-1>>0,((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e])).Hi>>0))){return U(d,((c<<16>>>16)));}f=b.R32;if(f.$length>0&&c>=(((0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0]).Lo>>0))){return V(f,((c>>>0)));}return false;};$pkg.Is=W;X=function(b,c){var b,c,d,e,f,g;d=b.R16;e=b.LatinOffset;if(d.$length>e&&c<=(((f=d.$length-1>>0,((f<0||f>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+f])).Hi>>0))){return U($subslice(d,e),((c<<16>>>16)));}g=b.R32;if(g.$length>0&&c>=(((0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0]).Lo>>0))){return V(g,((c>>>0)));}return false;};AB=function(b,c){var b,c,d;d=A(b,c,$pkg.CaseRanges);c=d[0];return c;};$pkg.To=AB;AC=function(b){var b;if(b<=127){if(97<=b&&b<=122){b=b-(32)>>0;}return b;}return AB(0,b);};$pkg.ToUpper=AC;AD=function(b){var b;if(b<=127){if(65<=b&&b<=90){b=b+(32)>>0;}return b;}return AB(1,b);};$pkg.ToLower=AD;AG=function(b){var b,c,d,e,f,g;if(b<0||b>1114111){return b;}if(((b>>0))<128){return((((b<0||b>=IM.length)?($throwRuntimeError("index out of range"),undefined):IM[b])>>0));}c=0;d=IN.$length;while(true){if(!(c>0))/2,(e===e&&e!==1/0&&e!==-1/0)?e>>0:$throwRuntimeError("integer divide by zero"))>>0;if(((((f<0||f>=IN.$length)?($throwRuntimeError("index out of range"),undefined):IN.$array[IN.$offset+f]).From>>0))>0;}else{d=f;}}if(c=IN.$length)?($throwRuntimeError("index out of range"),undefined):IN.$array[IN.$offset+c]).From>>0))===b)){return((((c<0||c>=IN.$length)?($throwRuntimeError("index out of range"),undefined):IN.$array[IN.$offset+c]).To>>0));}g=AD(b);if(!((g===b))){return g;}return AC(b);};$pkg.SimpleFold=AG;O.init("",[{prop:"R16",name:"R16",embedded:false,exported:true,typ:IY,tag:""},{prop:"R32",name:"R32",embedded:false,exported:true,typ:IZ,tag:""},{prop:"LatinOffset",name:"LatinOffset",embedded:false,exported:true,typ:$Int,tag:""}]);P.init("",[{prop:"Lo",name:"Lo",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Hi",name:"Hi",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Stride",name:"Stride",embedded:false,exported:true,typ:$Uint16,tag:""}]);Q.init("",[{prop:"Lo",name:"Lo",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Hi",name:"Hi",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Stride",name:"Stride",embedded:false,exported:true,typ:$Uint32,tag:""}]);R.init("",[{prop:"Lo",name:"Lo",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Hi",name:"Hi",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Delta",name:"Delta",embedded:false,exported:true,typ:T,tag:""}]);T.init($Int32,3);AF.init("",[{prop:"From",name:"From",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"To",name:"To",embedded:false,exported:true,typ:$Uint16,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:AH=new O.ptr(new IY([new P.ptr(0,31,1),new P.ptr(127,159,1),new P.ptr(173,1536,1363),new P.ptr(1537,1541,1),new P.ptr(1564,1757,193),new P.ptr(1807,2274,467),new P.ptr(6158,8203,2045),new P.ptr(8204,8207,1),new P.ptr(8234,8238,1),new P.ptr(8288,8292,1),new P.ptr(8294,8303,1),new P.ptr(55296,63743,1),new P.ptr(65279,65529,250),new P.ptr(65530,65531,1)]),new IZ([new Q.ptr(69821,113824,44003),new Q.ptr(113825,113827,1),new Q.ptr(119155,119162,1),new Q.ptr(917505,917536,31),new Q.ptr(917537,917631,1),new Q.ptr(983040,1048573,1),new Q.ptr(1048576,1114109,1)]),2);AI=new O.ptr(new IY([new P.ptr(0,31,1),new P.ptr(127,159,1)]),IZ.nil,2);AJ=new O.ptr(new IY([new P.ptr(173,1536,1363),new P.ptr(1537,1541,1),new P.ptr(1564,1757,193),new P.ptr(1807,2274,467),new P.ptr(6158,8203,2045),new P.ptr(8204,8207,1),new P.ptr(8234,8238,1),new P.ptr(8288,8292,1),new P.ptr(8294,8303,1),new P.ptr(65279,65529,250),new P.ptr(65530,65531,1)]),new IZ([new Q.ptr(69821,113824,44003),new Q.ptr(113825,113827,1),new Q.ptr(119155,119162,1),new Q.ptr(917505,917536,31),new Q.ptr(917537,917631,1)]),0);AK=new O.ptr(new IY([new P.ptr(57344,63743,1)]),new IZ([new Q.ptr(983040,1048573,1),new Q.ptr(1048576,1114109,1)]),0);AL=new O.ptr(new IY([new P.ptr(55296,57343,1)]),IZ.nil,0);AM=new O.ptr(new IY([new P.ptr(65,90,1),new P.ptr(97,122,1),new P.ptr(170,181,11),new P.ptr(186,192,6),new P.ptr(193,214,1),new P.ptr(216,246,1),new P.ptr(248,705,1),new P.ptr(710,721,1),new P.ptr(736,740,1),new P.ptr(748,750,2),new P.ptr(880,884,1),new P.ptr(886,887,1),new P.ptr(890,893,1),new P.ptr(895,902,7),new P.ptr(904,906,1),new P.ptr(908,910,2),new P.ptr(911,929,1),new P.ptr(931,1013,1),new P.ptr(1015,1153,1),new P.ptr(1162,1327,1),new P.ptr(1329,1366,1),new P.ptr(1369,1377,8),new P.ptr(1378,1415,1),new P.ptr(1488,1514,1),new P.ptr(1520,1522,1),new P.ptr(1568,1610,1),new P.ptr(1646,1647,1),new P.ptr(1649,1747,1),new P.ptr(1749,1765,16),new P.ptr(1766,1774,8),new P.ptr(1775,1786,11),new P.ptr(1787,1788,1),new P.ptr(1791,1808,17),new P.ptr(1810,1839,1),new P.ptr(1869,1957,1),new P.ptr(1969,1994,25),new P.ptr(1995,2026,1),new P.ptr(2036,2037,1),new P.ptr(2042,2048,6),new P.ptr(2049,2069,1),new P.ptr(2074,2084,10),new P.ptr(2088,2112,24),new P.ptr(2113,2136,1),new P.ptr(2144,2154,1),new P.ptr(2208,2228,1),new P.ptr(2230,2237,1),new P.ptr(2308,2361,1),new P.ptr(2365,2384,19),new P.ptr(2392,2401,1),new P.ptr(2417,2432,1),new P.ptr(2437,2444,1),new P.ptr(2447,2448,1),new P.ptr(2451,2472,1),new P.ptr(2474,2480,1),new P.ptr(2482,2486,4),new P.ptr(2487,2489,1),new P.ptr(2493,2510,17),new P.ptr(2524,2525,1),new P.ptr(2527,2529,1),new P.ptr(2544,2545,1),new P.ptr(2556,2565,9),new P.ptr(2566,2570,1),new P.ptr(2575,2576,1),new P.ptr(2579,2600,1),new P.ptr(2602,2608,1),new P.ptr(2610,2611,1),new P.ptr(2613,2614,1),new P.ptr(2616,2617,1),new P.ptr(2649,2652,1),new P.ptr(2654,2674,20),new P.ptr(2675,2676,1),new P.ptr(2693,2701,1),new P.ptr(2703,2705,1),new P.ptr(2707,2728,1),new P.ptr(2730,2736,1),new P.ptr(2738,2739,1),new P.ptr(2741,2745,1),new P.ptr(2749,2768,19),new P.ptr(2784,2785,1),new P.ptr(2809,2821,12),new P.ptr(2822,2828,1),new P.ptr(2831,2832,1),new P.ptr(2835,2856,1),new P.ptr(2858,2864,1),new P.ptr(2866,2867,1),new P.ptr(2869,2873,1),new P.ptr(2877,2908,31),new P.ptr(2909,2911,2),new P.ptr(2912,2913,1),new P.ptr(2929,2947,18),new P.ptr(2949,2954,1),new P.ptr(2958,2960,1),new P.ptr(2962,2965,1),new P.ptr(2969,2970,1),new P.ptr(2972,2974,2),new P.ptr(2975,2979,4),new P.ptr(2980,2984,4),new P.ptr(2985,2986,1),new P.ptr(2990,3001,1),new P.ptr(3024,3077,53),new P.ptr(3078,3084,1),new P.ptr(3086,3088,1),new P.ptr(3090,3112,1),new P.ptr(3114,3129,1),new P.ptr(3133,3160,27),new P.ptr(3161,3162,1),new P.ptr(3168,3169,1),new P.ptr(3200,3205,5),new P.ptr(3206,3212,1),new P.ptr(3214,3216,1),new P.ptr(3218,3240,1),new P.ptr(3242,3251,1),new P.ptr(3253,3257,1),new P.ptr(3261,3294,33),new P.ptr(3296,3297,1),new P.ptr(3313,3314,1),new P.ptr(3333,3340,1),new P.ptr(3342,3344,1),new P.ptr(3346,3386,1),new P.ptr(3389,3406,17),new P.ptr(3412,3414,1),new P.ptr(3423,3425,1),new P.ptr(3450,3455,1),new P.ptr(3461,3478,1),new P.ptr(3482,3505,1),new P.ptr(3507,3515,1),new P.ptr(3517,3520,3),new P.ptr(3521,3526,1),new P.ptr(3585,3632,1),new P.ptr(3634,3635,1),new P.ptr(3648,3654,1),new P.ptr(3713,3714,1),new P.ptr(3716,3719,3),new P.ptr(3720,3722,2),new P.ptr(3725,3732,7),new P.ptr(3733,3735,1),new P.ptr(3737,3743,1),new P.ptr(3745,3747,1),new P.ptr(3749,3751,2),new P.ptr(3754,3755,1),new P.ptr(3757,3760,1),new P.ptr(3762,3763,1),new P.ptr(3773,3776,3),new P.ptr(3777,3780,1),new P.ptr(3782,3804,22),new P.ptr(3805,3807,1),new P.ptr(3840,3904,64),new P.ptr(3905,3911,1),new P.ptr(3913,3948,1),new P.ptr(3976,3980,1),new P.ptr(4096,4138,1),new P.ptr(4159,4176,17),new P.ptr(4177,4181,1),new P.ptr(4186,4189,1),new P.ptr(4193,4197,4),new P.ptr(4198,4206,8),new P.ptr(4207,4208,1),new P.ptr(4213,4225,1),new P.ptr(4238,4256,18),new P.ptr(4257,4293,1),new P.ptr(4295,4301,6),new P.ptr(4304,4346,1),new P.ptr(4348,4680,1),new P.ptr(4682,4685,1),new P.ptr(4688,4694,1),new P.ptr(4696,4698,2),new P.ptr(4699,4701,1),new P.ptr(4704,4744,1),new P.ptr(4746,4749,1),new P.ptr(4752,4784,1),new P.ptr(4786,4789,1),new P.ptr(4792,4798,1),new P.ptr(4800,4802,2),new P.ptr(4803,4805,1),new P.ptr(4808,4822,1),new P.ptr(4824,4880,1),new P.ptr(4882,4885,1),new P.ptr(4888,4954,1),new P.ptr(4992,5007,1),new P.ptr(5024,5109,1),new P.ptr(5112,5117,1),new P.ptr(5121,5740,1),new P.ptr(5743,5759,1),new P.ptr(5761,5786,1),new P.ptr(5792,5866,1),new P.ptr(5873,5880,1),new P.ptr(5888,5900,1),new P.ptr(5902,5905,1),new P.ptr(5920,5937,1),new P.ptr(5952,5969,1),new P.ptr(5984,5996,1),new P.ptr(5998,6000,1),new P.ptr(6016,6067,1),new P.ptr(6103,6108,5),new P.ptr(6176,6263,1),new P.ptr(6272,6276,1),new P.ptr(6279,6312,1),new P.ptr(6314,6320,6),new P.ptr(6321,6389,1),new P.ptr(6400,6430,1),new P.ptr(6480,6509,1),new P.ptr(6512,6516,1),new P.ptr(6528,6571,1),new P.ptr(6576,6601,1),new P.ptr(6656,6678,1),new P.ptr(6688,6740,1),new P.ptr(6823,6917,94),new P.ptr(6918,6963,1),new P.ptr(6981,6987,1),new P.ptr(7043,7072,1),new P.ptr(7086,7087,1),new P.ptr(7098,7141,1),new P.ptr(7168,7203,1),new P.ptr(7245,7247,1),new P.ptr(7258,7293,1),new P.ptr(7296,7304,1),new P.ptr(7401,7404,1),new P.ptr(7406,7409,1),new P.ptr(7413,7414,1),new P.ptr(7424,7615,1),new P.ptr(7680,7957,1),new P.ptr(7960,7965,1),new P.ptr(7968,8005,1),new P.ptr(8008,8013,1),new P.ptr(8016,8023,1),new P.ptr(8025,8031,2),new P.ptr(8032,8061,1),new P.ptr(8064,8116,1),new P.ptr(8118,8124,1),new P.ptr(8126,8130,4),new P.ptr(8131,8132,1),new P.ptr(8134,8140,1),new P.ptr(8144,8147,1),new P.ptr(8150,8155,1),new P.ptr(8160,8172,1),new P.ptr(8178,8180,1),new P.ptr(8182,8188,1),new P.ptr(8305,8319,14),new P.ptr(8336,8348,1),new P.ptr(8450,8455,5),new P.ptr(8458,8467,1),new P.ptr(8469,8473,4),new P.ptr(8474,8477,1),new P.ptr(8484,8490,2),new P.ptr(8491,8493,1),new P.ptr(8495,8505,1),new P.ptr(8508,8511,1),new P.ptr(8517,8521,1),new P.ptr(8526,8579,53),new P.ptr(8580,11264,2684),new P.ptr(11265,11310,1),new P.ptr(11312,11358,1),new P.ptr(11360,11492,1),new P.ptr(11499,11502,1),new P.ptr(11506,11507,1),new P.ptr(11520,11557,1),new P.ptr(11559,11565,6),new P.ptr(11568,11623,1),new P.ptr(11631,11648,17),new P.ptr(11649,11670,1),new P.ptr(11680,11686,1),new P.ptr(11688,11694,1),new P.ptr(11696,11702,1),new P.ptr(11704,11710,1),new P.ptr(11712,11718,1),new P.ptr(11720,11726,1),new P.ptr(11728,11734,1),new P.ptr(11736,11742,1),new P.ptr(11823,12293,470),new P.ptr(12294,12337,43),new P.ptr(12338,12341,1),new P.ptr(12347,12348,1),new P.ptr(12353,12438,1),new P.ptr(12445,12447,1),new P.ptr(12449,12538,1),new P.ptr(12540,12543,1),new P.ptr(12549,12590,1),new P.ptr(12593,12686,1),new P.ptr(12704,12730,1),new P.ptr(12784,12799,1),new P.ptr(13312,19893,1),new P.ptr(19968,40938,1),new P.ptr(40960,42124,1),new P.ptr(42192,42237,1),new P.ptr(42240,42508,1),new P.ptr(42512,42527,1),new P.ptr(42538,42539,1),new P.ptr(42560,42606,1),new P.ptr(42623,42653,1),new P.ptr(42656,42725,1),new P.ptr(42775,42783,1),new P.ptr(42786,42888,1),new P.ptr(42891,42926,1),new P.ptr(42928,42935,1),new P.ptr(42999,43009,1),new P.ptr(43011,43013,1),new P.ptr(43015,43018,1),new P.ptr(43020,43042,1),new P.ptr(43072,43123,1),new P.ptr(43138,43187,1),new P.ptr(43250,43255,1),new P.ptr(43259,43261,2),new P.ptr(43274,43301,1),new P.ptr(43312,43334,1),new P.ptr(43360,43388,1),new P.ptr(43396,43442,1),new P.ptr(43471,43488,17),new P.ptr(43489,43492,1),new P.ptr(43494,43503,1),new P.ptr(43514,43518,1),new P.ptr(43520,43560,1),new P.ptr(43584,43586,1),new P.ptr(43588,43595,1),new P.ptr(43616,43638,1),new P.ptr(43642,43646,4),new P.ptr(43647,43695,1),new P.ptr(43697,43701,4),new P.ptr(43702,43705,3),new P.ptr(43706,43709,1),new P.ptr(43712,43714,2),new P.ptr(43739,43741,1),new P.ptr(43744,43754,1),new P.ptr(43762,43764,1),new P.ptr(43777,43782,1),new P.ptr(43785,43790,1),new P.ptr(43793,43798,1),new P.ptr(43808,43814,1),new P.ptr(43816,43822,1),new P.ptr(43824,43866,1),new P.ptr(43868,43877,1),new P.ptr(43888,44002,1),new P.ptr(44032,55203,1),new P.ptr(55216,55238,1),new P.ptr(55243,55291,1),new P.ptr(63744,64109,1),new P.ptr(64112,64217,1),new P.ptr(64256,64262,1),new P.ptr(64275,64279,1),new P.ptr(64285,64287,2),new P.ptr(64288,64296,1),new P.ptr(64298,64310,1),new P.ptr(64312,64316,1),new P.ptr(64318,64320,2),new P.ptr(64321,64323,2),new P.ptr(64324,64326,2),new P.ptr(64327,64433,1),new P.ptr(64467,64829,1),new P.ptr(64848,64911,1),new P.ptr(64914,64967,1),new P.ptr(65008,65019,1),new P.ptr(65136,65140,1),new P.ptr(65142,65276,1),new P.ptr(65313,65338,1),new P.ptr(65345,65370,1),new P.ptr(65382,65470,1),new P.ptr(65474,65479,1),new P.ptr(65482,65487,1),new P.ptr(65490,65495,1),new P.ptr(65498,65500,1)]),new IZ([new Q.ptr(65536,65547,1),new Q.ptr(65549,65574,1),new Q.ptr(65576,65594,1),new Q.ptr(65596,65597,1),new Q.ptr(65599,65613,1),new Q.ptr(65616,65629,1),new Q.ptr(65664,65786,1),new Q.ptr(66176,66204,1),new Q.ptr(66208,66256,1),new Q.ptr(66304,66335,1),new Q.ptr(66349,66368,1),new Q.ptr(66370,66377,1),new Q.ptr(66384,66421,1),new Q.ptr(66432,66461,1),new Q.ptr(66464,66499,1),new Q.ptr(66504,66511,1),new Q.ptr(66560,66717,1),new Q.ptr(66736,66771,1),new Q.ptr(66776,66811,1),new Q.ptr(66816,66855,1),new Q.ptr(66864,66915,1),new Q.ptr(67072,67382,1),new Q.ptr(67392,67413,1),new Q.ptr(67424,67431,1),new Q.ptr(67584,67589,1),new Q.ptr(67592,67594,2),new Q.ptr(67595,67637,1),new Q.ptr(67639,67640,1),new Q.ptr(67644,67647,3),new Q.ptr(67648,67669,1),new Q.ptr(67680,67702,1),new Q.ptr(67712,67742,1),new Q.ptr(67808,67826,1),new Q.ptr(67828,67829,1),new Q.ptr(67840,67861,1),new Q.ptr(67872,67897,1),new Q.ptr(67968,68023,1),new Q.ptr(68030,68031,1),new Q.ptr(68096,68112,16),new Q.ptr(68113,68115,1),new Q.ptr(68117,68119,1),new Q.ptr(68121,68147,1),new Q.ptr(68192,68220,1),new Q.ptr(68224,68252,1),new Q.ptr(68288,68295,1),new Q.ptr(68297,68324,1),new Q.ptr(68352,68405,1),new Q.ptr(68416,68437,1),new Q.ptr(68448,68466,1),new Q.ptr(68480,68497,1),new Q.ptr(68608,68680,1),new Q.ptr(68736,68786,1),new Q.ptr(68800,68850,1),new Q.ptr(69635,69687,1),new Q.ptr(69763,69807,1),new Q.ptr(69840,69864,1),new Q.ptr(69891,69926,1),new Q.ptr(69968,70002,1),new Q.ptr(70006,70019,13),new Q.ptr(70020,70066,1),new Q.ptr(70081,70084,1),new Q.ptr(70106,70108,2),new Q.ptr(70144,70161,1),new Q.ptr(70163,70187,1),new Q.ptr(70272,70278,1),new Q.ptr(70280,70282,2),new Q.ptr(70283,70285,1),new Q.ptr(70287,70301,1),new Q.ptr(70303,70312,1),new Q.ptr(70320,70366,1),new Q.ptr(70405,70412,1),new Q.ptr(70415,70416,1),new Q.ptr(70419,70440,1),new Q.ptr(70442,70448,1),new Q.ptr(70450,70451,1),new Q.ptr(70453,70457,1),new Q.ptr(70461,70480,19),new Q.ptr(70493,70497,1),new Q.ptr(70656,70708,1),new Q.ptr(70727,70730,1),new Q.ptr(70784,70831,1),new Q.ptr(70852,70853,1),new Q.ptr(70855,71040,185),new Q.ptr(71041,71086,1),new Q.ptr(71128,71131,1),new Q.ptr(71168,71215,1),new Q.ptr(71236,71296,60),new Q.ptr(71297,71338,1),new Q.ptr(71424,71449,1),new Q.ptr(71840,71903,1),new Q.ptr(71935,72192,257),new Q.ptr(72203,72242,1),new Q.ptr(72250,72272,22),new Q.ptr(72284,72323,1),new Q.ptr(72326,72329,1),new Q.ptr(72384,72440,1),new Q.ptr(72704,72712,1),new Q.ptr(72714,72750,1),new Q.ptr(72768,72818,50),new Q.ptr(72819,72847,1),new Q.ptr(72960,72966,1),new Q.ptr(72968,72969,1),new Q.ptr(72971,73008,1),new Q.ptr(73030,73728,698),new Q.ptr(73729,74649,1),new Q.ptr(74880,75075,1),new Q.ptr(77824,78894,1),new Q.ptr(82944,83526,1),new Q.ptr(92160,92728,1),new Q.ptr(92736,92766,1),new Q.ptr(92880,92909,1),new Q.ptr(92928,92975,1),new Q.ptr(92992,92995,1),new Q.ptr(93027,93047,1),new Q.ptr(93053,93071,1),new Q.ptr(93952,94020,1),new Q.ptr(94032,94099,67),new Q.ptr(94100,94111,1),new Q.ptr(94176,94177,1),new Q.ptr(94208,100332,1),new Q.ptr(100352,101106,1),new Q.ptr(110592,110878,1),new Q.ptr(110960,111355,1),new Q.ptr(113664,113770,1),new Q.ptr(113776,113788,1),new Q.ptr(113792,113800,1),new Q.ptr(113808,113817,1),new Q.ptr(119808,119892,1),new Q.ptr(119894,119964,1),new Q.ptr(119966,119967,1),new Q.ptr(119970,119973,3),new Q.ptr(119974,119977,3),new Q.ptr(119978,119980,1),new Q.ptr(119982,119993,1),new Q.ptr(119995,119997,2),new Q.ptr(119998,120003,1),new Q.ptr(120005,120069,1),new Q.ptr(120071,120074,1),new Q.ptr(120077,120084,1),new Q.ptr(120086,120092,1),new Q.ptr(120094,120121,1),new Q.ptr(120123,120126,1),new Q.ptr(120128,120132,1),new Q.ptr(120134,120138,4),new Q.ptr(120139,120144,1),new Q.ptr(120146,120485,1),new Q.ptr(120488,120512,1),new Q.ptr(120514,120538,1),new Q.ptr(120540,120570,1),new Q.ptr(120572,120596,1),new Q.ptr(120598,120628,1),new Q.ptr(120630,120654,1),new Q.ptr(120656,120686,1),new Q.ptr(120688,120712,1),new Q.ptr(120714,120744,1),new Q.ptr(120746,120770,1),new Q.ptr(120772,120779,1),new Q.ptr(124928,125124,1),new Q.ptr(125184,125251,1),new Q.ptr(126464,126467,1),new Q.ptr(126469,126495,1),new Q.ptr(126497,126498,1),new Q.ptr(126500,126503,3),new Q.ptr(126505,126514,1),new Q.ptr(126516,126519,1),new Q.ptr(126521,126523,2),new Q.ptr(126530,126535,5),new Q.ptr(126537,126541,2),new Q.ptr(126542,126543,1),new Q.ptr(126545,126546,1),new Q.ptr(126548,126551,3),new Q.ptr(126553,126561,2),new Q.ptr(126562,126564,2),new Q.ptr(126567,126570,1),new Q.ptr(126572,126578,1),new Q.ptr(126580,126583,1),new Q.ptr(126585,126588,1),new Q.ptr(126590,126592,2),new Q.ptr(126593,126601,1),new Q.ptr(126603,126619,1),new Q.ptr(126625,126627,1),new Q.ptr(126629,126633,1),new Q.ptr(126635,126651,1),new Q.ptr(131072,173782,1),new Q.ptr(173824,177972,1),new Q.ptr(177984,178205,1),new Q.ptr(178208,183969,1),new Q.ptr(183984,191456,1),new Q.ptr(194560,195101,1)]),6);AN=new O.ptr(new IY([new P.ptr(97,122,1),new P.ptr(181,223,42),new P.ptr(224,246,1),new P.ptr(248,255,1),new P.ptr(257,311,2),new P.ptr(312,328,2),new P.ptr(329,375,2),new P.ptr(378,382,2),new P.ptr(383,384,1),new P.ptr(387,389,2),new P.ptr(392,396,4),new P.ptr(397,402,5),new P.ptr(405,409,4),new P.ptr(410,411,1),new P.ptr(414,417,3),new P.ptr(419,421,2),new P.ptr(424,426,2),new P.ptr(427,429,2),new P.ptr(432,436,4),new P.ptr(438,441,3),new P.ptr(442,445,3),new P.ptr(446,447,1),new P.ptr(454,460,3),new P.ptr(462,476,2),new P.ptr(477,495,2),new P.ptr(496,499,3),new P.ptr(501,505,4),new P.ptr(507,563,2),new P.ptr(564,569,1),new P.ptr(572,575,3),new P.ptr(576,578,2),new P.ptr(583,591,2),new P.ptr(592,659,1),new P.ptr(661,687,1),new P.ptr(881,883,2),new P.ptr(887,891,4),new P.ptr(892,893,1),new P.ptr(912,940,28),new P.ptr(941,974,1),new P.ptr(976,977,1),new P.ptr(981,983,1),new P.ptr(985,1007,2),new P.ptr(1008,1011,1),new P.ptr(1013,1019,3),new P.ptr(1020,1072,52),new P.ptr(1073,1119,1),new P.ptr(1121,1153,2),new P.ptr(1163,1215,2),new P.ptr(1218,1230,2),new P.ptr(1231,1327,2),new P.ptr(1377,1415,1),new P.ptr(5112,5117,1),new P.ptr(7296,7304,1),new P.ptr(7424,7467,1),new P.ptr(7531,7543,1),new P.ptr(7545,7578,1),new P.ptr(7681,7829,2),new P.ptr(7830,7837,1),new P.ptr(7839,7935,2),new P.ptr(7936,7943,1),new P.ptr(7952,7957,1),new P.ptr(7968,7975,1),new P.ptr(7984,7991,1),new P.ptr(8000,8005,1),new P.ptr(8016,8023,1),new P.ptr(8032,8039,1),new P.ptr(8048,8061,1),new P.ptr(8064,8071,1),new P.ptr(8080,8087,1),new P.ptr(8096,8103,1),new P.ptr(8112,8116,1),new P.ptr(8118,8119,1),new P.ptr(8126,8130,4),new P.ptr(8131,8132,1),new P.ptr(8134,8135,1),new P.ptr(8144,8147,1),new P.ptr(8150,8151,1),new P.ptr(8160,8167,1),new P.ptr(8178,8180,1),new P.ptr(8182,8183,1),new P.ptr(8458,8462,4),new P.ptr(8463,8467,4),new P.ptr(8495,8505,5),new P.ptr(8508,8509,1),new P.ptr(8518,8521,1),new P.ptr(8526,8580,54),new P.ptr(11312,11358,1),new P.ptr(11361,11365,4),new P.ptr(11366,11372,2),new P.ptr(11377,11379,2),new P.ptr(11380,11382,2),new P.ptr(11383,11387,1),new P.ptr(11393,11491,2),new P.ptr(11492,11500,8),new P.ptr(11502,11507,5),new P.ptr(11520,11557,1),new P.ptr(11559,11565,6),new P.ptr(42561,42605,2),new P.ptr(42625,42651,2),new P.ptr(42787,42799,2),new P.ptr(42800,42801,1),new P.ptr(42803,42865,2),new P.ptr(42866,42872,1),new P.ptr(42874,42876,2),new P.ptr(42879,42887,2),new P.ptr(42892,42894,2),new P.ptr(42897,42899,2),new P.ptr(42900,42901,1),new P.ptr(42903,42921,2),new P.ptr(42933,42935,2),new P.ptr(43002,43824,822),new P.ptr(43825,43866,1),new P.ptr(43872,43877,1),new P.ptr(43888,43967,1),new P.ptr(64256,64262,1),new P.ptr(64275,64279,1),new P.ptr(65345,65370,1)]),new IZ([new Q.ptr(66600,66639,1),new Q.ptr(66776,66811,1),new Q.ptr(68800,68850,1),new Q.ptr(71872,71903,1),new Q.ptr(119834,119859,1),new Q.ptr(119886,119892,1),new Q.ptr(119894,119911,1),new Q.ptr(119938,119963,1),new Q.ptr(119990,119993,1),new Q.ptr(119995,119997,2),new Q.ptr(119998,120003,1),new Q.ptr(120005,120015,1),new Q.ptr(120042,120067,1),new Q.ptr(120094,120119,1),new Q.ptr(120146,120171,1),new Q.ptr(120198,120223,1),new Q.ptr(120250,120275,1),new Q.ptr(120302,120327,1),new Q.ptr(120354,120379,1),new Q.ptr(120406,120431,1),new Q.ptr(120458,120485,1),new Q.ptr(120514,120538,1),new Q.ptr(120540,120545,1),new Q.ptr(120572,120596,1),new Q.ptr(120598,120603,1),new Q.ptr(120630,120654,1),new Q.ptr(120656,120661,1),new Q.ptr(120688,120712,1),new Q.ptr(120714,120719,1),new Q.ptr(120746,120770,1),new Q.ptr(120772,120777,1),new Q.ptr(120779,125218,4439),new Q.ptr(125219,125251,1)]),4);AO=new O.ptr(new IY([new P.ptr(688,705,1),new P.ptr(710,721,1),new P.ptr(736,740,1),new P.ptr(748,750,2),new P.ptr(884,890,6),new P.ptr(1369,1600,231),new P.ptr(1765,1766,1),new P.ptr(2036,2037,1),new P.ptr(2042,2074,32),new P.ptr(2084,2088,4),new P.ptr(2417,3654,1237),new P.ptr(3782,4348,566),new P.ptr(6103,6211,108),new P.ptr(6823,7288,465),new P.ptr(7289,7293,1),new P.ptr(7468,7530,1),new P.ptr(7544,7579,35),new P.ptr(7580,7615,1),new P.ptr(8305,8319,14),new P.ptr(8336,8348,1),new P.ptr(11388,11389,1),new P.ptr(11631,11823,192),new P.ptr(12293,12337,44),new P.ptr(12338,12341,1),new P.ptr(12347,12445,98),new P.ptr(12446,12540,94),new P.ptr(12541,12542,1),new P.ptr(40981,42232,1251),new P.ptr(42233,42237,1),new P.ptr(42508,42623,115),new P.ptr(42652,42653,1),new P.ptr(42775,42783,1),new P.ptr(42864,42888,24),new P.ptr(43000,43001,1),new P.ptr(43471,43494,23),new P.ptr(43632,43741,109),new P.ptr(43763,43764,1),new P.ptr(43868,43871,1),new P.ptr(65392,65438,46),new P.ptr(65439,65439,1)]),new IZ([new Q.ptr(92992,92992,1),new Q.ptr(92993,92995,1),new Q.ptr(94099,94111,1),new Q.ptr(94176,94177,1)]),0);AP=new O.ptr(new IY([new P.ptr(170,186,16),new P.ptr(443,448,5),new P.ptr(449,451,1),new P.ptr(660,1488,828),new P.ptr(1489,1514,1),new P.ptr(1520,1522,1),new P.ptr(1568,1599,1),new P.ptr(1601,1610,1),new P.ptr(1646,1647,1),new P.ptr(1649,1747,1),new P.ptr(1749,1774,25),new P.ptr(1775,1786,11),new P.ptr(1787,1788,1),new P.ptr(1791,1808,17),new P.ptr(1810,1839,1),new P.ptr(1869,1957,1),new P.ptr(1969,1994,25),new P.ptr(1995,2026,1),new P.ptr(2048,2069,1),new P.ptr(2112,2136,1),new P.ptr(2144,2154,1),new P.ptr(2208,2228,1),new P.ptr(2230,2237,1),new P.ptr(2308,2361,1),new P.ptr(2365,2384,19),new P.ptr(2392,2401,1),new P.ptr(2418,2432,1),new P.ptr(2437,2444,1),new P.ptr(2447,2448,1),new P.ptr(2451,2472,1),new P.ptr(2474,2480,1),new P.ptr(2482,2486,4),new P.ptr(2487,2489,1),new P.ptr(2493,2510,17),new P.ptr(2524,2525,1),new P.ptr(2527,2529,1),new P.ptr(2544,2545,1),new P.ptr(2556,2565,9),new P.ptr(2566,2570,1),new P.ptr(2575,2576,1),new P.ptr(2579,2600,1),new P.ptr(2602,2608,1),new P.ptr(2610,2611,1),new P.ptr(2613,2614,1),new P.ptr(2616,2617,1),new P.ptr(2649,2652,1),new P.ptr(2654,2674,20),new P.ptr(2675,2676,1),new P.ptr(2693,2701,1),new P.ptr(2703,2705,1),new P.ptr(2707,2728,1),new P.ptr(2730,2736,1),new P.ptr(2738,2739,1),new P.ptr(2741,2745,1),new P.ptr(2749,2768,19),new P.ptr(2784,2785,1),new P.ptr(2809,2821,12),new P.ptr(2822,2828,1),new P.ptr(2831,2832,1),new P.ptr(2835,2856,1),new P.ptr(2858,2864,1),new P.ptr(2866,2867,1),new P.ptr(2869,2873,1),new P.ptr(2877,2908,31),new P.ptr(2909,2911,2),new P.ptr(2912,2913,1),new P.ptr(2929,2947,18),new P.ptr(2949,2954,1),new P.ptr(2958,2960,1),new P.ptr(2962,2965,1),new P.ptr(2969,2970,1),new P.ptr(2972,2974,2),new P.ptr(2975,2979,4),new P.ptr(2980,2984,4),new P.ptr(2985,2986,1),new P.ptr(2990,3001,1),new P.ptr(3024,3077,53),new P.ptr(3078,3084,1),new P.ptr(3086,3088,1),new P.ptr(3090,3112,1),new P.ptr(3114,3129,1),new P.ptr(3133,3160,27),new P.ptr(3161,3162,1),new P.ptr(3168,3169,1),new P.ptr(3200,3205,5),new P.ptr(3206,3212,1),new P.ptr(3214,3216,1),new P.ptr(3218,3240,1),new P.ptr(3242,3251,1),new P.ptr(3253,3257,1),new P.ptr(3261,3294,33),new P.ptr(3296,3297,1),new P.ptr(3313,3314,1),new P.ptr(3333,3340,1),new P.ptr(3342,3344,1),new P.ptr(3346,3386,1),new P.ptr(3389,3406,17),new P.ptr(3412,3414,1),new P.ptr(3423,3425,1),new P.ptr(3450,3455,1),new P.ptr(3461,3478,1),new P.ptr(3482,3505,1),new P.ptr(3507,3515,1),new P.ptr(3517,3520,3),new P.ptr(3521,3526,1),new P.ptr(3585,3632,1),new P.ptr(3634,3635,1),new P.ptr(3648,3653,1),new P.ptr(3713,3714,1),new P.ptr(3716,3719,3),new P.ptr(3720,3722,2),new P.ptr(3725,3732,7),new P.ptr(3733,3735,1),new P.ptr(3737,3743,1),new P.ptr(3745,3747,1),new P.ptr(3749,3751,2),new P.ptr(3754,3755,1),new P.ptr(3757,3760,1),new P.ptr(3762,3763,1),new P.ptr(3773,3776,3),new P.ptr(3777,3780,1),new P.ptr(3804,3807,1),new P.ptr(3840,3904,64),new P.ptr(3905,3911,1),new P.ptr(3913,3948,1),new P.ptr(3976,3980,1),new P.ptr(4096,4138,1),new P.ptr(4159,4176,17),new P.ptr(4177,4181,1),new P.ptr(4186,4189,1),new P.ptr(4193,4197,4),new P.ptr(4198,4206,8),new P.ptr(4207,4208,1),new P.ptr(4213,4225,1),new P.ptr(4238,4304,66),new P.ptr(4305,4346,1),new P.ptr(4349,4680,1),new P.ptr(4682,4685,1),new P.ptr(4688,4694,1),new P.ptr(4696,4698,2),new P.ptr(4699,4701,1),new P.ptr(4704,4744,1),new P.ptr(4746,4749,1),new P.ptr(4752,4784,1),new P.ptr(4786,4789,1),new P.ptr(4792,4798,1),new P.ptr(4800,4802,2),new P.ptr(4803,4805,1),new P.ptr(4808,4822,1),new P.ptr(4824,4880,1),new P.ptr(4882,4885,1),new P.ptr(4888,4954,1),new P.ptr(4992,5007,1),new P.ptr(5121,5740,1),new P.ptr(5743,5759,1),new P.ptr(5761,5786,1),new P.ptr(5792,5866,1),new P.ptr(5873,5880,1),new P.ptr(5888,5900,1),new P.ptr(5902,5905,1),new P.ptr(5920,5937,1),new P.ptr(5952,5969,1),new P.ptr(5984,5996,1),new P.ptr(5998,6000,1),new P.ptr(6016,6067,1),new P.ptr(6108,6176,68),new P.ptr(6177,6210,1),new P.ptr(6212,6263,1),new P.ptr(6272,6276,1),new P.ptr(6279,6312,1),new P.ptr(6314,6320,6),new P.ptr(6321,6389,1),new P.ptr(6400,6430,1),new P.ptr(6480,6509,1),new P.ptr(6512,6516,1),new P.ptr(6528,6571,1),new P.ptr(6576,6601,1),new P.ptr(6656,6678,1),new P.ptr(6688,6740,1),new P.ptr(6917,6963,1),new P.ptr(6981,6987,1),new P.ptr(7043,7072,1),new P.ptr(7086,7087,1),new P.ptr(7098,7141,1),new P.ptr(7168,7203,1),new P.ptr(7245,7247,1),new P.ptr(7258,7287,1),new P.ptr(7401,7404,1),new P.ptr(7406,7409,1),new P.ptr(7413,7414,1),new P.ptr(8501,8504,1),new P.ptr(11568,11623,1),new P.ptr(11648,11670,1),new P.ptr(11680,11686,1),new P.ptr(11688,11694,1),new P.ptr(11696,11702,1),new P.ptr(11704,11710,1),new P.ptr(11712,11718,1),new P.ptr(11720,11726,1),new P.ptr(11728,11734,1),new P.ptr(11736,11742,1),new P.ptr(12294,12348,54),new P.ptr(12353,12438,1),new P.ptr(12447,12449,2),new P.ptr(12450,12538,1),new P.ptr(12543,12549,6),new P.ptr(12550,12590,1),new P.ptr(12593,12686,1),new P.ptr(12704,12730,1),new P.ptr(12784,12799,1),new P.ptr(13312,19893,1),new P.ptr(19968,40938,1),new P.ptr(40960,40980,1),new P.ptr(40982,42124,1),new P.ptr(42192,42231,1),new P.ptr(42240,42507,1),new P.ptr(42512,42527,1),new P.ptr(42538,42539,1),new P.ptr(42606,42656,50),new P.ptr(42657,42725,1),new P.ptr(42895,42999,104),new P.ptr(43003,43009,1),new P.ptr(43011,43013,1),new P.ptr(43015,43018,1),new P.ptr(43020,43042,1),new P.ptr(43072,43123,1),new P.ptr(43138,43187,1),new P.ptr(43250,43255,1),new P.ptr(43259,43261,2),new P.ptr(43274,43301,1),new P.ptr(43312,43334,1),new P.ptr(43360,43388,1),new P.ptr(43396,43442,1),new P.ptr(43488,43492,1),new P.ptr(43495,43503,1),new P.ptr(43514,43518,1),new P.ptr(43520,43560,1),new P.ptr(43584,43586,1),new P.ptr(43588,43595,1),new P.ptr(43616,43631,1),new P.ptr(43633,43638,1),new P.ptr(43642,43646,4),new P.ptr(43647,43695,1),new P.ptr(43697,43701,4),new P.ptr(43702,43705,3),new P.ptr(43706,43709,1),new P.ptr(43712,43714,2),new P.ptr(43739,43740,1),new P.ptr(43744,43754,1),new P.ptr(43762,43777,15),new P.ptr(43778,43782,1),new P.ptr(43785,43790,1),new P.ptr(43793,43798,1),new P.ptr(43808,43814,1),new P.ptr(43816,43822,1),new P.ptr(43968,44002,1),new P.ptr(44032,55203,1),new P.ptr(55216,55238,1),new P.ptr(55243,55291,1),new P.ptr(63744,64109,1),new P.ptr(64112,64217,1),new P.ptr(64285,64287,2),new P.ptr(64288,64296,1),new P.ptr(64298,64310,1),new P.ptr(64312,64316,1),new P.ptr(64318,64320,2),new P.ptr(64321,64323,2),new P.ptr(64324,64326,2),new P.ptr(64327,64433,1),new P.ptr(64467,64829,1),new P.ptr(64848,64911,1),new P.ptr(64914,64967,1),new P.ptr(65008,65019,1),new P.ptr(65136,65140,1),new P.ptr(65142,65276,1),new P.ptr(65382,65391,1),new P.ptr(65393,65437,1),new P.ptr(65440,65470,1),new P.ptr(65474,65479,1),new P.ptr(65482,65487,1),new P.ptr(65490,65495,1),new P.ptr(65498,65500,1)]),new IZ([new Q.ptr(65536,65547,1),new Q.ptr(65549,65574,1),new Q.ptr(65576,65594,1),new Q.ptr(65596,65597,1),new Q.ptr(65599,65613,1),new Q.ptr(65616,65629,1),new Q.ptr(65664,65786,1),new Q.ptr(66176,66204,1),new Q.ptr(66208,66256,1),new Q.ptr(66304,66335,1),new Q.ptr(66349,66368,1),new Q.ptr(66370,66377,1),new Q.ptr(66384,66421,1),new Q.ptr(66432,66461,1),new Q.ptr(66464,66499,1),new Q.ptr(66504,66511,1),new Q.ptr(66640,66717,1),new Q.ptr(66816,66855,1),new Q.ptr(66864,66915,1),new Q.ptr(67072,67382,1),new Q.ptr(67392,67413,1),new Q.ptr(67424,67431,1),new Q.ptr(67584,67589,1),new Q.ptr(67592,67594,2),new Q.ptr(67595,67637,1),new Q.ptr(67639,67640,1),new Q.ptr(67644,67647,3),new Q.ptr(67648,67669,1),new Q.ptr(67680,67702,1),new Q.ptr(67712,67742,1),new Q.ptr(67808,67826,1),new Q.ptr(67828,67829,1),new Q.ptr(67840,67861,1),new Q.ptr(67872,67897,1),new Q.ptr(67968,68023,1),new Q.ptr(68030,68031,1),new Q.ptr(68096,68112,16),new Q.ptr(68113,68115,1),new Q.ptr(68117,68119,1),new Q.ptr(68121,68147,1),new Q.ptr(68192,68220,1),new Q.ptr(68224,68252,1),new Q.ptr(68288,68295,1),new Q.ptr(68297,68324,1),new Q.ptr(68352,68405,1),new Q.ptr(68416,68437,1),new Q.ptr(68448,68466,1),new Q.ptr(68480,68497,1),new Q.ptr(68608,68680,1),new Q.ptr(69635,69687,1),new Q.ptr(69763,69807,1),new Q.ptr(69840,69864,1),new Q.ptr(69891,69926,1),new Q.ptr(69968,70002,1),new Q.ptr(70006,70019,13),new Q.ptr(70020,70066,1),new Q.ptr(70081,70084,1),new Q.ptr(70106,70108,2),new Q.ptr(70144,70161,1),new Q.ptr(70163,70187,1),new Q.ptr(70272,70278,1),new Q.ptr(70280,70282,2),new Q.ptr(70283,70285,1),new Q.ptr(70287,70301,1),new Q.ptr(70303,70312,1),new Q.ptr(70320,70366,1),new Q.ptr(70405,70412,1),new Q.ptr(70415,70416,1),new Q.ptr(70419,70440,1),new Q.ptr(70442,70448,1),new Q.ptr(70450,70451,1),new Q.ptr(70453,70457,1),new Q.ptr(70461,70480,19),new Q.ptr(70493,70497,1),new Q.ptr(70656,70708,1),new Q.ptr(70727,70730,1),new Q.ptr(70784,70831,1),new Q.ptr(70852,70853,1),new Q.ptr(70855,71040,185),new Q.ptr(71041,71086,1),new Q.ptr(71128,71131,1),new Q.ptr(71168,71215,1),new Q.ptr(71236,71296,60),new Q.ptr(71297,71338,1),new Q.ptr(71424,71449,1),new Q.ptr(71935,72192,257),new Q.ptr(72203,72242,1),new Q.ptr(72250,72272,22),new Q.ptr(72284,72323,1),new Q.ptr(72326,72329,1),new Q.ptr(72384,72440,1),new Q.ptr(72704,72712,1),new Q.ptr(72714,72750,1),new Q.ptr(72768,72818,50),new Q.ptr(72819,72847,1),new Q.ptr(72960,72966,1),new Q.ptr(72968,72969,1),new Q.ptr(72971,73008,1),new Q.ptr(73030,73728,698),new Q.ptr(73729,74649,1),new Q.ptr(74880,75075,1),new Q.ptr(77824,78894,1),new Q.ptr(82944,83526,1),new Q.ptr(92160,92728,1),new Q.ptr(92736,92766,1),new Q.ptr(92880,92909,1),new Q.ptr(92928,92975,1),new Q.ptr(93027,93047,1),new Q.ptr(93053,93071,1),new Q.ptr(93952,94020,1),new Q.ptr(94032,94208,176),new Q.ptr(94209,100332,1),new Q.ptr(100352,101106,1),new Q.ptr(110592,110878,1),new Q.ptr(110960,111355,1),new Q.ptr(113664,113770,1),new Q.ptr(113776,113788,1),new Q.ptr(113792,113800,1),new Q.ptr(113808,113817,1),new Q.ptr(124928,125124,1),new Q.ptr(126464,126467,1),new Q.ptr(126469,126495,1),new Q.ptr(126497,126498,1),new Q.ptr(126500,126503,3),new Q.ptr(126505,126514,1),new Q.ptr(126516,126519,1),new Q.ptr(126521,126523,2),new Q.ptr(126530,126535,5),new Q.ptr(126537,126541,2),new Q.ptr(126542,126543,1),new Q.ptr(126545,126546,1),new Q.ptr(126548,126551,3),new Q.ptr(126553,126561,2),new Q.ptr(126562,126564,2),new Q.ptr(126567,126570,1),new Q.ptr(126572,126578,1),new Q.ptr(126580,126583,1),new Q.ptr(126585,126588,1),new Q.ptr(126590,126592,2),new Q.ptr(126593,126601,1),new Q.ptr(126603,126619,1),new Q.ptr(126625,126627,1),new Q.ptr(126629,126633,1),new Q.ptr(126635,126651,1),new Q.ptr(131072,173782,1),new Q.ptr(173824,177972,1),new Q.ptr(177984,178205,1),new Q.ptr(178208,183969,1),new Q.ptr(183984,191456,1),new Q.ptr(194560,195101,1)]),1);AQ=new O.ptr(new IY([new P.ptr(453,459,3),new P.ptr(498,8072,7574),new P.ptr(8073,8079,1),new P.ptr(8088,8095,1),new P.ptr(8104,8111,1),new P.ptr(8124,8140,16),new P.ptr(8188,8188,1)]),IZ.nil,0);AR=new O.ptr(new IY([new P.ptr(65,90,1),new P.ptr(192,214,1),new P.ptr(216,222,1),new P.ptr(256,310,2),new P.ptr(313,327,2),new P.ptr(330,376,2),new P.ptr(377,381,2),new P.ptr(385,386,1),new P.ptr(388,390,2),new P.ptr(391,393,2),new P.ptr(394,395,1),new P.ptr(398,401,1),new P.ptr(403,404,1),new P.ptr(406,408,1),new P.ptr(412,413,1),new P.ptr(415,416,1),new P.ptr(418,422,2),new P.ptr(423,425,2),new P.ptr(428,430,2),new P.ptr(431,433,2),new P.ptr(434,435,1),new P.ptr(437,439,2),new P.ptr(440,444,4),new P.ptr(452,461,3),new P.ptr(463,475,2),new P.ptr(478,494,2),new P.ptr(497,500,3),new P.ptr(502,504,1),new P.ptr(506,562,2),new P.ptr(570,571,1),new P.ptr(573,574,1),new P.ptr(577,579,2),new P.ptr(580,582,1),new P.ptr(584,590,2),new P.ptr(880,882,2),new P.ptr(886,895,9),new P.ptr(902,904,2),new P.ptr(905,906,1),new P.ptr(908,910,2),new P.ptr(911,913,2),new P.ptr(914,929,1),new P.ptr(931,939,1),new P.ptr(975,978,3),new P.ptr(979,980,1),new P.ptr(984,1006,2),new P.ptr(1012,1015,3),new P.ptr(1017,1018,1),new P.ptr(1021,1071,1),new P.ptr(1120,1152,2),new P.ptr(1162,1216,2),new P.ptr(1217,1229,2),new P.ptr(1232,1326,2),new P.ptr(1329,1366,1),new P.ptr(4256,4293,1),new P.ptr(4295,4301,6),new P.ptr(5024,5109,1),new P.ptr(7680,7828,2),new P.ptr(7838,7934,2),new P.ptr(7944,7951,1),new P.ptr(7960,7965,1),new P.ptr(7976,7983,1),new P.ptr(7992,7999,1),new P.ptr(8008,8013,1),new P.ptr(8025,8031,2),new P.ptr(8040,8047,1),new P.ptr(8120,8123,1),new P.ptr(8136,8139,1),new P.ptr(8152,8155,1),new P.ptr(8168,8172,1),new P.ptr(8184,8187,1),new P.ptr(8450,8455,5),new P.ptr(8459,8461,1),new P.ptr(8464,8466,1),new P.ptr(8469,8473,4),new P.ptr(8474,8477,1),new P.ptr(8484,8490,2),new P.ptr(8491,8493,1),new P.ptr(8496,8499,1),new P.ptr(8510,8511,1),new P.ptr(8517,8579,62),new P.ptr(11264,11310,1),new P.ptr(11360,11362,2),new P.ptr(11363,11364,1),new P.ptr(11367,11373,2),new P.ptr(11374,11376,1),new P.ptr(11378,11381,3),new P.ptr(11390,11392,1),new P.ptr(11394,11490,2),new P.ptr(11499,11501,2),new P.ptr(11506,42560,31054),new P.ptr(42562,42604,2),new P.ptr(42624,42650,2),new P.ptr(42786,42798,2),new P.ptr(42802,42862,2),new P.ptr(42873,42877,2),new P.ptr(42878,42886,2),new P.ptr(42891,42893,2),new P.ptr(42896,42898,2),new P.ptr(42902,42922,2),new P.ptr(42923,42926,1),new P.ptr(42928,42932,1),new P.ptr(42934,65313,22379),new P.ptr(65314,65338,1)]),new IZ([new Q.ptr(66560,66599,1),new Q.ptr(66736,66771,1),new Q.ptr(68736,68786,1),new Q.ptr(71840,71871,1),new Q.ptr(119808,119833,1),new Q.ptr(119860,119885,1),new Q.ptr(119912,119937,1),new Q.ptr(119964,119966,2),new Q.ptr(119967,119973,3),new Q.ptr(119974,119977,3),new Q.ptr(119978,119980,1),new Q.ptr(119982,119989,1),new Q.ptr(120016,120041,1),new Q.ptr(120068,120069,1),new Q.ptr(120071,120074,1),new Q.ptr(120077,120084,1),new Q.ptr(120086,120092,1),new Q.ptr(120120,120121,1),new Q.ptr(120123,120126,1),new Q.ptr(120128,120132,1),new Q.ptr(120134,120138,4),new Q.ptr(120139,120144,1),new Q.ptr(120172,120197,1),new Q.ptr(120224,120249,1),new Q.ptr(120276,120301,1),new Q.ptr(120328,120353,1),new Q.ptr(120380,120405,1),new Q.ptr(120432,120457,1),new Q.ptr(120488,120512,1),new Q.ptr(120546,120570,1),new Q.ptr(120604,120628,1),new Q.ptr(120662,120686,1),new Q.ptr(120720,120744,1),new Q.ptr(120778,125184,4406),new Q.ptr(125185,125217,1)]),3);AS=new O.ptr(new IY([new P.ptr(768,879,1),new P.ptr(1155,1161,1),new P.ptr(1425,1469,1),new P.ptr(1471,1473,2),new P.ptr(1474,1476,2),new P.ptr(1477,1479,2),new P.ptr(1552,1562,1),new P.ptr(1611,1631,1),new P.ptr(1648,1750,102),new P.ptr(1751,1756,1),new P.ptr(1759,1764,1),new P.ptr(1767,1768,1),new P.ptr(1770,1773,1),new P.ptr(1809,1840,31),new P.ptr(1841,1866,1),new P.ptr(1958,1968,1),new P.ptr(2027,2035,1),new P.ptr(2070,2073,1),new P.ptr(2075,2083,1),new P.ptr(2085,2087,1),new P.ptr(2089,2093,1),new P.ptr(2137,2139,1),new P.ptr(2260,2273,1),new P.ptr(2275,2307,1),new P.ptr(2362,2364,1),new P.ptr(2366,2383,1),new P.ptr(2385,2391,1),new P.ptr(2402,2403,1),new P.ptr(2433,2435,1),new P.ptr(2492,2494,2),new P.ptr(2495,2500,1),new P.ptr(2503,2504,1),new P.ptr(2507,2509,1),new P.ptr(2519,2530,11),new P.ptr(2531,2561,30),new P.ptr(2562,2563,1),new P.ptr(2620,2622,2),new P.ptr(2623,2626,1),new P.ptr(2631,2632,1),new P.ptr(2635,2637,1),new P.ptr(2641,2672,31),new P.ptr(2673,2677,4),new P.ptr(2689,2691,1),new P.ptr(2748,2750,2),new P.ptr(2751,2757,1),new P.ptr(2759,2761,1),new P.ptr(2763,2765,1),new P.ptr(2786,2787,1),new P.ptr(2810,2815,1),new P.ptr(2817,2819,1),new P.ptr(2876,2878,2),new P.ptr(2879,2884,1),new P.ptr(2887,2888,1),new P.ptr(2891,2893,1),new P.ptr(2902,2903,1),new P.ptr(2914,2915,1),new P.ptr(2946,3006,60),new P.ptr(3007,3010,1),new P.ptr(3014,3016,1),new P.ptr(3018,3021,1),new P.ptr(3031,3072,41),new P.ptr(3073,3075,1),new P.ptr(3134,3140,1),new P.ptr(3142,3144,1),new P.ptr(3146,3149,1),new P.ptr(3157,3158,1),new P.ptr(3170,3171,1),new P.ptr(3201,3203,1),new P.ptr(3260,3262,2),new P.ptr(3263,3268,1),new P.ptr(3270,3272,1),new P.ptr(3274,3277,1),new P.ptr(3285,3286,1),new P.ptr(3298,3299,1),new P.ptr(3328,3331,1),new P.ptr(3387,3388,1),new P.ptr(3390,3396,1),new P.ptr(3398,3400,1),new P.ptr(3402,3405,1),new P.ptr(3415,3426,11),new P.ptr(3427,3458,31),new P.ptr(3459,3530,71),new P.ptr(3535,3540,1),new P.ptr(3542,3544,2),new P.ptr(3545,3551,1),new P.ptr(3570,3571,1),new P.ptr(3633,3636,3),new P.ptr(3637,3642,1),new P.ptr(3655,3662,1),new P.ptr(3761,3764,3),new P.ptr(3765,3769,1),new P.ptr(3771,3772,1),new P.ptr(3784,3789,1),new P.ptr(3864,3865,1),new P.ptr(3893,3897,2),new P.ptr(3902,3903,1),new P.ptr(3953,3972,1),new P.ptr(3974,3975,1),new P.ptr(3981,3991,1),new P.ptr(3993,4028,1),new P.ptr(4038,4139,101),new P.ptr(4140,4158,1),new P.ptr(4182,4185,1),new P.ptr(4190,4192,1),new P.ptr(4194,4196,1),new P.ptr(4199,4205,1),new P.ptr(4209,4212,1),new P.ptr(4226,4237,1),new P.ptr(4239,4250,11),new P.ptr(4251,4253,1),new P.ptr(4957,4959,1),new P.ptr(5906,5908,1),new P.ptr(5938,5940,1),new P.ptr(5970,5971,1),new P.ptr(6002,6003,1),new P.ptr(6068,6099,1),new P.ptr(6109,6155,46),new P.ptr(6156,6157,1),new P.ptr(6277,6278,1),new P.ptr(6313,6432,119),new P.ptr(6433,6443,1),new P.ptr(6448,6459,1),new P.ptr(6679,6683,1),new P.ptr(6741,6750,1),new P.ptr(6752,6780,1),new P.ptr(6783,6832,49),new P.ptr(6833,6846,1),new P.ptr(6912,6916,1),new P.ptr(6964,6980,1),new P.ptr(7019,7027,1),new P.ptr(7040,7042,1),new P.ptr(7073,7085,1),new P.ptr(7142,7155,1),new P.ptr(7204,7223,1),new P.ptr(7376,7378,1),new P.ptr(7380,7400,1),new P.ptr(7405,7410,5),new P.ptr(7411,7412,1),new P.ptr(7415,7417,1),new P.ptr(7616,7673,1),new P.ptr(7675,7679,1),new P.ptr(8400,8432,1),new P.ptr(11503,11505,1),new P.ptr(11647,11744,97),new P.ptr(11745,11775,1),new P.ptr(12330,12335,1),new P.ptr(12441,12442,1),new P.ptr(42607,42610,1),new P.ptr(42612,42621,1),new P.ptr(42654,42655,1),new P.ptr(42736,42737,1),new P.ptr(43010,43014,4),new P.ptr(43019,43043,24),new P.ptr(43044,43047,1),new P.ptr(43136,43137,1),new P.ptr(43188,43205,1),new P.ptr(43232,43249,1),new P.ptr(43302,43309,1),new P.ptr(43335,43347,1),new P.ptr(43392,43395,1),new P.ptr(43443,43456,1),new P.ptr(43493,43561,68),new P.ptr(43562,43574,1),new P.ptr(43587,43596,9),new P.ptr(43597,43643,46),new P.ptr(43644,43645,1),new P.ptr(43696,43698,2),new P.ptr(43699,43700,1),new P.ptr(43703,43704,1),new P.ptr(43710,43711,1),new P.ptr(43713,43755,42),new P.ptr(43756,43759,1),new P.ptr(43765,43766,1),new P.ptr(44003,44010,1),new P.ptr(44012,44013,1),new P.ptr(64286,65024,738),new P.ptr(65025,65039,1),new P.ptr(65056,65071,1)]),new IZ([new Q.ptr(66045,66272,227),new Q.ptr(66422,66426,1),new Q.ptr(68097,68099,1),new Q.ptr(68101,68102,1),new Q.ptr(68108,68111,1),new Q.ptr(68152,68154,1),new Q.ptr(68159,68325,166),new Q.ptr(68326,69632,1306),new Q.ptr(69633,69634,1),new Q.ptr(69688,69702,1),new Q.ptr(69759,69762,1),new Q.ptr(69808,69818,1),new Q.ptr(69888,69890,1),new Q.ptr(69927,69940,1),new Q.ptr(70003,70016,13),new Q.ptr(70017,70018,1),new Q.ptr(70067,70080,1),new Q.ptr(70090,70092,1),new Q.ptr(70188,70199,1),new Q.ptr(70206,70367,161),new Q.ptr(70368,70378,1),new Q.ptr(70400,70403,1),new Q.ptr(70460,70462,2),new Q.ptr(70463,70468,1),new Q.ptr(70471,70472,1),new Q.ptr(70475,70477,1),new Q.ptr(70487,70498,11),new Q.ptr(70499,70502,3),new Q.ptr(70503,70508,1),new Q.ptr(70512,70516,1),new Q.ptr(70709,70726,1),new Q.ptr(70832,70851,1),new Q.ptr(71087,71093,1),new Q.ptr(71096,71104,1),new Q.ptr(71132,71133,1),new Q.ptr(71216,71232,1),new Q.ptr(71339,71351,1),new Q.ptr(71453,71467,1),new Q.ptr(72193,72202,1),new Q.ptr(72243,72249,1),new Q.ptr(72251,72254,1),new Q.ptr(72263,72273,10),new Q.ptr(72274,72283,1),new Q.ptr(72330,72345,1),new Q.ptr(72751,72758,1),new Q.ptr(72760,72767,1),new Q.ptr(72850,72871,1),new Q.ptr(72873,72886,1),new Q.ptr(73009,73014,1),new Q.ptr(73018,73020,2),new Q.ptr(73021,73023,2),new Q.ptr(73024,73029,1),new Q.ptr(73031,92912,19881),new Q.ptr(92913,92916,1),new Q.ptr(92976,92982,1),new Q.ptr(94033,94078,1),new Q.ptr(94095,94098,1),new Q.ptr(113821,113822,1),new Q.ptr(119141,119145,1),new Q.ptr(119149,119154,1),new Q.ptr(119163,119170,1),new Q.ptr(119173,119179,1),new Q.ptr(119210,119213,1),new Q.ptr(119362,119364,1),new Q.ptr(121344,121398,1),new Q.ptr(121403,121452,1),new Q.ptr(121461,121476,15),new Q.ptr(121499,121503,1),new Q.ptr(121505,121519,1),new Q.ptr(122880,122886,1),new Q.ptr(122888,122904,1),new Q.ptr(122907,122913,1),new Q.ptr(122915,122916,1),new Q.ptr(122918,122922,1),new Q.ptr(125136,125142,1),new Q.ptr(125252,125258,1),new Q.ptr(917760,917999,1)]),0);AT=new O.ptr(new IY([new P.ptr(2307,2363,56),new P.ptr(2366,2368,1),new P.ptr(2377,2380,1),new P.ptr(2382,2383,1),new P.ptr(2434,2435,1),new P.ptr(2494,2496,1),new P.ptr(2503,2504,1),new P.ptr(2507,2508,1),new P.ptr(2519,2563,44),new P.ptr(2622,2624,1),new P.ptr(2691,2750,59),new P.ptr(2751,2752,1),new P.ptr(2761,2763,2),new P.ptr(2764,2818,54),new P.ptr(2819,2878,59),new P.ptr(2880,2887,7),new P.ptr(2888,2891,3),new P.ptr(2892,2903,11),new P.ptr(3006,3007,1),new P.ptr(3009,3010,1),new P.ptr(3014,3016,1),new P.ptr(3018,3020,1),new P.ptr(3031,3073,42),new P.ptr(3074,3075,1),new P.ptr(3137,3140,1),new P.ptr(3202,3203,1),new P.ptr(3262,3264,2),new P.ptr(3265,3268,1),new P.ptr(3271,3272,1),new P.ptr(3274,3275,1),new P.ptr(3285,3286,1),new P.ptr(3330,3331,1),new P.ptr(3390,3392,1),new P.ptr(3398,3400,1),new P.ptr(3402,3404,1),new P.ptr(3415,3458,43),new P.ptr(3459,3535,76),new P.ptr(3536,3537,1),new P.ptr(3544,3551,1),new P.ptr(3570,3571,1),new P.ptr(3902,3903,1),new P.ptr(3967,4139,172),new P.ptr(4140,4145,5),new P.ptr(4152,4155,3),new P.ptr(4156,4182,26),new P.ptr(4183,4194,11),new P.ptr(4195,4196,1),new P.ptr(4199,4205,1),new P.ptr(4227,4228,1),new P.ptr(4231,4236,1),new P.ptr(4239,4250,11),new P.ptr(4251,4252,1),new P.ptr(6070,6078,8),new P.ptr(6079,6085,1),new P.ptr(6087,6088,1),new P.ptr(6435,6438,1),new P.ptr(6441,6443,1),new P.ptr(6448,6449,1),new P.ptr(6451,6456,1),new P.ptr(6681,6682,1),new P.ptr(6741,6743,2),new P.ptr(6753,6755,2),new P.ptr(6756,6765,9),new P.ptr(6766,6770,1),new P.ptr(6916,6965,49),new P.ptr(6971,6973,2),new P.ptr(6974,6977,1),new P.ptr(6979,6980,1),new P.ptr(7042,7073,31),new P.ptr(7078,7079,1),new P.ptr(7082,7143,61),new P.ptr(7146,7148,1),new P.ptr(7150,7154,4),new P.ptr(7155,7204,49),new P.ptr(7205,7211,1),new P.ptr(7220,7221,1),new P.ptr(7393,7410,17),new P.ptr(7411,7415,4),new P.ptr(12334,12335,1),new P.ptr(43043,43044,1),new P.ptr(43047,43136,89),new P.ptr(43137,43188,51),new P.ptr(43189,43203,1),new P.ptr(43346,43347,1),new P.ptr(43395,43444,49),new P.ptr(43445,43450,5),new P.ptr(43451,43453,2),new P.ptr(43454,43456,1),new P.ptr(43567,43568,1),new P.ptr(43571,43572,1),new P.ptr(43597,43643,46),new P.ptr(43645,43755,110),new P.ptr(43758,43759,1),new P.ptr(43765,44003,238),new P.ptr(44004,44006,2),new P.ptr(44007,44009,2),new P.ptr(44010,44012,2)]),new IZ([new Q.ptr(69632,69634,2),new Q.ptr(69762,69808,46),new Q.ptr(69809,69810,1),new Q.ptr(69815,69816,1),new Q.ptr(69932,70018,86),new Q.ptr(70067,70069,1),new Q.ptr(70079,70080,1),new Q.ptr(70188,70190,1),new Q.ptr(70194,70195,1),new Q.ptr(70197,70368,171),new Q.ptr(70369,70370,1),new Q.ptr(70402,70403,1),new Q.ptr(70462,70463,1),new Q.ptr(70465,70468,1),new Q.ptr(70471,70472,1),new Q.ptr(70475,70477,1),new Q.ptr(70487,70498,11),new Q.ptr(70499,70709,210),new Q.ptr(70710,70711,1),new Q.ptr(70720,70721,1),new Q.ptr(70725,70832,107),new Q.ptr(70833,70834,1),new Q.ptr(70841,70843,2),new Q.ptr(70844,70846,1),new Q.ptr(70849,71087,238),new Q.ptr(71088,71089,1),new Q.ptr(71096,71099,1),new Q.ptr(71102,71216,114),new Q.ptr(71217,71218,1),new Q.ptr(71227,71228,1),new Q.ptr(71230,71340,110),new Q.ptr(71342,71343,1),new Q.ptr(71350,71456,106),new Q.ptr(71457,71462,5),new Q.ptr(72199,72200,1),new Q.ptr(72249,72279,30),new Q.ptr(72280,72343,63),new Q.ptr(72751,72766,15),new Q.ptr(72873,72881,8),new Q.ptr(72884,94033,21149),new Q.ptr(94034,94078,1),new Q.ptr(119141,119142,1),new Q.ptr(119149,119154,1)]),0);AU=new O.ptr(new IY([new P.ptr(1160,1161,1),new P.ptr(6846,8413,1567),new P.ptr(8414,8416,1),new P.ptr(8418,8420,1),new P.ptr(42608,42610,1)]),IZ.nil,0);AV=new O.ptr(new IY([new P.ptr(768,879,1),new P.ptr(1155,1159,1),new P.ptr(1425,1469,1),new P.ptr(1471,1473,2),new P.ptr(1474,1476,2),new P.ptr(1477,1479,2),new P.ptr(1552,1562,1),new P.ptr(1611,1631,1),new P.ptr(1648,1750,102),new P.ptr(1751,1756,1),new P.ptr(1759,1764,1),new P.ptr(1767,1768,1),new P.ptr(1770,1773,1),new P.ptr(1809,1840,31),new P.ptr(1841,1866,1),new P.ptr(1958,1968,1),new P.ptr(2027,2035,1),new P.ptr(2070,2073,1),new P.ptr(2075,2083,1),new P.ptr(2085,2087,1),new P.ptr(2089,2093,1),new P.ptr(2137,2139,1),new P.ptr(2260,2273,1),new P.ptr(2275,2306,1),new P.ptr(2362,2364,2),new P.ptr(2369,2376,1),new P.ptr(2381,2385,4),new P.ptr(2386,2391,1),new P.ptr(2402,2403,1),new P.ptr(2433,2492,59),new P.ptr(2497,2500,1),new P.ptr(2509,2530,21),new P.ptr(2531,2561,30),new P.ptr(2562,2620,58),new P.ptr(2625,2626,1),new P.ptr(2631,2632,1),new P.ptr(2635,2637,1),new P.ptr(2641,2672,31),new P.ptr(2673,2677,4),new P.ptr(2689,2690,1),new P.ptr(2748,2753,5),new P.ptr(2754,2757,1),new P.ptr(2759,2760,1),new P.ptr(2765,2786,21),new P.ptr(2787,2810,23),new P.ptr(2811,2815,1),new P.ptr(2817,2876,59),new P.ptr(2879,2881,2),new P.ptr(2882,2884,1),new P.ptr(2893,2902,9),new P.ptr(2914,2915,1),new P.ptr(2946,3008,62),new P.ptr(3021,3072,51),new P.ptr(3134,3136,1),new P.ptr(3142,3144,1),new P.ptr(3146,3149,1),new P.ptr(3157,3158,1),new P.ptr(3170,3171,1),new P.ptr(3201,3260,59),new P.ptr(3263,3270,7),new P.ptr(3276,3277,1),new P.ptr(3298,3299,1),new P.ptr(3328,3329,1),new P.ptr(3387,3388,1),new P.ptr(3393,3396,1),new P.ptr(3405,3426,21),new P.ptr(3427,3530,103),new P.ptr(3538,3540,1),new P.ptr(3542,3633,91),new P.ptr(3636,3642,1),new P.ptr(3655,3662,1),new P.ptr(3761,3764,3),new P.ptr(3765,3769,1),new P.ptr(3771,3772,1),new P.ptr(3784,3789,1),new P.ptr(3864,3865,1),new P.ptr(3893,3897,2),new P.ptr(3953,3966,1),new P.ptr(3968,3972,1),new P.ptr(3974,3975,1),new P.ptr(3981,3991,1),new P.ptr(3993,4028,1),new P.ptr(4038,4141,103),new P.ptr(4142,4144,1),new P.ptr(4146,4151,1),new P.ptr(4153,4154,1),new P.ptr(4157,4158,1),new P.ptr(4184,4185,1),new P.ptr(4190,4192,1),new P.ptr(4209,4212,1),new P.ptr(4226,4229,3),new P.ptr(4230,4237,7),new P.ptr(4253,4957,704),new P.ptr(4958,4959,1),new P.ptr(5906,5908,1),new P.ptr(5938,5940,1),new P.ptr(5970,5971,1),new P.ptr(6002,6003,1),new P.ptr(6068,6069,1),new P.ptr(6071,6077,1),new P.ptr(6086,6089,3),new P.ptr(6090,6099,1),new P.ptr(6109,6155,46),new P.ptr(6156,6157,1),new P.ptr(6277,6278,1),new P.ptr(6313,6432,119),new P.ptr(6433,6434,1),new P.ptr(6439,6440,1),new P.ptr(6450,6457,7),new P.ptr(6458,6459,1),new P.ptr(6679,6680,1),new P.ptr(6683,6742,59),new P.ptr(6744,6750,1),new P.ptr(6752,6754,2),new P.ptr(6757,6764,1),new P.ptr(6771,6780,1),new P.ptr(6783,6832,49),new P.ptr(6833,6845,1),new P.ptr(6912,6915,1),new P.ptr(6964,6966,2),new P.ptr(6967,6970,1),new P.ptr(6972,6978,6),new P.ptr(7019,7027,1),new P.ptr(7040,7041,1),new P.ptr(7074,7077,1),new P.ptr(7080,7081,1),new P.ptr(7083,7085,1),new P.ptr(7142,7144,2),new P.ptr(7145,7149,4),new P.ptr(7151,7153,1),new P.ptr(7212,7219,1),new P.ptr(7222,7223,1),new P.ptr(7376,7378,1),new P.ptr(7380,7392,1),new P.ptr(7394,7400,1),new P.ptr(7405,7412,7),new P.ptr(7416,7417,1),new P.ptr(7616,7673,1),new P.ptr(7675,7679,1),new P.ptr(8400,8412,1),new P.ptr(8417,8421,4),new P.ptr(8422,8432,1),new P.ptr(11503,11505,1),new P.ptr(11647,11744,97),new P.ptr(11745,11775,1),new P.ptr(12330,12333,1),new P.ptr(12441,12442,1),new P.ptr(42607,42612,5),new P.ptr(42613,42621,1),new P.ptr(42654,42655,1),new P.ptr(42736,42737,1),new P.ptr(43010,43014,4),new P.ptr(43019,43045,26),new P.ptr(43046,43204,158),new P.ptr(43205,43232,27),new P.ptr(43233,43249,1),new P.ptr(43302,43309,1),new P.ptr(43335,43345,1),new P.ptr(43392,43394,1),new P.ptr(43443,43446,3),new P.ptr(43447,43449,1),new P.ptr(43452,43493,41),new P.ptr(43561,43566,1),new P.ptr(43569,43570,1),new P.ptr(43573,43574,1),new P.ptr(43587,43596,9),new P.ptr(43644,43696,52),new P.ptr(43698,43700,1),new P.ptr(43703,43704,1),new P.ptr(43710,43711,1),new P.ptr(43713,43756,43),new P.ptr(43757,43766,9),new P.ptr(44005,44008,3),new P.ptr(44013,64286,20273),new P.ptr(65024,65039,1),new P.ptr(65056,65071,1)]),new IZ([new Q.ptr(66045,66272,227),new Q.ptr(66422,66426,1),new Q.ptr(68097,68099,1),new Q.ptr(68101,68102,1),new Q.ptr(68108,68111,1),new Q.ptr(68152,68154,1),new Q.ptr(68159,68325,166),new Q.ptr(68326,69633,1307),new Q.ptr(69688,69702,1),new Q.ptr(69759,69761,1),new Q.ptr(69811,69814,1),new Q.ptr(69817,69818,1),new Q.ptr(69888,69890,1),new Q.ptr(69927,69931,1),new Q.ptr(69933,69940,1),new Q.ptr(70003,70016,13),new Q.ptr(70017,70070,53),new Q.ptr(70071,70078,1),new Q.ptr(70090,70092,1),new Q.ptr(70191,70193,1),new Q.ptr(70196,70198,2),new Q.ptr(70199,70206,7),new Q.ptr(70367,70371,4),new Q.ptr(70372,70378,1),new Q.ptr(70400,70401,1),new Q.ptr(70460,70464,4),new Q.ptr(70502,70508,1),new Q.ptr(70512,70516,1),new Q.ptr(70712,70719,1),new Q.ptr(70722,70724,1),new Q.ptr(70726,70835,109),new Q.ptr(70836,70840,1),new Q.ptr(70842,70847,5),new Q.ptr(70848,70850,2),new Q.ptr(70851,71090,239),new Q.ptr(71091,71093,1),new Q.ptr(71100,71101,1),new Q.ptr(71103,71104,1),new Q.ptr(71132,71133,1),new Q.ptr(71219,71226,1),new Q.ptr(71229,71231,2),new Q.ptr(71232,71339,107),new Q.ptr(71341,71344,3),new Q.ptr(71345,71349,1),new Q.ptr(71351,71453,102),new Q.ptr(71454,71455,1),new Q.ptr(71458,71461,1),new Q.ptr(71463,71467,1),new Q.ptr(72193,72198,1),new Q.ptr(72201,72202,1),new Q.ptr(72243,72248,1),new Q.ptr(72251,72254,1),new Q.ptr(72263,72273,10),new Q.ptr(72274,72278,1),new Q.ptr(72281,72283,1),new Q.ptr(72330,72342,1),new Q.ptr(72344,72345,1),new Q.ptr(72752,72758,1),new Q.ptr(72760,72765,1),new Q.ptr(72767,72850,83),new Q.ptr(72851,72871,1),new Q.ptr(72874,72880,1),new Q.ptr(72882,72883,1),new Q.ptr(72885,72886,1),new Q.ptr(73009,73014,1),new Q.ptr(73018,73020,2),new Q.ptr(73021,73023,2),new Q.ptr(73024,73029,1),new Q.ptr(73031,92912,19881),new Q.ptr(92913,92916,1),new Q.ptr(92976,92982,1),new Q.ptr(94095,94098,1),new Q.ptr(113821,113822,1),new Q.ptr(119143,119145,1),new Q.ptr(119163,119170,1),new Q.ptr(119173,119179,1),new Q.ptr(119210,119213,1),new Q.ptr(119362,119364,1),new Q.ptr(121344,121398,1),new Q.ptr(121403,121452,1),new Q.ptr(121461,121476,15),new Q.ptr(121499,121503,1),new Q.ptr(121505,121519,1),new Q.ptr(122880,122886,1),new Q.ptr(122888,122904,1),new Q.ptr(122907,122913,1),new Q.ptr(122915,122916,1),new Q.ptr(122918,122922,1),new Q.ptr(125136,125142,1),new Q.ptr(125252,125258,1),new Q.ptr(917760,917999,1)]),0);AW=new O.ptr(new IY([new P.ptr(48,57,1),new P.ptr(178,179,1),new P.ptr(185,188,3),new P.ptr(189,190,1),new P.ptr(1632,1641,1),new P.ptr(1776,1785,1),new P.ptr(1984,1993,1),new P.ptr(2406,2415,1),new P.ptr(2534,2543,1),new P.ptr(2548,2553,1),new P.ptr(2662,2671,1),new P.ptr(2790,2799,1),new P.ptr(2918,2927,1),new P.ptr(2930,2935,1),new P.ptr(3046,3058,1),new P.ptr(3174,3183,1),new P.ptr(3192,3198,1),new P.ptr(3302,3311,1),new P.ptr(3416,3422,1),new P.ptr(3430,3448,1),new P.ptr(3558,3567,1),new P.ptr(3664,3673,1),new P.ptr(3792,3801,1),new P.ptr(3872,3891,1),new P.ptr(4160,4169,1),new P.ptr(4240,4249,1),new P.ptr(4969,4988,1),new P.ptr(5870,5872,1),new P.ptr(6112,6121,1),new P.ptr(6128,6137,1),new P.ptr(6160,6169,1),new P.ptr(6470,6479,1),new P.ptr(6608,6618,1),new P.ptr(6784,6793,1),new P.ptr(6800,6809,1),new P.ptr(6992,7001,1),new P.ptr(7088,7097,1),new P.ptr(7232,7241,1),new P.ptr(7248,7257,1),new P.ptr(8304,8308,4),new P.ptr(8309,8313,1),new P.ptr(8320,8329,1),new P.ptr(8528,8578,1),new P.ptr(8581,8585,1),new P.ptr(9312,9371,1),new P.ptr(9450,9471,1),new P.ptr(10102,10131,1),new P.ptr(11517,12295,778),new P.ptr(12321,12329,1),new P.ptr(12344,12346,1),new P.ptr(12690,12693,1),new P.ptr(12832,12841,1),new P.ptr(12872,12879,1),new P.ptr(12881,12895,1),new P.ptr(12928,12937,1),new P.ptr(12977,12991,1),new P.ptr(42528,42537,1),new P.ptr(42726,42735,1),new P.ptr(43056,43061,1),new P.ptr(43216,43225,1),new P.ptr(43264,43273,1),new P.ptr(43472,43481,1),new P.ptr(43504,43513,1),new P.ptr(43600,43609,1),new P.ptr(44016,44025,1),new P.ptr(65296,65305,1)]),new IZ([new Q.ptr(65799,65843,1),new Q.ptr(65856,65912,1),new Q.ptr(65930,65931,1),new Q.ptr(66273,66299,1),new Q.ptr(66336,66339,1),new Q.ptr(66369,66378,9),new Q.ptr(66513,66517,1),new Q.ptr(66720,66729,1),new Q.ptr(67672,67679,1),new Q.ptr(67705,67711,1),new Q.ptr(67751,67759,1),new Q.ptr(67835,67839,1),new Q.ptr(67862,67867,1),new Q.ptr(68028,68029,1),new Q.ptr(68032,68047,1),new Q.ptr(68050,68095,1),new Q.ptr(68160,68167,1),new Q.ptr(68221,68222,1),new Q.ptr(68253,68255,1),new Q.ptr(68331,68335,1),new Q.ptr(68440,68447,1),new Q.ptr(68472,68479,1),new Q.ptr(68521,68527,1),new Q.ptr(68858,68863,1),new Q.ptr(69216,69246,1),new Q.ptr(69714,69743,1),new Q.ptr(69872,69881,1),new Q.ptr(69942,69951,1),new Q.ptr(70096,70105,1),new Q.ptr(70113,70132,1),new Q.ptr(70384,70393,1),new Q.ptr(70736,70745,1),new Q.ptr(70864,70873,1),new Q.ptr(71248,71257,1),new Q.ptr(71360,71369,1),new Q.ptr(71472,71483,1),new Q.ptr(71904,71922,1),new Q.ptr(72784,72812,1),new Q.ptr(73040,73049,1),new Q.ptr(74752,74862,1),new Q.ptr(92768,92777,1),new Q.ptr(93008,93017,1),new Q.ptr(93019,93025,1),new Q.ptr(119648,119665,1),new Q.ptr(120782,120831,1),new Q.ptr(125127,125135,1),new Q.ptr(125264,125273,1),new Q.ptr(127232,127244,1)]),4);AX=new O.ptr(new IY([new P.ptr(48,57,1),new P.ptr(1632,1641,1),new P.ptr(1776,1785,1),new P.ptr(1984,1993,1),new P.ptr(2406,2415,1),new P.ptr(2534,2543,1),new P.ptr(2662,2671,1),new P.ptr(2790,2799,1),new P.ptr(2918,2927,1),new P.ptr(3046,3055,1),new P.ptr(3174,3183,1),new P.ptr(3302,3311,1),new P.ptr(3430,3439,1),new P.ptr(3558,3567,1),new P.ptr(3664,3673,1),new P.ptr(3792,3801,1),new P.ptr(3872,3881,1),new P.ptr(4160,4169,1),new P.ptr(4240,4249,1),new P.ptr(6112,6121,1),new P.ptr(6160,6169,1),new P.ptr(6470,6479,1),new P.ptr(6608,6617,1),new P.ptr(6784,6793,1),new P.ptr(6800,6809,1),new P.ptr(6992,7001,1),new P.ptr(7088,7097,1),new P.ptr(7232,7241,1),new P.ptr(7248,7257,1),new P.ptr(42528,42537,1),new P.ptr(43216,43225,1),new P.ptr(43264,43273,1),new P.ptr(43472,43481,1),new P.ptr(43504,43513,1),new P.ptr(43600,43609,1),new P.ptr(44016,44025,1),new P.ptr(65296,65305,1)]),new IZ([new Q.ptr(66720,66729,1),new Q.ptr(69734,69743,1),new Q.ptr(69872,69881,1),new Q.ptr(69942,69951,1),new Q.ptr(70096,70105,1),new Q.ptr(70384,70393,1),new Q.ptr(70736,70745,1),new Q.ptr(70864,70873,1),new Q.ptr(71248,71257,1),new Q.ptr(71360,71369,1),new Q.ptr(71472,71481,1),new Q.ptr(71904,71913,1),new Q.ptr(72784,72793,1),new Q.ptr(73040,73049,1),new Q.ptr(92768,92777,1),new Q.ptr(93008,93017,1),new Q.ptr(120782,120831,1),new Q.ptr(125264,125273,1)]),1);AY=new O.ptr(new IY([new P.ptr(5870,5872,1),new P.ptr(8544,8578,1),new P.ptr(8581,8584,1),new P.ptr(12295,12321,26),new P.ptr(12322,12329,1),new P.ptr(12344,12346,1),new P.ptr(42726,42735,1)]),new IZ([new Q.ptr(65856,65908,1),new Q.ptr(66369,66378,9),new Q.ptr(66513,66517,1),new Q.ptr(74752,74862,1)]),0);AZ=new O.ptr(new IY([new P.ptr(178,179,1),new P.ptr(185,188,3),new P.ptr(189,190,1),new P.ptr(2548,2553,1),new P.ptr(2930,2935,1),new P.ptr(3056,3058,1),new P.ptr(3192,3198,1),new P.ptr(3416,3422,1),new P.ptr(3440,3448,1),new P.ptr(3882,3891,1),new P.ptr(4969,4988,1),new P.ptr(6128,6137,1),new P.ptr(6618,8304,1686),new P.ptr(8308,8313,1),new P.ptr(8320,8329,1),new P.ptr(8528,8543,1),new P.ptr(8585,9312,727),new P.ptr(9313,9371,1),new P.ptr(9450,9471,1),new P.ptr(10102,10131,1),new P.ptr(11517,12690,1173),new P.ptr(12691,12693,1),new P.ptr(12832,12841,1),new P.ptr(12872,12879,1),new P.ptr(12881,12895,1),new P.ptr(12928,12937,1),new P.ptr(12977,12991,1),new P.ptr(43056,43061,1)]),new IZ([new Q.ptr(65799,65843,1),new Q.ptr(65909,65912,1),new Q.ptr(65930,65931,1),new Q.ptr(66273,66299,1),new Q.ptr(66336,66339,1),new Q.ptr(67672,67679,1),new Q.ptr(67705,67711,1),new Q.ptr(67751,67759,1),new Q.ptr(67835,67839,1),new Q.ptr(67862,67867,1),new Q.ptr(68028,68029,1),new Q.ptr(68032,68047,1),new Q.ptr(68050,68095,1),new Q.ptr(68160,68167,1),new Q.ptr(68221,68222,1),new Q.ptr(68253,68255,1),new Q.ptr(68331,68335,1),new Q.ptr(68440,68447,1),new Q.ptr(68472,68479,1),new Q.ptr(68521,68527,1),new Q.ptr(68858,68863,1),new Q.ptr(69216,69246,1),new Q.ptr(69714,69733,1),new Q.ptr(70113,70132,1),new Q.ptr(71482,71483,1),new Q.ptr(71914,71922,1),new Q.ptr(72794,72812,1),new Q.ptr(93019,93025,1),new Q.ptr(119648,119665,1),new Q.ptr(125127,125135,1),new Q.ptr(127232,127244,1)]),3);BA=new O.ptr(new IY([new P.ptr(33,35,1),new P.ptr(37,42,1),new P.ptr(44,47,1),new P.ptr(58,59,1),new P.ptr(63,64,1),new P.ptr(91,93,1),new P.ptr(95,123,28),new P.ptr(125,161,36),new P.ptr(167,171,4),new P.ptr(182,183,1),new P.ptr(187,191,4),new P.ptr(894,903,9),new P.ptr(1370,1375,1),new P.ptr(1417,1418,1),new P.ptr(1470,1472,2),new P.ptr(1475,1478,3),new P.ptr(1523,1524,1),new P.ptr(1545,1546,1),new P.ptr(1548,1549,1),new P.ptr(1563,1566,3),new P.ptr(1567,1642,75),new P.ptr(1643,1645,1),new P.ptr(1748,1792,44),new P.ptr(1793,1805,1),new P.ptr(2039,2041,1),new P.ptr(2096,2110,1),new P.ptr(2142,2404,262),new P.ptr(2405,2416,11),new P.ptr(2557,2800,243),new P.ptr(3572,3663,91),new P.ptr(3674,3675,1),new P.ptr(3844,3858,1),new P.ptr(3860,3898,38),new P.ptr(3899,3901,1),new P.ptr(3973,4048,75),new P.ptr(4049,4052,1),new P.ptr(4057,4058,1),new P.ptr(4170,4175,1),new P.ptr(4347,4960,613),new P.ptr(4961,4968,1),new P.ptr(5120,5741,621),new P.ptr(5742,5787,45),new P.ptr(5788,5867,79),new P.ptr(5868,5869,1),new P.ptr(5941,5942,1),new P.ptr(6100,6102,1),new P.ptr(6104,6106,1),new P.ptr(6144,6154,1),new P.ptr(6468,6469,1),new P.ptr(6686,6687,1),new P.ptr(6816,6822,1),new P.ptr(6824,6829,1),new P.ptr(7002,7008,1),new P.ptr(7164,7167,1),new P.ptr(7227,7231,1),new P.ptr(7294,7295,1),new P.ptr(7360,7367,1),new P.ptr(7379,8208,829),new P.ptr(8209,8231,1),new P.ptr(8240,8259,1),new P.ptr(8261,8273,1),new P.ptr(8275,8286,1),new P.ptr(8317,8318,1),new P.ptr(8333,8334,1),new P.ptr(8968,8971,1),new P.ptr(9001,9002,1),new P.ptr(10088,10101,1),new P.ptr(10181,10182,1),new P.ptr(10214,10223,1),new P.ptr(10627,10648,1),new P.ptr(10712,10715,1),new P.ptr(10748,10749,1),new P.ptr(11513,11516,1),new P.ptr(11518,11519,1),new P.ptr(11632,11776,144),new P.ptr(11777,11822,1),new P.ptr(11824,11849,1),new P.ptr(12289,12291,1),new P.ptr(12296,12305,1),new P.ptr(12308,12319,1),new P.ptr(12336,12349,13),new P.ptr(12448,12539,91),new P.ptr(42238,42239,1),new P.ptr(42509,42511,1),new P.ptr(42611,42622,11),new P.ptr(42738,42743,1),new P.ptr(43124,43127,1),new P.ptr(43214,43215,1),new P.ptr(43256,43258,1),new P.ptr(43260,43310,50),new P.ptr(43311,43359,48),new P.ptr(43457,43469,1),new P.ptr(43486,43487,1),new P.ptr(43612,43615,1),new P.ptr(43742,43743,1),new P.ptr(43760,43761,1),new P.ptr(44011,64830,20819),new P.ptr(64831,65040,209),new P.ptr(65041,65049,1),new P.ptr(65072,65106,1),new P.ptr(65108,65121,1),new P.ptr(65123,65128,5),new P.ptr(65130,65131,1),new P.ptr(65281,65283,1),new P.ptr(65285,65290,1),new P.ptr(65292,65295,1),new P.ptr(65306,65307,1),new P.ptr(65311,65312,1),new P.ptr(65339,65341,1),new P.ptr(65343,65371,28),new P.ptr(65373,65375,2),new P.ptr(65376,65381,1)]),new IZ([new Q.ptr(65792,65794,1),new Q.ptr(66463,66512,49),new Q.ptr(66927,67671,744),new Q.ptr(67871,67903,32),new Q.ptr(68176,68184,1),new Q.ptr(68223,68336,113),new Q.ptr(68337,68342,1),new Q.ptr(68409,68415,1),new Q.ptr(68505,68508,1),new Q.ptr(69703,69709,1),new Q.ptr(69819,69820,1),new Q.ptr(69822,69825,1),new Q.ptr(69952,69955,1),new Q.ptr(70004,70005,1),new Q.ptr(70085,70089,1),new Q.ptr(70093,70107,14),new Q.ptr(70109,70111,1),new Q.ptr(70200,70205,1),new Q.ptr(70313,70731,418),new Q.ptr(70732,70735,1),new Q.ptr(70747,70749,2),new Q.ptr(70854,71105,251),new Q.ptr(71106,71127,1),new Q.ptr(71233,71235,1),new Q.ptr(71264,71276,1),new Q.ptr(71484,71486,1),new Q.ptr(72255,72262,1),new Q.ptr(72346,72348,1),new Q.ptr(72350,72354,1),new Q.ptr(72769,72773,1),new Q.ptr(72816,72817,1),new Q.ptr(74864,74868,1),new Q.ptr(92782,92783,1),new Q.ptr(92917,92983,66),new Q.ptr(92984,92987,1),new Q.ptr(92996,113823,20827),new Q.ptr(121479,121483,1),new Q.ptr(125278,125279,1)]),11);BB=new O.ptr(new IY([new P.ptr(95,8255,8160),new P.ptr(8256,8276,20),new P.ptr(65075,65076,1),new P.ptr(65101,65103,1),new P.ptr(65343,65343,1)]),IZ.nil,0);BC=new O.ptr(new IY([new P.ptr(45,1418,1373),new P.ptr(1470,5120,3650),new P.ptr(6150,8208,2058),new P.ptr(8209,8213,1),new P.ptr(11799,11802,3),new P.ptr(11834,11835,1),new P.ptr(11840,12316,476),new P.ptr(12336,12448,112),new P.ptr(65073,65074,1),new P.ptr(65112,65123,11),new P.ptr(65293,65293,1)]),IZ.nil,0);BD=new O.ptr(new IY([new P.ptr(41,93,52),new P.ptr(125,3899,3774),new P.ptr(3901,5788,1887),new P.ptr(8262,8318,56),new P.ptr(8334,8969,635),new P.ptr(8971,9002,31),new P.ptr(10089,10101,2),new P.ptr(10182,10215,33),new P.ptr(10217,10223,2),new P.ptr(10628,10648,2),new P.ptr(10713,10715,2),new P.ptr(10749,11811,1062),new P.ptr(11813,11817,2),new P.ptr(12297,12305,2),new P.ptr(12309,12315,2),new P.ptr(12318,12319,1),new P.ptr(64830,65048,218),new P.ptr(65078,65092,2),new P.ptr(65096,65114,18),new P.ptr(65116,65118,2),new P.ptr(65289,65341,52),new P.ptr(65373,65379,3)]),IZ.nil,1);BE=new O.ptr(new IY([new P.ptr(187,8217,8030),new P.ptr(8221,8250,29),new P.ptr(11779,11781,2),new P.ptr(11786,11789,3),new P.ptr(11805,11809,4)]),IZ.nil,0);BF=new O.ptr(new IY([new P.ptr(171,8216,8045),new P.ptr(8219,8220,1),new P.ptr(8223,8249,26),new P.ptr(11778,11780,2),new P.ptr(11785,11788,3),new P.ptr(11804,11808,4)]),IZ.nil,0);BG=new O.ptr(new IY([new P.ptr(33,35,1),new P.ptr(37,39,1),new P.ptr(42,46,2),new P.ptr(47,58,11),new P.ptr(59,63,4),new P.ptr(64,92,28),new P.ptr(161,167,6),new P.ptr(182,183,1),new P.ptr(191,894,703),new P.ptr(903,1370,467),new P.ptr(1371,1375,1),new P.ptr(1417,1472,55),new P.ptr(1475,1478,3),new P.ptr(1523,1524,1),new P.ptr(1545,1546,1),new P.ptr(1548,1549,1),new P.ptr(1563,1566,3),new P.ptr(1567,1642,75),new P.ptr(1643,1645,1),new P.ptr(1748,1792,44),new P.ptr(1793,1805,1),new P.ptr(2039,2041,1),new P.ptr(2096,2110,1),new P.ptr(2142,2404,262),new P.ptr(2405,2416,11),new P.ptr(2557,2800,243),new P.ptr(3572,3663,91),new P.ptr(3674,3675,1),new P.ptr(3844,3858,1),new P.ptr(3860,3973,113),new P.ptr(4048,4052,1),new P.ptr(4057,4058,1),new P.ptr(4170,4175,1),new P.ptr(4347,4960,613),new P.ptr(4961,4968,1),new P.ptr(5741,5742,1),new P.ptr(5867,5869,1),new P.ptr(5941,5942,1),new P.ptr(6100,6102,1),new P.ptr(6104,6106,1),new P.ptr(6144,6149,1),new P.ptr(6151,6154,1),new P.ptr(6468,6469,1),new P.ptr(6686,6687,1),new P.ptr(6816,6822,1),new P.ptr(6824,6829,1),new P.ptr(7002,7008,1),new P.ptr(7164,7167,1),new P.ptr(7227,7231,1),new P.ptr(7294,7295,1),new P.ptr(7360,7367,1),new P.ptr(7379,8214,835),new P.ptr(8215,8224,9),new P.ptr(8225,8231,1),new P.ptr(8240,8248,1),new P.ptr(8251,8254,1),new P.ptr(8257,8259,1),new P.ptr(8263,8273,1),new P.ptr(8275,8277,2),new P.ptr(8278,8286,1),new P.ptr(11513,11516,1),new P.ptr(11518,11519,1),new P.ptr(11632,11776,144),new P.ptr(11777,11782,5),new P.ptr(11783,11784,1),new P.ptr(11787,11790,3),new P.ptr(11791,11798,1),new P.ptr(11800,11801,1),new P.ptr(11803,11806,3),new P.ptr(11807,11818,11),new P.ptr(11819,11822,1),new P.ptr(11824,11833,1),new P.ptr(11836,11839,1),new P.ptr(11841,11843,2),new P.ptr(11844,11849,1),new P.ptr(12289,12291,1),new P.ptr(12349,12539,190),new P.ptr(42238,42239,1),new P.ptr(42509,42511,1),new P.ptr(42611,42622,11),new P.ptr(42738,42743,1),new P.ptr(43124,43127,1),new P.ptr(43214,43215,1),new P.ptr(43256,43258,1),new P.ptr(43260,43310,50),new P.ptr(43311,43359,48),new P.ptr(43457,43469,1),new P.ptr(43486,43487,1),new P.ptr(43612,43615,1),new P.ptr(43742,43743,1),new P.ptr(43760,43761,1),new P.ptr(44011,65040,21029),new P.ptr(65041,65046,1),new P.ptr(65049,65072,23),new P.ptr(65093,65094,1),new P.ptr(65097,65100,1),new P.ptr(65104,65106,1),new P.ptr(65108,65111,1),new P.ptr(65119,65121,1),new P.ptr(65128,65130,2),new P.ptr(65131,65281,150),new P.ptr(65282,65283,1),new P.ptr(65285,65287,1),new P.ptr(65290,65294,2),new P.ptr(65295,65306,11),new P.ptr(65307,65311,4),new P.ptr(65312,65340,28),new P.ptr(65377,65380,3),new P.ptr(65381,65381,1)]),new IZ([new Q.ptr(65792,65792,1),new Q.ptr(65793,65794,1),new Q.ptr(66463,66512,49),new Q.ptr(66927,67671,744),new Q.ptr(67871,67903,32),new Q.ptr(68176,68184,1),new Q.ptr(68223,68336,113),new Q.ptr(68337,68342,1),new Q.ptr(68409,68415,1),new Q.ptr(68505,68508,1),new Q.ptr(69703,69709,1),new Q.ptr(69819,69820,1),new Q.ptr(69822,69825,1),new Q.ptr(69952,69955,1),new Q.ptr(70004,70005,1),new Q.ptr(70085,70089,1),new Q.ptr(70093,70107,14),new Q.ptr(70109,70111,1),new Q.ptr(70200,70205,1),new Q.ptr(70313,70731,418),new Q.ptr(70732,70735,1),new Q.ptr(70747,70749,2),new Q.ptr(70854,71105,251),new Q.ptr(71106,71127,1),new Q.ptr(71233,71235,1),new Q.ptr(71264,71276,1),new Q.ptr(71484,71486,1),new Q.ptr(72255,72262,1),new Q.ptr(72346,72348,1),new Q.ptr(72350,72354,1),new Q.ptr(72769,72773,1),new Q.ptr(72816,72817,1),new Q.ptr(74864,74868,1),new Q.ptr(92782,92783,1),new Q.ptr(92917,92983,66),new Q.ptr(92984,92987,1),new Q.ptr(92996,113823,20827),new Q.ptr(121479,121483,1),new Q.ptr(125278,125279,1)]),8);BH=new O.ptr(new IY([new P.ptr(40,91,51),new P.ptr(123,3898,3775),new P.ptr(3900,5787,1887),new P.ptr(8218,8222,4),new P.ptr(8261,8317,56),new P.ptr(8333,8968,635),new P.ptr(8970,9001,31),new P.ptr(10088,10100,2),new P.ptr(10181,10214,33),new P.ptr(10216,10222,2),new P.ptr(10627,10647,2),new P.ptr(10712,10714,2),new P.ptr(10748,11810,1062),new P.ptr(11812,11816,2),new P.ptr(11842,12296,454),new P.ptr(12298,12304,2),new P.ptr(12308,12314,2),new P.ptr(12317,64831,52514),new P.ptr(65047,65077,30),new P.ptr(65079,65091,2),new P.ptr(65095,65113,18),new P.ptr(65115,65117,2),new P.ptr(65288,65339,51),new P.ptr(65371,65375,4),new P.ptr(65378,65378,1)]),IZ.nil,1);BI=new O.ptr(new IY([new P.ptr(36,43,7),new P.ptr(60,62,1),new P.ptr(94,96,2),new P.ptr(124,126,2),new P.ptr(162,166,1),new P.ptr(168,169,1),new P.ptr(172,174,2),new P.ptr(175,177,1),new P.ptr(180,184,4),new P.ptr(215,247,32),new P.ptr(706,709,1),new P.ptr(722,735,1),new P.ptr(741,747,1),new P.ptr(749,751,2),new P.ptr(752,767,1),new P.ptr(885,900,15),new P.ptr(901,1014,113),new P.ptr(1154,1421,267),new P.ptr(1422,1423,1),new P.ptr(1542,1544,1),new P.ptr(1547,1550,3),new P.ptr(1551,1758,207),new P.ptr(1769,1789,20),new P.ptr(1790,2038,248),new P.ptr(2546,2547,1),new P.ptr(2554,2555,1),new P.ptr(2801,2928,127),new P.ptr(3059,3066,1),new P.ptr(3199,3407,208),new P.ptr(3449,3647,198),new P.ptr(3841,3843,1),new P.ptr(3859,3861,2),new P.ptr(3862,3863,1),new P.ptr(3866,3871,1),new P.ptr(3892,3896,2),new P.ptr(4030,4037,1),new P.ptr(4039,4044,1),new P.ptr(4046,4047,1),new P.ptr(4053,4056,1),new P.ptr(4254,4255,1),new P.ptr(5008,5017,1),new P.ptr(6107,6464,357),new P.ptr(6622,6655,1),new P.ptr(7009,7018,1),new P.ptr(7028,7036,1),new P.ptr(8125,8127,2),new P.ptr(8128,8129,1),new P.ptr(8141,8143,1),new P.ptr(8157,8159,1),new P.ptr(8173,8175,1),new P.ptr(8189,8190,1),new P.ptr(8260,8274,14),new P.ptr(8314,8316,1),new P.ptr(8330,8332,1),new P.ptr(8352,8383,1),new P.ptr(8448,8449,1),new P.ptr(8451,8454,1),new P.ptr(8456,8457,1),new P.ptr(8468,8470,2),new P.ptr(8471,8472,1),new P.ptr(8478,8483,1),new P.ptr(8485,8489,2),new P.ptr(8494,8506,12),new P.ptr(8507,8512,5),new P.ptr(8513,8516,1),new P.ptr(8522,8525,1),new P.ptr(8527,8586,59),new P.ptr(8587,8592,5),new P.ptr(8593,8967,1),new P.ptr(8972,9000,1),new P.ptr(9003,9254,1),new P.ptr(9280,9290,1),new P.ptr(9372,9449,1),new P.ptr(9472,10087,1),new P.ptr(10132,10180,1),new P.ptr(10183,10213,1),new P.ptr(10224,10626,1),new P.ptr(10649,10711,1),new P.ptr(10716,10747,1),new P.ptr(10750,11123,1),new P.ptr(11126,11157,1),new P.ptr(11160,11193,1),new P.ptr(11197,11208,1),new P.ptr(11210,11218,1),new P.ptr(11244,11247,1),new P.ptr(11493,11498,1),new P.ptr(11904,11929,1),new P.ptr(11931,12019,1),new P.ptr(12032,12245,1),new P.ptr(12272,12283,1),new P.ptr(12292,12306,14),new P.ptr(12307,12320,13),new P.ptr(12342,12343,1),new P.ptr(12350,12351,1),new P.ptr(12443,12444,1),new P.ptr(12688,12689,1),new P.ptr(12694,12703,1),new P.ptr(12736,12771,1),new P.ptr(12800,12830,1),new P.ptr(12842,12871,1),new P.ptr(12880,12896,16),new P.ptr(12897,12927,1),new P.ptr(12938,12976,1),new P.ptr(12992,13054,1),new P.ptr(13056,13311,1),new P.ptr(19904,19967,1),new P.ptr(42128,42182,1),new P.ptr(42752,42774,1),new P.ptr(42784,42785,1),new P.ptr(42889,42890,1),new P.ptr(43048,43051,1),new P.ptr(43062,43065,1),new P.ptr(43639,43641,1),new P.ptr(43867,64297,20430),new P.ptr(64434,64449,1),new P.ptr(65020,65021,1),new P.ptr(65122,65124,2),new P.ptr(65125,65126,1),new P.ptr(65129,65284,155),new P.ptr(65291,65308,17),new P.ptr(65309,65310,1),new P.ptr(65342,65344,2),new P.ptr(65372,65374,2),new P.ptr(65504,65510,1),new P.ptr(65512,65518,1),new P.ptr(65532,65533,1)]),new IZ([new Q.ptr(65847,65855,1),new Q.ptr(65913,65929,1),new Q.ptr(65932,65934,1),new Q.ptr(65936,65947,1),new Q.ptr(65952,66000,48),new Q.ptr(66001,66044,1),new Q.ptr(67703,67704,1),new Q.ptr(68296,71487,3191),new Q.ptr(92988,92991,1),new Q.ptr(92997,113820,20823),new Q.ptr(118784,119029,1),new Q.ptr(119040,119078,1),new Q.ptr(119081,119140,1),new Q.ptr(119146,119148,1),new Q.ptr(119171,119172,1),new Q.ptr(119180,119209,1),new Q.ptr(119214,119272,1),new Q.ptr(119296,119361,1),new Q.ptr(119365,119552,187),new Q.ptr(119553,119638,1),new Q.ptr(120513,120539,26),new Q.ptr(120571,120597,26),new Q.ptr(120629,120655,26),new Q.ptr(120687,120713,26),new Q.ptr(120745,120771,26),new Q.ptr(120832,121343,1),new Q.ptr(121399,121402,1),new Q.ptr(121453,121460,1),new Q.ptr(121462,121475,1),new Q.ptr(121477,121478,1),new Q.ptr(126704,126705,1),new Q.ptr(126976,127019,1),new Q.ptr(127024,127123,1),new Q.ptr(127136,127150,1),new Q.ptr(127153,127167,1),new Q.ptr(127169,127183,1),new Q.ptr(127185,127221,1),new Q.ptr(127248,127278,1),new Q.ptr(127280,127339,1),new Q.ptr(127344,127404,1),new Q.ptr(127462,127490,1),new Q.ptr(127504,127547,1),new Q.ptr(127552,127560,1),new Q.ptr(127568,127569,1),new Q.ptr(127584,127589,1),new Q.ptr(127744,128724,1),new Q.ptr(128736,128748,1),new Q.ptr(128752,128760,1),new Q.ptr(128768,128883,1),new Q.ptr(128896,128980,1),new Q.ptr(129024,129035,1),new Q.ptr(129040,129095,1),new Q.ptr(129104,129113,1),new Q.ptr(129120,129159,1),new Q.ptr(129168,129197,1),new Q.ptr(129280,129291,1),new Q.ptr(129296,129342,1),new Q.ptr(129344,129356,1),new Q.ptr(129360,129387,1),new Q.ptr(129408,129431,1),new Q.ptr(129472,129488,16),new Q.ptr(129489,129510,1)]),10);BJ=new O.ptr(new IY([new P.ptr(36,162,126),new P.ptr(163,165,1),new P.ptr(1423,1547,124),new P.ptr(2546,2547,1),new P.ptr(2555,2801,246),new P.ptr(3065,3647,582),new P.ptr(6107,8352,2245),new P.ptr(8353,8383,1),new P.ptr(43064,65020,21956),new P.ptr(65129,65284,155),new P.ptr(65504,65505,1),new P.ptr(65509,65510,1)]),IZ.nil,2);BK=new O.ptr(new IY([new P.ptr(94,96,2),new P.ptr(168,175,7),new P.ptr(180,184,4),new P.ptr(706,709,1),new P.ptr(722,735,1),new P.ptr(741,747,1),new P.ptr(749,751,2),new P.ptr(752,767,1),new P.ptr(885,900,15),new P.ptr(901,8125,7224),new P.ptr(8127,8129,1),new P.ptr(8141,8143,1),new P.ptr(8157,8159,1),new P.ptr(8173,8175,1),new P.ptr(8189,8190,1),new P.ptr(12443,12444,1),new P.ptr(42752,42774,1),new P.ptr(42784,42785,1),new P.ptr(42889,42890,1),new P.ptr(43867,64434,20567),new P.ptr(64435,64449,1),new P.ptr(65342,65344,2),new P.ptr(65507,65507,1)]),new IZ([new Q.ptr(127995,127995,1),new Q.ptr(127996,127999,1)]),3);BL=new O.ptr(new IY([new P.ptr(43,60,17),new P.ptr(61,62,1),new P.ptr(124,126,2),new P.ptr(172,177,5),new P.ptr(215,247,32),new P.ptr(1014,1542,528),new P.ptr(1543,1544,1),new P.ptr(8260,8274,14),new P.ptr(8314,8316,1),new P.ptr(8330,8332,1),new P.ptr(8472,8512,40),new P.ptr(8513,8516,1),new P.ptr(8523,8592,69),new P.ptr(8593,8596,1),new P.ptr(8602,8603,1),new P.ptr(8608,8614,3),new P.ptr(8622,8654,32),new P.ptr(8655,8658,3),new P.ptr(8660,8692,32),new P.ptr(8693,8959,1),new P.ptr(8992,8993,1),new P.ptr(9084,9115,31),new P.ptr(9116,9139,1),new P.ptr(9180,9185,1),new P.ptr(9655,9665,10),new P.ptr(9720,9727,1),new P.ptr(9839,10176,337),new P.ptr(10177,10180,1),new P.ptr(10183,10213,1),new P.ptr(10224,10239,1),new P.ptr(10496,10626,1),new P.ptr(10649,10711,1),new P.ptr(10716,10747,1),new P.ptr(10750,11007,1),new P.ptr(11056,11076,1),new P.ptr(11079,11084,1),new P.ptr(64297,65122,825),new P.ptr(65124,65126,1),new P.ptr(65291,65308,17),new P.ptr(65309,65310,1),new P.ptr(65372,65374,2),new P.ptr(65506,65513,7),new P.ptr(65514,65516,1)]),new IZ([new Q.ptr(120513,120539,26),new Q.ptr(120571,120597,26),new Q.ptr(120629,120655,26),new Q.ptr(120687,120713,26),new Q.ptr(120745,120771,26),new Q.ptr(126704,126705,1)]),5);BM=new O.ptr(new IY([new P.ptr(166,169,3),new P.ptr(174,176,2),new P.ptr(1154,1421,267),new P.ptr(1422,1550,128),new P.ptr(1551,1758,207),new P.ptr(1769,1789,20),new P.ptr(1790,2038,248),new P.ptr(2554,2928,374),new P.ptr(3059,3064,1),new P.ptr(3066,3199,133),new P.ptr(3407,3449,42),new P.ptr(3841,3843,1),new P.ptr(3859,3861,2),new P.ptr(3862,3863,1),new P.ptr(3866,3871,1),new P.ptr(3892,3896,2),new P.ptr(4030,4037,1),new P.ptr(4039,4044,1),new P.ptr(4046,4047,1),new P.ptr(4053,4056,1),new P.ptr(4254,4255,1),new P.ptr(5008,5017,1),new P.ptr(6464,6622,158),new P.ptr(6623,6655,1),new P.ptr(7009,7018,1),new P.ptr(7028,7036,1),new P.ptr(8448,8449,1),new P.ptr(8451,8454,1),new P.ptr(8456,8457,1),new P.ptr(8468,8470,2),new P.ptr(8471,8478,7),new P.ptr(8479,8483,1),new P.ptr(8485,8489,2),new P.ptr(8494,8506,12),new P.ptr(8507,8522,15),new P.ptr(8524,8525,1),new P.ptr(8527,8586,59),new P.ptr(8587,8597,10),new P.ptr(8598,8601,1),new P.ptr(8604,8607,1),new P.ptr(8609,8610,1),new P.ptr(8612,8613,1),new P.ptr(8615,8621,1),new P.ptr(8623,8653,1),new P.ptr(8656,8657,1),new P.ptr(8659,8661,2),new P.ptr(8662,8691,1),new P.ptr(8960,8967,1),new P.ptr(8972,8991,1),new P.ptr(8994,9000,1),new P.ptr(9003,9083,1),new P.ptr(9085,9114,1),new P.ptr(9140,9179,1),new P.ptr(9186,9254,1),new P.ptr(9280,9290,1),new P.ptr(9372,9449,1),new P.ptr(9472,9654,1),new P.ptr(9656,9664,1),new P.ptr(9666,9719,1),new P.ptr(9728,9838,1),new P.ptr(9840,10087,1),new P.ptr(10132,10175,1),new P.ptr(10240,10495,1),new P.ptr(11008,11055,1),new P.ptr(11077,11078,1),new P.ptr(11085,11123,1),new P.ptr(11126,11157,1),new P.ptr(11160,11193,1),new P.ptr(11197,11208,1),new P.ptr(11210,11218,1),new P.ptr(11244,11247,1),new P.ptr(11493,11498,1),new P.ptr(11904,11929,1),new P.ptr(11931,12019,1),new P.ptr(12032,12245,1),new P.ptr(12272,12283,1),new P.ptr(12292,12306,14),new P.ptr(12307,12320,13),new P.ptr(12342,12343,1),new P.ptr(12350,12351,1),new P.ptr(12688,12689,1),new P.ptr(12694,12703,1),new P.ptr(12736,12771,1),new P.ptr(12800,12830,1),new P.ptr(12842,12871,1),new P.ptr(12880,12896,16),new P.ptr(12897,12927,1),new P.ptr(12938,12976,1),new P.ptr(12992,13054,1),new P.ptr(13056,13311,1),new P.ptr(19904,19967,1),new P.ptr(42128,42182,1),new P.ptr(43048,43051,1),new P.ptr(43062,43063,1),new P.ptr(43065,43639,574),new P.ptr(43640,43641,1),new P.ptr(65021,65508,487),new P.ptr(65512,65517,5),new P.ptr(65518,65532,14),new P.ptr(65533,65533,1)]),new IZ([new Q.ptr(65847,65847,1),new Q.ptr(65848,65855,1),new Q.ptr(65913,65929,1),new Q.ptr(65932,65934,1),new Q.ptr(65936,65947,1),new Q.ptr(65952,66000,48),new Q.ptr(66001,66044,1),new Q.ptr(67703,67704,1),new Q.ptr(68296,71487,3191),new Q.ptr(92988,92991,1),new Q.ptr(92997,113820,20823),new Q.ptr(118784,119029,1),new Q.ptr(119040,119078,1),new Q.ptr(119081,119140,1),new Q.ptr(119146,119148,1),new Q.ptr(119171,119172,1),new Q.ptr(119180,119209,1),new Q.ptr(119214,119272,1),new Q.ptr(119296,119361,1),new Q.ptr(119365,119552,187),new Q.ptr(119553,119638,1),new Q.ptr(120832,121343,1),new Q.ptr(121399,121402,1),new Q.ptr(121453,121460,1),new Q.ptr(121462,121475,1),new Q.ptr(121477,121478,1),new Q.ptr(126976,127019,1),new Q.ptr(127024,127123,1),new Q.ptr(127136,127150,1),new Q.ptr(127153,127167,1),new Q.ptr(127169,127183,1),new Q.ptr(127185,127221,1),new Q.ptr(127248,127278,1),new Q.ptr(127280,127339,1),new Q.ptr(127344,127404,1),new Q.ptr(127462,127490,1),new Q.ptr(127504,127547,1),new Q.ptr(127552,127560,1),new Q.ptr(127568,127569,1),new Q.ptr(127584,127589,1),new Q.ptr(127744,127994,1),new Q.ptr(128000,128724,1),new Q.ptr(128736,128748,1),new Q.ptr(128752,128760,1),new Q.ptr(128768,128883,1),new Q.ptr(128896,128980,1),new Q.ptr(129024,129035,1),new Q.ptr(129040,129095,1),new Q.ptr(129104,129113,1),new Q.ptr(129120,129159,1),new Q.ptr(129168,129197,1),new Q.ptr(129280,129291,1),new Q.ptr(129296,129342,1),new Q.ptr(129344,129356,1),new Q.ptr(129360,129387,1),new Q.ptr(129408,129431,1),new Q.ptr(129472,129488,16),new Q.ptr(129489,129510,1)]),2);BN=new O.ptr(new IY([new P.ptr(32,160,128),new P.ptr(5760,8192,2432),new P.ptr(8193,8202,1),new P.ptr(8232,8233,1),new P.ptr(8239,8287,48),new P.ptr(12288,12288,1)]),IZ.nil,1);BO=new O.ptr(new IY([new P.ptr(8232,8232,1)]),IZ.nil,0);BP=new O.ptr(new IY([new P.ptr(8233,8233,1)]),IZ.nil,0);BQ=new O.ptr(new IY([new P.ptr(32,160,128),new P.ptr(5760,8192,2432),new P.ptr(8193,8202,1),new P.ptr(8239,8287,48),new P.ptr(12288,12288,1)]),IZ.nil,1);$pkg.Cc=AI;$pkg.Cf=AJ;$pkg.Co=AK;$pkg.Cs=AL;$pkg.Digit=AX;$pkg.Nd=AX;$pkg.Letter=AM;$pkg.L=AM;$pkg.Lm=AO;$pkg.Lo=AP;$pkg.Ll=AN;$pkg.M=AS;$pkg.Mc=AT;$pkg.Me=AU;$pkg.Mn=AV;$pkg.Nl=AY;$pkg.No=AZ;$pkg.N=AW;$pkg.C=AH;$pkg.Pc=BB;$pkg.Pd=BC;$pkg.Pe=BD;$pkg.Pf=BE;$pkg.Pi=BF;$pkg.Po=BG;$pkg.Ps=BH;$pkg.P=BA;$pkg.Sc=BJ;$pkg.Sk=BK;$pkg.Sm=BL;$pkg.So=BM;$pkg.Z=BN;$pkg.S=BI;$pkg.PrintRanges=new JB([$pkg.L,$pkg.M,$pkg.N,$pkg.P,$pkg.S]);$pkg.Lt=AQ;$pkg.Lu=AR;$pkg.Zl=BO;$pkg.Zp=BP;$pkg.Zs=BQ;$pkg.Categories=$makeMap($String.keyFor,[{k:"C",v:$pkg.C},{k:"Cc",v:$pkg.Cc},{k:"Cf",v:$pkg.Cf},{k:"Co",v:$pkg.Co},{k:"Cs",v:$pkg.Cs},{k:"L",v:$pkg.L},{k:"Ll",v:$pkg.Ll},{k:"Lm",v:$pkg.Lm},{k:"Lo",v:$pkg.Lo},{k:"Lt",v:$pkg.Lt},{k:"Lu",v:$pkg.Lu},{k:"M",v:$pkg.M},{k:"Mc",v:$pkg.Mc},{k:"Me",v:$pkg.Me},{k:"Mn",v:$pkg.Mn},{k:"N",v:$pkg.N},{k:"Nd",v:$pkg.Nd},{k:"Nl",v:$pkg.Nl},{k:"No",v:$pkg.No},{k:"P",v:$pkg.P},{k:"Pc",v:$pkg.Pc},{k:"Pd",v:$pkg.Pd},{k:"Pe",v:$pkg.Pe},{k:"Pf",v:$pkg.Pf},{k:"Pi",v:$pkg.Pi},{k:"Po",v:$pkg.Po},{k:"Ps",v:$pkg.Ps},{k:"S",v:$pkg.S},{k:"Sc",v:$pkg.Sc},{k:"Sk",v:$pkg.Sk},{k:"Sm",v:$pkg.Sm},{k:"So",v:$pkg.So},{k:"Z",v:$pkg.Z},{k:"Zl",v:$pkg.Zl},{k:"Zp",v:$pkg.Zp},{k:"Zs",v:$pkg.Zs}]);BR=new O.ptr(new IY([]),new IZ([new Q.ptr(125184,125258,1),new Q.ptr(125264,125273,1),new Q.ptr(125278,125279,1)]),0);BS=new O.ptr(new IY([]),new IZ([new Q.ptr(71424,71449,1),new Q.ptr(71453,71467,1),new Q.ptr(71472,71487,1)]),0);BT=new O.ptr(new IY([]),new IZ([new Q.ptr(82944,83526,1)]),0);BU=new O.ptr(new IY([new P.ptr(1536,1540,1),new P.ptr(1542,1547,1),new P.ptr(1549,1562,1),new P.ptr(1564,1564,1),new P.ptr(1566,1566,1),new P.ptr(1568,1599,1),new P.ptr(1601,1610,1),new P.ptr(1622,1647,1),new P.ptr(1649,1756,1),new P.ptr(1758,1791,1),new P.ptr(1872,1919,1),new P.ptr(2208,2228,1),new P.ptr(2230,2237,1),new P.ptr(2260,2273,1),new P.ptr(2275,2303,1),new P.ptr(64336,64449,1),new P.ptr(64467,64829,1),new P.ptr(64848,64911,1),new P.ptr(64914,64967,1),new P.ptr(65008,65021,1),new P.ptr(65136,65140,1),new P.ptr(65142,65276,1)]),new IZ([new Q.ptr(69216,69246,1),new Q.ptr(126464,126467,1),new Q.ptr(126469,126495,1),new Q.ptr(126497,126498,1),new Q.ptr(126500,126500,1),new Q.ptr(126503,126503,1),new Q.ptr(126505,126514,1),new Q.ptr(126516,126519,1),new Q.ptr(126521,126521,1),new Q.ptr(126523,126523,1),new Q.ptr(126530,126530,1),new Q.ptr(126535,126535,1),new Q.ptr(126537,126537,1),new Q.ptr(126539,126539,1),new Q.ptr(126541,126543,1),new Q.ptr(126545,126546,1),new Q.ptr(126548,126548,1),new Q.ptr(126551,126551,1),new Q.ptr(126553,126553,1),new Q.ptr(126555,126555,1),new Q.ptr(126557,126557,1),new Q.ptr(126559,126559,1),new Q.ptr(126561,126562,1),new Q.ptr(126564,126564,1),new Q.ptr(126567,126570,1),new Q.ptr(126572,126578,1),new Q.ptr(126580,126583,1),new Q.ptr(126585,126588,1),new Q.ptr(126590,126590,1),new Q.ptr(126592,126601,1),new Q.ptr(126603,126619,1),new Q.ptr(126625,126627,1),new Q.ptr(126629,126633,1),new Q.ptr(126635,126651,1),new Q.ptr(126704,126705,1)]),0);BV=new O.ptr(new IY([new P.ptr(1329,1366,1),new P.ptr(1369,1375,1),new P.ptr(1377,1415,1),new P.ptr(1418,1418,1),new P.ptr(1421,1423,1),new P.ptr(64275,64279,1)]),IZ.nil,0);BW=new O.ptr(new IY([]),new IZ([new Q.ptr(68352,68405,1),new Q.ptr(68409,68415,1)]),0);BX=new O.ptr(new IY([new P.ptr(6912,6987,1),new P.ptr(6992,7036,1)]),IZ.nil,0);BY=new O.ptr(new IY([new P.ptr(42656,42743,1)]),new IZ([new Q.ptr(92160,92728,1)]),0);BZ=new O.ptr(new IY([]),new IZ([new Q.ptr(92880,92909,1),new Q.ptr(92912,92917,1)]),0);CA=new O.ptr(new IY([new P.ptr(7104,7155,1),new P.ptr(7164,7167,1)]),IZ.nil,0);CB=new O.ptr(new IY([new P.ptr(2432,2435,1),new P.ptr(2437,2444,1),new P.ptr(2447,2448,1),new P.ptr(2451,2472,1),new P.ptr(2474,2480,1),new P.ptr(2482,2482,1),new P.ptr(2486,2489,1),new P.ptr(2492,2500,1),new P.ptr(2503,2504,1),new P.ptr(2507,2510,1),new P.ptr(2519,2519,1),new P.ptr(2524,2525,1),new P.ptr(2527,2531,1),new P.ptr(2534,2557,1)]),IZ.nil,0);CC=new O.ptr(new IY([]),new IZ([new Q.ptr(72704,72712,1),new Q.ptr(72714,72758,1),new Q.ptr(72760,72773,1),new Q.ptr(72784,72812,1)]),0);CD=new O.ptr(new IY([new P.ptr(746,747,1),new P.ptr(12549,12590,1),new P.ptr(12704,12730,1)]),IZ.nil,0);CE=new O.ptr(new IY([]),new IZ([new Q.ptr(69632,69709,1),new Q.ptr(69714,69743,1),new Q.ptr(69759,69759,1)]),0);CF=new O.ptr(new IY([new P.ptr(10240,10495,1)]),IZ.nil,0);CG=new O.ptr(new IY([new P.ptr(6656,6683,1),new P.ptr(6686,6687,1)]),IZ.nil,0);CH=new O.ptr(new IY([new P.ptr(5952,5971,1)]),IZ.nil,0);CI=new O.ptr(new IY([new P.ptr(5120,5759,1),new P.ptr(6320,6389,1)]),IZ.nil,0);CJ=new O.ptr(new IY([]),new IZ([new Q.ptr(66208,66256,1)]),0);CK=new O.ptr(new IY([]),new IZ([new Q.ptr(66864,66915,1),new Q.ptr(66927,66927,1)]),0);CL=new O.ptr(new IY([]),new IZ([new Q.ptr(69888,69940,1),new Q.ptr(69942,69955,1)]),0);CM=new O.ptr(new IY([new P.ptr(43520,43574,1),new P.ptr(43584,43597,1),new P.ptr(43600,43609,1),new P.ptr(43612,43615,1)]),IZ.nil,0);CN=new O.ptr(new IY([new P.ptr(5024,5109,1),new P.ptr(5112,5117,1),new P.ptr(43888,43967,1)]),IZ.nil,0);CO=new O.ptr(new IY([new P.ptr(0,64,1),new P.ptr(91,96,1),new P.ptr(123,169,1),new P.ptr(171,185,1),new P.ptr(187,191,1),new P.ptr(215,215,1),new P.ptr(247,247,1),new P.ptr(697,735,1),new P.ptr(741,745,1),new P.ptr(748,767,1),new P.ptr(884,884,1),new P.ptr(894,894,1),new P.ptr(901,901,1),new P.ptr(903,903,1),new P.ptr(1417,1417,1),new P.ptr(1541,1541,1),new P.ptr(1548,1548,1),new P.ptr(1563,1563,1),new P.ptr(1567,1567,1),new P.ptr(1600,1600,1),new P.ptr(1757,1757,1),new P.ptr(2274,2274,1),new P.ptr(2404,2405,1),new P.ptr(3647,3647,1),new P.ptr(4053,4056,1),new P.ptr(4347,4347,1),new P.ptr(5867,5869,1),new P.ptr(5941,5942,1),new P.ptr(6146,6147,1),new P.ptr(6149,6149,1),new P.ptr(7379,7379,1),new P.ptr(7393,7393,1),new P.ptr(7401,7404,1),new P.ptr(7406,7411,1),new P.ptr(7413,7415,1),new P.ptr(8192,8203,1),new P.ptr(8206,8292,1),new P.ptr(8294,8304,1),new P.ptr(8308,8318,1),new P.ptr(8320,8334,1),new P.ptr(8352,8383,1),new P.ptr(8448,8485,1),new P.ptr(8487,8489,1),new P.ptr(8492,8497,1),new P.ptr(8499,8525,1),new P.ptr(8527,8543,1),new P.ptr(8585,8587,1),new P.ptr(8592,9254,1),new P.ptr(9280,9290,1),new P.ptr(9312,10239,1),new P.ptr(10496,11123,1),new P.ptr(11126,11157,1),new P.ptr(11160,11193,1),new P.ptr(11197,11208,1),new P.ptr(11210,11218,1),new P.ptr(11244,11247,1),new P.ptr(11776,11849,1),new P.ptr(12272,12283,1),new P.ptr(12288,12292,1),new P.ptr(12294,12294,1),new P.ptr(12296,12320,1),new P.ptr(12336,12343,1),new P.ptr(12348,12351,1),new P.ptr(12443,12444,1),new P.ptr(12448,12448,1),new P.ptr(12539,12540,1),new P.ptr(12688,12703,1),new P.ptr(12736,12771,1),new P.ptr(12832,12895,1),new P.ptr(12927,13007,1),new P.ptr(13144,13311,1),new P.ptr(19904,19967,1),new P.ptr(42752,42785,1),new P.ptr(42888,42890,1),new P.ptr(43056,43065,1),new P.ptr(43310,43310,1),new P.ptr(43471,43471,1),new P.ptr(43867,43867,1),new P.ptr(64830,64831,1),new P.ptr(65040,65049,1),new P.ptr(65072,65106,1),new P.ptr(65108,65126,1),new P.ptr(65128,65131,1),new P.ptr(65279,65279,1),new P.ptr(65281,65312,1),new P.ptr(65339,65344,1),new P.ptr(65371,65381,1),new P.ptr(65392,65392,1),new P.ptr(65438,65439,1),new P.ptr(65504,65510,1),new P.ptr(65512,65518,1),new P.ptr(65529,65533,1)]),new IZ([new Q.ptr(65792,65794,1),new Q.ptr(65799,65843,1),new Q.ptr(65847,65855,1),new Q.ptr(65936,65947,1),new Q.ptr(66000,66044,1),new Q.ptr(66273,66299,1),new Q.ptr(113824,113827,1),new Q.ptr(118784,119029,1),new Q.ptr(119040,119078,1),new Q.ptr(119081,119142,1),new Q.ptr(119146,119162,1),new Q.ptr(119171,119172,1),new Q.ptr(119180,119209,1),new Q.ptr(119214,119272,1),new Q.ptr(119552,119638,1),new Q.ptr(119648,119665,1),new Q.ptr(119808,119892,1),new Q.ptr(119894,119964,1),new Q.ptr(119966,119967,1),new Q.ptr(119970,119970,1),new Q.ptr(119973,119974,1),new Q.ptr(119977,119980,1),new Q.ptr(119982,119993,1),new Q.ptr(119995,119995,1),new Q.ptr(119997,120003,1),new Q.ptr(120005,120069,1),new Q.ptr(120071,120074,1),new Q.ptr(120077,120084,1),new Q.ptr(120086,120092,1),new Q.ptr(120094,120121,1),new Q.ptr(120123,120126,1),new Q.ptr(120128,120132,1),new Q.ptr(120134,120134,1),new Q.ptr(120138,120144,1),new Q.ptr(120146,120485,1),new Q.ptr(120488,120779,1),new Q.ptr(120782,120831,1),new Q.ptr(126976,127019,1),new Q.ptr(127024,127123,1),new Q.ptr(127136,127150,1),new Q.ptr(127153,127167,1),new Q.ptr(127169,127183,1),new Q.ptr(127185,127221,1),new Q.ptr(127232,127244,1),new Q.ptr(127248,127278,1),new Q.ptr(127280,127339,1),new Q.ptr(127344,127404,1),new Q.ptr(127462,127487,1),new Q.ptr(127489,127490,1),new Q.ptr(127504,127547,1),new Q.ptr(127552,127560,1),new Q.ptr(127568,127569,1),new Q.ptr(127584,127589,1),new Q.ptr(127744,128724,1),new Q.ptr(128736,128748,1),new Q.ptr(128752,128760,1),new Q.ptr(128768,128883,1),new Q.ptr(128896,128980,1),new Q.ptr(129024,129035,1),new Q.ptr(129040,129095,1),new Q.ptr(129104,129113,1),new Q.ptr(129120,129159,1),new Q.ptr(129168,129197,1),new Q.ptr(129280,129291,1),new Q.ptr(129296,129342,1),new Q.ptr(129344,129356,1),new Q.ptr(129360,129387,1),new Q.ptr(129408,129431,1),new Q.ptr(129472,129472,1),new Q.ptr(129488,129510,1),new Q.ptr(917505,917505,1),new Q.ptr(917536,917631,1)]),7);CP=new O.ptr(new IY([new P.ptr(994,1007,1),new P.ptr(11392,11507,1),new P.ptr(11513,11519,1)]),IZ.nil,0);CQ=new O.ptr(new IY([]),new IZ([new Q.ptr(73728,74649,1),new Q.ptr(74752,74862,1),new Q.ptr(74864,74868,1),new Q.ptr(74880,75075,1)]),0);CR=new O.ptr(new IY([]),new IZ([new Q.ptr(67584,67589,1),new Q.ptr(67592,67592,1),new Q.ptr(67594,67637,1),new Q.ptr(67639,67640,1),new Q.ptr(67644,67644,1),new Q.ptr(67647,67647,1)]),0);CS=new O.ptr(new IY([new P.ptr(1024,1156,1),new P.ptr(1159,1327,1),new P.ptr(7296,7304,1),new P.ptr(7467,7467,1),new P.ptr(7544,7544,1),new P.ptr(11744,11775,1),new P.ptr(42560,42655,1),new P.ptr(65070,65071,1)]),IZ.nil,0);CT=new O.ptr(new IY([]),new IZ([new Q.ptr(66560,66639,1)]),0);CU=new O.ptr(new IY([new P.ptr(2304,2384,1),new P.ptr(2387,2403,1),new P.ptr(2406,2431,1),new P.ptr(43232,43261,1)]),IZ.nil,0);CV=new O.ptr(new IY([]),new IZ([new Q.ptr(113664,113770,1),new Q.ptr(113776,113788,1),new Q.ptr(113792,113800,1),new Q.ptr(113808,113817,1),new Q.ptr(113820,113823,1)]),0);CW=new O.ptr(new IY([]),new IZ([new Q.ptr(77824,78894,1)]),0);CX=new O.ptr(new IY([]),new IZ([new Q.ptr(66816,66855,1)]),0);CY=new O.ptr(new IY([new P.ptr(4608,4680,1),new P.ptr(4682,4685,1),new P.ptr(4688,4694,1),new P.ptr(4696,4696,1),new P.ptr(4698,4701,1),new P.ptr(4704,4744,1),new P.ptr(4746,4749,1),new P.ptr(4752,4784,1),new P.ptr(4786,4789,1),new P.ptr(4792,4798,1),new P.ptr(4800,4800,1),new P.ptr(4802,4805,1),new P.ptr(4808,4822,1),new P.ptr(4824,4880,1),new P.ptr(4882,4885,1),new P.ptr(4888,4954,1),new P.ptr(4957,4988,1),new P.ptr(4992,5017,1),new P.ptr(11648,11670,1),new P.ptr(11680,11686,1),new P.ptr(11688,11694,1),new P.ptr(11696,11702,1),new P.ptr(11704,11710,1),new P.ptr(11712,11718,1),new P.ptr(11720,11726,1),new P.ptr(11728,11734,1),new P.ptr(11736,11742,1),new P.ptr(43777,43782,1),new P.ptr(43785,43790,1),new P.ptr(43793,43798,1),new P.ptr(43808,43814,1),new P.ptr(43816,43822,1)]),IZ.nil,0);CZ=new O.ptr(new IY([new P.ptr(4256,4293,1),new P.ptr(4295,4295,1),new P.ptr(4301,4301,1),new P.ptr(4304,4346,1),new P.ptr(4348,4351,1),new P.ptr(11520,11557,1),new P.ptr(11559,11559,1),new P.ptr(11565,11565,1)]),IZ.nil,0);DA=new O.ptr(new IY([new P.ptr(11264,11310,1),new P.ptr(11312,11358,1)]),new IZ([new Q.ptr(122880,122886,1),new Q.ptr(122888,122904,1),new Q.ptr(122907,122913,1),new Q.ptr(122915,122916,1),new Q.ptr(122918,122922,1)]),0);DB=new O.ptr(new IY([]),new IZ([new Q.ptr(66352,66378,1)]),0);DC=new O.ptr(new IY([]),new IZ([new Q.ptr(70400,70403,1),new Q.ptr(70405,70412,1),new Q.ptr(70415,70416,1),new Q.ptr(70419,70440,1),new Q.ptr(70442,70448,1),new Q.ptr(70450,70451,1),new Q.ptr(70453,70457,1),new Q.ptr(70460,70468,1),new Q.ptr(70471,70472,1),new Q.ptr(70475,70477,1),new Q.ptr(70480,70480,1),new Q.ptr(70487,70487,1),new Q.ptr(70493,70499,1),new Q.ptr(70502,70508,1),new Q.ptr(70512,70516,1)]),0);DD=new O.ptr(new IY([new P.ptr(880,883,1),new P.ptr(885,887,1),new P.ptr(890,893,1),new P.ptr(895,895,1),new P.ptr(900,900,1),new P.ptr(902,902,1),new P.ptr(904,906,1),new P.ptr(908,908,1),new P.ptr(910,929,1),new P.ptr(931,993,1),new P.ptr(1008,1023,1),new P.ptr(7462,7466,1),new P.ptr(7517,7521,1),new P.ptr(7526,7530,1),new P.ptr(7615,7615,1),new P.ptr(7936,7957,1),new P.ptr(7960,7965,1),new P.ptr(7968,8005,1),new P.ptr(8008,8013,1),new P.ptr(8016,8023,1),new P.ptr(8025,8025,1),new P.ptr(8027,8027,1),new P.ptr(8029,8029,1),new P.ptr(8031,8061,1),new P.ptr(8064,8116,1),new P.ptr(8118,8132,1),new P.ptr(8134,8147,1),new P.ptr(8150,8155,1),new P.ptr(8157,8175,1),new P.ptr(8178,8180,1),new P.ptr(8182,8190,1),new P.ptr(8486,8486,1),new P.ptr(43877,43877,1)]),new IZ([new Q.ptr(65856,65934,1),new Q.ptr(65952,65952,1),new Q.ptr(119296,119365,1)]),0);DE=new O.ptr(new IY([new P.ptr(2689,2691,1),new P.ptr(2693,2701,1),new P.ptr(2703,2705,1),new P.ptr(2707,2728,1),new P.ptr(2730,2736,1),new P.ptr(2738,2739,1),new P.ptr(2741,2745,1),new P.ptr(2748,2757,1),new P.ptr(2759,2761,1),new P.ptr(2763,2765,1),new P.ptr(2768,2768,1),new P.ptr(2784,2787,1),new P.ptr(2790,2801,1),new P.ptr(2809,2815,1)]),IZ.nil,0);DF=new O.ptr(new IY([new P.ptr(2561,2563,1),new P.ptr(2565,2570,1),new P.ptr(2575,2576,1),new P.ptr(2579,2600,1),new P.ptr(2602,2608,1),new P.ptr(2610,2611,1),new P.ptr(2613,2614,1),new P.ptr(2616,2617,1),new P.ptr(2620,2620,1),new P.ptr(2622,2626,1),new P.ptr(2631,2632,1),new P.ptr(2635,2637,1),new P.ptr(2641,2641,1),new P.ptr(2649,2652,1),new P.ptr(2654,2654,1),new P.ptr(2662,2677,1)]),IZ.nil,0);DG=new O.ptr(new IY([new P.ptr(11904,11929,1),new P.ptr(11931,12019,1),new P.ptr(12032,12245,1),new P.ptr(12293,12293,1),new P.ptr(12295,12295,1),new P.ptr(12321,12329,1),new P.ptr(12344,12347,1),new P.ptr(13312,19893,1),new P.ptr(19968,40938,1),new P.ptr(63744,64109,1),new P.ptr(64112,64217,1)]),new IZ([new Q.ptr(131072,173782,1),new Q.ptr(173824,177972,1),new Q.ptr(177984,178205,1),new Q.ptr(178208,183969,1),new Q.ptr(183984,191456,1),new Q.ptr(194560,195101,1)]),0);DH=new O.ptr(new IY([new P.ptr(4352,4607,1),new P.ptr(12334,12335,1),new P.ptr(12593,12686,1),new P.ptr(12800,12830,1),new P.ptr(12896,12926,1),new P.ptr(43360,43388,1),new P.ptr(44032,55203,1),new P.ptr(55216,55238,1),new P.ptr(55243,55291,1),new P.ptr(65440,65470,1),new P.ptr(65474,65479,1),new P.ptr(65482,65487,1),new P.ptr(65490,65495,1),new P.ptr(65498,65500,1)]),IZ.nil,0);DI=new O.ptr(new IY([new P.ptr(5920,5940,1)]),IZ.nil,0);DJ=new O.ptr(new IY([]),new IZ([new Q.ptr(67808,67826,1),new Q.ptr(67828,67829,1),new Q.ptr(67835,67839,1)]),0);DK=new O.ptr(new IY([new P.ptr(1425,1479,1),new P.ptr(1488,1514,1),new P.ptr(1520,1524,1),new P.ptr(64285,64310,1),new P.ptr(64312,64316,1),new P.ptr(64318,64318,1),new P.ptr(64320,64321,1),new P.ptr(64323,64324,1),new P.ptr(64326,64335,1)]),IZ.nil,0);DL=new O.ptr(new IY([new P.ptr(12353,12438,1),new P.ptr(12445,12447,1)]),new IZ([new Q.ptr(110593,110878,1),new Q.ptr(127488,127488,1)]),0);DM=new O.ptr(new IY([]),new IZ([new Q.ptr(67648,67669,1),new Q.ptr(67671,67679,1)]),0);DN=new O.ptr(new IY([new P.ptr(768,879,1),new P.ptr(1157,1158,1),new P.ptr(1611,1621,1),new P.ptr(1648,1648,1),new P.ptr(2385,2386,1),new P.ptr(6832,6846,1),new P.ptr(7376,7378,1),new P.ptr(7380,7392,1),new P.ptr(7394,7400,1),new P.ptr(7405,7405,1),new P.ptr(7412,7412,1),new P.ptr(7416,7417,1),new P.ptr(7616,7673,1),new P.ptr(7675,7679,1),new P.ptr(8204,8205,1),new P.ptr(8400,8432,1),new P.ptr(12330,12333,1),new P.ptr(12441,12442,1),new P.ptr(65024,65039,1),new P.ptr(65056,65069,1)]),new IZ([new Q.ptr(66045,66045,1),new Q.ptr(66272,66272,1),new Q.ptr(119143,119145,1),new Q.ptr(119163,119170,1),new Q.ptr(119173,119179,1),new Q.ptr(119210,119213,1),new Q.ptr(917760,917999,1)]),0);DO=new O.ptr(new IY([]),new IZ([new Q.ptr(68448,68466,1),new Q.ptr(68472,68479,1)]),0);DP=new O.ptr(new IY([]),new IZ([new Q.ptr(68416,68437,1),new Q.ptr(68440,68447,1)]),0);DQ=new O.ptr(new IY([new P.ptr(43392,43469,1),new P.ptr(43472,43481,1),new P.ptr(43486,43487,1)]),IZ.nil,0);DR=new O.ptr(new IY([]),new IZ([new Q.ptr(69760,69825,1)]),0);DS=new O.ptr(new IY([new P.ptr(3200,3203,1),new P.ptr(3205,3212,1),new P.ptr(3214,3216,1),new P.ptr(3218,3240,1),new P.ptr(3242,3251,1),new P.ptr(3253,3257,1),new P.ptr(3260,3268,1),new P.ptr(3270,3272,1),new P.ptr(3274,3277,1),new P.ptr(3285,3286,1),new P.ptr(3294,3294,1),new P.ptr(3296,3299,1),new P.ptr(3302,3311,1),new P.ptr(3313,3314,1)]),IZ.nil,0);DT=new O.ptr(new IY([new P.ptr(12449,12538,1),new P.ptr(12541,12543,1),new P.ptr(12784,12799,1),new P.ptr(13008,13054,1),new P.ptr(13056,13143,1),new P.ptr(65382,65391,1),new P.ptr(65393,65437,1)]),new IZ([new Q.ptr(110592,110592,1)]),0);DU=new O.ptr(new IY([new P.ptr(43264,43309,1),new P.ptr(43311,43311,1)]),IZ.nil,0);DV=new O.ptr(new IY([]),new IZ([new Q.ptr(68096,68099,1),new Q.ptr(68101,68102,1),new Q.ptr(68108,68115,1),new Q.ptr(68117,68119,1),new Q.ptr(68121,68147,1),new Q.ptr(68152,68154,1),new Q.ptr(68159,68167,1),new Q.ptr(68176,68184,1)]),0);DW=new O.ptr(new IY([new P.ptr(6016,6109,1),new P.ptr(6112,6121,1),new P.ptr(6128,6137,1),new P.ptr(6624,6655,1)]),IZ.nil,0);DX=new O.ptr(new IY([]),new IZ([new Q.ptr(70144,70161,1),new Q.ptr(70163,70206,1)]),0);DY=new O.ptr(new IY([]),new IZ([new Q.ptr(70320,70378,1),new Q.ptr(70384,70393,1)]),0);DZ=new O.ptr(new IY([new P.ptr(3713,3714,1),new P.ptr(3716,3716,1),new P.ptr(3719,3720,1),new P.ptr(3722,3722,1),new P.ptr(3725,3725,1),new P.ptr(3732,3735,1),new P.ptr(3737,3743,1),new P.ptr(3745,3747,1),new P.ptr(3749,3749,1),new P.ptr(3751,3751,1),new P.ptr(3754,3755,1),new P.ptr(3757,3769,1),new P.ptr(3771,3773,1),new P.ptr(3776,3780,1),new P.ptr(3782,3782,1),new P.ptr(3784,3789,1),new P.ptr(3792,3801,1),new P.ptr(3804,3807,1)]),IZ.nil,0);EA=new O.ptr(new IY([new P.ptr(65,90,1),new P.ptr(97,122,1),new P.ptr(170,170,1),new P.ptr(186,186,1),new P.ptr(192,214,1),new P.ptr(216,246,1),new P.ptr(248,696,1),new P.ptr(736,740,1),new P.ptr(7424,7461,1),new P.ptr(7468,7516,1),new P.ptr(7522,7525,1),new P.ptr(7531,7543,1),new P.ptr(7545,7614,1),new P.ptr(7680,7935,1),new P.ptr(8305,8305,1),new P.ptr(8319,8319,1),new P.ptr(8336,8348,1),new P.ptr(8490,8491,1),new P.ptr(8498,8498,1),new P.ptr(8526,8526,1),new P.ptr(8544,8584,1),new P.ptr(11360,11391,1),new P.ptr(42786,42887,1),new P.ptr(42891,42926,1),new P.ptr(42928,42935,1),new P.ptr(42999,43007,1),new P.ptr(43824,43866,1),new P.ptr(43868,43876,1),new P.ptr(64256,64262,1),new P.ptr(65313,65338,1),new P.ptr(65345,65370,1)]),IZ.nil,6);EB=new O.ptr(new IY([new P.ptr(7168,7223,1),new P.ptr(7227,7241,1),new P.ptr(7245,7247,1)]),IZ.nil,0);EC=new O.ptr(new IY([new P.ptr(6400,6430,1),new P.ptr(6432,6443,1),new P.ptr(6448,6459,1),new P.ptr(6464,6464,1),new P.ptr(6468,6479,1)]),IZ.nil,0);ED=new O.ptr(new IY([]),new IZ([new Q.ptr(67072,67382,1),new Q.ptr(67392,67413,1),new Q.ptr(67424,67431,1)]),0);EE=new O.ptr(new IY([]),new IZ([new Q.ptr(65536,65547,1),new Q.ptr(65549,65574,1),new Q.ptr(65576,65594,1),new Q.ptr(65596,65597,1),new Q.ptr(65599,65613,1),new Q.ptr(65616,65629,1),new Q.ptr(65664,65786,1)]),0);EF=new O.ptr(new IY([new P.ptr(42192,42239,1)]),IZ.nil,0);EG=new O.ptr(new IY([]),new IZ([new Q.ptr(66176,66204,1)]),0);EH=new O.ptr(new IY([]),new IZ([new Q.ptr(67872,67897,1),new Q.ptr(67903,67903,1)]),0);EI=new O.ptr(new IY([]),new IZ([new Q.ptr(69968,70006,1)]),0);EJ=new O.ptr(new IY([new P.ptr(3328,3331,1),new P.ptr(3333,3340,1),new P.ptr(3342,3344,1),new P.ptr(3346,3396,1),new P.ptr(3398,3400,1),new P.ptr(3402,3407,1),new P.ptr(3412,3427,1),new P.ptr(3430,3455,1)]),IZ.nil,0);EK=new O.ptr(new IY([new P.ptr(2112,2139,1),new P.ptr(2142,2142,1)]),IZ.nil,0);EL=new O.ptr(new IY([]),new IZ([new Q.ptr(68288,68326,1),new Q.ptr(68331,68342,1)]),0);EM=new O.ptr(new IY([]),new IZ([new Q.ptr(72816,72847,1),new Q.ptr(72850,72871,1),new Q.ptr(72873,72886,1)]),0);EN=new O.ptr(new IY([]),new IZ([new Q.ptr(72960,72966,1),new Q.ptr(72968,72969,1),new Q.ptr(72971,73014,1),new Q.ptr(73018,73018,1),new Q.ptr(73020,73021,1),new Q.ptr(73023,73031,1),new Q.ptr(73040,73049,1)]),0);EO=new O.ptr(new IY([new P.ptr(43744,43766,1),new P.ptr(43968,44013,1),new P.ptr(44016,44025,1)]),IZ.nil,0);EP=new O.ptr(new IY([]),new IZ([new Q.ptr(124928,125124,1),new Q.ptr(125127,125142,1)]),0);EQ=new O.ptr(new IY([]),new IZ([new Q.ptr(68000,68023,1),new Q.ptr(68028,68047,1),new Q.ptr(68050,68095,1)]),0);ER=new O.ptr(new IY([]),new IZ([new Q.ptr(67968,67999,1)]),0);ES=new O.ptr(new IY([]),new IZ([new Q.ptr(93952,94020,1),new Q.ptr(94032,94078,1),new Q.ptr(94095,94111,1)]),0);ET=new O.ptr(new IY([]),new IZ([new Q.ptr(71168,71236,1),new Q.ptr(71248,71257,1)]),0);EU=new O.ptr(new IY([new P.ptr(6144,6145,1),new P.ptr(6148,6148,1),new P.ptr(6150,6158,1),new P.ptr(6160,6169,1),new P.ptr(6176,6263,1),new P.ptr(6272,6314,1)]),new IZ([new Q.ptr(71264,71276,1)]),0);EV=new O.ptr(new IY([]),new IZ([new Q.ptr(92736,92766,1),new Q.ptr(92768,92777,1),new Q.ptr(92782,92783,1)]),0);EW=new O.ptr(new IY([]),new IZ([new Q.ptr(70272,70278,1),new Q.ptr(70280,70280,1),new Q.ptr(70282,70285,1),new Q.ptr(70287,70301,1),new Q.ptr(70303,70313,1)]),0);EX=new O.ptr(new IY([new P.ptr(4096,4255,1),new P.ptr(43488,43518,1),new P.ptr(43616,43647,1)]),IZ.nil,0);EY=new O.ptr(new IY([]),new IZ([new Q.ptr(67712,67742,1),new Q.ptr(67751,67759,1)]),0);EZ=new O.ptr(new IY([new P.ptr(6528,6571,1),new P.ptr(6576,6601,1),new P.ptr(6608,6618,1),new P.ptr(6622,6623,1)]),IZ.nil,0);FA=new O.ptr(new IY([]),new IZ([new Q.ptr(70656,70745,1),new Q.ptr(70747,70747,1),new Q.ptr(70749,70749,1)]),0);FB=new O.ptr(new IY([new P.ptr(1984,2042,1)]),IZ.nil,0);FC=new O.ptr(new IY([]),new IZ([new Q.ptr(94177,94177,1),new Q.ptr(110960,111355,1)]),0);FD=new O.ptr(new IY([new P.ptr(5760,5788,1)]),IZ.nil,0);FE=new O.ptr(new IY([new P.ptr(7248,7295,1)]),IZ.nil,0);FF=new O.ptr(new IY([]),new IZ([new Q.ptr(68736,68786,1),new Q.ptr(68800,68850,1),new Q.ptr(68858,68863,1)]),0);FG=new O.ptr(new IY([]),new IZ([new Q.ptr(66304,66339,1),new Q.ptr(66349,66351,1)]),0);FH=new O.ptr(new IY([]),new IZ([new Q.ptr(68224,68255,1)]),0);FI=new O.ptr(new IY([]),new IZ([new Q.ptr(66384,66426,1)]),0);FJ=new O.ptr(new IY([]),new IZ([new Q.ptr(66464,66499,1),new Q.ptr(66504,66517,1)]),0);FK=new O.ptr(new IY([]),new IZ([new Q.ptr(68192,68223,1)]),0);FL=new O.ptr(new IY([]),new IZ([new Q.ptr(68608,68680,1)]),0);FM=new O.ptr(new IY([new P.ptr(2817,2819,1),new P.ptr(2821,2828,1),new P.ptr(2831,2832,1),new P.ptr(2835,2856,1),new P.ptr(2858,2864,1),new P.ptr(2866,2867,1),new P.ptr(2869,2873,1),new P.ptr(2876,2884,1),new P.ptr(2887,2888,1),new P.ptr(2891,2893,1),new P.ptr(2902,2903,1),new P.ptr(2908,2909,1),new P.ptr(2911,2915,1),new P.ptr(2918,2935,1)]),IZ.nil,0);FN=new O.ptr(new IY([]),new IZ([new Q.ptr(66736,66771,1),new Q.ptr(66776,66811,1)]),0);FO=new O.ptr(new IY([]),new IZ([new Q.ptr(66688,66717,1),new Q.ptr(66720,66729,1)]),0);FP=new O.ptr(new IY([]),new IZ([new Q.ptr(92928,92997,1),new Q.ptr(93008,93017,1),new Q.ptr(93019,93025,1),new Q.ptr(93027,93047,1),new Q.ptr(93053,93071,1)]),0);FQ=new O.ptr(new IY([]),new IZ([new Q.ptr(67680,67711,1)]),0);FR=new O.ptr(new IY([]),new IZ([new Q.ptr(72384,72440,1)]),0);FS=new O.ptr(new IY([new P.ptr(43072,43127,1)]),IZ.nil,0);FT=new O.ptr(new IY([]),new IZ([new Q.ptr(67840,67867,1),new Q.ptr(67871,67871,1)]),0);FU=new O.ptr(new IY([]),new IZ([new Q.ptr(68480,68497,1),new Q.ptr(68505,68508,1),new Q.ptr(68521,68527,1)]),0);FV=new O.ptr(new IY([new P.ptr(43312,43347,1),new P.ptr(43359,43359,1)]),IZ.nil,0);FW=new O.ptr(new IY([new P.ptr(5792,5866,1),new P.ptr(5870,5880,1)]),IZ.nil,0);FX=new O.ptr(new IY([new P.ptr(2048,2093,1),new P.ptr(2096,2110,1)]),IZ.nil,0);FY=new O.ptr(new IY([new P.ptr(43136,43205,1),new P.ptr(43214,43225,1)]),IZ.nil,0);FZ=new O.ptr(new IY([]),new IZ([new Q.ptr(70016,70093,1),new Q.ptr(70096,70111,1)]),0);GA=new O.ptr(new IY([]),new IZ([new Q.ptr(66640,66687,1)]),0);GB=new O.ptr(new IY([]),new IZ([new Q.ptr(71040,71093,1),new Q.ptr(71096,71133,1)]),0);GC=new O.ptr(new IY([]),new IZ([new Q.ptr(120832,121483,1),new Q.ptr(121499,121503,1),new Q.ptr(121505,121519,1)]),0);GD=new O.ptr(new IY([new P.ptr(3458,3459,1),new P.ptr(3461,3478,1),new P.ptr(3482,3505,1),new P.ptr(3507,3515,1),new P.ptr(3517,3517,1),new P.ptr(3520,3526,1),new P.ptr(3530,3530,1),new P.ptr(3535,3540,1),new P.ptr(3542,3542,1),new P.ptr(3544,3551,1),new P.ptr(3558,3567,1),new P.ptr(3570,3572,1)]),new IZ([new Q.ptr(70113,70132,1)]),0);GE=new O.ptr(new IY([]),new IZ([new Q.ptr(69840,69864,1),new Q.ptr(69872,69881,1)]),0);GF=new O.ptr(new IY([]),new IZ([new Q.ptr(72272,72323,1),new Q.ptr(72326,72348,1),new Q.ptr(72350,72354,1)]),0);GG=new O.ptr(new IY([new P.ptr(7040,7103,1),new P.ptr(7360,7367,1)]),IZ.nil,0);GH=new O.ptr(new IY([new P.ptr(43008,43051,1)]),IZ.nil,0);GI=new O.ptr(new IY([new P.ptr(1792,1805,1),new P.ptr(1807,1866,1),new P.ptr(1869,1871,1),new P.ptr(2144,2154,1)]),IZ.nil,0);GJ=new O.ptr(new IY([new P.ptr(5888,5900,1),new P.ptr(5902,5908,1)]),IZ.nil,0);GK=new O.ptr(new IY([new P.ptr(5984,5996,1),new P.ptr(5998,6000,1),new P.ptr(6002,6003,1)]),IZ.nil,0);GL=new O.ptr(new IY([new P.ptr(6480,6509,1),new P.ptr(6512,6516,1)]),IZ.nil,0);GM=new O.ptr(new IY([new P.ptr(6688,6750,1),new P.ptr(6752,6780,1),new P.ptr(6783,6793,1),new P.ptr(6800,6809,1),new P.ptr(6816,6829,1)]),IZ.nil,0);GN=new O.ptr(new IY([new P.ptr(43648,43714,1),new P.ptr(43739,43743,1)]),IZ.nil,0);GO=new O.ptr(new IY([]),new IZ([new Q.ptr(71296,71351,1),new Q.ptr(71360,71369,1)]),0);GP=new O.ptr(new IY([new P.ptr(2946,2947,1),new P.ptr(2949,2954,1),new P.ptr(2958,2960,1),new P.ptr(2962,2965,1),new P.ptr(2969,2970,1),new P.ptr(2972,2972,1),new P.ptr(2974,2975,1),new P.ptr(2979,2980,1),new P.ptr(2984,2986,1),new P.ptr(2990,3001,1),new P.ptr(3006,3010,1),new P.ptr(3014,3016,1),new P.ptr(3018,3021,1),new P.ptr(3024,3024,1),new P.ptr(3031,3031,1),new P.ptr(3046,3066,1)]),IZ.nil,0);GQ=new O.ptr(new IY([]),new IZ([new Q.ptr(94176,94176,1),new Q.ptr(94208,100332,1),new Q.ptr(100352,101106,1)]),0);GR=new O.ptr(new IY([new P.ptr(3072,3075,1),new P.ptr(3077,3084,1),new P.ptr(3086,3088,1),new P.ptr(3090,3112,1),new P.ptr(3114,3129,1),new P.ptr(3133,3140,1),new P.ptr(3142,3144,1),new P.ptr(3146,3149,1),new P.ptr(3157,3158,1),new P.ptr(3160,3162,1),new P.ptr(3168,3171,1),new P.ptr(3174,3183,1),new P.ptr(3192,3199,1)]),IZ.nil,0);GS=new O.ptr(new IY([new P.ptr(1920,1969,1)]),IZ.nil,0);GT=new O.ptr(new IY([new P.ptr(3585,3642,1),new P.ptr(3648,3675,1)]),IZ.nil,0);GU=new O.ptr(new IY([new P.ptr(3840,3911,1),new P.ptr(3913,3948,1),new P.ptr(3953,3991,1),new P.ptr(3993,4028,1),new P.ptr(4030,4044,1),new P.ptr(4046,4052,1),new P.ptr(4057,4058,1)]),IZ.nil,0);GV=new O.ptr(new IY([new P.ptr(11568,11623,1),new P.ptr(11631,11632,1),new P.ptr(11647,11647,1)]),IZ.nil,0);GW=new O.ptr(new IY([]),new IZ([new Q.ptr(70784,70855,1),new Q.ptr(70864,70873,1)]),0);GX=new O.ptr(new IY([]),new IZ([new Q.ptr(66432,66461,1),new Q.ptr(66463,66463,1)]),0);GY=new O.ptr(new IY([new P.ptr(42240,42539,1)]),IZ.nil,0);GZ=new O.ptr(new IY([]),new IZ([new Q.ptr(71840,71922,1),new Q.ptr(71935,71935,1)]),0);HA=new O.ptr(new IY([new P.ptr(40960,42124,1),new P.ptr(42128,42182,1)]),IZ.nil,0);HB=new O.ptr(new IY([]),new IZ([new Q.ptr(72192,72263,1)]),0);$pkg.Adlam=BR;$pkg.Ahom=BS;$pkg.Anatolian_Hieroglyphs=BT;$pkg.Arabic=BU;$pkg.Armenian=BV;$pkg.Avestan=BW;$pkg.Balinese=BX;$pkg.Bamum=BY;$pkg.Bassa_Vah=BZ;$pkg.Batak=CA;$pkg.Bengali=CB;$pkg.Bhaiksuki=CC;$pkg.Bopomofo=CD;$pkg.Brahmi=CE;$pkg.Braille=CF;$pkg.Buginese=CG;$pkg.Buhid=CH;$pkg.Canadian_Aboriginal=CI;$pkg.Carian=CJ;$pkg.Caucasian_Albanian=CK;$pkg.Chakma=CL;$pkg.Cham=CM;$pkg.Cherokee=CN;$pkg.Common=CO;$pkg.Coptic=CP;$pkg.Cuneiform=CQ;$pkg.Cypriot=CR;$pkg.Cyrillic=CS;$pkg.Deseret=CT;$pkg.Devanagari=CU;$pkg.Duployan=CV;$pkg.Egyptian_Hieroglyphs=CW;$pkg.Elbasan=CX;$pkg.Ethiopic=CY;$pkg.Georgian=CZ;$pkg.Glagolitic=DA;$pkg.Gothic=DB;$pkg.Grantha=DC;$pkg.Greek=DD;$pkg.Gujarati=DE;$pkg.Gurmukhi=DF;$pkg.Han=DG;$pkg.Hangul=DH;$pkg.Hanunoo=DI;$pkg.Hatran=DJ;$pkg.Hebrew=DK;$pkg.Hiragana=DL;$pkg.Imperial_Aramaic=DM;$pkg.Inherited=DN;$pkg.Inscriptional_Pahlavi=DO;$pkg.Inscriptional_Parthian=DP;$pkg.Javanese=DQ;$pkg.Kaithi=DR;$pkg.Kannada=DS;$pkg.Katakana=DT;$pkg.Kayah_Li=DU;$pkg.Kharoshthi=DV;$pkg.Khmer=DW;$pkg.Khojki=DX;$pkg.Khudawadi=DY;$pkg.Lao=DZ;$pkg.Latin=EA;$pkg.Lepcha=EB;$pkg.Limbu=EC;$pkg.Linear_A=ED;$pkg.Linear_B=EE;$pkg.Lisu=EF;$pkg.Lycian=EG;$pkg.Lydian=EH;$pkg.Mahajani=EI;$pkg.Malayalam=EJ;$pkg.Mandaic=EK;$pkg.Manichaean=EL;$pkg.Marchen=EM;$pkg.Masaram_Gondi=EN;$pkg.Meetei_Mayek=EO;$pkg.Mende_Kikakui=EP;$pkg.Meroitic_Cursive=EQ;$pkg.Meroitic_Hieroglyphs=ER;$pkg.Miao=ES;$pkg.Modi=ET;$pkg.Mongolian=EU;$pkg.Mro=EV;$pkg.Multani=EW;$pkg.Myanmar=EX;$pkg.Nabataean=EY;$pkg.New_Tai_Lue=EZ;$pkg.Newa=FA;$pkg.Nko=FB;$pkg.Nushu=FC;$pkg.Ogham=FD;$pkg.Ol_Chiki=FE;$pkg.Old_Hungarian=FF;$pkg.Old_Italic=FG;$pkg.Old_North_Arabian=FH;$pkg.Old_Permic=FI;$pkg.Old_Persian=FJ;$pkg.Old_South_Arabian=FK;$pkg.Old_Turkic=FL;$pkg.Oriya=FM;$pkg.Osage=FN;$pkg.Osmanya=FO;$pkg.Pahawh_Hmong=FP;$pkg.Palmyrene=FQ;$pkg.Pau_Cin_Hau=FR;$pkg.Phags_Pa=FS;$pkg.Phoenician=FT;$pkg.Psalter_Pahlavi=FU;$pkg.Rejang=FV;$pkg.Runic=FW;$pkg.Samaritan=FX;$pkg.Saurashtra=FY;$pkg.Sharada=FZ;$pkg.Shavian=GA;$pkg.Siddham=GB;$pkg.SignWriting=GC;$pkg.Sinhala=GD;$pkg.Sora_Sompeng=GE;$pkg.Soyombo=GF;$pkg.Sundanese=GG;$pkg.Syloti_Nagri=GH;$pkg.Syriac=GI;$pkg.Tagalog=GJ;$pkg.Tagbanwa=GK;$pkg.Tai_Le=GL;$pkg.Tai_Tham=GM;$pkg.Tai_Viet=GN;$pkg.Takri=GO;$pkg.Tamil=GP;$pkg.Tangut=GQ;$pkg.Telugu=GR;$pkg.Thaana=GS;$pkg.Thai=GT;$pkg.Tibetan=GU;$pkg.Tifinagh=GV;$pkg.Tirhuta=GW;$pkg.Ugaritic=GX;$pkg.Vai=GY;$pkg.Warang_Citi=GZ;$pkg.Yi=HA;$pkg.Zanabazar_Square=HB;$pkg.Scripts=$makeMap($String.keyFor,[{k:"Adlam",v:$pkg.Adlam},{k:"Ahom",v:$pkg.Ahom},{k:"Anatolian_Hieroglyphs",v:$pkg.Anatolian_Hieroglyphs},{k:"Arabic",v:$pkg.Arabic},{k:"Armenian",v:$pkg.Armenian},{k:"Avestan",v:$pkg.Avestan},{k:"Balinese",v:$pkg.Balinese},{k:"Bamum",v:$pkg.Bamum},{k:"Bassa_Vah",v:$pkg.Bassa_Vah},{k:"Batak",v:$pkg.Batak},{k:"Bengali",v:$pkg.Bengali},{k:"Bhaiksuki",v:$pkg.Bhaiksuki},{k:"Bopomofo",v:$pkg.Bopomofo},{k:"Brahmi",v:$pkg.Brahmi},{k:"Braille",v:$pkg.Braille},{k:"Buginese",v:$pkg.Buginese},{k:"Buhid",v:$pkg.Buhid},{k:"Canadian_Aboriginal",v:$pkg.Canadian_Aboriginal},{k:"Carian",v:$pkg.Carian},{k:"Caucasian_Albanian",v:$pkg.Caucasian_Albanian},{k:"Chakma",v:$pkg.Chakma},{k:"Cham",v:$pkg.Cham},{k:"Cherokee",v:$pkg.Cherokee},{k:"Common",v:$pkg.Common},{k:"Coptic",v:$pkg.Coptic},{k:"Cuneiform",v:$pkg.Cuneiform},{k:"Cypriot",v:$pkg.Cypriot},{k:"Cyrillic",v:$pkg.Cyrillic},{k:"Deseret",v:$pkg.Deseret},{k:"Devanagari",v:$pkg.Devanagari},{k:"Duployan",v:$pkg.Duployan},{k:"Egyptian_Hieroglyphs",v:$pkg.Egyptian_Hieroglyphs},{k:"Elbasan",v:$pkg.Elbasan},{k:"Ethiopic",v:$pkg.Ethiopic},{k:"Georgian",v:$pkg.Georgian},{k:"Glagolitic",v:$pkg.Glagolitic},{k:"Gothic",v:$pkg.Gothic},{k:"Grantha",v:$pkg.Grantha},{k:"Greek",v:$pkg.Greek},{k:"Gujarati",v:$pkg.Gujarati},{k:"Gurmukhi",v:$pkg.Gurmukhi},{k:"Han",v:$pkg.Han},{k:"Hangul",v:$pkg.Hangul},{k:"Hanunoo",v:$pkg.Hanunoo},{k:"Hatran",v:$pkg.Hatran},{k:"Hebrew",v:$pkg.Hebrew},{k:"Hiragana",v:$pkg.Hiragana},{k:"Imperial_Aramaic",v:$pkg.Imperial_Aramaic},{k:"Inherited",v:$pkg.Inherited},{k:"Inscriptional_Pahlavi",v:$pkg.Inscriptional_Pahlavi},{k:"Inscriptional_Parthian",v:$pkg.Inscriptional_Parthian},{k:"Javanese",v:$pkg.Javanese},{k:"Kaithi",v:$pkg.Kaithi},{k:"Kannada",v:$pkg.Kannada},{k:"Katakana",v:$pkg.Katakana},{k:"Kayah_Li",v:$pkg.Kayah_Li},{k:"Kharoshthi",v:$pkg.Kharoshthi},{k:"Khmer",v:$pkg.Khmer},{k:"Khojki",v:$pkg.Khojki},{k:"Khudawadi",v:$pkg.Khudawadi},{k:"Lao",v:$pkg.Lao},{k:"Latin",v:$pkg.Latin},{k:"Lepcha",v:$pkg.Lepcha},{k:"Limbu",v:$pkg.Limbu},{k:"Linear_A",v:$pkg.Linear_A},{k:"Linear_B",v:$pkg.Linear_B},{k:"Lisu",v:$pkg.Lisu},{k:"Lycian",v:$pkg.Lycian},{k:"Lydian",v:$pkg.Lydian},{k:"Mahajani",v:$pkg.Mahajani},{k:"Malayalam",v:$pkg.Malayalam},{k:"Mandaic",v:$pkg.Mandaic},{k:"Manichaean",v:$pkg.Manichaean},{k:"Marchen",v:$pkg.Marchen},{k:"Masaram_Gondi",v:$pkg.Masaram_Gondi},{k:"Meetei_Mayek",v:$pkg.Meetei_Mayek},{k:"Mende_Kikakui",v:$pkg.Mende_Kikakui},{k:"Meroitic_Cursive",v:$pkg.Meroitic_Cursive},{k:"Meroitic_Hieroglyphs",v:$pkg.Meroitic_Hieroglyphs},{k:"Miao",v:$pkg.Miao},{k:"Modi",v:$pkg.Modi},{k:"Mongolian",v:$pkg.Mongolian},{k:"Mro",v:$pkg.Mro},{k:"Multani",v:$pkg.Multani},{k:"Myanmar",v:$pkg.Myanmar},{k:"Nabataean",v:$pkg.Nabataean},{k:"New_Tai_Lue",v:$pkg.New_Tai_Lue},{k:"Newa",v:$pkg.Newa},{k:"Nko",v:$pkg.Nko},{k:"Nushu",v:$pkg.Nushu},{k:"Ogham",v:$pkg.Ogham},{k:"Ol_Chiki",v:$pkg.Ol_Chiki},{k:"Old_Hungarian",v:$pkg.Old_Hungarian},{k:"Old_Italic",v:$pkg.Old_Italic},{k:"Old_North_Arabian",v:$pkg.Old_North_Arabian},{k:"Old_Permic",v:$pkg.Old_Permic},{k:"Old_Persian",v:$pkg.Old_Persian},{k:"Old_South_Arabian",v:$pkg.Old_South_Arabian},{k:"Old_Turkic",v:$pkg.Old_Turkic},{k:"Oriya",v:$pkg.Oriya},{k:"Osage",v:$pkg.Osage},{k:"Osmanya",v:$pkg.Osmanya},{k:"Pahawh_Hmong",v:$pkg.Pahawh_Hmong},{k:"Palmyrene",v:$pkg.Palmyrene},{k:"Pau_Cin_Hau",v:$pkg.Pau_Cin_Hau},{k:"Phags_Pa",v:$pkg.Phags_Pa},{k:"Phoenician",v:$pkg.Phoenician},{k:"Psalter_Pahlavi",v:$pkg.Psalter_Pahlavi},{k:"Rejang",v:$pkg.Rejang},{k:"Runic",v:$pkg.Runic},{k:"Samaritan",v:$pkg.Samaritan},{k:"Saurashtra",v:$pkg.Saurashtra},{k:"Sharada",v:$pkg.Sharada},{k:"Shavian",v:$pkg.Shavian},{k:"Siddham",v:$pkg.Siddham},{k:"SignWriting",v:$pkg.SignWriting},{k:"Sinhala",v:$pkg.Sinhala},{k:"Sora_Sompeng",v:$pkg.Sora_Sompeng},{k:"Soyombo",v:$pkg.Soyombo},{k:"Sundanese",v:$pkg.Sundanese},{k:"Syloti_Nagri",v:$pkg.Syloti_Nagri},{k:"Syriac",v:$pkg.Syriac},{k:"Tagalog",v:$pkg.Tagalog},{k:"Tagbanwa",v:$pkg.Tagbanwa},{k:"Tai_Le",v:$pkg.Tai_Le},{k:"Tai_Tham",v:$pkg.Tai_Tham},{k:"Tai_Viet",v:$pkg.Tai_Viet},{k:"Takri",v:$pkg.Takri},{k:"Tamil",v:$pkg.Tamil},{k:"Tangut",v:$pkg.Tangut},{k:"Telugu",v:$pkg.Telugu},{k:"Thaana",v:$pkg.Thaana},{k:"Thai",v:$pkg.Thai},{k:"Tibetan",v:$pkg.Tibetan},{k:"Tifinagh",v:$pkg.Tifinagh},{k:"Tirhuta",v:$pkg.Tirhuta},{k:"Ugaritic",v:$pkg.Ugaritic},{k:"Vai",v:$pkg.Vai},{k:"Warang_Citi",v:$pkg.Warang_Citi},{k:"Yi",v:$pkg.Yi},{k:"Zanabazar_Square",v:$pkg.Zanabazar_Square}]);IK=new JC([new R.ptr(65,90,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(97,122,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(181,181,$toNativeArray($kindInt32,[743,0,743])),new R.ptr(192,214,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(216,222,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(224,246,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(248,254,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(255,255,$toNativeArray($kindInt32,[121,0,121])),new R.ptr(256,303,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(304,304,$toNativeArray($kindInt32,[0,-199,0])),new R.ptr(305,305,$toNativeArray($kindInt32,[-232,0,-232])),new R.ptr(306,311,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(313,328,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(330,375,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(376,376,$toNativeArray($kindInt32,[0,-121,0])),new R.ptr(377,382,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(383,383,$toNativeArray($kindInt32,[-300,0,-300])),new R.ptr(384,384,$toNativeArray($kindInt32,[195,0,195])),new R.ptr(385,385,$toNativeArray($kindInt32,[0,210,0])),new R.ptr(386,389,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(390,390,$toNativeArray($kindInt32,[0,206,0])),new R.ptr(391,392,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(393,394,$toNativeArray($kindInt32,[0,205,0])),new R.ptr(395,396,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(398,398,$toNativeArray($kindInt32,[0,79,0])),new R.ptr(399,399,$toNativeArray($kindInt32,[0,202,0])),new R.ptr(400,400,$toNativeArray($kindInt32,[0,203,0])),new R.ptr(401,402,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(403,403,$toNativeArray($kindInt32,[0,205,0])),new R.ptr(404,404,$toNativeArray($kindInt32,[0,207,0])),new R.ptr(405,405,$toNativeArray($kindInt32,[97,0,97])),new R.ptr(406,406,$toNativeArray($kindInt32,[0,211,0])),new R.ptr(407,407,$toNativeArray($kindInt32,[0,209,0])),new R.ptr(408,409,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(410,410,$toNativeArray($kindInt32,[163,0,163])),new R.ptr(412,412,$toNativeArray($kindInt32,[0,211,0])),new R.ptr(413,413,$toNativeArray($kindInt32,[0,213,0])),new R.ptr(414,414,$toNativeArray($kindInt32,[130,0,130])),new R.ptr(415,415,$toNativeArray($kindInt32,[0,214,0])),new R.ptr(416,421,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(422,422,$toNativeArray($kindInt32,[0,218,0])),new R.ptr(423,424,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(425,425,$toNativeArray($kindInt32,[0,218,0])),new R.ptr(428,429,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(430,430,$toNativeArray($kindInt32,[0,218,0])),new R.ptr(431,432,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(433,434,$toNativeArray($kindInt32,[0,217,0])),new R.ptr(435,438,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(439,439,$toNativeArray($kindInt32,[0,219,0])),new R.ptr(440,441,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(444,445,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(447,447,$toNativeArray($kindInt32,[56,0,56])),new R.ptr(452,452,$toNativeArray($kindInt32,[0,2,1])),new R.ptr(453,453,$toNativeArray($kindInt32,[-1,1,0])),new R.ptr(454,454,$toNativeArray($kindInt32,[-2,0,-1])),new R.ptr(455,455,$toNativeArray($kindInt32,[0,2,1])),new R.ptr(456,456,$toNativeArray($kindInt32,[-1,1,0])),new R.ptr(457,457,$toNativeArray($kindInt32,[-2,0,-1])),new R.ptr(458,458,$toNativeArray($kindInt32,[0,2,1])),new R.ptr(459,459,$toNativeArray($kindInt32,[-1,1,0])),new R.ptr(460,460,$toNativeArray($kindInt32,[-2,0,-1])),new R.ptr(461,476,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(477,477,$toNativeArray($kindInt32,[-79,0,-79])),new R.ptr(478,495,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(497,497,$toNativeArray($kindInt32,[0,2,1])),new R.ptr(498,498,$toNativeArray($kindInt32,[-1,1,0])),new R.ptr(499,499,$toNativeArray($kindInt32,[-2,0,-1])),new R.ptr(500,501,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(502,502,$toNativeArray($kindInt32,[0,-97,0])),new R.ptr(503,503,$toNativeArray($kindInt32,[0,-56,0])),new R.ptr(504,543,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(544,544,$toNativeArray($kindInt32,[0,-130,0])),new R.ptr(546,563,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(570,570,$toNativeArray($kindInt32,[0,10795,0])),new R.ptr(571,572,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(573,573,$toNativeArray($kindInt32,[0,-163,0])),new R.ptr(574,574,$toNativeArray($kindInt32,[0,10792,0])),new R.ptr(575,576,$toNativeArray($kindInt32,[10815,0,10815])),new R.ptr(577,578,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(579,579,$toNativeArray($kindInt32,[0,-195,0])),new R.ptr(580,580,$toNativeArray($kindInt32,[0,69,0])),new R.ptr(581,581,$toNativeArray($kindInt32,[0,71,0])),new R.ptr(582,591,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(592,592,$toNativeArray($kindInt32,[10783,0,10783])),new R.ptr(593,593,$toNativeArray($kindInt32,[10780,0,10780])),new R.ptr(594,594,$toNativeArray($kindInt32,[10782,0,10782])),new R.ptr(595,595,$toNativeArray($kindInt32,[-210,0,-210])),new R.ptr(596,596,$toNativeArray($kindInt32,[-206,0,-206])),new R.ptr(598,599,$toNativeArray($kindInt32,[-205,0,-205])),new R.ptr(601,601,$toNativeArray($kindInt32,[-202,0,-202])),new R.ptr(603,603,$toNativeArray($kindInt32,[-203,0,-203])),new R.ptr(604,604,$toNativeArray($kindInt32,[42319,0,42319])),new R.ptr(608,608,$toNativeArray($kindInt32,[-205,0,-205])),new R.ptr(609,609,$toNativeArray($kindInt32,[42315,0,42315])),new R.ptr(611,611,$toNativeArray($kindInt32,[-207,0,-207])),new R.ptr(613,613,$toNativeArray($kindInt32,[42280,0,42280])),new R.ptr(614,614,$toNativeArray($kindInt32,[42308,0,42308])),new R.ptr(616,616,$toNativeArray($kindInt32,[-209,0,-209])),new R.ptr(617,617,$toNativeArray($kindInt32,[-211,0,-211])),new R.ptr(618,618,$toNativeArray($kindInt32,[42308,0,42308])),new R.ptr(619,619,$toNativeArray($kindInt32,[10743,0,10743])),new R.ptr(620,620,$toNativeArray($kindInt32,[42305,0,42305])),new R.ptr(623,623,$toNativeArray($kindInt32,[-211,0,-211])),new R.ptr(625,625,$toNativeArray($kindInt32,[10749,0,10749])),new R.ptr(626,626,$toNativeArray($kindInt32,[-213,0,-213])),new R.ptr(629,629,$toNativeArray($kindInt32,[-214,0,-214])),new R.ptr(637,637,$toNativeArray($kindInt32,[10727,0,10727])),new R.ptr(640,640,$toNativeArray($kindInt32,[-218,0,-218])),new R.ptr(643,643,$toNativeArray($kindInt32,[-218,0,-218])),new R.ptr(647,647,$toNativeArray($kindInt32,[42282,0,42282])),new R.ptr(648,648,$toNativeArray($kindInt32,[-218,0,-218])),new R.ptr(649,649,$toNativeArray($kindInt32,[-69,0,-69])),new R.ptr(650,651,$toNativeArray($kindInt32,[-217,0,-217])),new R.ptr(652,652,$toNativeArray($kindInt32,[-71,0,-71])),new R.ptr(658,658,$toNativeArray($kindInt32,[-219,0,-219])),new R.ptr(669,669,$toNativeArray($kindInt32,[42261,0,42261])),new R.ptr(670,670,$toNativeArray($kindInt32,[42258,0,42258])),new R.ptr(837,837,$toNativeArray($kindInt32,[84,0,84])),new R.ptr(880,883,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(886,887,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(891,893,$toNativeArray($kindInt32,[130,0,130])),new R.ptr(895,895,$toNativeArray($kindInt32,[0,116,0])),new R.ptr(902,902,$toNativeArray($kindInt32,[0,38,0])),new R.ptr(904,906,$toNativeArray($kindInt32,[0,37,0])),new R.ptr(908,908,$toNativeArray($kindInt32,[0,64,0])),new R.ptr(910,911,$toNativeArray($kindInt32,[0,63,0])),new R.ptr(913,929,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(931,939,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(940,940,$toNativeArray($kindInt32,[-38,0,-38])),new R.ptr(941,943,$toNativeArray($kindInt32,[-37,0,-37])),new R.ptr(945,961,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(962,962,$toNativeArray($kindInt32,[-31,0,-31])),new R.ptr(963,971,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(972,972,$toNativeArray($kindInt32,[-64,0,-64])),new R.ptr(973,974,$toNativeArray($kindInt32,[-63,0,-63])),new R.ptr(975,975,$toNativeArray($kindInt32,[0,8,0])),new R.ptr(976,976,$toNativeArray($kindInt32,[-62,0,-62])),new R.ptr(977,977,$toNativeArray($kindInt32,[-57,0,-57])),new R.ptr(981,981,$toNativeArray($kindInt32,[-47,0,-47])),new R.ptr(982,982,$toNativeArray($kindInt32,[-54,0,-54])),new R.ptr(983,983,$toNativeArray($kindInt32,[-8,0,-8])),new R.ptr(984,1007,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1008,1008,$toNativeArray($kindInt32,[-86,0,-86])),new R.ptr(1009,1009,$toNativeArray($kindInt32,[-80,0,-80])),new R.ptr(1010,1010,$toNativeArray($kindInt32,[7,0,7])),new R.ptr(1011,1011,$toNativeArray($kindInt32,[-116,0,-116])),new R.ptr(1012,1012,$toNativeArray($kindInt32,[0,-60,0])),new R.ptr(1013,1013,$toNativeArray($kindInt32,[-96,0,-96])),new R.ptr(1015,1016,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1017,1017,$toNativeArray($kindInt32,[0,-7,0])),new R.ptr(1018,1019,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1021,1023,$toNativeArray($kindInt32,[0,-130,0])),new R.ptr(1024,1039,$toNativeArray($kindInt32,[0,80,0])),new R.ptr(1040,1071,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(1072,1103,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(1104,1119,$toNativeArray($kindInt32,[-80,0,-80])),new R.ptr(1120,1153,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1162,1215,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1216,1216,$toNativeArray($kindInt32,[0,15,0])),new R.ptr(1217,1230,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1231,1231,$toNativeArray($kindInt32,[-15,0,-15])),new R.ptr(1232,1327,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(1329,1366,$toNativeArray($kindInt32,[0,48,0])),new R.ptr(1377,1414,$toNativeArray($kindInt32,[-48,0,-48])),new R.ptr(4256,4293,$toNativeArray($kindInt32,[0,7264,0])),new R.ptr(4295,4295,$toNativeArray($kindInt32,[0,7264,0])),new R.ptr(4301,4301,$toNativeArray($kindInt32,[0,7264,0])),new R.ptr(5024,5103,$toNativeArray($kindInt32,[0,38864,0])),new R.ptr(5104,5109,$toNativeArray($kindInt32,[0,8,0])),new R.ptr(5112,5117,$toNativeArray($kindInt32,[-8,0,-8])),new R.ptr(7296,7296,$toNativeArray($kindInt32,[-6254,0,-6254])),new R.ptr(7297,7297,$toNativeArray($kindInt32,[-6253,0,-6253])),new R.ptr(7298,7298,$toNativeArray($kindInt32,[-6244,0,-6244])),new R.ptr(7299,7300,$toNativeArray($kindInt32,[-6242,0,-6242])),new R.ptr(7301,7301,$toNativeArray($kindInt32,[-6243,0,-6243])),new R.ptr(7302,7302,$toNativeArray($kindInt32,[-6236,0,-6236])),new R.ptr(7303,7303,$toNativeArray($kindInt32,[-6181,0,-6181])),new R.ptr(7304,7304,$toNativeArray($kindInt32,[35266,0,35266])),new R.ptr(7545,7545,$toNativeArray($kindInt32,[35332,0,35332])),new R.ptr(7549,7549,$toNativeArray($kindInt32,[3814,0,3814])),new R.ptr(7680,7829,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(7835,7835,$toNativeArray($kindInt32,[-59,0,-59])),new R.ptr(7838,7838,$toNativeArray($kindInt32,[0,-7615,0])),new R.ptr(7840,7935,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(7936,7943,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(7944,7951,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(7952,7957,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(7960,7965,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(7968,7975,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(7976,7983,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(7984,7991,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(7992,7999,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8000,8005,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8008,8013,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8017,8017,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8019,8019,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8021,8021,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8023,8023,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8025,8025,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8027,8027,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8029,8029,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8031,8031,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8032,8039,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8040,8047,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8048,8049,$toNativeArray($kindInt32,[74,0,74])),new R.ptr(8050,8053,$toNativeArray($kindInt32,[86,0,86])),new R.ptr(8054,8055,$toNativeArray($kindInt32,[100,0,100])),new R.ptr(8056,8057,$toNativeArray($kindInt32,[128,0,128])),new R.ptr(8058,8059,$toNativeArray($kindInt32,[112,0,112])),new R.ptr(8060,8061,$toNativeArray($kindInt32,[126,0,126])),new R.ptr(8064,8071,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8072,8079,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8080,8087,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8088,8095,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8096,8103,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8104,8111,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8112,8113,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8115,8115,$toNativeArray($kindInt32,[9,0,9])),new R.ptr(8120,8121,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8122,8123,$toNativeArray($kindInt32,[0,-74,0])),new R.ptr(8124,8124,$toNativeArray($kindInt32,[0,-9,0])),new R.ptr(8126,8126,$toNativeArray($kindInt32,[-7205,0,-7205])),new R.ptr(8131,8131,$toNativeArray($kindInt32,[9,0,9])),new R.ptr(8136,8139,$toNativeArray($kindInt32,[0,-86,0])),new R.ptr(8140,8140,$toNativeArray($kindInt32,[0,-9,0])),new R.ptr(8144,8145,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8152,8153,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8154,8155,$toNativeArray($kindInt32,[0,-100,0])),new R.ptr(8160,8161,$toNativeArray($kindInt32,[8,0,8])),new R.ptr(8165,8165,$toNativeArray($kindInt32,[7,0,7])),new R.ptr(8168,8169,$toNativeArray($kindInt32,[0,-8,0])),new R.ptr(8170,8171,$toNativeArray($kindInt32,[0,-112,0])),new R.ptr(8172,8172,$toNativeArray($kindInt32,[0,-7,0])),new R.ptr(8179,8179,$toNativeArray($kindInt32,[9,0,9])),new R.ptr(8184,8185,$toNativeArray($kindInt32,[0,-128,0])),new R.ptr(8186,8187,$toNativeArray($kindInt32,[0,-126,0])),new R.ptr(8188,8188,$toNativeArray($kindInt32,[0,-9,0])),new R.ptr(8486,8486,$toNativeArray($kindInt32,[0,-7517,0])),new R.ptr(8490,8490,$toNativeArray($kindInt32,[0,-8383,0])),new R.ptr(8491,8491,$toNativeArray($kindInt32,[0,-8262,0])),new R.ptr(8498,8498,$toNativeArray($kindInt32,[0,28,0])),new R.ptr(8526,8526,$toNativeArray($kindInt32,[-28,0,-28])),new R.ptr(8544,8559,$toNativeArray($kindInt32,[0,16,0])),new R.ptr(8560,8575,$toNativeArray($kindInt32,[-16,0,-16])),new R.ptr(8579,8580,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(9398,9423,$toNativeArray($kindInt32,[0,26,0])),new R.ptr(9424,9449,$toNativeArray($kindInt32,[-26,0,-26])),new R.ptr(11264,11310,$toNativeArray($kindInt32,[0,48,0])),new R.ptr(11312,11358,$toNativeArray($kindInt32,[-48,0,-48])),new R.ptr(11360,11361,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11362,11362,$toNativeArray($kindInt32,[0,-10743,0])),new R.ptr(11363,11363,$toNativeArray($kindInt32,[0,-3814,0])),new R.ptr(11364,11364,$toNativeArray($kindInt32,[0,-10727,0])),new R.ptr(11365,11365,$toNativeArray($kindInt32,[-10795,0,-10795])),new R.ptr(11366,11366,$toNativeArray($kindInt32,[-10792,0,-10792])),new R.ptr(11367,11372,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11373,11373,$toNativeArray($kindInt32,[0,-10780,0])),new R.ptr(11374,11374,$toNativeArray($kindInt32,[0,-10749,0])),new R.ptr(11375,11375,$toNativeArray($kindInt32,[0,-10783,0])),new R.ptr(11376,11376,$toNativeArray($kindInt32,[0,-10782,0])),new R.ptr(11378,11379,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11381,11382,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11390,11391,$toNativeArray($kindInt32,[0,-10815,0])),new R.ptr(11392,11491,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11499,11502,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11506,11507,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(11520,11557,$toNativeArray($kindInt32,[-7264,0,-7264])),new R.ptr(11559,11559,$toNativeArray($kindInt32,[-7264,0,-7264])),new R.ptr(11565,11565,$toNativeArray($kindInt32,[-7264,0,-7264])),new R.ptr(42560,42605,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42624,42651,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42786,42799,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42802,42863,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42873,42876,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42877,42877,$toNativeArray($kindInt32,[0,-35332,0])),new R.ptr(42878,42887,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42891,42892,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42893,42893,$toNativeArray($kindInt32,[0,-42280,0])),new R.ptr(42896,42899,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42902,42921,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(42922,42922,$toNativeArray($kindInt32,[0,-42308,0])),new R.ptr(42923,42923,$toNativeArray($kindInt32,[0,-42319,0])),new R.ptr(42924,42924,$toNativeArray($kindInt32,[0,-42315,0])),new R.ptr(42925,42925,$toNativeArray($kindInt32,[0,-42305,0])),new R.ptr(42926,42926,$toNativeArray($kindInt32,[0,-42308,0])),new R.ptr(42928,42928,$toNativeArray($kindInt32,[0,-42258,0])),new R.ptr(42929,42929,$toNativeArray($kindInt32,[0,-42282,0])),new R.ptr(42930,42930,$toNativeArray($kindInt32,[0,-42261,0])),new R.ptr(42931,42931,$toNativeArray($kindInt32,[0,928,0])),new R.ptr(42932,42935,$toNativeArray($kindInt32,[1114112,1114112,1114112])),new R.ptr(43859,43859,$toNativeArray($kindInt32,[-928,0,-928])),new R.ptr(43888,43967,$toNativeArray($kindInt32,[-38864,0,-38864])),new R.ptr(65313,65338,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(65345,65370,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(66560,66599,$toNativeArray($kindInt32,[0,40,0])),new R.ptr(66600,66639,$toNativeArray($kindInt32,[-40,0,-40])),new R.ptr(66736,66771,$toNativeArray($kindInt32,[0,40,0])),new R.ptr(66776,66811,$toNativeArray($kindInt32,[-40,0,-40])),new R.ptr(68736,68786,$toNativeArray($kindInt32,[0,64,0])),new R.ptr(68800,68850,$toNativeArray($kindInt32,[-64,0,-64])),new R.ptr(71840,71871,$toNativeArray($kindInt32,[0,32,0])),new R.ptr(71872,71903,$toNativeArray($kindInt32,[-32,0,-32])),new R.ptr(125184,125217,$toNativeArray($kindInt32,[0,34,0])),new R.ptr(125218,125251,$toNativeArray($kindInt32,[-34,0,-34]))]);$pkg.CaseRanges=IK;IL=$toNativeArray($kindUint8,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,144,130,130,130,136,130,130,130,130,130,130,136,130,130,130,130,132,132,132,132,132,132,132,132,132,132,130,130,136,136,136,130,130,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,130,130,130,136,130,136,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,130,136,130,136,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,16,130,136,136,136,136,136,130,136,136,224,130,136,0,136,136,136,136,132,132,136,192,130,130,136,132,224,130,132,132,132,130,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,136,160,160,160,160,160,160,160,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,136,192,192,192,192,192,192,192,192]);IM=$toNativeArray($kindUint16,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,65,66,67,68,69,70,71,72,73,74,8490,76,77,78,79,80,81,82,383,84,85,86,87,88,89,90,123,124,125,126,127]);IN=new JD([new AF.ptr(75,107),new AF.ptr(83,115),new AF.ptr(107,8490),new AF.ptr(115,383),new AF.ptr(181,924),new AF.ptr(197,229),new AF.ptr(223,7838),new AF.ptr(229,8491),new AF.ptr(304,304),new AF.ptr(305,305),new AF.ptr(383,83),new AF.ptr(452,453),new AF.ptr(453,454),new AF.ptr(454,452),new AF.ptr(455,456),new AF.ptr(456,457),new AF.ptr(457,455),new AF.ptr(458,459),new AF.ptr(459,460),new AF.ptr(460,458),new AF.ptr(497,498),new AF.ptr(498,499),new AF.ptr(499,497),new AF.ptr(837,921),new AF.ptr(914,946),new AF.ptr(917,949),new AF.ptr(920,952),new AF.ptr(921,953),new AF.ptr(922,954),new AF.ptr(924,956),new AF.ptr(928,960),new AF.ptr(929,961),new AF.ptr(931,962),new AF.ptr(934,966),new AF.ptr(937,969),new AF.ptr(946,976),new AF.ptr(949,1013),new AF.ptr(952,977),new AF.ptr(953,8126),new AF.ptr(954,1008),new AF.ptr(956,181),new AF.ptr(960,982),new AF.ptr(961,1009),new AF.ptr(962,963),new AF.ptr(963,931),new AF.ptr(966,981),new AF.ptr(969,8486),new AF.ptr(976,914),new AF.ptr(977,1012),new AF.ptr(981,934),new AF.ptr(982,928),new AF.ptr(1008,922),new AF.ptr(1009,929),new AF.ptr(1012,920),new AF.ptr(1013,917),new AF.ptr(1042,1074),new AF.ptr(1044,1076),new AF.ptr(1054,1086),new AF.ptr(1057,1089),new AF.ptr(1058,1090),new AF.ptr(1066,1098),new AF.ptr(1074,7296),new AF.ptr(1076,7297),new AF.ptr(1086,7298),new AF.ptr(1089,7299),new AF.ptr(1090,7300),new AF.ptr(1098,7302),new AF.ptr(1122,1123),new AF.ptr(1123,7303),new AF.ptr(7296,1042),new AF.ptr(7297,1044),new AF.ptr(7298,1054),new AF.ptr(7299,1057),new AF.ptr(7300,7301),new AF.ptr(7301,1058),new AF.ptr(7302,1066),new AF.ptr(7303,1122),new AF.ptr(7304,42570),new AF.ptr(7776,7777),new AF.ptr(7777,7835),new AF.ptr(7835,7776),new AF.ptr(7838,223),new AF.ptr(8126,837),new AF.ptr(8486,937),new AF.ptr(8490,75),new AF.ptr(8491,197),new AF.ptr(42570,42571),new AF.ptr(42571,7304)]);IO=new O.ptr(new IY([new P.ptr(837,837,1)]),IZ.nil,0);IP=new O.ptr(new IY([new P.ptr(65,90,1),new P.ptr(192,214,1),new P.ptr(216,222,1),new P.ptr(256,302,2),new P.ptr(306,310,2),new P.ptr(313,327,2),new P.ptr(330,376,2),new P.ptr(377,381,2),new P.ptr(385,386,1),new P.ptr(388,390,2),new P.ptr(391,393,2),new P.ptr(394,395,1),new P.ptr(398,401,1),new P.ptr(403,404,1),new P.ptr(406,408,1),new P.ptr(412,413,1),new P.ptr(415,416,1),new P.ptr(418,422,2),new P.ptr(423,425,2),new P.ptr(428,430,2),new P.ptr(431,433,2),new P.ptr(434,435,1),new P.ptr(437,439,2),new P.ptr(440,444,4),new P.ptr(452,453,1),new P.ptr(455,456,1),new P.ptr(458,459,1),new P.ptr(461,475,2),new P.ptr(478,494,2),new P.ptr(497,498,1),new P.ptr(500,502,2),new P.ptr(503,504,1),new P.ptr(506,562,2),new P.ptr(570,571,1),new P.ptr(573,574,1),new P.ptr(577,579,2),new P.ptr(580,582,1),new P.ptr(584,590,2),new P.ptr(837,880,43),new P.ptr(882,886,4),new P.ptr(895,902,7),new P.ptr(904,906,1),new P.ptr(908,910,2),new P.ptr(911,913,2),new P.ptr(914,929,1),new P.ptr(931,939,1),new P.ptr(975,984,9),new P.ptr(986,1006,2),new P.ptr(1012,1015,3),new P.ptr(1017,1018,1),new P.ptr(1021,1071,1),new P.ptr(1120,1152,2),new P.ptr(1162,1216,2),new P.ptr(1217,1229,2),new P.ptr(1232,1326,2),new P.ptr(1329,1366,1),new P.ptr(4256,4293,1),new P.ptr(4295,4301,6),new P.ptr(5024,5109,1),new P.ptr(7680,7828,2),new P.ptr(7838,7934,2),new P.ptr(7944,7951,1),new P.ptr(7960,7965,1),new P.ptr(7976,7983,1),new P.ptr(7992,7999,1),new P.ptr(8008,8013,1),new P.ptr(8025,8031,2),new P.ptr(8040,8047,1),new P.ptr(8072,8079,1),new P.ptr(8088,8095,1),new P.ptr(8104,8111,1),new P.ptr(8120,8124,1),new P.ptr(8136,8140,1),new P.ptr(8152,8155,1),new P.ptr(8168,8172,1),new P.ptr(8184,8188,1),new P.ptr(8486,8490,4),new P.ptr(8491,8498,7),new P.ptr(8579,11264,2685),new P.ptr(11265,11310,1),new P.ptr(11360,11362,2),new P.ptr(11363,11364,1),new P.ptr(11367,11373,2),new P.ptr(11374,11376,1),new P.ptr(11378,11381,3),new P.ptr(11390,11392,1),new P.ptr(11394,11490,2),new P.ptr(11499,11501,2),new P.ptr(11506,42560,31054),new P.ptr(42562,42604,2),new P.ptr(42624,42650,2),new P.ptr(42786,42798,2),new P.ptr(42802,42862,2),new P.ptr(42873,42877,2),new P.ptr(42878,42886,2),new P.ptr(42891,42893,2),new P.ptr(42896,42898,2),new P.ptr(42902,42922,2),new P.ptr(42923,42926,1),new P.ptr(42928,42932,1),new P.ptr(42934,65313,22379),new P.ptr(65314,65338,1)]),new IZ([new Q.ptr(66560,66599,1),new Q.ptr(66736,66771,1),new Q.ptr(68736,68786,1),new Q.ptr(71840,71871,1),new Q.ptr(125184,125217,1)]),3);IQ=new O.ptr(new IY([new P.ptr(452,454,2),new P.ptr(455,457,2),new P.ptr(458,460,2),new P.ptr(497,499,2),new P.ptr(8064,8071,1),new P.ptr(8080,8087,1),new P.ptr(8096,8103,1),new P.ptr(8115,8131,16),new P.ptr(8179,8179,1)]),IZ.nil,0);IR=new O.ptr(new IY([new P.ptr(97,122,1),new P.ptr(181,223,42),new P.ptr(224,246,1),new P.ptr(248,255,1),new P.ptr(257,303,2),new P.ptr(307,311,2),new P.ptr(314,328,2),new P.ptr(331,375,2),new P.ptr(378,382,2),new P.ptr(383,384,1),new P.ptr(387,389,2),new P.ptr(392,396,4),new P.ptr(402,405,3),new P.ptr(409,410,1),new P.ptr(414,417,3),new P.ptr(419,421,2),new P.ptr(424,429,5),new P.ptr(432,436,4),new P.ptr(438,441,3),new P.ptr(445,447,2),new P.ptr(453,454,1),new P.ptr(456,457,1),new P.ptr(459,460,1),new P.ptr(462,476,2),new P.ptr(477,495,2),new P.ptr(498,499,1),new P.ptr(501,505,4),new P.ptr(507,543,2),new P.ptr(547,563,2),new P.ptr(572,575,3),new P.ptr(576,578,2),new P.ptr(583,591,2),new P.ptr(592,596,1),new P.ptr(598,599,1),new P.ptr(601,603,2),new P.ptr(604,608,4),new P.ptr(609,613,2),new P.ptr(614,616,2),new P.ptr(617,620,1),new P.ptr(623,625,2),new P.ptr(626,629,3),new P.ptr(637,643,3),new P.ptr(647,652,1),new P.ptr(658,669,11),new P.ptr(670,837,167),new P.ptr(881,883,2),new P.ptr(887,891,4),new P.ptr(892,893,1),new P.ptr(940,943,1),new P.ptr(945,974,1),new P.ptr(976,977,1),new P.ptr(981,983,1),new P.ptr(985,1007,2),new P.ptr(1008,1011,1),new P.ptr(1013,1019,3),new P.ptr(1072,1119,1),new P.ptr(1121,1153,2),new P.ptr(1163,1215,2),new P.ptr(1218,1230,2),new P.ptr(1231,1327,2),new P.ptr(1377,1414,1),new P.ptr(5112,5117,1),new P.ptr(7296,7304,1),new P.ptr(7545,7549,4),new P.ptr(7681,7829,2),new P.ptr(7835,7841,6),new P.ptr(7843,7935,2),new P.ptr(7936,7943,1),new P.ptr(7952,7957,1),new P.ptr(7968,7975,1),new P.ptr(7984,7991,1),new P.ptr(8000,8005,1),new P.ptr(8017,8023,2),new P.ptr(8032,8039,1),new P.ptr(8048,8061,1),new P.ptr(8112,8113,1),new P.ptr(8126,8144,18),new P.ptr(8145,8160,15),new P.ptr(8161,8165,4),new P.ptr(8526,8580,54),new P.ptr(11312,11358,1),new P.ptr(11361,11365,4),new P.ptr(11366,11372,2),new P.ptr(11379,11382,3),new P.ptr(11393,11491,2),new P.ptr(11500,11502,2),new P.ptr(11507,11520,13),new P.ptr(11521,11557,1),new P.ptr(11559,11565,6),new P.ptr(42561,42605,2),new P.ptr(42625,42651,2),new P.ptr(42787,42799,2),new P.ptr(42803,42863,2),new P.ptr(42874,42876,2),new P.ptr(42879,42887,2),new P.ptr(42892,42897,5),new P.ptr(42899,42903,4),new P.ptr(42905,42921,2),new P.ptr(42933,42935,2),new P.ptr(43859,43888,29),new P.ptr(43889,43967,1),new P.ptr(65345,65370,1)]),new IZ([new Q.ptr(66600,66639,1),new Q.ptr(66776,66811,1),new Q.ptr(68800,68850,1),new Q.ptr(71872,71903,1),new Q.ptr(125218,125251,1)]),4);IS=new O.ptr(new IY([new P.ptr(921,953,32),new P.ptr(8126,8126,1)]),IZ.nil,0);IT=new O.ptr(new IY([new P.ptr(921,953,32),new P.ptr(8126,8126,1)]),IZ.nil,0);$pkg.FoldCategory=$makeMap($String.keyFor,[{k:"L",v:IO},{k:"Ll",v:IP},{k:"Lt",v:IQ},{k:"Lu",v:IR},{k:"M",v:IS},{k:"Mn",v:IT}]);IU=new O.ptr(new IY([new P.ptr(924,956,32)]),IZ.nil,0);IV=new O.ptr(new IY([new P.ptr(181,837,656)]),IZ.nil,0);IW=new O.ptr(new IY([new P.ptr(921,953,32),new P.ptr(8126,8126,1)]),IZ.nil,0);$pkg.FoldScript=$makeMap($String.keyFor,[{k:"Common",v:IU},{k:"Greek",v:IV},{k:"Inherited",v:IW}]);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["reflect"]=(function(){var $pkg={},$init,A,C,H,D,B,E,F,G,N,P,Q,R,AW,CB,CC,CD,CE,CF,CG,CH,CI,CJ,CK,CL,CM,CN,CO,CP,CQ,CS,DB,DC,DD,DG,DH,DI,EY,EZ,FC,FM,HQ,HR,HS,HV,HW,HX,HY,HZ,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ,IK,IL,IM,IP,IQ,IR,IS,IT,IU,JC,JE,JG,JH,JI,JJ,JQ,JR,JS,I,O,S,U,W,BJ,BK,BO,CT,FL,J,K,L,M,T,V,X,Y,Z,AA,AB,AC,AD,AE,AH,AJ,AK,AL,AM,AO,AS,AT,AU,AV,AX,AY,AZ,BA,BB,BC,BE,BF,BG,BH,BI,BL,BM,BN,BP,BQ,DK,DM,DN,DO,DP,EQ,EV,FN,FO,GG,GH,GJ,GK,GL,GM,GN,GO,GP,GQ,GR,GS,GT,GU,GV,GW,GX,GY,GZ,HA,HB,HC,HD,HE;A=$packages["errors"];C=$packages["github.com/gopherjs/gopherjs/js"];H=$packages["math"];D=$packages["runtime"];B=$packages["strconv"];E=$packages["sync"];F=$packages["unicode"];G=$packages["unicode/utf8"];N=$pkg.uncommonType=$newType(0,$kindStruct,"reflect.uncommonType",true,"reflect",false,function(pkgPath_,mcount_,xcount_,moff_,_methods_){this.$val=this;if(arguments.length===0){this.pkgPath=0;this.mcount=0;this.xcount=0;this.moff=0;this._methods=IB.nil;return;}this.pkgPath=pkgPath_;this.mcount=mcount_;this.xcount=xcount_;this.moff=moff_;this._methods=_methods_;});P=$pkg.funcType=$newType(0,$kindStruct,"reflect.funcType",true,"reflect",false,function(rtype_,inCount_,outCount_,_in_,_out_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.inCount=0;this.outCount=0;this._in=HS.nil;this._out=HS.nil;return;}this.rtype=rtype_;this.inCount=inCount_;this.outCount=outCount_;this._in=_in_;this._out=_out_;});Q=$pkg.name=$newType(0,$kindStruct,"reflect.name",true,"reflect",false,function(bytes_){this.$val=this;if(arguments.length===0){this.bytes=IA.nil;return;}this.bytes=bytes_;});R=$pkg.nameData=$newType(0,$kindStruct,"reflect.nameData",true,"reflect",false,function(name_,tag_,exported_){this.$val=this;if(arguments.length===0){this.name="";this.tag="";this.exported=false;return;}this.name=name_;this.tag=tag_;this.exported=exported_;});AW=$pkg.mapIter=$newType(0,$kindStruct,"reflect.mapIter",true,"reflect",false,function(t_,m_,keys_,i_,last_){this.$val=this;if(arguments.length===0){this.t=$ifaceNil;this.m=null;this.keys=null;this.i=0;this.last=null;return;}this.t=t_;this.m=m_;this.keys=keys_;this.i=i_;this.last=last_;});CB=$pkg.Type=$newType(8,$kindInterface,"reflect.Type",true,"reflect",true,null);CC=$pkg.Kind=$newType(4,$kindUint,"reflect.Kind",true,"reflect",true,null);CD=$pkg.tflag=$newType(1,$kindUint8,"reflect.tflag",true,"reflect",false,null);CE=$pkg.rtype=$newType(0,$kindStruct,"reflect.rtype",true,"reflect",false,function(size_,ptrdata_,hash_,tflag_,align_,fieldAlign_,kind_,alg_,gcdata_,str_,ptrToThis_){this.$val=this;if(arguments.length===0){this.size=0;this.ptrdata=0;this.hash=0;this.tflag=0;this.align=0;this.fieldAlign=0;this.kind=0;this.alg=HZ.nil;this.gcdata=IA.nil;this.str=0;this.ptrToThis=0;return;}this.size=size_;this.ptrdata=ptrdata_;this.hash=hash_;this.tflag=tflag_;this.align=align_;this.fieldAlign=fieldAlign_;this.kind=kind_;this.alg=alg_;this.gcdata=gcdata_;this.str=str_;this.ptrToThis=ptrToThis_;});CF=$pkg.typeAlg=$newType(0,$kindStruct,"reflect.typeAlg",true,"reflect",false,function(hash_,equal_){this.$val=this;if(arguments.length===0){this.hash=$throwNilPointerError;this.equal=$throwNilPointerError;return;}this.hash=hash_;this.equal=equal_;});CG=$pkg.method=$newType(0,$kindStruct,"reflect.method",true,"reflect",false,function(name_,mtyp_,ifn_,tfn_){this.$val=this;if(arguments.length===0){this.name=0;this.mtyp=0;this.ifn=0;this.tfn=0;return;}this.name=name_;this.mtyp=mtyp_;this.ifn=ifn_;this.tfn=tfn_;});CH=$pkg.ChanDir=$newType(4,$kindInt,"reflect.ChanDir",true,"reflect",true,null);CI=$pkg.arrayType=$newType(0,$kindStruct,"reflect.arrayType",true,"reflect",false,function(rtype_,elem_,slice_,len_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.elem=HR.nil;this.slice=HR.nil;this.len=0;return;}this.rtype=rtype_;this.elem=elem_;this.slice=slice_;this.len=len_;});CJ=$pkg.chanType=$newType(0,$kindStruct,"reflect.chanType",true,"reflect",false,function(rtype_,elem_,dir_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.elem=HR.nil;this.dir=0;return;}this.rtype=rtype_;this.elem=elem_;this.dir=dir_;});CK=$pkg.imethod=$newType(0,$kindStruct,"reflect.imethod",true,"reflect",false,function(name_,typ_){this.$val=this;if(arguments.length===0){this.name=0;this.typ=0;return;}this.name=name_;this.typ=typ_;});CL=$pkg.interfaceType=$newType(0,$kindStruct,"reflect.interfaceType",true,"reflect",false,function(rtype_,pkgPath_,methods_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.pkgPath=new Q.ptr(IA.nil);this.methods=IC.nil;return;}this.rtype=rtype_;this.pkgPath=pkgPath_;this.methods=methods_;});CM=$pkg.mapType=$newType(0,$kindStruct,"reflect.mapType",true,"reflect",false,function(rtype_,key_,elem_,bucket_,keysize_,valuesize_,bucketsize_,flags_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.key=HR.nil;this.elem=HR.nil;this.bucket=HR.nil;this.keysize=0;this.valuesize=0;this.bucketsize=0;this.flags=0;return;}this.rtype=rtype_;this.key=key_;this.elem=elem_;this.bucket=bucket_;this.keysize=keysize_;this.valuesize=valuesize_;this.bucketsize=bucketsize_;this.flags=flags_;});CN=$pkg.ptrType=$newType(0,$kindStruct,"reflect.ptrType",true,"reflect",false,function(rtype_,elem_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.elem=HR.nil;return;}this.rtype=rtype_;this.elem=elem_;});CO=$pkg.sliceType=$newType(0,$kindStruct,"reflect.sliceType",true,"reflect",false,function(rtype_,elem_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.elem=HR.nil;return;}this.rtype=rtype_;this.elem=elem_;});CP=$pkg.structField=$newType(0,$kindStruct,"reflect.structField",true,"reflect",false,function(name_,typ_,offsetEmbed_){this.$val=this;if(arguments.length===0){this.name=new Q.ptr(IA.nil);this.typ=HR.nil;this.offsetEmbed=0;return;}this.name=name_;this.typ=typ_;this.offsetEmbed=offsetEmbed_;});CQ=$pkg.structType=$newType(0,$kindStruct,"reflect.structType",true,"reflect",false,function(rtype_,pkgPath_,fields_){this.$val=this;if(arguments.length===0){this.rtype=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);this.pkgPath=new Q.ptr(IA.nil);this.fields=ID.nil;return;}this.rtype=rtype_;this.pkgPath=pkgPath_;this.fields=fields_;});CS=$pkg.Method=$newType(0,$kindStruct,"reflect.Method",true,"reflect",true,function(Name_,PkgPath_,Type_,Func_,Index_){this.$val=this;if(arguments.length===0){this.Name="";this.PkgPath="";this.Type=$ifaceNil;this.Func=new EY.ptr(HR.nil,0,0);this.Index=0;return;}this.Name=Name_;this.PkgPath=PkgPath_;this.Type=Type_;this.Func=Func_;this.Index=Index_;});DB=$pkg.nameOff=$newType(4,$kindInt32,"reflect.nameOff",true,"reflect",false,null);DC=$pkg.typeOff=$newType(4,$kindInt32,"reflect.typeOff",true,"reflect",false,null);DD=$pkg.textOff=$newType(4,$kindInt32,"reflect.textOff",true,"reflect",false,null);DG=$pkg.StructField=$newType(0,$kindStruct,"reflect.StructField",true,"reflect",true,function(Name_,PkgPath_,Type_,Tag_,Offset_,Index_,Anonymous_){this.$val=this;if(arguments.length===0){this.Name="";this.PkgPath="";this.Type=$ifaceNil;this.Tag="";this.Offset=0;this.Index=IR.nil;this.Anonymous=false;return;}this.Name=Name_;this.PkgPath=PkgPath_;this.Type=Type_;this.Tag=Tag_;this.Offset=Offset_;this.Index=Index_;this.Anonymous=Anonymous_;});DH=$pkg.StructTag=$newType(8,$kindString,"reflect.StructTag",true,"reflect",true,null);DI=$pkg.fieldScan=$newType(0,$kindStruct,"reflect.fieldScan",true,"reflect",false,function(typ_,index_){this.$val=this;if(arguments.length===0){this.typ=IT.nil;this.index=IR.nil;return;}this.typ=typ_;this.index=index_;});EY=$pkg.Value=$newType(0,$kindStruct,"reflect.Value",true,"reflect",true,function(typ_,ptr_,flag_){this.$val=this;if(arguments.length===0){this.typ=HR.nil;this.ptr=0;this.flag=0;return;}this.typ=typ_;this.ptr=ptr_;this.flag=flag_;});EZ=$pkg.flag=$newType(4,$kindUintptr,"reflect.flag",true,"reflect",false,null);FC=$pkg.ValueError=$newType(0,$kindStruct,"reflect.ValueError",true,"reflect",true,function(Method_,Kind_){this.$val=this;if(arguments.length===0){this.Method="";this.Kind=0;return;}this.Method=Method_;this.Kind=Kind_;});FM=$pkg.MapIter=$newType(0,$kindStruct,"reflect.MapIter",true,"reflect",true,function(m_,it_){this.$val=this;if(arguments.length===0){this.m=new EY.ptr(HR.nil,0,0);this.it=0;return;}this.m=m_;this.it=it_;});HQ=$sliceType(Q);HR=$ptrType(CE);HS=$sliceType(HR);HV=$sliceType($emptyInterface);HW=$ptrType(C.Object);HX=$funcType([HV],[HW],true);HY=$sliceType($String);HZ=$ptrType(CF);IA=$ptrType($Uint8);IB=$sliceType(CG);IC=$sliceType(CK);ID=$sliceType(CP);IE=$ptrType(N);IF=$ptrType(R);IG=$structType("reflect",[{prop:"str",name:"str",embedded:false,exported:false,typ:$String,tag:""}]);IH=$sliceType(HW);II=$sliceType(EY);IJ=$ptrType(AW);IK=$ptrType(P);IL=$sliceType(CB);IM=$sliceType(IH);IP=$ptrType(CL);IQ=$ptrType(CK);IR=$sliceType($Int);IS=$sliceType(DI);IT=$ptrType(CQ);IU=$sliceType($Uint8);JC=$ptrType($UnsafePointer);JE=$sliceType($Int32);JG=$funcType([$String],[$Bool],false);JH=$funcType([$UnsafePointer,$Uintptr],[$Uintptr],false);JI=$funcType([$UnsafePointer,$UnsafePointer],[$Bool],false);JJ=$ptrType(CP);JQ=$arrayType($Uintptr,2);JR=$ptrType(FM);JS=$ptrType(FC);J=function(){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=(function(an){var an;});$r=an((ao=new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),new ao.constructor.elem(ao)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((ap=new N.ptr(0,0,0,0,IB.nil),new ap.constructor.elem(ap)));$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((aq=new CG.ptr(0,0,0,0),new aq.constructor.elem(aq)));$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((ar=new CI.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),HR.nil,HR.nil,0),new ar.constructor.elem(ar)));$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((as=new CJ.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),HR.nil,0),new as.constructor.elem(as)));$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((at=new P.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),0,0,HS.nil,HS.nil),new at.constructor.elem(at)));$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((au=new CL.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),new Q.ptr(IA.nil),IC.nil),new au.constructor.elem(au)));$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((av=new CM.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),HR.nil,HR.nil,HR.nil,0,0,0,0),new av.constructor.elem(av)));$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((aw=new CN.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),HR.nil),new aw.constructor.elem(aw)));$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((ax=new CO.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),HR.nil),new ax.constructor.elem(ax)));$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((ay=new CQ.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),new Q.ptr(IA.nil),ID.nil),new ay.constructor.elem(ay)));$s=11;case 11:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((az=new CK.ptr(0,0),new az.constructor.elem(az)));$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=an((ba=new CP.ptr(new Q.ptr(IA.nil),HR.nil,0),new ba.constructor.elem(ba)));$s=13;case 13:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}I=true;FL=$assertType(AD(new $Uint8(0)),HR);$s=-1;return;}return;}if($f===undefined){$f={$blk:J};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.$s=$s;$f.$r=$r;return $f;};K=function(an){var an;return an.jsType;};L=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz;if(an.reflectType===undefined){ao=new CE.ptr(((($parseInt(an.size)>>0)>>>0)),0,0,0,0,0,((($parseInt(an.kind)>>0)<<24>>>24)),HZ.nil,IA.nil,V($clone(T(Y(an.string),"",!!(an.exported)),Q)),0);ao.jsType=an;an.reflectType=ao;ap=$methodSet(an);if(!(($parseInt(ap.length)===0))||!!(an.named)){ao.tflag=(ao.tflag|(1))>>>0;if(!!(an.named)){ao.tflag=(ao.tflag|(4))>>>0;}aq=IB.nil;ar=0;while(true){if(!(ar<$parseInt(ap.length))){break;}as=ap[ar];at=Y(as.pkg)==="";if(!at){ar=ar+(1)>>0;continue;}aq=$append(aq,new CG.ptr(V($clone(T(Y(as.name),"",at),Q)),X(L(as.typ)),0,0));ar=ar+(1)>>0;}au=((aq.$length<<16>>>16));av=0;while(true){if(!(av<$parseInt(ap.length))){break;}aw=ap[av];ax=Y(aw.pkg)==="";if(ax){av=av+(1)>>0;continue;}aq=$append(aq,new CG.ptr(V($clone(T(Y(aw.name),"",ax),Q)),X(L(aw.typ)),0,0));av=av+(1)>>0;}ay=new N.ptr(V($clone(T(Y(an.pkg),"",false),Q)),(($parseInt(ap.length)<<16>>>16)),au,0,aq);az=ao;(O||$throwRuntimeError("assignment to entry in nil map"))[HR.keyFor(az)]={k:az,v:ay};ay.jsType=an;}ba=ao.Kind();if(ba===(17)){M(ao,new CI.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),L(an.elem),HR.nil,((($parseInt(an.len)>>0)>>>0))));}else if(ba===(18)){bb=3;if(!!(an.sendOnly)){bb=2;}if(!!(an.recvOnly)){bb=1;}M(ao,new CJ.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),L(an.elem),((bb>>>0))));}else if(ba===(19)){bc=an.params;bd=$makeSlice(HS,$parseInt(bc.length));be=bd;bf=0;while(true){if(!(bf=bd.$length)?($throwRuntimeError("index out of range"),undefined):bd.$array[bd.$offset+bg]=L(bc[bg]));bf++;}bh=an.results;bi=$makeSlice(HS,$parseInt(bh.length));bj=bi;bk=0;while(true){if(!(bk=bi.$length)?($throwRuntimeError("index out of range"),undefined):bi.$array[bi.$offset+bl]=L(bh[bl]));bk++;}bm=(($parseInt(bh.length)<<16>>>16));if(!!(an.variadic)){bm=(bm|(32768))>>>0;}M(ao,new P.ptr($clone(ao,CE),(($parseInt(bc.length)<<16>>>16)),bm,bd,bi));}else if(ba===(20)){bn=an.methods;bo=$makeSlice(IC,$parseInt(bn.length));bp=bo;bq=0;while(true){if(!(bq=bo.$length)?($throwRuntimeError("index out of range"),undefined):bo.$array[bo.$offset+br]),new CK.ptr(V($clone(T(Y(bs.name),"",Y(bs.pkg)===""),Q)),X(L(bs.typ))));bq++;}M(ao,new CL.ptr($clone(ao,CE),$clone(T(Y(an.pkg),"",false),Q),bo));}else if(ba===(21)){M(ao,new CM.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),L(an.key),L(an.elem),HR.nil,0,0,0,0));}else if(ba===(22)){M(ao,new CN.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),L(an.elem)));}else if(ba===(23)){M(ao,new CO.ptr(new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0),L(an.elem)));}else if(ba===(25)){bt=an.fields;bu=$makeSlice(ID,$parseInt(bt.length));bv=bu;bw=0;while(true){if(!(bw>>0))<<1>>>0;if(!!(by.embedded)){bz=(bz|(1))>>>0;}CP.copy(((bx<0||bx>=bu.$length)?($throwRuntimeError("index out of range"),undefined):bu.$array[bu.$offset+bx]),new CP.ptr($clone(T(Y(by.name),Y(by.tag),!!(by.exported)),Q),L(by.typ),bz));bw++;}M(ao,new CQ.ptr($clone(ao,CE),$clone(T(Y(an.pkgPath),"",false),Q),bu));}}return((an.reflectType));};M=function(an,ao){var an,ao;an.kindType=ao;ao.rtype=an;};N.ptr.prototype.methods=function(){var an;an=this;return an._methods;};N.prototype.methods=function(){return this.$val.methods();};N.ptr.prototype.exportedMethods=function(){var an;an=this;return $subslice(an._methods,0,an.xcount,an.xcount);};N.prototype.exportedMethods=function(){return this.$val.exportedMethods();};CE.ptr.prototype.uncommon=function(){var an,ao;an=this;return(ao=O[HR.keyFor(an)],ao!==undefined?ao.v:IE.nil);};CE.prototype.uncommon=function(){return this.$val.uncommon();};P.ptr.prototype.in$=function(){var an;an=this;return an._in;};P.prototype.in$=function(){return this.$val.in$();};P.ptr.prototype.out=function(){var an;an=this;return an._out;};P.prototype.out=function(){return this.$val.out();};Q.ptr.prototype.name=function(){var an,ao,ap;an="";ao=this;an=(ap=S[IA.keyFor(ao.bytes)],ap!==undefined?ap.v:IF.nil).name;return an;};Q.prototype.name=function(){return this.$val.name();};Q.ptr.prototype.tag=function(){var an,ao,ap;an="";ao=this;an=(ap=S[IA.keyFor(ao.bytes)],ap!==undefined?ap.v:IF.nil).tag;return an;};Q.prototype.tag=function(){return this.$val.tag();};Q.ptr.prototype.pkgPath=function(){var an;an=this;return"";};Q.prototype.pkgPath=function(){return this.$val.pkgPath();};Q.ptr.prototype.isExported=function(){var an,ao;an=this;return(ao=S[IA.keyFor(an.bytes)],ao!==undefined?ao.v:IF.nil).exported;};Q.prototype.isExported=function(){return this.$val.isExported();};T=function(an,ao,ap){var an,ao,ap,aq,ar;aq=$newDataPointer(0,IA);ar=aq;(S||$throwRuntimeError("assignment to entry in nil map"))[IA.keyFor(ar)]={k:ar,v:new R.ptr(an,ao,ap)};return new Q.ptr(aq);};CE.ptr.prototype.nameOff=function(an){var an,ao,ap;ao=this;return(ap=((an>>0)),((ap<0||ap>=U.$length)?($throwRuntimeError("index out of range"),undefined):U.$array[U.$offset+ap]));};CE.prototype.nameOff=function(an){return this.$val.nameOff(an);};V=function(an){var an,ao;ao=U.$length;U=$append(U,an);return((ao>>0));};CE.ptr.prototype.typeOff=function(an){var an,ao,ap;ao=this;return(ap=((an>>0)),((ap<0||ap>=W.$length)?($throwRuntimeError("index out of range"),undefined):W.$array[W.$offset+ap]));};CE.prototype.typeOff=function(an){return this.$val.typeOff(an);};X=function(an){var an,ao;ao=W.$length;W=$append(W,an);return((ao>>0));};Y=function(an){var an,ao;ao=new IG.ptr("");ao.str=an;return ao.str;};Z=function(an){var an;return!!(K(an).wrapped);};AA=function(an,ao,ap){var an,ao,ap,aq,ar,as;aq=K(ap).fields;ar=0;while(true){if(!(ar<$parseInt(aq.length))){break;}as=$internalize(aq[ar].prop,$String);an[$externalize(as,$String)]=ao[$externalize(as,$String)];ar=ar+(1)>>0;}};AB=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=an.common();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;au=an.Kind();$s=6;case 6:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}if(au===17){at=true;$s=5;continue s;}av=an.Kind();$s=7;case 7:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}at=av===25;case 5:if(at){as=true;$s=4;continue s;}aw=an.Kind();$s=8;case 8:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}as=aw===22;case 4:if(as){$s=2;continue;}$s=3;continue;case 2:ax=an.Kind();$s=9;case 9:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}$s=-1;return new EY.ptr(ar,(ao),(ap|((ax>>>0)))>>>0);case 3:ay=an.Kind();$s=10;case 10:if($c){$c=false;ay=ay.$blk();}if(ay&&ay.$blk!==undefined){break s;}$s=-1;return new EY.ptr(ar,($newDataPointer(ao,K(ar.ptrTo()))),(((ap|((ay>>>0)))>>>0)|128)>>>0);}return;}if($f===undefined){$f={$blk:AB};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.$s=$s;$f.$r=$r;return $f;};AC=function(an,ao,ap){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=[an];aq=an[0].Kind();$s=3;case 3:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}if(!((aq===23))){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect.MakeSlice of non-slice type"));case 2:if(ao<0){$panic(new $String("reflect.MakeSlice: negative len"));}if(ap<0){$panic(new $String("reflect.MakeSlice: negative cap"));}if(ao>ap){$panic(new $String("reflect.MakeSlice: len > cap"));}ar=AB(an[0],$makeSlice(K(an[0]),ao,ap,(function(an){return function $b(){var ar,as,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;ar=$f.ar;as=$f.as;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ar=an[0].Elem();$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=K(ar);$s=2;case 2:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}$s=-1;return as.zero();}return;}if($f===undefined){$f={$blk:$b};}$f.ar=ar;$f.as=as;$f.$s=$s;$f.$r=$r;return $f;};})(an)),0);$s=4;case 4:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}$s=-1;return ar;}return;}if($f===undefined){$f={$blk:AC};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};$pkg.MakeSlice=AC;AD=function(an){var an;if(!I){return new CE.ptr(0,0,0,0,0,0,0,HZ.nil,IA.nil,0,0);}if($interfaceIsEqual(an,$ifaceNil)){return $ifaceNil;}return L(an.constructor);};$pkg.TypeOf=AD;AE=function(an){var an,ao,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if($interfaceIsEqual(an,$ifaceNil)){$s=-1;return new EY.ptr(HR.nil,0,0);}ao=AB(L(an.constructor),an.$val,0);$s=1;case 1:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}$s=-1;return ao;}return;}if($f===undefined){$f={$blk:AE};}$f.an=an;$f.ao=ao;$f.$s=$s;$f.$r=$r;return $f;};$pkg.ValueOf=AE;AH=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(!(ap)){aq=false;$s=3;continue s;}if(an.$length===0){ar=true;$s=4;continue s;}at=(as=an.$length-1>>0,((as<0||as>=an.$length)?($throwRuntimeError("index out of range"),undefined):an.$array[an.$offset+as])).Kind();$s=5;case 5:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}ar=!((at===23));case 4:aq=ar;case 3:if(aq){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect.FuncOf: last arg of variadic func must be slice"));case 2:au=$makeSlice(IH,an.$length);av=an;aw=0;while(true){if(!(aw=av.$length)?($throwRuntimeError("index out of range"),undefined):av.$array[av.$offset+aw]);((ax<0||ax>=au.$length)?($throwRuntimeError("index out of range"),undefined):au.$array[au.$offset+ax]=K(ay));aw++;}az=$makeSlice(IH,ao.$length);ba=ao;bb=0;while(true){if(!(bb=ba.$length)?($throwRuntimeError("index out of range"),undefined):ba.$array[ba.$offset+bb]);((bc<0||bc>=az.$length)?($throwRuntimeError("index out of range"),undefined):az.$array[az.$offset+bc]=K(bd));bb++;}$s=-1;return L($funcType($externalize(au,IH),$externalize(az,IH),$externalize(ap,$Bool)));}return;}if($f===undefined){$f={$blk:AH};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.$s=$s;$f.$r=$r;return $f;};$pkg.FuncOf=AH;CE.ptr.prototype.ptrTo=function(){var an;an=this;return L($ptrType(K(an)));};CE.prototype.ptrTo=function(){return this.$val.ptrTo();};AJ=function(an){var an;return L($sliceType(K(an)));};$pkg.SliceOf=AJ;AK=function(an){var an,ao,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=AB(an,K(an).zero(),0);$s=1;case 1:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}$s=-1;return ao;}return;}if($f===undefined){$f={$blk:AK};}$f.an=an;$f.ao=ao;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Zero=AK;AL=function(an){var an,ao;ao=an.Kind();if(ao===(25)){return(new(K(an).ptr)());}else if(ao===(17)){return(K(an).zero());}else{return($newDataPointer(K(an).zero(),K(an.ptrTo())));}};AM=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=ap.common();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;as=AL(ar);at=ar.Kind();if(at===(3)){(as).$set(((ao.$low<<24>>24)));}else if(at===(4)){(as).$set(((ao.$low<<16>>16)));}else if((at===(2))||(at===(5))){(as).$set(((ao.$low>>0)));}else if(at===(6)){(as).$set((new $Int64(ao.$high,ao.$low)));}else if(at===(8)){(as).$set(((ao.$low<<24>>>24)));}else if(at===(9)){(as).$set(((ao.$low<<16>>>16)));}else if((at===(7))||(at===(10))||(at===(12))){(as).$set(((ao.$low>>>0)));}else if(at===(11)){(as).$set((ao));}$s=-1;return new EY.ptr(ar,as,(((an|128)>>>0)|((ar.Kind()>>>0)))>>>0);}return;}if($f===undefined){$f={$blk:AM};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};AO=function(an,ao,ap){var an,ao,ap;ao.$set(ap.$get());};AS=function(an,ao){var an,ao,ap,aq;ap=ao;if(!(ap.$get===undefined)){ap=ap.$get();}aq=$internalize(K(an.Key()).keyFor(ap),$String);return[ap,aq];};AT=function(an,ao,ap){var an,ao,ap,aq,ar,as;aq=AS(an,ap);ar=aq[1];as=ao[$externalize(ar,$String)];if(as===undefined){return 0;}return($newDataPointer(as.v,K(DK(an.Elem()))));};AU=function(an,ao,ap,aq){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ar=AS(an,ap);as=ar[0];at=ar[1];au=aq.$get();av=an.Elem();aw=av.Kind();$s=3;case 3:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}if(aw===25){$s=1;continue;}$s=2;continue;case 1:ax=K(av).zero();AA(ax,au,av);au=ax;case 2:ay=new($global.Object)();ay.k=as;ay.v=au;ao[$externalize(at,$String)]=ay;$s=-1;return;}return;}if($f===undefined){$f={$blk:AU};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.$s=$s;$f.$r=$r;return $f;};AV=function(an,ao,ap){var an,ao,ap,aq,ar;aq=AS(an,ap);ar=aq[1];delete ao[$externalize(ar,$String)];};AW.ptr.prototype.skipUntilValidKey=function(){var an,ao;an=this;while(true){if(!(an.i<$parseInt(an.keys.length))){break;}ao=an.keys[an.i];if(!(an.m[$externalize($internalize(ao,$String),$String)]===undefined)){break;}an.i=an.i+(1)>>0;}};AW.prototype.skipUntilValidKey=function(){return this.$val.skipUntilValidKey();};AX=function(an,ao){var an,ao;return(new AW.ptr(an,ao,$keys(ao),0,null));};AY=function(an){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=($pointerOfStructConversion(an,IJ));ap=null;if(!(ao.last===null)){ap=ao.last;}else{ao.skipUntilValidKey();if(ao.i===$parseInt(ao.keys.length)){$s=-1;return 0;}aq=ao.keys[ao.i];ap=ao.m[$externalize($internalize(aq,$String),$String)];ao.last=ap;}ar=ao.t.Key();$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=DK(ar);$s=2;case 2:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}at=K(as);$s=3;case 3:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return($newDataPointer(ap.k,at));}return;}if($f===undefined){$f={$blk:AY};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};AZ=function(an){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=($pointerOfStructConversion(an,IJ));ap=null;if(!(ao.last===null)){ap=ao.last;}else{ao.skipUntilValidKey();if(ao.i===$parseInt(ao.keys.length)){$s=-1;return 0;}aq=ao.keys[ao.i];ap=ao.m[$externalize($internalize(aq,$String),$String)];ao.last=ap;}ar=ao.t.Elem();$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=DK(ar);$s=2;case 2:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}at=K(as);$s=3;case 3:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return($newDataPointer(ap.v,at));}return;}if($f===undefined){$f={$blk:AZ};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};BA=function(an){var an,ao;ao=($pointerOfStructConversion(an,IJ));ao.last=null;ao.i=ao.i+(1)>>0;};BB=function(an){var an;return $parseInt($keys(an).length);};BC=function(an,ao){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=$clone(an,EY).object();if(ap===K(an.typ).nil){$s=1;continue;}$s=2;continue;case 1:aq=AB(ao,K(ao).nil,an.flag);$s=3;case 3:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq;case 2:ar=null;as=ao.Kind();$s=5;case 5:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}at=as;au=at;if(au===(23)){$s=6;continue;}if(au===(22)){$s=7;continue;}if(au===(25)){$s=8;continue;}if((au===(17))||(au===(1))||(au===(18))||(au===(19))||(au===(20))||(au===(21))||(au===(24))){$s=9;continue;}$s=10;continue;case 6:av=new(K(ao))(ap.$array);av.$offset=ap.$offset;av.$length=ap.$length;av.$capacity=ap.$capacity;ar=$newDataPointer(av,K(DK(ao)));$s=11;continue;case 7:aw=ao.Elem();$s=14;case 14:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}ax=aw.Kind();$s=15;case 15:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}if(ax===25){$s=12;continue;}$s=13;continue;case 12:ay=ao.Elem();$s=18;case 18:if($c){$c=false;ay=ay.$blk();}if(ay&&ay.$blk!==undefined){break s;}if($interfaceIsEqual(ay,an.typ.Elem())){$s=16;continue;}$s=17;continue;case 16:ar=ap;$s=4;continue;case 17:ar=new(K(ao))();az=ar;ba=ap;bb=ao.Elem();$s=19;case 19:if($c){$c=false;bb=bb.$blk();}if(bb&&bb.$blk!==undefined){break s;}bc=bb;$r=AA(az,ba,bc);$s=20;case 20:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=4;continue;case 13:ar=new(K(ao))(ap.$get,ap.$set);$s=11;continue;case 8:ar=new(K(ao).ptr)();AA(ar,ap,ao);$s=11;continue;case 9:ar=an.ptr;$s=11;continue;case 10:$panic(new FC.ptr("reflect.Convert",at));case 11:case 4:bd=ao.common();$s=21;case 21:if($c){$c=false;bd=bd.$blk();}if(bd&&bd.$blk!==undefined){break s;}be=ao.Kind();$s=22;case 22:if($c){$c=false;be=be.$blk();}if(be&&be.$blk!==undefined){break s;}$s=-1;return new EY.ptr(bd,(ar),(((new EZ(an.flag).ro()|((an.flag&128)>>>0))>>>0)|((be>>>0)))>>>0);}return;}if($f===undefined){$f={$blk:BC};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.$s=$s;$f.$r=$r;return $f;};BE=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az;aq=HR.nil;ar=IK.nil;as=0;at="";if(ao.typ.Kind()===20){au=(ao.typ.kindType);if(ap<0||ap>=au.methods.$length){$panic(new $String("reflect: internal error: invalid method index"));}aw=(av=au.methods,((ap<0||ap>=av.$length)?($throwRuntimeError("index out of range"),undefined):av.$array[av.$offset+ap]));if(!$clone(au.rtype.nameOff(aw.name),Q).isExported()){$panic(new $String("reflect: "+an+" of unexported method"));}ar=(au.rtype.typeOff(aw.typ).kindType);at=$clone(au.rtype.nameOff(aw.name),Q).name();}else{ax=ao.typ.exportedMethods();if(((ap>>>0))>=((ax.$length>>>0))){$panic(new $String("reflect: internal error: invalid method index"));}ay=$clone(((ap<0||ap>=ax.$length)?($throwRuntimeError("index out of range"),undefined):ax.$array[ax.$offset+ap]),CG);if(!$clone(ao.typ.nameOff(ay.name),Q).isExported()){$panic(new $String("reflect: "+an+" of unexported method"));}ar=(ao.typ.typeOff(ay.mtyp).kindType);at=$internalize($methodSet(K(ao.typ))[ap].prop,$String);}az=$clone(ao,EY).object();if(Z(ao.typ)){az=new(K(ao.typ))(az);}as=(az[$externalize(at,$String)]);return[aq,ar,as];};BF=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(an.flag===0){$panic(new FC.ptr("reflect.Value.Interface",0));}if(ao&&!((((an.flag&96)>>>0)===0))){$panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method"));}if(!((((an.flag&512)>>>0)===0))){$s=1;continue;}$s=2;continue;case 1:ap=BI("Interface",$clone(an,EY));$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}an=ap;case 2:if(Z(an.typ)){$s=-1;return((new(K(an.typ))($clone(an,EY).object())));}$s=-1;return(($clone(an,EY).object()));}return;}if($f===undefined){$f={$blk:BF};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};BG=function(an,ao,ap){var an,ao,ap;ap.$set(ao);};BH=function(){return"?FIXME?";};BI=function(an,ao){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=[ap];aq=[aq];if(((ao.flag&512)>>>0)===0){$panic(new $String("reflect: internal error: invalid use of makePartialFunc"));}ar=BE(an,$clone(ao,EY),((ao.flag>>0))>>10>>0);ap[0]=ar[2];aq[0]=$clone(ao,EY).object();if(Z(ao.typ)){aq[0]=new(K(ao.typ))(aq[0]);}as=C.MakeFunc((function(ap,aq){return function(as,at){var as,at;return new $jsObjectPtr(ap[0].apply(aq[0],$externalize(at,IH)));};})(ap,aq));at=$clone(ao,EY).Type().common();$s=1;case 1:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return new EY.ptr(at,(as),(new EZ(ao.flag).ro()|19)>>>0);}return;}if($f===undefined){$f={$blk:BI};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};CE.ptr.prototype.pointers=function(){var an,ao;an=this;ao=an.Kind();if((ao===(22))||(ao===(21))||(ao===(18))||(ao===(19))||(ao===(25))||(ao===(17))){return true;}else{return false;}};CE.prototype.pointers=function(){return this.$val.pointers();};CE.ptr.prototype.Comparable=function(){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;ao=an.Kind();if((ao===(19))||(ao===(23))||(ao===(21))){$s=2;continue;}if(ao===(17)){$s=3;continue;}if(ao===(25)){$s=4;continue;}$s=5;continue;case 2:$s=-1;return false;case 3:ap=an.Elem().Comparable();$s=6;case 6:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;case 4:aq=0;case 7:if(!(aq>0;$s=7;continue;case 8:case 5:case 1:$s=-1;return true;}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.Comparable};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.Comparable=function(){return this.$val.Comparable();};CE.ptr.prototype.Method=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=[ao];ap=new CS.ptr("","",$ifaceNil,new EY.ptr(HR.nil,0,0),0);aq=this;if(aq.Kind()===20){ar=(aq.kindType);CS.copy(ap,ar.Method(an));$s=-1;return ap;}as=aq.exportedMethods();if(an<0||an>=as.$length){$panic(new $String("reflect: Method index out of range"));}at=$clone(((an<0||an>=as.$length)?($throwRuntimeError("index out of range"),undefined):as.$array[as.$offset+an]),CG);au=$clone(aq.nameOff(at.name),Q);ap.Name=$clone(au,Q).name();av=19;aw=aq.typeOff(at.mtyp);ax=(aw.kindType);ay=$makeSlice(IL,0,(1+ax.in$().$length>>0));ay=$append(ay,aq);az=ax.in$();ba=0;while(true){if(!(ba=az.$length)?($throwRuntimeError("index out of range"),undefined):az.$array[az.$offset+ba]);ay=$append(ay,bb);ba++;}bc=$makeSlice(IL,0,ax.out().$length);bd=ax.out();be=0;while(true){if(!(be=bd.$length)?($throwRuntimeError("index out of range"),undefined):bd.$array[bd.$offset+be]);bc=$append(bc,bf);be++;}bg=AH(ay,bc,ax.rtype.IsVariadic());$s=1;case 1:if($c){$c=false;bg=bg.$blk();}if(bg&&bg.$blk!==undefined){break s;}bh=bg;ap.Type=bh;ao[0]=$internalize($methodSet(aq.jsType)[an].prop,$String);bi=C.MakeFunc((function(ao){return function(bi,bj){var bi,bj,bk;bk=(0>=bj.$length?($throwRuntimeError("index out of range"),undefined):bj.$array[bj.$offset+0]);return new $jsObjectPtr(bk[$externalize(ao[0],$String)].apply(bk,$externalize($subslice(bj,1),IH)));};})(ao));ap.Func=new EY.ptr($assertType(bh,HR),(bi),av);ap.Index=an;CS.copy(ap,ap);$s=-1;return ap;}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.Method};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.Method=function(an){return this.$val.Method(an);};EY.ptr.prototype.object=function(){var an,ao,ap,aq;an=this;if((an.typ.Kind()===17)||(an.typ.Kind()===25)){return an.ptr;}if(!((((an.flag&128)>>>0)===0))){ao=an.ptr.$get();if(!(ao===$ifaceNil)&&!(ao.constructor===K(an.typ))){switch(0){default:ap=an.typ.Kind();if((ap===(11))||(ap===(6))){ao=new(K(an.typ))(ao.$high,ao.$low);}else if((ap===(15))||(ap===(16))){ao=new(K(an.typ))(ao.$real,ao.$imag);}else if(ap===(23)){if(ao===ao.constructor.nil){ao=K(an.typ).nil;break;}aq=new(K(an.typ))(ao.$array);aq.$offset=ao.$offset;aq.$length=ao.$length;aq.$capacity=ao.$capacity;ao=aq;}}}return ao;}return an.ptr;};EY.prototype.object=function(){return this.$val.object();};EY.ptr.prototype.assignTo=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=this;if(!((((aq.flag&512)>>>0)===0))){$s=1;continue;}$s=2;continue;case 1:ar=BI(an,$clone(aq,EY));$s=3;case 3:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}aq=ar;case 2:as=DN(ao,aq.typ);$s=8;case 8:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}if(as){$s=5;continue;}if(DM(ao,aq.typ)){$s=6;continue;}$s=7;continue;case 5:at=(((aq.flag&384)>>>0)|new EZ(aq.flag).ro())>>>0;at=(at|(((ao.Kind()>>>0))))>>>0;$s=-1;return new EY.ptr(ao,aq.ptr,at);case 6:if(ap===0){ap=AL(ao);}au=BF($clone(aq,EY),false);$s=9;case 9:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}av=au;if(ao.NumMethod()===0){(ap).$set(av);}else{BG(ao,av,ap);}$s=-1;return new EY.ptr(ao,ap,148);case 7:case 4:$panic(new $String(an+": value of type "+aq.typ.String()+" is not assignable to type "+ao.String()));$s=-1;return new EY.ptr(HR.nil,0,0);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.assignTo};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.assignTo=function(an,ao,ap){return this.$val.assignTo(an,ao,ap);};EY.ptr.prototype.call=function(an,ao){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;bu=$f.bu;bv=$f.bv;bw=$f.bw;bx=$f.bx;by=$f.by;bz=$f.bz;ca=$f.ca;cb=$f.cb;cc=$f.cc;cd=$f.cd;ce=$f.ce;cf=$f.cf;cg=$f.cg;ch=$f.ch;ci=$f.ci;cj=$f.cj;ck=$f.ck;cl=$f.cl;cm=$f.cm;cn=$f.cn;co=$f.co;cp=$f.cp;cq=$f.cq;cr=$f.cr;cs=$f.cs;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=this;aq=IK.nil;ar=0;as=null;if(!((((ap.flag&512)>>>0)===0))){at=BE(an,$clone(ap,EY),((ap.flag>>0))>>10>>0);aq=at[1];ar=at[2];as=$clone(ap,EY).object();if(Z(ap.typ)){as=new(K(ap.typ))(as);}}else{aq=(ap.typ.kindType);ar=($clone(ap,EY).object());as=undefined;}if(ar===0){$panic(new $String("reflect.Value.Call: call of nil function"));}au=an==="CallSlice";av=aq.rtype.NumIn();if(au){if(!aq.rtype.IsVariadic()){$panic(new $String("reflect: CallSlice of non-variadic function"));}if(ao.$lengthav){$panic(new $String("reflect: CallSlice with too many input arguments"));}}else{if(aq.rtype.IsVariadic()){av=av-(1)>>0;}if(ao.$lengthav){$panic(new $String("reflect: Call with too many input arguments"));}}aw=ao;ax=0;while(true){if(!(ax=aw.$length)?($throwRuntimeError("index out of range"),undefined):aw.$array[aw.$offset+ax]);if($clone(ay,EY).Kind()===0){$panic(new $String("reflect: "+an+" using zero Value argument"));}ax++;}az=0;case 1:if(!(az=ao.$length)?($throwRuntimeError("index out of range"),undefined):ao.$array[ao.$offset+az]),EY).Type();bb=aq.rtype.In(az);bc=ba;bd=bb;be=bc.AssignableTo(bd);$s=5;case 5:if($c){$c=false;be=be.$blk();}if(be&&be.$blk!==undefined){break s;}if(!be){$s=3;continue;}$s=4;continue;case 3:bf=bc.String();$s=6;case 6:if($c){$c=false;bf=bf.$blk();}if(bf&&bf.$blk!==undefined){break s;}bg=bd.String();$s=7;case 7:if($c){$c=false;bg=bg.$blk();}if(bg&&bg.$blk!==undefined){break s;}$panic(new $String("reflect: "+an+" using "+bf+" as type "+bg));case 4:az=az+(1)>>0;$s=1;continue;case 2:if(!au&&aq.rtype.IsVariadic()){$s=8;continue;}$s=9;continue;case 8:bh=ao.$length-av>>0;bi=AC(aq.rtype.In(av),bh,bh);$s=10;case 10:if($c){$c=false;bi=bi.$blk();}if(bi&&bi.$blk!==undefined){break s;}bj=bi;bk=aq.rtype.In(av).Elem();$s=11;case 11:if($c){$c=false;bk=bk.$blk();}if(bk&&bk.$blk!==undefined){break s;}bl=bk;bm=0;case 12:if(!(bm>0,((bn<0||bn>=ao.$length)?($throwRuntimeError("index out of range"),undefined):ao.$array[ao.$offset+bn]));bp=$clone(bo,EY).Type();bq=bp.AssignableTo(bl);$s=16;case 16:if($c){$c=false;bq=bq.$blk();}if(bq&&bq.$blk!==undefined){break s;}if(!bq){$s=14;continue;}$s=15;continue;case 14:br=bp.String();$s=17;case 17:if($c){$c=false;br=br.$blk();}if(br&&br.$blk!==undefined){break s;}bs=bl.String();$s=18;case 18:if($c){$c=false;bs=bs.$blk();}if(bs&&bs.$blk!==undefined){break s;}$panic(new $String("reflect: cannot use "+br+" as type "+bs+" in "+an));case 15:bt=$clone(bj,EY).Index(bm);$s=19;case 19:if($c){$c=false;bt=bt.$blk();}if(bt&&bt.$blk!==undefined){break s;}$r=$clone(bt,EY).Set($clone(bo,EY));$s=20;case 20:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}bm=bm+(1)>>0;$s=12;continue;case 13:bu=ao;ao=$makeSlice(II,(av+1>>0));$copySlice($subslice(ao,0,av),bu);((av<0||av>=ao.$length)?($throwRuntimeError("index out of range"),undefined):ao.$array[ao.$offset+av]=bj);case 9:bv=ao.$length;if(!((bv===aq.rtype.NumIn()))){$panic(new $String("reflect.Value.Call: wrong argument count"));}bw=aq.rtype.NumOut();bx=new($global.Array)(aq.rtype.NumIn());by=ao;bz=0;case 21:if(!(bz=by.$length)?($throwRuntimeError("index out of range"),undefined):by.$array[by.$offset+bz]);cc=aq.rtype.In(ca);cd=aq.rtype.In(ca).common();$s=23;case 23:if($c){$c=false;cd=cd.$blk();}if(cd&&cd.$blk!==undefined){break s;}ce=cd;cf=0;cg=$clone(cb,EY).assignTo("reflect.Value.Call",ce,cf);$s=24;case 24:if($c){$c=false;cg=cg.$blk();}if(cg&&cg.$blk!==undefined){break s;}ch=$clone(cg,EY).object();$s=25;case 25:if($c){$c=false;ch=ch.$blk();}if(ch&&ch.$blk!==undefined){break s;}ci=ch;cj=BM(cc,ci);$s=26;case 26:if($c){$c=false;cj=cj.$blk();}if(cj&&cj.$blk!==undefined){break s;}bx[ca]=cj;bz++;$s=21;continue;case 22:ck=BJ(new HV([new $jsObjectPtr(ar),new $jsObjectPtr(as),new $jsObjectPtr(bx)]));$s=27;case 27:if($c){$c=false;ck=ck.$blk();}if(ck&&ck.$blk!==undefined){break s;}cl=ck;cm=bw;if(cm===(0)){$s=29;continue;}if(cm===(1)){$s=30;continue;}$s=31;continue;case 29:$s=-1;return II.nil;case 30:cn=AB(aq.rtype.Out(0),BL(aq.rtype.Out(0),cl),0);$s=33;case 33:if($c){$c=false;cn=cn.$blk();}if(cn&&cn.$blk!==undefined){break s;}$s=-1;return new II([$clone(cn,EY)]);case 31:co=$makeSlice(II,bw);cp=co;cq=0;case 34:if(!(cq=co.$length)?($throwRuntimeError("index out of range"),undefined):co.$array[co.$offset+cr]=cs);cq++;$s=34;continue;case 35:$s=-1;return co;case 32:case 28:$s=-1;return II.nil;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.call};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.bu=bu;$f.bv=bv;$f.bw=bw;$f.bx=bx;$f.by=by;$f.bz=bz;$f.ca=ca;$f.cb=cb;$f.cc=cc;$f.cd=cd;$f.ce=ce;$f.cf=cf;$f.cg=cg;$f.ch=ch;$f.ci=ci;$f.cj=cj;$f.ck=ck;$f.cl=cl;$f.cm=cm;$f.cn=cn;$f.co=co;$f.cp=cp;$f.cq=cq;$f.cr=cr;$f.cs=cs;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.call=function(an,ao){return this.$val.call(an,ao);};EY.ptr.prototype.Cap=function(){var an,ao,ap;an=this;ao=new EZ(an.flag).kind();ap=ao;if(ap===(17)){return an.typ.Len();}else if((ap===(18))||(ap===(23))){return $parseInt($clone(an,EY).object().$capacity)>>0;}$panic(new FC.ptr("reflect.Value.Cap",ao));};EY.prototype.Cap=function(){return this.$val.Cap();};BL=function(an,ao){var an,ao;if($interfaceIsEqual(an,BK)){return new(K(BK))(ao);}return ao;};BM=function(an,ao){var an,ao;if($interfaceIsEqual(an,BK)){return ao.object;}return ao;};EY.ptr.prototype.Elem=function(){var an,ao,ap,aq,ar,as,at,au,av,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;ao=new EZ(an.flag).kind();ap=ao;if(ap===(20)){$s=2;continue;}if(ap===(22)){$s=3;continue;}$s=4;continue;case 2:aq=$clone(an,EY).object();if(aq===$ifaceNil){$s=-1;return new EY.ptr(HR.nil,0,0);}ar=L(aq.constructor);as=AB(ar,aq.$val,new EZ(an.flag).ro());$s=6;case 6:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}$s=-1;return as;case 3:if($clone(an,EY).IsNil()){$s=-1;return new EY.ptr(HR.nil,0,0);}at=$clone(an,EY).object();au=(an.typ.kindType);av=(((((an.flag&96)>>>0)|128)>>>0)|256)>>>0;av=(av|(((au.elem.Kind()>>>0))))>>>0;$s=-1;return new EY.ptr(au.elem,(BL(au.elem,at)),av);case 4:$panic(new FC.ptr("reflect.Value.Elem",ao));case 5:case 1:$s=-1;return new EY.ptr(HR.nil,0,0);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Elem};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Elem=function(){return this.$val.Elem();};EY.ptr.prototype.Field=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=[ao];ap=[ap];aq=[aq];ar=[ar];as=this;if(!((new EZ(as.flag).kind()===25))){$panic(new FC.ptr("reflect.Value.Field",new EZ(as.flag).kind()));}at=(as.typ.kindType);if(((an>>>0))>=((at.fields.$length>>>0))){$panic(new $String("reflect: Field index out of range"));}ap[0]=$internalize(K(as.typ).fields[an].prop,$String);av=(au=at.fields,((an<0||an>=au.$length)?($throwRuntimeError("index out of range"),undefined):au.$array[au.$offset+an]));ar[0]=av.typ;aw=(((as.flag&416)>>>0)|((ar[0].Kind()>>>0)))>>>0;if(!$clone(av.name,Q).isExported()){if(av.embedded()){aw=(aw|(64))>>>0;}else{aw=(aw|(32))>>>0;}}ay=$clone((ax=at.fields,((an<0||an>=ax.$length)?($throwRuntimeError("index out of range"),undefined):ax.$array[ax.$offset+an])).name,Q).tag();if(!(ay==="")&&!((an===0))){$s=1;continue;}$s=2;continue;case 1:ao[0]=BN(ay);if(!(ao[0]==="")){$s=3;continue;}$s=4;continue;case 3:case 5:az=[az];ba=$clone(as,EY).Field(0);$s=7;case 7:if($c){$c=false;ba=ba.$blk();}if(ba&&ba.$blk!==undefined){break s;}as=ba;if(as.typ===BK){$s=8;continue;}$s=9;continue;case 8:az[0]=$clone(as,EY).object().object;$s=-1;return new EY.ptr(ar[0],(new(K(DK(ar[0])))((function(ao,ap,aq,ar,az){return function(){return $internalize(az[0][$externalize(ao[0],$String)],K(ar[0]));};})(ao,ap,aq,ar,az),(function(ao,ap,aq,ar,az){return function(bb){var bb;az[0][$externalize(ao[0],$String)]=$externalize(bb,K(ar[0]));};})(ao,ap,aq,ar,az))),aw);case 9:if(as.typ.Kind()===22){$s=10;continue;}$s=11;continue;case 10:bb=$clone(as,EY).Elem();$s=12;case 12:if($c){$c=false;bb=bb.$blk();}if(bb&&bb.$blk!==undefined){break s;}as=bb;case 11:$s=5;continue;case 6:case 4:case 2:aq[0]=as.ptr;if(!((((aw&128)>>>0)===0))&&!((ar[0].Kind()===17))&&!((ar[0].Kind()===25))){$s=13;continue;}$s=14;continue;case 13:$s=-1;return new EY.ptr(ar[0],(new(K(DK(ar[0])))((function(ao,ap,aq,ar){return function(){return BL(ar[0],aq[0][$externalize(ap[0],$String)]);};})(ao,ap,aq,ar),(function(ao,ap,aq,ar){return function(bc){var bc;aq[0][$externalize(ap[0],$String)]=BM(ar[0],bc);};})(ao,ap,aq,ar))),aw);case 14:bc=AB(ar[0],BL(ar[0],aq[0][$externalize(ap[0],$String)]),aw);$s=15;case 15:if($c){$c=false;bc=bc.$blk();}if(bc&&bc.$blk!==undefined){break s;}$s=-1;return bc;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Field};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Field=function(an){return this.$val.Field(an);};BN=function(an){var an,ao,ap,aq,ar,as;while(true){if(!(!(an===""))){break;}ao=0;while(true){if(!(ao>0;}an=$substring(an,ao);if(an===""){break;}ao=0;while(true){if(!(ao>0;}if((ao+1>>0)>=an.length||!((an.charCodeAt(ao)===58))||!((an.charCodeAt((ao+1>>0))===34))){break;}ap=($substring(an,0,ao));an=$substring(an,(ao+1>>0));ao=1;while(true){if(!(ao>0;}ao=ao+(1)>>0;}if(ao>=an.length){break;}aq=($substring(an,0,(ao+1>>0)));an=$substring(an,(ao+1>>0));if(ap==="js"){ar=B.Unquote(aq);as=ar[0];return as;}}return"";};EY.ptr.prototype.Index=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=[an];ao=[ao];ap=[ap];aq=[aq];ar=[ar];as=[as];at=this;au=new EZ(at.flag).kind();av=au;if(av===(17)){$s=2;continue;}if(av===(23)){$s=3;continue;}if(av===(24)){$s=4;continue;}$s=5;continue;case 2:aw=(at.typ.kindType);if(an[0]<0||an[0]>((aw.len>>0))){$panic(new $String("reflect: array index out of range"));}ar[0]=aw.elem;ax=(((((at.flag&384)>>>0)|new EZ(at.flag).ro())>>>0)|((ar[0].Kind()>>>0)))>>>0;ao[0]=at.ptr;if(!((((ax&128)>>>0)===0))&&!((ar[0].Kind()===17))&&!((ar[0].Kind()===25))){$s=7;continue;}$s=8;continue;case 7:$s=-1;return new EY.ptr(ar[0],(new(K(DK(ar[0])))((function(an,ao,ap,aq,ar,as){return function(){return BL(ar[0],ao[0][an[0]]);};})(an,ao,ap,aq,ar,as),(function(an,ao,ap,aq,ar,as){return function(ay){var ay;ao[0][an[0]]=BM(ar[0],ay);};})(an,ao,ap,aq,ar,as))),ax);case 8:ay=AB(ar[0],BL(ar[0],ao[0][an[0]]),ax);$s=9;case 9:if($c){$c=false;ay=ay.$blk();}if(ay&&ay.$blk!==undefined){break s;}$s=-1;return ay;case 3:az=$clone(at,EY).object();if(an[0]<0||an[0]>=($parseInt(az.$length)>>0)){$panic(new $String("reflect: slice index out of range"));}ba=(at.typ.kindType);as[0]=ba.elem;bb=(((384|new EZ(at.flag).ro())>>>0)|((as[0].Kind()>>>0)))>>>0;an[0]=an[0]+(($parseInt(az.$offset)>>0))>>0;ap[0]=az.$array;if(!((((bb&128)>>>0)===0))&&!((as[0].Kind()===17))&&!((as[0].Kind()===25))){$s=10;continue;}$s=11;continue;case 10:$s=-1;return new EY.ptr(as[0],(new(K(DK(as[0])))((function(an,ao,ap,aq,ar,as){return function(){return BL(as[0],ap[0][an[0]]);};})(an,ao,ap,aq,ar,as),(function(an,ao,ap,aq,ar,as){return function(bc){var bc;ap[0][an[0]]=BM(as[0],bc);};})(an,ao,ap,aq,ar,as))),bb);case 11:bc=AB(as[0],BL(as[0],ap[0][an[0]]),bb);$s=12;case 12:if($c){$c=false;bc=bc.$blk();}if(bc&&bc.$blk!==undefined){break s;}$s=-1;return bc;case 4:bd=(at.ptr).$get();if(an[0]<0||an[0]>=bd.length){$panic(new $String("reflect: string index out of range"));}be=(((new EZ(at.flag).ro()|8)>>>0)|128)>>>0;aq[0]=bd.charCodeAt(an[0]);$s=-1;return new EY.ptr(FL,((aq.$ptr||(aq.$ptr=new IA(function(){return this.$target[0];},function($v){this.$target[0]=$v;},aq)))),be);case 5:$panic(new FC.ptr("reflect.Value.Index",au));case 6:case 1:$s=-1;return new EY.ptr(HR.nil,0,0);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Index};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Index=function(an){return this.$val.Index(an);};EY.ptr.prototype.InterfaceData=function(){var an;an=this;$panic(A.New("InterfaceData is not supported by GopherJS"));};EY.prototype.InterfaceData=function(){return this.$val.InterfaceData();};EY.ptr.prototype.IsNil=function(){var an,ao,ap;an=this;ao=new EZ(an.flag).kind();ap=ao;if((ap===(22))||(ap===(23))){return $clone(an,EY).object()===K(an.typ).nil;}else if(ap===(18)){return $clone(an,EY).object()===$chanNil;}else if(ap===(19)){return $clone(an,EY).object()===$throwNilPointerError;}else if(ap===(21)){return $clone(an,EY).object()===false;}else if(ap===(20)){return $clone(an,EY).object()===$ifaceNil;}else if(ap===(26)){return $clone(an,EY).object()===0;}else{$panic(new FC.ptr("reflect.Value.IsNil",ao));}};EY.prototype.IsNil=function(){return this.$val.IsNil();};EY.ptr.prototype.Len=function(){var an,ao,ap;an=this;ao=new EZ(an.flag).kind();ap=ao;if((ap===(17))||(ap===(24))){return $parseInt($clone(an,EY).object().length);}else if(ap===(23)){return $parseInt($clone(an,EY).object().$length)>>0;}else if(ap===(18)){return $parseInt($clone(an,EY).object().$buffer.length)>>0;}else if(ap===(21)){return $parseInt($keys($clone(an,EY).object()).length);}else{$panic(new FC.ptr("reflect.Value.Len",ao));}};EY.prototype.Len=function(){return this.$val.Len();};EY.ptr.prototype.Pointer=function(){var an,ao,ap;an=this;ao=new EZ(an.flag).kind();ap=ao;if((ap===(18))||(ap===(21))||(ap===(22))||(ap===(26))){if($clone(an,EY).IsNil()){return 0;}return $clone(an,EY).object();}else if(ap===(19)){if($clone(an,EY).IsNil()){return 0;}return 1;}else if(ap===(23)){if($clone(an,EY).IsNil()){return 0;}return $clone(an,EY).object().$array;}else{$panic(new FC.ptr("reflect.Value.Pointer",ao));}};EY.prototype.Pointer=function(){return this.$val.Pointer();};EY.ptr.prototype.Set=function(an){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(an.flag).mustBeExported();ap=$clone(an,EY).assignTo("reflect.Set",ao.typ,0);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}an=ap;if(!((((ao.flag&128)>>>0)===0))){$s=2;continue;}$s=3;continue;case 2:aq=ao.typ.Kind();if(aq===(17)){$s=5;continue;}if(aq===(20)){$s=6;continue;}if(aq===(25)){$s=7;continue;}$s=8;continue;case 5:K(ao.typ).copy(ao.ptr,an.ptr);$s=9;continue;case 6:ar=BF($clone(an,EY),false);$s=10;case 10:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}ao.ptr.$set(ar);$s=9;continue;case 7:AA(ao.ptr,an.ptr,ao.typ);$s=9;continue;case 8:ao.ptr.$set($clone(an,EY).object());case 9:case 4:$s=-1;return;case 3:ao.ptr=an.ptr;$s=-1;return;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Set};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Set=function(an){return this.$val.Set(an);};EY.ptr.prototype.SetBytes=function(an){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(23);ap=ao.typ.Elem().Kind();$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}if(!((ap===8))){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect.Value.SetBytes of non-byte slice"));case 2:aq=an;if(!(ao.typ.Name()==="")){ar=true;$s=6;continue s;}as=ao.typ.Elem().Name();$s=7;case 7:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}ar=!(as==="");case 6:if(ar){$s=4;continue;}$s=5;continue;case 4:at=new(K(ao.typ))(aq.$array);at.$offset=aq.$offset;at.$length=aq.$length;at.$capacity=aq.$capacity;aq=at;case 5:ao.ptr.$set(aq);$s=-1;return;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.SetBytes};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.SetBytes=function(an){return this.$val.SetBytes(an);};EY.ptr.prototype.SetCap=function(an){var an,ao,ap,aq;ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(23);ap=ao.ptr.$get();if(an<($parseInt(ap.$length)>>0)||an>($parseInt(ap.$capacity)>>0)){$panic(new $String("reflect: slice capacity out of range in SetCap"));}aq=new(K(ao.typ))(ap.$array);aq.$offset=ap.$offset;aq.$length=ap.$length;aq.$capacity=an;ao.ptr.$set(aq);};EY.prototype.SetCap=function(an){return this.$val.SetCap(an);};EY.ptr.prototype.SetLen=function(an){var an,ao,ap,aq;ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(23);ap=ao.ptr.$get();if(an<0||an>($parseInt(ap.$capacity)>>0)){$panic(new $String("reflect: slice length out of range in SetLen"));}aq=new(K(ao.typ))(ap.$array);aq.$offset=ap.$offset;aq.$length=an;aq.$capacity=ap.$capacity;ao.ptr.$set(aq);};EY.prototype.SetLen=function(an){return this.$val.SetLen(an);};EY.ptr.prototype.Slice=function(an,ao){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=this;aq=0;ar=$ifaceNil;as=null;at=new EZ(ap.flag).kind();au=at;if(au===(17)){$s=2;continue;}if(au===(23)){$s=3;continue;}if(au===(24)){$s=4;continue;}$s=5;continue;case 2:if(((ap.flag&256)>>>0)===0){$panic(new $String("reflect.Value.Slice: slice of unaddressable array"));}av=(ap.typ.kindType);aq=((av.len>>0));ar=AJ(av.elem);as=new(K(ar))($clone(ap,EY).object());$s=6;continue;case 3:ar=ap.typ;as=$clone(ap,EY).object();aq=$parseInt(as.$capacity)>>0;$s=6;continue;case 4:aw=(ap.ptr).$get();if(an<0||aoaw.length){$panic(new $String("reflect.Value.Slice: string slice index out of bounds"));}ax=AE(new $String($substring(aw,an,ao)));$s=7;case 7:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}$s=-1;return ax;case 5:$panic(new FC.ptr("reflect.Value.Slice",at));case 6:case 1:if(an<0||aoaq){$panic(new $String("reflect.Value.Slice: slice index out of bounds"));}ay=AB(ar,$subslice(as,an,ao),new EZ(ap.flag).ro());$s=8;case 8:if($c){$c=false;ay=ay.$blk();}if(ay&&ay.$blk!==undefined){break s;}$s=-1;return ay;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Slice};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Slice=function(an,ao){return this.$val.Slice(an,ao);};EY.ptr.prototype.Slice3=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=this;ar=0;as=$ifaceNil;at=null;au=new EZ(aq.flag).kind();av=au;if(av===(17)){if(((aq.flag&256)>>>0)===0){$panic(new $String("reflect.Value.Slice: slice of unaddressable array"));}aw=(aq.typ.kindType);ar=((aw.len>>0));as=AJ(aw.elem);at=new(K(as))($clone(aq,EY).object());}else if(av===(23)){as=aq.typ;at=$clone(aq,EY).object();ar=$parseInt(at.$capacity)>>0;}else{$panic(new FC.ptr("reflect.Value.Slice3",au));}if(an<0||aoar){$panic(new $String("reflect.Value.Slice3: slice index out of bounds"));}ax=AB(as,$subslice(at,an,ao,ap),new EZ(aq.flag).ro());$s=1;case 1:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}$s=-1;return ax;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Slice3};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Slice3=function(an,ao,ap){return this.$val.Slice3(an,ao,ap);};EY.ptr.prototype.Close=function(){var an;an=this;new EZ(an.flag).mustBe(18);new EZ(an.flag).mustBeExported();$close($clone(an,EY).object());};EY.prototype.Close=function(){return this.$val.Close();};BP=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=false;ar=false;as=new IM([new IH([an])]);if(ao){as=$append(as,new IH([]));}at=BO(new HV([as]));$s=1;case 1:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}au=at;if(ao&&(($parseInt(au[0])>>0)===1)){av=false;aw=false;aq=av;ar=aw;$s=-1;return[aq,ar];}ax=au[1];ap.$set(ax[0]);ay=true;az=!!(ax[1]);aq=ay;ar=az;$s=-1;return[aq,ar];}return;}if($f===undefined){$f={$blk:BP};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.$s=$s;$f.$r=$r;return $f;};BQ=function(an,ao,ap){var an,ao,ap,aq,ar,as,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=new IM([new IH([an,ao.$get()])]);if(ap){aq=$append(aq,new IH([]));}ar=BO(new HV([aq]));$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=ar;if(ap&&(($parseInt(as[0])>>0)===1)){$s=-1;return false;}$s=-1;return true;}return;}if($f===undefined){$f={$blk:BQ};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.$s=$s;$f.$r=$r;return $f;};CP.ptr.prototype.offset=function(){var an;an=this;return an.offsetEmbed>>>1>>>0;};CP.prototype.offset=function(){return this.$val.offset();};CP.ptr.prototype.embedded=function(){var an;an=this;return!((((an.offsetEmbed&1)>>>0)===0));};CP.prototype.embedded=function(){return this.$val.embedded();};CC.prototype.String=function(){var an;an=this.$val;if(((an>>0))=CT.$length)?($throwRuntimeError("index out of range"),undefined):CT.$array[CT.$offset+an]);}return"kind"+B.Itoa(((an>>0)));};$ptrType(CC).prototype.String=function(){return new CC(this.$get()).String();};CE.ptr.prototype.String=function(){var an,ao;an=this;ao=$clone(an.nameOff(an.str),Q).name();if(!((((an.tflag&2)>>>0)===0))){return $substring(ao,1);}return ao;};CE.prototype.String=function(){return this.$val.String();};CE.ptr.prototype.Size=function(){var an;an=this;return an.size;};CE.prototype.Size=function(){return this.$val.Size();};CE.ptr.prototype.Bits=function(){var an,ao;an=this;if(an===HR.nil){$panic(new $String("reflect: Bits of nil Type"));}ao=an.Kind();if(ao<2||ao>16){$panic(new $String("reflect: Bits of non-arithmetic Type "+an.String()));}return $imul(((an.size>>0)),8);};CE.prototype.Bits=function(){return this.$val.Bits();};CE.ptr.prototype.Align=function(){var an;an=this;return((an.align>>0));};CE.prototype.Align=function(){return this.$val.Align();};CE.ptr.prototype.FieldAlign=function(){var an;an=this;return((an.fieldAlign>>0));};CE.prototype.FieldAlign=function(){return this.$val.FieldAlign();};CE.ptr.prototype.Kind=function(){var an;an=this;return((((an.kind&31)>>>0)>>>0));};CE.prototype.Kind=function(){return this.$val.Kind();};CE.ptr.prototype.common=function(){var an;an=this;return an;};CE.prototype.common=function(){return this.$val.common();};CE.ptr.prototype.exportedMethods=function(){var an,ao;an=this;ao=an.uncommon();if(ao===IE.nil){return IB.nil;}return ao.exportedMethods();};CE.prototype.exportedMethods=function(){return this.$val.exportedMethods();};CE.ptr.prototype.NumMethod=function(){var an,ao;an=this;if(an.Kind()===20){ao=(an.kindType);return ao.NumMethod();}return an.exportedMethods().$length;};CE.prototype.NumMethod=function(){return this.$val.NumMethod();};CE.ptr.prototype.MethodByName=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=new CS.ptr("","",$ifaceNil,new EY.ptr(HR.nil,0,0),0);ap=false;aq=this;if(aq.Kind()===20){ar=(aq.kindType);as=ar.MethodByName(an);CS.copy(ao,as[0]);ap=as[1];$s=-1;return[ao,ap];}at=aq.uncommon();if(at===IE.nil){au=new CS.ptr("","",$ifaceNil,new EY.ptr(HR.nil,0,0),0);av=false;CS.copy(ao,au);ap=av;$s=-1;return[ao,ap];}aw=at.exportedMethods();ax=0;case 1:if(!(ax=aw.$length)?($throwRuntimeError("index out of range"),undefined):aw.$array[aw.$offset+ax]),CG);if($clone(aq.nameOff(az.name),Q).name()===an){$s=3;continue;}$s=4;continue;case 3:bb=aq.Method(ay);$s=5;case 5:if($c){$c=false;bb=bb.$blk();}if(bb&&bb.$blk!==undefined){break s;}ba=$clone(bb,CS);bc=true;CS.copy(ao,ba);ap=bc;$s=-1;return[ao,ap];case 4:ax++;$s=1;continue;case 2:bd=new CS.ptr("","",$ifaceNil,new EY.ptr(HR.nil,0,0),0);be=false;CS.copy(ao,bd);ap=be;$s=-1;return[ao,ap];}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.MethodByName};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.MethodByName=function(an){return this.$val.MethodByName(an);};CE.ptr.prototype.PkgPath=function(){var an,ao;an=this;if(((an.tflag&4)>>>0)===0){return"";}ao=an.uncommon();if(ao===IE.nil){return"";}return $clone(an.nameOff(ao.pkgPath),Q).name();};CE.prototype.PkgPath=function(){return this.$val.PkgPath();};CE.ptr.prototype.Name=function(){var an,ao,ap;an=this;if(((an.tflag&4)>>>0)===0){return"";}ao=an.String();ap=ao.length-1>>0;while(true){if(!(ap>=0)){break;}if(ao.charCodeAt(ap)===46){break;}ap=ap-(1)>>0;}return $substring(ao,(ap+1>>0));};CE.prototype.Name=function(){return this.$val.Name();};CE.ptr.prototype.ChanDir=function(){var an,ao;an=this;if(!((an.Kind()===18))){$panic(new $String("reflect: ChanDir of non-chan type"));}ao=(an.kindType);return((ao.dir>>0));};CE.prototype.ChanDir=function(){return this.$val.ChanDir();};CE.ptr.prototype.IsVariadic=function(){var an,ao;an=this;if(!((an.Kind()===19))){$panic(new $String("reflect: IsVariadic of non-func type"));}ao=(an.kindType);return!((((ao.outCount&32768)>>>0)===0));};CE.prototype.IsVariadic=function(){return this.$val.IsVariadic();};CE.ptr.prototype.Elem=function(){var an,ao,ap,aq,ar,as,at;an=this;ao=an.Kind();if(ao===(17)){ap=(an.kindType);return EQ(ap.elem);}else if(ao===(18)){aq=(an.kindType);return EQ(aq.elem);}else if(ao===(21)){ar=(an.kindType);return EQ(ar.elem);}else if(ao===(22)){as=(an.kindType);return EQ(as.elem);}else if(ao===(23)){at=(an.kindType);return EQ(at.elem);}$panic(new $String("reflect: Elem of invalid type"));};CE.prototype.Elem=function(){return this.$val.Elem();};CE.ptr.prototype.Field=function(an){var an,ao,ap;ao=this;if(!((ao.Kind()===25))){$panic(new $String("reflect: Field of non-struct type"));}ap=(ao.kindType);return ap.Field(an);};CE.prototype.Field=function(an){return this.$val.Field(an);};CE.ptr.prototype.FieldByIndex=function(an){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if(!((ao.Kind()===25))){$panic(new $String("reflect: FieldByIndex of non-struct type"));}ap=(ao.kindType);aq=ap.FieldByIndex(an);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq;}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.FieldByIndex};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.FieldByIndex=function(an){return this.$val.FieldByIndex(an);};CE.ptr.prototype.FieldByName=function(an){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if(!((ao.Kind()===25))){$panic(new $String("reflect: FieldByName of non-struct type"));}ap=(ao.kindType);aq=ap.FieldByName(an);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq;}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.FieldByName};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.FieldByName=function(an){return this.$val.FieldByName(an);};CE.ptr.prototype.FieldByNameFunc=function(an){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if(!((ao.Kind()===25))){$panic(new $String("reflect: FieldByNameFunc of non-struct type"));}ap=(ao.kindType);aq=ap.FieldByNameFunc(an);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq;}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.FieldByNameFunc};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.FieldByNameFunc=function(an){return this.$val.FieldByNameFunc(an);};CE.ptr.prototype.In=function(an){var an,ao,ap,aq;ao=this;if(!((ao.Kind()===19))){$panic(new $String("reflect: In of non-func type"));}ap=(ao.kindType);return EQ((aq=ap.in$(),((an<0||an>=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+an])));};CE.prototype.In=function(an){return this.$val.In(an);};CE.ptr.prototype.Key=function(){var an,ao;an=this;if(!((an.Kind()===21))){$panic(new $String("reflect: Key of non-map type"));}ao=(an.kindType);return EQ(ao.key);};CE.prototype.Key=function(){return this.$val.Key();};CE.ptr.prototype.Len=function(){var an,ao;an=this;if(!((an.Kind()===17))){$panic(new $String("reflect: Len of non-array type"));}ao=(an.kindType);return((ao.len>>0));};CE.prototype.Len=function(){return this.$val.Len();};CE.ptr.prototype.NumField=function(){var an,ao;an=this;if(!((an.Kind()===25))){$panic(new $String("reflect: NumField of non-struct type"));}ao=(an.kindType);return ao.fields.$length;};CE.prototype.NumField=function(){return this.$val.NumField();};CE.ptr.prototype.NumIn=function(){var an,ao;an=this;if(!((an.Kind()===19))){$panic(new $String("reflect: NumIn of non-func type"));}ao=(an.kindType);return((ao.inCount>>0));};CE.prototype.NumIn=function(){return this.$val.NumIn();};CE.ptr.prototype.NumOut=function(){var an,ao;an=this;if(!((an.Kind()===19))){$panic(new $String("reflect: NumOut of non-func type"));}ao=(an.kindType);return ao.out().$length;};CE.prototype.NumOut=function(){return this.$val.NumOut();};CE.ptr.prototype.Out=function(an){var an,ao,ap,aq;ao=this;if(!((ao.Kind()===19))){$panic(new $String("reflect: Out of non-func type"));}ap=(ao.kindType);return EQ((aq=ap.out(),((an<0||an>=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+an])));};CE.prototype.Out=function(an){return this.$val.Out(an);};CH.prototype.String=function(){var an,ao;an=this.$val;ao=an;if(ao===(2)){return"chan<-";}else if(ao===(1)){return"<-chan";}else if(ao===(3)){return"chan";}return"ChanDir"+B.Itoa(((an>>0)));};$ptrType(CH).prototype.String=function(){return new CH(this.$get()).String();};CL.ptr.prototype.Method=function(an){var an,ao,ap,aq,ar,as;ao=new CS.ptr("","",$ifaceNil,new EY.ptr(HR.nil,0,0),0);ap=this;if(an<0||an>=ap.methods.$length){return ao;}ar=(aq=ap.methods,((an<0||an>=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+an]));as=$clone(ap.rtype.nameOff(ar.name),Q);ao.Name=$clone(as,Q).name();if(!$clone(as,Q).isExported()){ao.PkgPath=$clone(as,Q).pkgPath();if(ao.PkgPath===""){ao.PkgPath=$clone(ap.pkgPath,Q).name();}}ao.Type=EQ(ap.rtype.typeOff(ar.typ));ao.Index=an;return ao;};CL.prototype.Method=function(an){return this.$val.Method(an);};CL.ptr.prototype.NumMethod=function(){var an;an=this;return an.methods.$length;};CL.prototype.NumMethod=function(){return this.$val.NumMethod();};CL.ptr.prototype.MethodByName=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax;ao=new CS.ptr("","",$ifaceNil,new EY.ptr(HR.nil,0,0),0);ap=false;aq=this;if(aq===IP.nil){return[ao,ap];}ar=IQ.nil;as=aq.methods;at=0;while(true){if(!(at=av.$length)?($throwRuntimeError("index out of range"),undefined):av.$array[av.$offset+au]));if($clone(aq.rtype.nameOff(ar.name),Q).name()===an){aw=$clone(aq.Method(au),CS);ax=true;CS.copy(ao,aw);ap=ax;return[ao,ap];}at++;}return[ao,ap];};CL.prototype.MethodByName=function(an){return this.$val.MethodByName(an);};DH.prototype.Get=function(an){var an,ao,ap,aq;ao=this.$val;ap=new DH(ao).Lookup(an);aq=ap[0];return aq;};$ptrType(DH).prototype.Get=function(an){return new DH(this.$get()).Get(an);};DH.prototype.Lookup=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba;ao="";ap=false;aq=this.$val;while(true){if(!(!(aq===""))){break;}ar=0;while(true){if(!(ar>0;}aq=$substring(aq,ar);if(aq===""){break;}ar=0;while(true){if(!(ar32&&!((aq.charCodeAt(ar)===58))&&!((aq.charCodeAt(ar)===34))&&!((aq.charCodeAt(ar)===127)))){break;}ar=ar+(1)>>0;}if((ar===0)||(ar+1>>0)>=aq.length||!((aq.charCodeAt(ar)===58))||!((aq.charCodeAt((ar+1>>0))===34))){break;}as=($substring(aq,0,ar));aq=$substring(aq,(ar+1>>0));ar=1;while(true){if(!(ar>0;}ar=ar+(1)>>0;}if(ar>=aq.length){break;}at=($substring(aq,0,(ar+1>>0)));aq=$substring(aq,(ar+1>>0));if(an===as){au=B.Unquote(at);av=au[0];aw=au[1];if(!($interfaceIsEqual(aw,$ifaceNil))){break;}ax=av;ay=true;ao=ax;ap=ay;return[ao,ap];}}az="";ba=false;ao=az;ap=ba;return[ao,ap];};$ptrType(DH).prototype.Lookup=function(an){return new DH(this.$get()).Lookup(an);};CQ.ptr.prototype.Field=function(an){var an,ao,ap,aq,ar,as;ao=new DG.ptr("","",$ifaceNil,"",0,IR.nil,false);ap=this;if(an<0||an>=ap.fields.$length){$panic(new $String("reflect: Field index out of bounds"));}ar=(aq=ap.fields,((an<0||an>=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+an]));ao.Type=EQ(ar.typ);ao.Name=$clone(ar.name,Q).name();ao.Anonymous=ar.embedded();if(!$clone(ar.name,Q).isExported()){ao.PkgPath=$clone(ap.pkgPath,Q).name();}as=$clone(ar.name,Q).tag();if(!(as==="")){ao.Tag=(as);}ao.Offset=ar.offset();ao.Index=new IR([an]);return ao;};CQ.prototype.Field=function(an){return this.$val.Field(an);};CQ.ptr.prototype.FieldByIndex=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=new DG.ptr("","",$ifaceNil,"",0,IR.nil,false);ap=this;ao.Type=EQ(ap.rtype);aq=an;ar=0;case 1:if(!(ar=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+ar]);if(as>0){$s=3;continue;}$s=4;continue;case 3:au=ao.Type;aw=au.Kind();$s=8;case 8:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}if(!(aw===22)){av=false;$s=7;continue s;}ax=au.Elem();$s=9;case 9:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ay=ax.Kind();$s=10;case 10:if($c){$c=false;ay=ay.$blk();}if(ay&&ay.$blk!==undefined){break s;}av=ay===25;case 7:if(av){$s=5;continue;}$s=6;continue;case 5:az=au.Elem();$s=11;case 11:if($c){$c=false;az=az.$blk();}if(az&&az.$blk!==undefined){break s;}au=az;case 6:ao.Type=au;case 4:ba=ao.Type.Field(at);$s=12;case 12:if($c){$c=false;ba=ba.$blk();}if(ba&&ba.$blk!==undefined){break s;}DG.copy(ao,ba);ar++;$s=1;continue;case 2:$s=-1;return ao;}return;}if($f===undefined){$f={$blk:CQ.ptr.prototype.FieldByIndex};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.$s=$s;$f.$r=$r;return $f;};CQ.prototype.FieldByIndex=function(an){return this.$val.FieldByIndex(an);};CQ.ptr.prototype.FieldByNameFunc=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;bu=$f.bu;bv=$f.bv;bw=$f.bw;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=new DG.ptr("","",$ifaceNil,"",0,IR.nil,false);ap=false;aq=this;ar=new IS([]);as=new IS([new DI.ptr(aq,IR.nil)]);at=false;au=$makeMap(IT.keyFor,[]);case 1:if(!(as.$length>0)){$s=2;continue;}av=as;aw=$subslice(ar,0,0);ar=av;as=aw;ax=at;at=false;ay=ar;az=0;case 3:if(!(az=ay.$length)?($throwRuntimeError("index out of range"),undefined):ay.$array[ay.$offset+az]),DI);bb=ba.typ;if((bc=au[IT.keyFor(bb)],bc!==undefined?bc.v:false)){$s=5;continue;}$s=6;continue;case 5:az++;$s=3;continue;case 6:bd=bb;(au||$throwRuntimeError("assignment to entry in nil map"))[IT.keyFor(bd)]={k:bd,v:true};be=bb.fields;bf=0;case 7:if(!(bf=bh.$length)?($throwRuntimeError("index out of range"),undefined):bh.$array[bh.$offset+bg]));bj=$clone(bi.name,Q).name();bk=HR.nil;if(bi.embedded()){$s=9;continue;}$s=10;continue;case 9:bk=bi.typ;if(bk.Kind()===22){$s=11;continue;}$s=12;continue;case 11:bl=bk.Elem().common();$s=13;case 13:if($c){$c=false;bl=bl.$blk();}if(bl&&bl.$blk!==undefined){break s;}bk=bl;case 12:case 10:bm=an(bj);$s=16;case 16:if($c){$c=false;bm=bm.$blk();}if(bm&&bm.$blk!==undefined){break s;}if(bm){$s=14;continue;}$s=15;continue;case 14:if((bn=ax[IT.keyFor(bb)],bn!==undefined?bn.v:0)>1||ap){bo=new DG.ptr("","",$ifaceNil,"",0,IR.nil,false);bp=false;DG.copy(ao,bo);ap=bp;$s=-1;return[ao,ap];}DG.copy(ao,bb.Field(bg));ao.Index=IR.nil;ao.Index=$appendSlice(ao.Index,ba.index);ao.Index=$append(ao.Index,bg);ap=true;bf++;$s=7;continue;case 15:if(ap||bk===HR.nil||!((bk.Kind()===25))){bf++;$s=7;continue;}bq=(bk.kindType);if((br=at[IT.keyFor(bq)],br!==undefined?br.v:0)>0){bs=bq;(at||$throwRuntimeError("assignment to entry in nil map"))[IT.keyFor(bs)]={k:bs,v:2};bf++;$s=7;continue;}if(at===false){at=$makeMap(IT.keyFor,[]);}bt=bq;(at||$throwRuntimeError("assignment to entry in nil map"))[IT.keyFor(bt)]={k:bt,v:1};if((bu=ax[IT.keyFor(bb)],bu!==undefined?bu.v:0)>1){bv=bq;(at||$throwRuntimeError("assignment to entry in nil map"))[IT.keyFor(bv)]={k:bv,v:2};}bw=IR.nil;bw=$appendSlice(bw,ba.index);bw=$append(bw,bg);as=$append(as,new DI.ptr(bq,bw));bf++;$s=7;continue;case 8:az++;$s=3;continue;case 4:if(ap){$s=2;continue;}$s=1;continue;case 2:$s=-1;return[ao,ap];}return;}if($f===undefined){$f={$blk:CQ.ptr.prototype.FieldByNameFunc};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.bu=bu;$f.bv=bv;$f.bw=bw;$f.$s=$s;$f.$r=$r;return $f;};CQ.prototype.FieldByNameFunc=function(an){return this.$val.FieldByNameFunc(an);};CQ.ptr.prototype.FieldByName=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=[an];ao=new DG.ptr("","",$ifaceNil,"",0,IR.nil,false);ap=false;aq=this;ar=false;if(!(an[0]==="")){as=aq.fields;at=0;while(true){if(!(at=av.$length)?($throwRuntimeError("index out of range"),undefined):av.$array[av.$offset+au]));if($clone(aw.name,Q).name()===an[0]){ax=$clone(aq.Field(au),DG);ay=true;DG.copy(ao,ax);ap=ay;$s=-1;return[ao,ap];}if(aw.embedded()){ar=true;}at++;}}if(!ar){$s=-1;return[ao,ap];}ba=aq.FieldByNameFunc((function(an){return function(ba){var ba;return ba===an[0];};})(an));$s=1;case 1:if($c){$c=false;ba=ba.$blk();}if(ba&&ba.$blk!==undefined){break s;}az=ba;DG.copy(ao,az[0]);ap=az[1];$s=-1;return[ao,ap];}return;}if($f===undefined){$f={$blk:CQ.ptr.prototype.FieldByName};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.$s=$s;$f.$r=$r;return $f;};CQ.prototype.FieldByName=function(an){return this.$val.FieldByName(an);};DK=function(an){var an;return $assertType(an,HR).ptrTo();};$pkg.PtrTo=DK;CE.ptr.prototype.Implements=function(an){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if($interfaceIsEqual(an,$ifaceNil)){$panic(new $String("reflect: nil type passed to Type.Implements"));}ap=an.Kind();$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}if(!((ap===20))){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect: non-interface type passed to Type.Implements"));case 2:$s=-1;return DM($assertType(an,HR),ao);}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.Implements};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.Implements=function(an){return this.$val.Implements(an);};CE.ptr.prototype.AssignableTo=function(an){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if($interfaceIsEqual(an,$ifaceNil)){$panic(new $String("reflect: nil type passed to Type.AssignableTo"));}ap=$assertType(an,HR);aq=DN(ap,ao);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq||DM(ap,ao);}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.AssignableTo};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.AssignableTo=function(an){return this.$val.AssignableTo(an);};CE.ptr.prototype.ConvertibleTo=function(an){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if($interfaceIsEqual(an,$ifaceNil)){$panic(new $String("reflect: nil type passed to Type.ConvertibleTo"));}ap=$assertType(an,HR);aq=GJ(ap,ao);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return!(aq===$throwNilPointerError);}return;}if($f===undefined){$f={$blk:CE.ptr.prototype.ConvertibleTo};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};CE.prototype.ConvertibleTo=function(an){return this.$val.ConvertibleTo(an);};DM=function(an,ao){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl;if(!((an.Kind()===20))){return false;}ap=(an.kindType);if(ap.methods.$length===0){return true;}if(ao.Kind()===20){aq=(ao.kindType);ar=0;as=0;while(true){if(!(as=at.$length)?($throwRuntimeError("index out of range"),undefined):at.$array[at.$offset+ar]));av=$clone(ap.rtype.nameOff(au.name),Q);ax=(aw=aq.methods,((as<0||as>=aw.$length)?($throwRuntimeError("index out of range"),undefined):aw.$array[aw.$offset+as]));ay=$clone(ao.nameOff(ax.name),Q);if($clone(ay,Q).name()===$clone(av,Q).name()&&ao.typeOff(ax.typ)===ap.rtype.typeOff(au.typ)){if(!$clone(av,Q).isExported()){az=$clone(av,Q).pkgPath();if(az===""){az=$clone(ap.pkgPath,Q).name();}ba=$clone(ay,Q).pkgPath();if(ba===""){ba=$clone(aq.pkgPath,Q).name();}if(!(az===ba)){as=as+(1)>>0;continue;}}ar=ar+(1)>>0;if(ar>=ap.methods.$length){return true;}}as=as+(1)>>0;}return false;}bb=ao.uncommon();if(bb===IE.nil){return false;}bc=0;bd=bb.methods();be=0;while(true){if(!(be<((bb.mcount>>0)))){break;}bg=(bf=ap.methods,((bc<0||bc>=bf.$length)?($throwRuntimeError("index out of range"),undefined):bf.$array[bf.$offset+bc]));bh=$clone(ap.rtype.nameOff(bg.name),Q);bi=$clone(((be<0||be>=bd.$length)?($throwRuntimeError("index out of range"),undefined):bd.$array[bd.$offset+be]),CG);bj=$clone(ao.nameOff(bi.name),Q);if($clone(bj,Q).name()===$clone(bh,Q).name()&&ao.typeOff(bi.mtyp)===ap.rtype.typeOff(bg.typ)){if(!$clone(bh,Q).isExported()){bk=$clone(bh,Q).pkgPath();if(bk===""){bk=$clone(ap.pkgPath,Q).name();}bl=$clone(bj,Q).pkgPath();if(bl===""){bl=$clone(ao.nameOff(bb.pkgPath),Q).name();}if(!(bk===bl)){be=be+(1)>>0;continue;}}bc=bc+(1)>>0;if(bc>=ap.methods.$length){return true;}}be=be+(1)>>0;}return false;};DN=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(an===ao){$s=-1;return true;}if(!(an.Name()==="")&&!(ao.Name()==="")||!((an.Kind()===ao.Kind()))){$s=-1;return false;}ap=DP(an,ao,true);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:DN};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};DO=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(ap){$s=-1;return $interfaceIsEqual(an,ao);}ar=an.Name();$s=4;case 4:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=ao.Name();$s=5;case 5:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}if(!(ar===as)){aq=true;$s=3;continue s;}at=an.Kind();$s=6;case 6:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}au=ao.Kind();$s=7;case 7:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}aq=!((at===au));case 3:if(aq){$s=1;continue;}$s=2;continue;case 1:$s=-1;return false;case 2:av=an.common();$s=8;case 8:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}aw=av;ax=ao.common();$s=9;case 9:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ay=ax;az=DP(aw,ay,false);$s=10;case 10:if($c){$c=false;az=az.$blk();}if(az&&az.$blk!==undefined){break s;}$s=-1;return az;}return;}if($f===undefined){$f={$blk:DO};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.$s=$s;$f.$r=$r;return $f;};DP=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(an===ao){$s=-1;return true;}aq=an.Kind();if(!((aq===ao.Kind()))){$s=-1;return false;}if(1<=aq&&aq<=16||(aq===24)||(aq===26)){$s=-1;return true;}ar=aq;if(ar===(17)){$s=2;continue;}if(ar===(18)){$s=3;continue;}if(ar===(19)){$s=4;continue;}if(ar===(20)){$s=5;continue;}if(ar===(21)){$s=6;continue;}if((ar===(22))||(ar===(23))){$s=7;continue;}if(ar===(25)){$s=8;continue;}$s=9;continue;case 2:if(!(an.Len()===ao.Len())){as=false;$s=10;continue s;}at=DO(an.Elem(),ao.Elem(),ap);$s=11;case 11:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}as=at;case 10:$s=-1;return as;case 3:if(!(ao.ChanDir()===3)){au=false;$s=14;continue s;}av=DO(an.Elem(),ao.Elem(),ap);$s=15;case 15:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}au=av;case 14:if(au){$s=12;continue;}$s=13;continue;case 12:$s=-1;return true;case 13:if(!(ao.ChanDir()===an.ChanDir())){aw=false;$s=16;continue s;}ax=DO(an.Elem(),ao.Elem(),ap);$s=17;case 17:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}aw=ax;case 16:$s=-1;return aw;case 4:ay=(an.kindType);az=(ao.kindType);if(!((ay.outCount===az.outCount))||!((ay.inCount===az.inCount))){$s=-1;return false;}ba=0;case 18:if(!(ba>0;$s=18;continue;case 19:bc=0;case 23:if(!(bc>0;$s=23;continue;case 24:$s=-1;return true;case 5:be=(an.kindType);bf=(ao.kindType);if((be.methods.$length===0)&&(bf.methods.$length===0)){$s=-1;return true;}$s=-1;return false;case 6:bh=DO(an.Key(),ao.Key(),ap);$s=29;case 29:if($c){$c=false;bh=bh.$blk();}if(bh&&bh.$blk!==undefined){break s;}if(!(bh)){bg=false;$s=28;continue s;}bi=DO(an.Elem(),ao.Elem(),ap);$s=30;case 30:if($c){$c=false;bi=bi.$blk();}if(bi&&bi.$blk!==undefined){break s;}bg=bi;case 28:$s=-1;return bg;case 7:bj=DO(an.Elem(),ao.Elem(),ap);$s=31;case 31:if($c){$c=false;bj=bj.$blk();}if(bj&&bj.$blk!==undefined){break s;}$s=-1;return bj;case 8:bk=(an.kindType);bl=(ao.kindType);if(!((bk.fields.$length===bl.fields.$length))){$s=-1;return false;}if(!($clone(bk.pkgPath,Q).name()===$clone(bl.pkgPath,Q).name())){$s=-1;return false;}bm=bk.fields;bn=0;case 32:if(!(bn=bp.$length)?($throwRuntimeError("index out of range"),undefined):bp.$array[bp.$offset+bo]));bs=(br=bl.fields,((bo<0||bo>=br.$length)?($throwRuntimeError("index out of range"),undefined):br.$array[br.$offset+bo]));if(!($clone(bq.name,Q).name()===$clone(bs.name,Q).name())){$s=-1;return false;}bt=DO(bq.typ,bs.typ,ap);$s=36;case 36:if($c){$c=false;bt=bt.$blk();}if(bt&&bt.$blk!==undefined){break s;}if(!bt){$s=34;continue;}$s=35;continue;case 34:$s=-1;return false;case 35:if(ap&&!($clone(bq.name,Q).tag()===$clone(bs.name,Q).tag())){$s=-1;return false;}if(!((bq.offsetEmbed===bs.offsetEmbed))){$s=-1;return false;}bn++;$s=32;continue;case 33:$s=-1;return true;case 9:case 1:$s=-1;return false;}return;}if($f===undefined){$f={$blk:DP};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.$s=$s;$f.$r=$r;return $f;};EQ=function(an){var an;if(an===HR.nil){return $ifaceNil;}return an;};EV=function(an){var an;return((an.kind&32)>>>0)===0;};EZ.prototype.kind=function(){var an;an=this.$val;return((((an&31)>>>0)>>>0));};$ptrType(EZ).prototype.kind=function(){return new EZ(this.$get()).kind();};EZ.prototype.ro=function(){var an;an=this.$val;if(!((((an&96)>>>0)===0))){return 32;}return 0;};$ptrType(EZ).prototype.ro=function(){return new EZ(this.$get()).ro();};EY.ptr.prototype.pointer=function(){var an;an=this;if(!((an.typ.size===4))||!an.typ.pointers()){$panic(new $String("can't call pointer on a non-pointer Value"));}if(!((((an.flag&128)>>>0)===0))){return(an.ptr).$get();}return an.ptr;};EY.prototype.pointer=function(){return this.$val.pointer();};FC.ptr.prototype.Error=function(){var an;an=this;if(an.Kind===0){return"reflect: call of "+an.Method+" on zero Value";}return"reflect: call of "+an.Method+" on "+new CC(an.Kind).String()+" Value";};FC.prototype.Error=function(){return this.$val.Error();};EZ.prototype.mustBe=function(an){var an,ao;ao=this.$val;if(!((new EZ(ao).kind()===an))){$panic(new FC.ptr(BH(),new EZ(ao).kind()));}};$ptrType(EZ).prototype.mustBe=function(an){return new EZ(this.$get()).mustBe(an);};EZ.prototype.mustBeExported=function(){var an;an=this.$val;if(an===0){$panic(new FC.ptr(BH(),0));}if(!((((an&96)>>>0)===0))){$panic(new $String("reflect: "+BH()+" using value obtained using unexported field"));}};$ptrType(EZ).prototype.mustBeExported=function(){return new EZ(this.$get()).mustBeExported();};EZ.prototype.mustBeAssignable=function(){var an;an=this.$val;if(an===0){$panic(new FC.ptr(BH(),0));}if(!((((an&96)>>>0)===0))){$panic(new $String("reflect: "+BH()+" using value obtained using unexported field"));}if(((an&256)>>>0)===0){$panic(new $String("reflect: "+BH()+" using unaddressable value"));}};$ptrType(EZ).prototype.mustBeAssignable=function(){return new EZ(this.$get()).mustBeAssignable();};EY.ptr.prototype.Addr=function(){var an;an=this;if(((an.flag&256)>>>0)===0){$panic(new $String("reflect.Value.Addr of unaddressable value"));}return new EY.ptr(an.typ.ptrTo(),an.ptr,(new EZ(an.flag).ro()|22)>>>0);};EY.prototype.Addr=function(){return this.$val.Addr();};EY.ptr.prototype.Bool=function(){var an;an=this;new EZ(an.flag).mustBe(1);return(an.ptr).$get();};EY.prototype.Bool=function(){return this.$val.Bool();};EY.ptr.prototype.Bytes=function(){var an,ao,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;new EZ(an.flag).mustBe(23);ao=an.typ.Elem().Kind();$s=3;case 3:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}if(!((ao===8))){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect.Value.Bytes of non-byte slice"));case 2:$s=-1;return(an.ptr).$get();}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Bytes};}$f.an=an;$f.ao=ao;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Bytes=function(){return this.$val.Bytes();};EY.ptr.prototype.runes=function(){var an,ao,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;new EZ(an.flag).mustBe(23);ao=an.typ.Elem().Kind();$s=3;case 3:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}if(!((ao===5))){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect.Value.Bytes of non-rune slice"));case 2:$s=-1;return(an.ptr).$get();}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.runes};}$f.an=an;$f.ao=ao;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.runes=function(){return this.$val.runes();};EY.ptr.prototype.CanAddr=function(){var an;an=this;return!((((an.flag&256)>>>0)===0));};EY.prototype.CanAddr=function(){return this.$val.CanAddr();};EY.ptr.prototype.CanSet=function(){var an;an=this;return((an.flag&352)>>>0)===256;};EY.prototype.CanSet=function(){return this.$val.CanSet();};EY.ptr.prototype.Call=function(an){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBe(19);new EZ(ao.flag).mustBeExported();ap=$clone(ao,EY).call("Call",an);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Call};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Call=function(an){return this.$val.Call(an);};EY.ptr.prototype.CallSlice=function(an){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBe(19);new EZ(ao.flag).mustBeExported();ap=$clone(ao,EY).call("CallSlice",an);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.CallSlice};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.CallSlice=function(an){return this.$val.CallSlice(an);};EY.ptr.prototype.Complex=function(){var an,ao,ap,aq;an=this;ao=new EZ(an.flag).kind();ap=ao;if(ap===(15)){return((aq=(an.ptr).$get(),new $Complex128(aq.$real,aq.$imag)));}else if(ap===(16)){return(an.ptr).$get();}$panic(new FC.ptr("reflect.Value.Complex",new EZ(an.flag).kind()));};EY.prototype.Complex=function(){return this.$val.Complex();};EY.ptr.prototype.FieldByIndex=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if(an.$length===1){$s=1;continue;}$s=2;continue;case 1:ap=$clone(ao,EY).Field((0>=an.$length?($throwRuntimeError("index out of range"),undefined):an.$array[an.$offset+0]));$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;case 2:new EZ(ao.flag).mustBe(25);aq=an;ar=0;case 4:if(!(ar=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+ar]);if(as>0){$s=6;continue;}$s=7;continue;case 6:if(!($clone(ao,EY).Kind()===22)){au=false;$s=10;continue s;}av=ao.typ.Elem().Kind();$s=11;case 11:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}au=av===25;case 10:if(au){$s=8;continue;}$s=9;continue;case 8:if($clone(ao,EY).IsNil()){$panic(new $String("reflect: indirection through nil pointer to embedded struct"));}aw=$clone(ao,EY).Elem();$s=12;case 12:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}ao=aw;case 9:case 7:ax=$clone(ao,EY).Field(at);$s=13;case 13:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ao=ax;ar++;$s=4;continue;case 5:$s=-1;return ao;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.FieldByIndex};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.FieldByIndex=function(an){return this.$val.FieldByIndex(an);};EY.ptr.prototype.FieldByName=function(an){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBe(25);aq=ao.typ.FieldByName(an);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ap=aq;ar=$clone(ap[0],DG);as=ap[1];if(as){$s=2;continue;}$s=3;continue;case 2:at=$clone(ao,EY).FieldByIndex(ar.Index);$s=4;case 4:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return at;case 3:$s=-1;return new EY.ptr(HR.nil,0,0);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.FieldByName};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.FieldByName=function(an){return this.$val.FieldByName(an);};EY.ptr.prototype.FieldByNameFunc=function(an){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;aq=ao.typ.FieldByNameFunc(an);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ap=aq;ar=$clone(ap[0],DG);as=ap[1];if(as){$s=2;continue;}$s=3;continue;case 2:at=$clone(ao,EY).FieldByIndex(ar.Index);$s=4;case 4:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return at;case 3:$s=-1;return new EY.ptr(HR.nil,0,0);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.FieldByNameFunc};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.FieldByNameFunc=function(an){return this.$val.FieldByNameFunc(an);};EY.ptr.prototype.Float=function(){var an,ao,ap;an=this;ao=new EZ(an.flag).kind();ap=ao;if(ap===(13)){return((an.ptr).$get());}else if(ap===(14)){return(an.ptr).$get();}$panic(new FC.ptr("reflect.Value.Float",new EZ(an.flag).kind()));};EY.prototype.Float=function(){return this.$val.Float();};EY.ptr.prototype.Int=function(){var an,ao,ap,aq;an=this;ao=new EZ(an.flag).kind();ap=an.ptr;aq=ao;if(aq===(2)){return(new $Int64(0,(ap).$get()));}else if(aq===(3)){return(new $Int64(0,(ap).$get()));}else if(aq===(4)){return(new $Int64(0,(ap).$get()));}else if(aq===(5)){return(new $Int64(0,(ap).$get()));}else if(aq===(6)){return(ap).$get();}$panic(new FC.ptr("reflect.Value.Int",new EZ(an.flag).kind()));};EY.prototype.Int=function(){return this.$val.Int();};EY.ptr.prototype.CanInterface=function(){var an;an=this;if(an.flag===0){$panic(new FC.ptr("reflect.Value.CanInterface",0));}return((an.flag&96)>>>0)===0;};EY.prototype.CanInterface=function(){return this.$val.CanInterface();};EY.ptr.prototype.Interface=function(){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=$ifaceNil;ao=this;ap=BF($clone(ao,EY),true);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}an=ap;$s=-1;return an;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Interface};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Interface=function(){return this.$val.Interface();};EY.ptr.prototype.IsValid=function(){var an;an=this;return!((an.flag===0));};EY.prototype.IsValid=function(){return this.$val.IsValid();};EY.ptr.prototype.Kind=function(){var an;an=this;return new EZ(an.flag).kind();};EY.prototype.Kind=function(){return this.$val.Kind();};EY.ptr.prototype.MapIndex=function(an){var an,ao,ap,aq,ar,as,at,au,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBe(21);ap=(ao.typ.kindType);aq=$clone(an,EY).assignTo("reflect.Value.MapIndex",ap.key,0);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}an=aq;ar=0;if(!((((an.flag&128)>>>0)===0))){ar=an.ptr;}else{ar=((an.$ptr_ptr||(an.$ptr_ptr=new JC(function(){return this.$target.ptr;},function($v){this.$target.ptr=$v;},an))));}as=AT(ao.typ,$clone(ao,EY).pointer(),ar);if(as===0){$s=-1;return new EY.ptr(HR.nil,0,0);}at=ap.elem;au=new EZ((((ao.flag|an.flag)>>>0))).ro();au=(au|(((at.Kind()>>>0))))>>>0;$s=-1;return FN(at,au,as);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.MapIndex};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.MapIndex=function(an){return this.$val.MapIndex(an);};EY.ptr.prototype.MapKeys=function(){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;new EZ(an.flag).mustBe(21);ao=(an.typ.kindType);ap=ao.key;aq=(new EZ(an.flag).ro()|((ap.Kind()>>>0)))>>>0;ar=$clone(an,EY).pointer();as=0;if(!(ar===0)){as=BB(ar);}at=AX(an.typ,ar);au=$makeSlice(II,as);av=0;av=0;case 1:if(!(av=au.$length)?($throwRuntimeError("index out of range"),undefined):au.$array[au.$offset+av]=FN(ap,aq,ax));BA(at);av=av+(1)>>0;$s=1;continue;case 2:$s=-1;return $subslice(au,0,av);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.MapKeys};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.MapKeys=function(){return this.$val.MapKeys();};FM.ptr.prototype.Key=function(){var an,ao,ap,aq,ar,as,at,au,av,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;if(an.it===0){$panic(new $String("MapIter.Key called before Next"));}ao=AY(an.it);$s=3;case 3:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}if(ao===0){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("MapIter.Key called on exhausted iterator"));case 2:ap=(an.m.typ.kindType);aq=ap.key;ar=aq;as=(new EZ(an.m.flag).ro()|((aq.Kind()>>>0)))>>>0;at=AY(an.it);$s=4;case 4:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}au=at;av=FN(ar,as,au);$s=5;case 5:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}$s=-1;return av;}return;}if($f===undefined){$f={$blk:FM.ptr.prototype.Key};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.$s=$s;$f.$r=$r;return $f;};FM.prototype.Key=function(){return this.$val.Key();};FM.ptr.prototype.Value=function(){var an,ao,ap,aq,ar,as,at,au,av,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;if(an.it===0){$panic(new $String("MapIter.Value called before Next"));}ao=AY(an.it);$s=3;case 3:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}if(ao===0){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("MapIter.Value called on exhausted iterator"));case 2:ap=(an.m.typ.kindType);aq=ap.elem;ar=aq;as=(new EZ(an.m.flag).ro()|((aq.Kind()>>>0)))>>>0;at=AZ(an.it);$s=4;case 4:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}au=at;av=FN(ar,as,au);$s=5;case 5:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}$s=-1;return av;}return;}if($f===undefined){$f={$blk:FM.ptr.prototype.Value};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.$s=$s;$f.$r=$r;return $f;};FM.prototype.Value=function(){return this.$val.Value();};FM.ptr.prototype.Next=function(){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;if(an.it===0){$s=1;continue;}$s=2;continue;case 1:an.it=AX(an.m.typ,$clone(an.m,EY).pointer());$s=3;continue;case 2:ao=AY(an.it);$s=6;case 6:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}if(ao===0){$s=4;continue;}$s=5;continue;case 4:$panic(new $String("MapIter.Next called on exhausted iterator"));case 5:BA(an.it);case 3:ap=AY(an.it);$s=7;case 7:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return!(ap===0);}return;}if($f===undefined){$f={$blk:FM.ptr.prototype.Next};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};FM.prototype.Next=function(){return this.$val.Next();};EY.ptr.prototype.MapRange=function(){var an;an=this;new EZ(an.flag).mustBe(21);return new FM.ptr($clone(an,EY),0);};EY.prototype.MapRange=function(){return this.$val.MapRange();};FN=function(an,ao,ap){var an,ao,ap,aq;if(EV(an)){aq=AL(an);AO(an,aq,ap);return new EY.ptr(an,aq,(ao|128)>>>0);}return new EY.ptr(an,(ap).$get(),ao);};EY.ptr.prototype.Method=function(an){var an,ao,ap;ao=this;if(ao.typ===HR.nil){$panic(new FC.ptr("reflect.Value.Method",0));}if(!((((ao.flag&512)>>>0)===0))||((an>>>0))>=((ao.typ.NumMethod()>>>0))){$panic(new $String("reflect: Method index out of range"));}if((ao.typ.Kind()===20)&&$clone(ao,EY).IsNil()){$panic(new $String("reflect: Method on nil interface value"));}ap=(ao.flag&160)>>>0;ap=(ap|(19))>>>0;ap=(ap|((((((an>>>0))<<10>>>0)|512)>>>0)))>>>0;return new EY.ptr(ao.typ,ao.ptr,ap);};EY.prototype.Method=function(an){return this.$val.Method(an);};EY.ptr.prototype.NumMethod=function(){var an;an=this;if(an.typ===HR.nil){$panic(new FC.ptr("reflect.Value.NumMethod",0));}if(!((((an.flag&512)>>>0)===0))){return 0;}return an.typ.NumMethod();};EY.prototype.NumMethod=function(){return this.$val.NumMethod();};EY.ptr.prototype.MethodByName=function(an){var an,ao,ap,aq,ar,as,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if(ao.typ===HR.nil){$panic(new FC.ptr("reflect.Value.MethodByName",0));}if(!((((ao.flag&512)>>>0)===0))){$s=-1;return new EY.ptr(HR.nil,0,0);}aq=ao.typ.MethodByName(an);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ap=aq;ar=$clone(ap[0],CS);as=ap[1];if(!as){$s=-1;return new EY.ptr(HR.nil,0,0);}$s=-1;return $clone(ao,EY).Method(ar.Index);}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.MethodByName};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.MethodByName=function(an){return this.$val.MethodByName(an);};EY.ptr.prototype.NumField=function(){var an,ao;an=this;new EZ(an.flag).mustBe(25);ao=(an.typ.kindType);return ao.fields.$length;};EY.prototype.NumField=function(){return this.$val.NumField();};EY.ptr.prototype.OverflowComplex=function(an){var an,ao,ap,aq;ao=this;ap=new EZ(ao.flag).kind();aq=ap;if(aq===(15)){return FO(an.$real)||FO(an.$imag);}else if(aq===(16)){return false;}$panic(new FC.ptr("reflect.Value.OverflowComplex",new EZ(ao.flag).kind()));};EY.prototype.OverflowComplex=function(an){return this.$val.OverflowComplex(an);};EY.ptr.prototype.OverflowFloat=function(an){var an,ao,ap,aq;ao=this;ap=new EZ(ao.flag).kind();aq=ap;if(aq===(13)){return FO(an);}else if(aq===(14)){return false;}$panic(new FC.ptr("reflect.Value.OverflowFloat",new EZ(ao.flag).kind()));};EY.prototype.OverflowFloat=function(an){return this.$val.OverflowFloat(an);};FO=function(an){var an;if(an<0){an=-an;}return 3.4028234663852886e+38>>0;as=$shiftRightInt64(($shiftLeft64(an,((64-ar>>>0)))),((64-ar>>>0)));return!((an.$high===as.$high&&an.$low===as.$low));}$panic(new FC.ptr("reflect.Value.OverflowInt",new EZ(ao.flag).kind()));};EY.prototype.OverflowInt=function(an){return this.$val.OverflowInt(an);};EY.ptr.prototype.OverflowUint=function(an){var an,ao,ap,aq,ar,as;ao=this;ap=new EZ(ao.flag).kind();aq=ap;if((aq===(7))||(aq===(12))||(aq===(8))||(aq===(9))||(aq===(10))||(aq===(11))){ar=$imul(ao.typ.size,8)>>>0;as=$shiftRightUint64(($shiftLeft64(an,((64-ar>>>0)))),((64-ar>>>0)));return!((an.$high===as.$high&&an.$low===as.$low));}$panic(new FC.ptr("reflect.Value.OverflowUint",new EZ(ao.flag).kind()));};EY.prototype.OverflowUint=function(an){return this.$val.OverflowUint(an);};EY.ptr.prototype.Recv=function(){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=new EY.ptr(HR.nil,0,0);ao=false;ap=this;new EZ(ap.flag).mustBe(18);new EZ(ap.flag).mustBeExported();ar=$clone(ap,EY).recv(false);$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}aq=ar;an=aq[0];ao=aq[1];$s=-1;return[an,ao];}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Recv};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Recv=function(){return this.$val.Recv();};EY.ptr.prototype.recv=function(an){var an,ao,ap,aq,ar,as,at,au,av,aw,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=new EY.ptr(HR.nil,0,0);ap=false;aq=this;ar=(aq.typ.kindType);if((((ar.dir>>0))&1)===0){$panic(new $String("reflect: recv on send-only channel"));}as=ar.elem;ao=new EY.ptr(as,0,((as.Kind()>>>0)));at=0;if(EV(as)){at=AL(as);ao.ptr=at;ao.flag=(ao.flag|(128))>>>0;}else{at=((ao.$ptr_ptr||(ao.$ptr_ptr=new JC(function(){return this.$target.ptr;},function($v){this.$target.ptr=$v;},ao))));}av=BP($clone(aq,EY).pointer(),an,at);$s=1;case 1:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}au=av;aw=au[0];ap=au[1];if(!aw){ao=new EY.ptr(HR.nil,0,0);}$s=-1;return[ao,ap];}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.recv};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.recv=function(an){return this.$val.recv(an);};EY.ptr.prototype.Send=function(an){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBe(18);new EZ(ao.flag).mustBeExported();ap=$clone(ao,EY).send($clone(an,EY),false);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}ap;$s=-1;return;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Send};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Send=function(an){return this.$val.Send(an);};EY.ptr.prototype.send=function(an,ao){var an,ao,ap,aq,ar,as,at,au,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=false;aq=this;ar=(aq.typ.kindType);if((((ar.dir>>0))&2)===0){$panic(new $String("reflect: send on recv-only channel"));}new EZ(an.flag).mustBeExported();as=$clone(an,EY).assignTo("reflect.Value.Send",ar.elem,0);$s=1;case 1:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}an=as;at=0;if(!((((an.flag&128)>>>0)===0))){at=an.ptr;}else{at=((an.$ptr_ptr||(an.$ptr_ptr=new JC(function(){return this.$target.ptr;},function($v){this.$target.ptr=$v;},an))));}au=BQ($clone(aq,EY).pointer(),at,ao);$s=2;case 2:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}ap=au;$s=-1;return ap;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.send};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.send=function(an,ao){return this.$val.send(an,ao);};EY.ptr.prototype.SetBool=function(an){var an,ao;ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(1);(ao.ptr).$set(an);};EY.prototype.SetBool=function(an){return this.$val.SetBool(an);};EY.ptr.prototype.setRunes=function(an){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(23);ap=ao.typ.Elem().Kind();$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}if(!((ap===5))){$s=1;continue;}$s=2;continue;case 1:$panic(new $String("reflect.Value.setRunes of non-rune slice"));case 2:(ao.ptr).$set(an);$s=-1;return;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.setRunes};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.setRunes=function(an){return this.$val.setRunes(an);};EY.ptr.prototype.SetComplex=function(an){var an,ao,ap,aq;ao=this;new EZ(ao.flag).mustBeAssignable();ap=new EZ(ao.flag).kind();aq=ap;if(aq===(15)){(ao.ptr).$set((new $Complex64(an.$real,an.$imag)));}else if(aq===(16)){(ao.ptr).$set(an);}else{$panic(new FC.ptr("reflect.Value.SetComplex",new EZ(ao.flag).kind()));}};EY.prototype.SetComplex=function(an){return this.$val.SetComplex(an);};EY.ptr.prototype.SetFloat=function(an){var an,ao,ap,aq;ao=this;new EZ(ao.flag).mustBeAssignable();ap=new EZ(ao.flag).kind();aq=ap;if(aq===(13)){(ao.ptr).$set(($fround(an)));}else if(aq===(14)){(ao.ptr).$set(an);}else{$panic(new FC.ptr("reflect.Value.SetFloat",new EZ(ao.flag).kind()));}};EY.prototype.SetFloat=function(an){return this.$val.SetFloat(an);};EY.ptr.prototype.SetInt=function(an){var an,ao,ap,aq;ao=this;new EZ(ao.flag).mustBeAssignable();ap=new EZ(ao.flag).kind();aq=ap;if(aq===(2)){(ao.ptr).$set((((an.$low+((an.$high>>31)*4294967296))>>0)));}else if(aq===(3)){(ao.ptr).$set((((an.$low+((an.$high>>31)*4294967296))<<24>>24)));}else if(aq===(4)){(ao.ptr).$set((((an.$low+((an.$high>>31)*4294967296))<<16>>16)));}else if(aq===(5)){(ao.ptr).$set((((an.$low+((an.$high>>31)*4294967296))>>0)));}else if(aq===(6)){(ao.ptr).$set(an);}else{$panic(new FC.ptr("reflect.Value.SetInt",new EZ(ao.flag).kind()));}};EY.prototype.SetInt=function(an){return this.$val.SetInt(an);};EY.ptr.prototype.SetMapIndex=function(an,ao){var an,ao,ap,aq,ar,as,at,au,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=this;new EZ(ap.flag).mustBe(21);new EZ(ap.flag).mustBeExported();new EZ(an.flag).mustBeExported();aq=(ap.typ.kindType);ar=$clone(an,EY).assignTo("reflect.Value.SetMapIndex",aq.key,0);$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}an=ar;as=0;if(!((((an.flag&128)>>>0)===0))){as=an.ptr;}else{as=((an.$ptr_ptr||(an.$ptr_ptr=new JC(function(){return this.$target.ptr;},function($v){this.$target.ptr=$v;},an))));}if(ao.typ===HR.nil){AV(ap.typ,$clone(ap,EY).pointer(),as);$s=-1;return;}new EZ(ao.flag).mustBeExported();at=$clone(ao,EY).assignTo("reflect.Value.SetMapIndex",aq.elem,0);$s=2;case 2:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}ao=at;au=0;if(!((((ao.flag&128)>>>0)===0))){au=ao.ptr;}else{au=((ao.$ptr_ptr||(ao.$ptr_ptr=new JC(function(){return this.$target.ptr;},function($v){this.$target.ptr=$v;},ao))));}$r=AU(ap.typ,$clone(ap,EY).pointer(),as,au);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.SetMapIndex};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.SetMapIndex=function(an,ao){return this.$val.SetMapIndex(an,ao);};EY.ptr.prototype.SetUint=function(an){var an,ao,ap,aq;ao=this;new EZ(ao.flag).mustBeAssignable();ap=new EZ(ao.flag).kind();aq=ap;if(aq===(7)){(ao.ptr).$set(((an.$low>>>0)));}else if(aq===(8)){(ao.ptr).$set(((an.$low<<24>>>24)));}else if(aq===(9)){(ao.ptr).$set(((an.$low<<16>>>16)));}else if(aq===(10)){(ao.ptr).$set(((an.$low>>>0)));}else if(aq===(11)){(ao.ptr).$set(an);}else if(aq===(12)){(ao.ptr).$set(((an.$low>>>0)));}else{$panic(new FC.ptr("reflect.Value.SetUint",new EZ(ao.flag).kind()));}};EY.prototype.SetUint=function(an){return this.$val.SetUint(an);};EY.ptr.prototype.SetPointer=function(an){var an,ao;ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(26);(ao.ptr).$set(an);};EY.prototype.SetPointer=function(an){return this.$val.SetPointer(an);};EY.ptr.prototype.SetString=function(an){var an,ao;ao=this;new EZ(ao.flag).mustBeAssignable();new EZ(ao.flag).mustBe(24);(ao.ptr).$set(an);};EY.prototype.SetString=function(an){return this.$val.SetString(an);};EY.ptr.prototype.String=function(){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=this;ao=new EZ(an.flag).kind();ap=ao;if(ap===(0)){$s=-1;return"";}else if(ap===(24)){$s=-1;return(an.ptr).$get();}aq=$clone(an,EY).Type().String();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return"<"+aq+" Value>";}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.String};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.String=function(){return this.$val.String();};EY.ptr.prototype.TryRecv=function(){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:an=new EY.ptr(HR.nil,0,0);ao=false;ap=this;new EZ(ap.flag).mustBe(18);new EZ(ap.flag).mustBeExported();ar=$clone(ap,EY).recv(true);$s=1;case 1:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}aq=ar;an=aq[0];ao=aq[1];$s=-1;return[an,ao];}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.TryRecv};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.TryRecv=function(){return this.$val.TryRecv();};EY.ptr.prototype.TrySend=function(an){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;new EZ(ao.flag).mustBe(18);new EZ(ao.flag).mustBeExported();ap=$clone(ao,EY).send($clone(an,EY),true);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.TrySend};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.TrySend=function(an){return this.$val.TrySend(an);};EY.ptr.prototype.Type=function(){var an,ao,ap,aq,ar,as,at,au;an=this;ao=an.flag;if(ao===0){$panic(new FC.ptr("reflect.Value.Type",0));}if(((ao&512)>>>0)===0){return an.typ;}ap=((an.flag>>0))>>10>>0;if(an.typ.Kind()===20){aq=(an.typ.kindType);if(((ap>>>0))>=((aq.methods.$length>>>0))){$panic(new $String("reflect: internal error: invalid method index"));}as=(ar=aq.methods,((ap<0||ap>=ar.$length)?($throwRuntimeError("index out of range"),undefined):ar.$array[ar.$offset+ap]));return an.typ.typeOff(as.typ);}at=an.typ.exportedMethods();if(((ap>>>0))>=((at.$length>>>0))){$panic(new $String("reflect: internal error: invalid method index"));}au=$clone(((ap<0||ap>=at.$length)?($throwRuntimeError("index out of range"),undefined):at.$array[at.$offset+ap]),CG);return an.typ.typeOff(au.mtyp);};EY.prototype.Type=function(){return this.$val.Type();};EY.ptr.prototype.Uint=function(){var an,ao,ap,aq,ar;an=this;ao=new EZ(an.flag).kind();ap=an.ptr;aq=ao;if(aq===(7)){return(new $Uint64(0,(ap).$get()));}else if(aq===(8)){return(new $Uint64(0,(ap).$get()));}else if(aq===(9)){return(new $Uint64(0,(ap).$get()));}else if(aq===(10)){return(new $Uint64(0,(ap).$get()));}else if(aq===(11)){return(ap).$get();}else if(aq===(12)){return((ar=(ap).$get(),new $Uint64(0,ar.constructor===Number?ar:1)));}$panic(new FC.ptr("reflect.Value.Uint",new EZ(an.flag).kind()));};EY.prototype.Uint=function(){return this.$val.Uint();};EY.ptr.prototype.UnsafeAddr=function(){var an;an=this;if(an.typ===HR.nil){$panic(new FC.ptr("reflect.Value.UnsafeAddr",0));}if(((an.flag&256)>>>0)===0){$panic(new $String("reflect.Value.UnsafeAddr of unaddressable value"));}return(an.ptr);};EY.prototype.UnsafeAddr=function(){return this.$val.UnsafeAddr();};GG=function(an){var an,ao,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(!(($clone(an,EY).Kind()===22))){$s=-1;return an;}ao=$clone(an,EY).Elem();$s=1;case 1:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}$s=-1;return ao;}return;}if($f===undefined){$f={$blk:GG};}$f.an=an;$f.ao=ao;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Indirect=GG;GH=function(an){var an,ao,ap,aq;if($interfaceIsEqual(an,$ifaceNil)){$panic(new $String("reflect: New(nil)"));}ao=$assertType(an,HR);ap=AL(ao);aq=22;return new EY.ptr(ao.ptrTo(),ap,aq);};$pkg.New=GH;EY.ptr.prototype.Convert=function(an){var an,ao,ap,aq,ar,as,at,au,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ao=this;if(!((((ao.flag&512)>>>0)===0))){$s=1;continue;}$s=2;continue;case 1:ap=BI("Convert",$clone(ao,EY));$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}ao=ap;case 2:aq=an.common();$s=4;case 4:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=GJ(aq,ao.typ);$s=5;case 5:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=ar;if(as===$throwNilPointerError){$s=6;continue;}$s=7;continue;case 6:at=an.String();$s=8;case 8:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$panic(new $String("reflect.Value.Convert: value of type "+ao.typ.String()+" cannot be converted to type "+at));case 7:au=as($clone(ao,EY),an);$s=9;case 9:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}$s=-1;return au;}return;}if($f===undefined){$f={$blk:EY.ptr.prototype.Convert};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.$s=$s;$f.$r=$r;return $f;};EY.prototype.Convert=function(an){return this.$val.Convert(an);};GJ=function(an,ao){var an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=ao.Kind();if((ap===(2))||(ap===(3))||(ap===(4))||(ap===(5))||(ap===(6))){$s=2;continue;}if((ap===(7))||(ap===(8))||(ap===(9))||(ap===(10))||(ap===(11))||(ap===(12))){$s=3;continue;}if((ap===(13))||(ap===(14))){$s=4;continue;}if((ap===(15))||(ap===(16))){$s=5;continue;}if(ap===(24)){$s=6;continue;}if(ap===(23)){$s=7;continue;}$s=8;continue;case 2:aq=an.Kind();if((aq===(2))||(aq===(3))||(aq===(4))||(aq===(5))||(aq===(6))||(aq===(7))||(aq===(8))||(aq===(9))||(aq===(10))||(aq===(11))||(aq===(12))){$s=-1;return GP;}else if((aq===(13))||(aq===(14))){$s=-1;return GT;}else if(aq===(24)){$s=-1;return GX;}$s=8;continue;case 3:ar=an.Kind();if((ar===(2))||(ar===(3))||(ar===(4))||(ar===(5))||(ar===(6))||(ar===(7))||(ar===(8))||(ar===(9))||(ar===(10))||(ar===(11))||(ar===(12))){$s=-1;return GQ;}else if((ar===(13))||(ar===(14))){$s=-1;return GU;}else if(ar===(24)){$s=-1;return GY;}$s=8;continue;case 4:as=an.Kind();if((as===(2))||(as===(3))||(as===(4))||(as===(5))||(as===(6))){$s=-1;return GR;}else if((as===(7))||(as===(8))||(as===(9))||(as===(10))||(as===(11))||(as===(12))){$s=-1;return GS;}else if((as===(13))||(as===(14))){$s=-1;return GV;}$s=8;continue;case 5:at=an.Kind();if((at===(15))||(at===(16))){$s=-1;return GW;}$s=8;continue;case 6:if(!(an.Kind()===23)){au=false;$s=11;continue s;}av=an.Elem().PkgPath();$s=12;case 12:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}au=av==="";case 11:if(au){$s=9;continue;}$s=10;continue;case 9:aw=an.Elem().Kind();$s=14;case 14:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}ax=aw;if(ax===(8)){$s=-1;return HA;}else if(ax===(5)){$s=-1;return HC;}case 13:case 10:$s=8;continue;case 7:if(!(an.Kind()===24)){ay=false;$s=17;continue s;}az=ao.Elem().PkgPath();$s=18;case 18:if($c){$c=false;az=az.$blk();}if(az&&az.$blk!==undefined){break s;}ay=az==="";case 17:if(ay){$s=15;continue;}$s=16;continue;case 15:ba=ao.Elem().Kind();$s=20;case 20:if($c){$c=false;ba=ba.$blk();}if(ba&&ba.$blk!==undefined){break s;}bb=ba;if(bb===(8)){$s=-1;return GZ;}else if(bb===(5)){$s=-1;return HB;}case 19:case 16:case 8:case 1:bc=DP(an,ao,false);$s=23;case 23:if($c){$c=false;bc=bc.$blk();}if(bc&&bc.$blk!==undefined){break s;}if(bc){$s=21;continue;}$s=22;continue;case 21:$s=-1;return BC;case 22:if(!((an.Kind()===22)&&an.Name()===""&&(ao.Kind()===22)&&ao.Name()==="")){bd=false;$s=26;continue s;}be=an.Elem().common();$s=27;case 27:if($c){$c=false;be=be.$blk();}if(be&&be.$blk!==undefined){break s;}bf=be;bg=ao.Elem().common();$s=28;case 28:if($c){$c=false;bg=bg.$blk();}if(bg&&bg.$blk!==undefined){break s;}bh=bg;bi=DP(bf,bh,false);$s=29;case 29:if($c){$c=false;bi=bi.$blk();}if(bi&&bi.$blk!==undefined){break s;}bd=bi;case 26:if(bd){$s=24;continue;}$s=25;continue;case 24:$s=-1;return BC;case 25:if(DM(an,ao)){if(ao.Kind()===20){$s=-1;return HE;}$s=-1;return HD;}$s=-1;return $throwNilPointerError;}return;}if($f===undefined){$f={$blk:GJ};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.$s=$s;$f.$r=$r;return $f;};GK=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=ap.common();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;as=AL(ar);at=ar.size;if(at===(4)){(as).$set(($fround(ao)));}else if(at===(8)){(as).$set(ao);}$s=-1;return new EY.ptr(ar,as,(((an|128)>>>0)|((ar.Kind()>>>0)))>>>0);}return;}if($f===undefined){$f={$blk:GK};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};GL=function(an,ao,ap){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=ap.common();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;as=AL(ar);at=ar.size;if(at===(8)){(as).$set((new $Complex64(ao.$real,ao.$imag)));}else if(at===(16)){(as).$set(ao);}$s=-1;return new EY.ptr(ar,as,(((an|128)>>>0)|((ar.Kind()>>>0)))>>>0);}return;}if($f===undefined){$f={$blk:GL};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};GM=function(an,ao,ap){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=$clone(GH(ap),EY).Elem();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;$clone(ar,EY).SetString(ao);ar.flag=(((ar.flag&~256)>>>0)|an)>>>0;$s=-1;return ar;}return;}if($f===undefined){$f={$blk:GM};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};GN=function(an,ao,ap){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=$clone(GH(ap),EY).Elem();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;$r=$clone(ar,EY).SetBytes(ao);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}ar.flag=(((ar.flag&~256)>>>0)|an)>>>0;$s=-1;return ar;}return;}if($f===undefined){$f={$blk:GN};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};GO=function(an,ao,ap){var an,ao,ap,aq,ar,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=$clone(GH(ap),EY).Elem();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;$r=$clone(ar,EY).setRunes(ao);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}ar.flag=(((ar.flag&~256)>>>0)|an)>>>0;$s=-1;return ar;}return;}if($f===undefined){$f={$blk:GO};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.$s=$s;$f.$r=$r;return $f;};GP=function(an,ao){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=AM(new EZ(an.flag).ro(),((ap=$clone(an,EY).Int(),new $Uint64(ap.$high,ap.$low))),ao);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq;}return;}if($f===undefined){$f={$blk:GP};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};GQ=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=AM(new EZ(an.flag).ro(),$clone(an,EY).Uint(),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GQ};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GR=function(an,ao){var an,ao,ap,aq,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:aq=AM(new EZ(an.flag).ro(),((ap=(new $Int64(0,$clone(an,EY).Float())),new $Uint64(ap.$high,ap.$low))),ao);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}$s=-1;return aq;}return;}if($f===undefined){$f={$blk:GR};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.$s=$s;$f.$r=$r;return $f;};GS=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=AM(new EZ(an.flag).ro(),(new $Uint64(0,$clone(an,EY).Float())),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GS};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GT=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=GK(new EZ(an.flag).ro(),($flatten64($clone(an,EY).Int())),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GT};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GU=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=GK(new EZ(an.flag).ro(),($flatten64($clone(an,EY).Uint())),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GU};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GV=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=GK(new EZ(an.flag).ro(),$clone(an,EY).Float(),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GV};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GW=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=GL(new EZ(an.flag).ro(),$clone(an,EY).Complex(),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GW};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GX=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=GM(new EZ(an.flag).ro(),($encodeRune($clone(an,EY).Int().$low)),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GX};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GY=function(an,ao){var an,ao,ap,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=GM(new EZ(an.flag).ro(),($encodeRune($clone(an,EY).Uint().$low)),ao);$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}$s=-1;return ap;}return;}if($f===undefined){$f={$blk:GY};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.$s=$s;$f.$r=$r;return $f;};GZ=function(an,ao){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=new EZ(an.flag).ro();aq=$clone(an,EY).Bytes();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=($bytesToString(aq));as=ao;at=GM(ap,ar,as);$s=2;case 2:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return at;}return;}if($f===undefined){$f={$blk:GZ};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};HA=function(an,ao){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=new EZ(an.flag).ro();aq=$clone(an,EY).String();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=(new IU($stringToBytes(aq)));as=ao;at=GN(ap,ar,as);$s=2;case 2:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return at;}return;}if($f===undefined){$f={$blk:HA};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};HB=function(an,ao){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=new EZ(an.flag).ro();aq=$clone(an,EY).runes();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=($runesToString(aq));as=ao;at=GM(ap,ar,as);$s=2;case 2:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return at;}return;}if($f===undefined){$f={$blk:HB};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};HC=function(an,ao){var an,ao,ap,aq,ar,as,at,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=new EZ(an.flag).ro();aq=$clone(an,EY).String();$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=(new JE($stringToRunes(aq)));as=ao;at=GO(ap,ar,as);$s=2;case 2:if($c){$c=false;at=at.$blk();}if(at&&at.$blk!==undefined){break s;}$s=-1;return at;}return;}if($f===undefined){$f={$blk:HC};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.$s=$s;$f.$r=$r;return $f;};HD=function(an,ao){var an,ao,ap,aq,ar,as,at,au,av,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:ap=ao.common();$s=1;case 1:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}aq=AL(ap);$s=2;case 2:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;as=BF($clone(an,EY),false);$s=3;case 3:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}at=as;au=ao.NumMethod();$s=7;case 7:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}if(au===0){$s=4;continue;}$s=5;continue;case 4:(ar).$set(at);$s=6;continue;case 5:BG($assertType(ao,HR),at,ar);case 6:av=ao.common();$s=8;case 8:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}$s=-1;return new EY.ptr(av,ar,(((new EZ(an.flag).ro()|128)>>>0)|20)>>>0);}return;}if($f===undefined){$f={$blk:HD};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.$s=$s;$f.$r=$r;return $f;};HE=function(an,ao){var an,ao,ap,aq,ar,as,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if($clone(an,EY).IsNil()){$s=1;continue;}$s=2;continue;case 1:ap=AK(ao);$s=3;case 3:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}aq=ap;aq.flag=(aq.flag|(new EZ(an.flag).ro()))>>>0;$s=-1;return aq;case 2:ar=$clone(an,EY).Elem();$s=4;case 4:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=HD($clone(ar,EY),ao);$s=5;case 5:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}$s=-1;return as;}return;}if($f===undefined){$f={$blk:HE};}$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.$s=$s;$f.$r=$r;return $f;};IE.methods=[{prop:"methods",name:"methods",pkg:"reflect",typ:$funcType([],[IB],false)},{prop:"exportedMethods",name:"exportedMethods",pkg:"reflect",typ:$funcType([],[IB],false)}];IK.methods=[{prop:"in$",name:"in",pkg:"reflect",typ:$funcType([],[HS],false)},{prop:"out",name:"out",pkg:"reflect",typ:$funcType([],[HS],false)}];Q.methods=[{prop:"name",name:"name",pkg:"reflect",typ:$funcType([],[$String],false)},{prop:"tag",name:"tag",pkg:"reflect",typ:$funcType([],[$String],false)},{prop:"pkgPath",name:"pkgPath",pkg:"reflect",typ:$funcType([],[$String],false)},{prop:"isExported",name:"isExported",pkg:"reflect",typ:$funcType([],[$Bool],false)},{prop:"data",name:"data",pkg:"reflect",typ:$funcType([$Int,$String],[IA],false)},{prop:"nameLen",name:"nameLen",pkg:"reflect",typ:$funcType([],[$Int],false)},{prop:"tagLen",name:"tagLen",pkg:"reflect",typ:$funcType([],[$Int],false)}];IJ.methods=[{prop:"skipUntilValidKey",name:"skipUntilValidKey",pkg:"reflect",typ:$funcType([],[],false)}];CC.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];HR.methods=[{prop:"uncommon",name:"uncommon",pkg:"reflect",typ:$funcType([],[IE],false)},{prop:"nameOff",name:"nameOff",pkg:"reflect",typ:$funcType([DB],[Q],false)},{prop:"typeOff",name:"typeOff",pkg:"reflect",typ:$funcType([DC],[HR],false)},{prop:"ptrTo",name:"ptrTo",pkg:"reflect",typ:$funcType([],[HR],false)},{prop:"pointers",name:"pointers",pkg:"reflect",typ:$funcType([],[$Bool],false)},{prop:"Comparable",name:"Comparable",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Method",name:"Method",pkg:"",typ:$funcType([$Int],[CS],false)},{prop:"textOff",name:"textOff",pkg:"reflect",typ:$funcType([DD],[$UnsafePointer],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Size",name:"Size",pkg:"",typ:$funcType([],[$Uintptr],false)},{prop:"Bits",name:"Bits",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Align",name:"Align",pkg:"",typ:$funcType([],[$Int],false)},{prop:"FieldAlign",name:"FieldAlign",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Kind",name:"Kind",pkg:"",typ:$funcType([],[CC],false)},{prop:"common",name:"common",pkg:"reflect",typ:$funcType([],[HR],false)},{prop:"exportedMethods",name:"exportedMethods",pkg:"reflect",typ:$funcType([],[IB],false)},{prop:"NumMethod",name:"NumMethod",pkg:"",typ:$funcType([],[$Int],false)},{prop:"MethodByName",name:"MethodByName",pkg:"",typ:$funcType([$String],[CS,$Bool],false)},{prop:"PkgPath",name:"PkgPath",pkg:"",typ:$funcType([],[$String],false)},{prop:"Name",name:"Name",pkg:"",typ:$funcType([],[$String],false)},{prop:"ChanDir",name:"ChanDir",pkg:"",typ:$funcType([],[CH],false)},{prop:"IsVariadic",name:"IsVariadic",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Elem",name:"Elem",pkg:"",typ:$funcType([],[CB],false)},{prop:"Field",name:"Field",pkg:"",typ:$funcType([$Int],[DG],false)},{prop:"FieldByIndex",name:"FieldByIndex",pkg:"",typ:$funcType([IR],[DG],false)},{prop:"FieldByName",name:"FieldByName",pkg:"",typ:$funcType([$String],[DG,$Bool],false)},{prop:"FieldByNameFunc",name:"FieldByNameFunc",pkg:"",typ:$funcType([JG],[DG,$Bool],false)},{prop:"In",name:"In",pkg:"",typ:$funcType([$Int],[CB],false)},{prop:"Key",name:"Key",pkg:"",typ:$funcType([],[CB],false)},{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"NumField",name:"NumField",pkg:"",typ:$funcType([],[$Int],false)},{prop:"NumIn",name:"NumIn",pkg:"",typ:$funcType([],[$Int],false)},{prop:"NumOut",name:"NumOut",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Out",name:"Out",pkg:"",typ:$funcType([$Int],[CB],false)},{prop:"Implements",name:"Implements",pkg:"",typ:$funcType([CB],[$Bool],false)},{prop:"AssignableTo",name:"AssignableTo",pkg:"",typ:$funcType([CB],[$Bool],false)},{prop:"ConvertibleTo",name:"ConvertibleTo",pkg:"",typ:$funcType([CB],[$Bool],false)}];CH.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];IP.methods=[{prop:"Method",name:"Method",pkg:"",typ:$funcType([$Int],[CS],false)},{prop:"NumMethod",name:"NumMethod",pkg:"",typ:$funcType([],[$Int],false)},{prop:"MethodByName",name:"MethodByName",pkg:"",typ:$funcType([$String],[CS,$Bool],false)}];JJ.methods=[{prop:"offset",name:"offset",pkg:"reflect",typ:$funcType([],[$Uintptr],false)},{prop:"embedded",name:"embedded",pkg:"reflect",typ:$funcType([],[$Bool],false)}];IT.methods=[{prop:"Field",name:"Field",pkg:"",typ:$funcType([$Int],[DG],false)},{prop:"FieldByIndex",name:"FieldByIndex",pkg:"",typ:$funcType([IR],[DG],false)},{prop:"FieldByNameFunc",name:"FieldByNameFunc",pkg:"",typ:$funcType([JG],[DG,$Bool],false)},{prop:"FieldByName",name:"FieldByName",pkg:"",typ:$funcType([$String],[DG,$Bool],false)}];DH.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([$String],[$String],false)},{prop:"Lookup",name:"Lookup",pkg:"",typ:$funcType([$String],[$String,$Bool],false)}];EY.methods=[{prop:"object",name:"object",pkg:"reflect",typ:$funcType([],[HW],false)},{prop:"assignTo",name:"assignTo",pkg:"reflect",typ:$funcType([$String,HR,$UnsafePointer],[EY],false)},{prop:"call",name:"call",pkg:"reflect",typ:$funcType([$String,II],[II],false)},{prop:"Cap",name:"Cap",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Elem",name:"Elem",pkg:"",typ:$funcType([],[EY],false)},{prop:"Field",name:"Field",pkg:"",typ:$funcType([$Int],[EY],false)},{prop:"Index",name:"Index",pkg:"",typ:$funcType([$Int],[EY],false)},{prop:"InterfaceData",name:"InterfaceData",pkg:"",typ:$funcType([],[JQ],false)},{prop:"IsNil",name:"IsNil",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Pointer",name:"Pointer",pkg:"",typ:$funcType([],[$Uintptr],false)},{prop:"Set",name:"Set",pkg:"",typ:$funcType([EY],[],false)},{prop:"SetBytes",name:"SetBytes",pkg:"",typ:$funcType([IU],[],false)},{prop:"SetCap",name:"SetCap",pkg:"",typ:$funcType([$Int],[],false)},{prop:"SetLen",name:"SetLen",pkg:"",typ:$funcType([$Int],[],false)},{prop:"Slice",name:"Slice",pkg:"",typ:$funcType([$Int,$Int],[EY],false)},{prop:"Slice3",name:"Slice3",pkg:"",typ:$funcType([$Int,$Int,$Int],[EY],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[],false)},{prop:"pointer",name:"pointer",pkg:"reflect",typ:$funcType([],[$UnsafePointer],false)},{prop:"Addr",name:"Addr",pkg:"",typ:$funcType([],[EY],false)},{prop:"Bool",name:"Bool",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Bytes",name:"Bytes",pkg:"",typ:$funcType([],[IU],false)},{prop:"runes",name:"runes",pkg:"reflect",typ:$funcType([],[JE],false)},{prop:"CanAddr",name:"CanAddr",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"CanSet",name:"CanSet",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Call",name:"Call",pkg:"",typ:$funcType([II],[II],false)},{prop:"CallSlice",name:"CallSlice",pkg:"",typ:$funcType([II],[II],false)},{prop:"Complex",name:"Complex",pkg:"",typ:$funcType([],[$Complex128],false)},{prop:"FieldByIndex",name:"FieldByIndex",pkg:"",typ:$funcType([IR],[EY],false)},{prop:"FieldByName",name:"FieldByName",pkg:"",typ:$funcType([$String],[EY],false)},{prop:"FieldByNameFunc",name:"FieldByNameFunc",pkg:"",typ:$funcType([JG],[EY],false)},{prop:"Float",name:"Float",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Int",name:"Int",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"CanInterface",name:"CanInterface",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Interface",name:"Interface",pkg:"",typ:$funcType([],[$emptyInterface],false)},{prop:"IsValid",name:"IsValid",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Kind",name:"Kind",pkg:"",typ:$funcType([],[CC],false)},{prop:"MapIndex",name:"MapIndex",pkg:"",typ:$funcType([EY],[EY],false)},{prop:"MapKeys",name:"MapKeys",pkg:"",typ:$funcType([],[II],false)},{prop:"MapRange",name:"MapRange",pkg:"",typ:$funcType([],[JR],false)},{prop:"Method",name:"Method",pkg:"",typ:$funcType([$Int],[EY],false)},{prop:"NumMethod",name:"NumMethod",pkg:"",typ:$funcType([],[$Int],false)},{prop:"MethodByName",name:"MethodByName",pkg:"",typ:$funcType([$String],[EY],false)},{prop:"NumField",name:"NumField",pkg:"",typ:$funcType([],[$Int],false)},{prop:"OverflowComplex",name:"OverflowComplex",pkg:"",typ:$funcType([$Complex128],[$Bool],false)},{prop:"OverflowFloat",name:"OverflowFloat",pkg:"",typ:$funcType([$Float64],[$Bool],false)},{prop:"OverflowInt",name:"OverflowInt",pkg:"",typ:$funcType([$Int64],[$Bool],false)},{prop:"OverflowUint",name:"OverflowUint",pkg:"",typ:$funcType([$Uint64],[$Bool],false)},{prop:"Recv",name:"Recv",pkg:"",typ:$funcType([],[EY,$Bool],false)},{prop:"recv",name:"recv",pkg:"reflect",typ:$funcType([$Bool],[EY,$Bool],false)},{prop:"Send",name:"Send",pkg:"",typ:$funcType([EY],[],false)},{prop:"send",name:"send",pkg:"reflect",typ:$funcType([EY,$Bool],[$Bool],false)},{prop:"SetBool",name:"SetBool",pkg:"",typ:$funcType([$Bool],[],false)},{prop:"setRunes",name:"setRunes",pkg:"reflect",typ:$funcType([JE],[],false)},{prop:"SetComplex",name:"SetComplex",pkg:"",typ:$funcType([$Complex128],[],false)},{prop:"SetFloat",name:"SetFloat",pkg:"",typ:$funcType([$Float64],[],false)},{prop:"SetInt",name:"SetInt",pkg:"",typ:$funcType([$Int64],[],false)},{prop:"SetMapIndex",name:"SetMapIndex",pkg:"",typ:$funcType([EY,EY],[],false)},{prop:"SetUint",name:"SetUint",pkg:"",typ:$funcType([$Uint64],[],false)},{prop:"SetPointer",name:"SetPointer",pkg:"",typ:$funcType([$UnsafePointer],[],false)},{prop:"SetString",name:"SetString",pkg:"",typ:$funcType([$String],[],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"TryRecv",name:"TryRecv",pkg:"",typ:$funcType([],[EY,$Bool],false)},{prop:"TrySend",name:"TrySend",pkg:"",typ:$funcType([EY],[$Bool],false)},{prop:"Type",name:"Type",pkg:"",typ:$funcType([],[CB],false)},{prop:"Uint",name:"Uint",pkg:"",typ:$funcType([],[$Uint64],false)},{prop:"UnsafeAddr",name:"UnsafeAddr",pkg:"",typ:$funcType([],[$Uintptr],false)},{prop:"Convert",name:"Convert",pkg:"",typ:$funcType([CB],[EY],false)}];EZ.methods=[{prop:"kind",name:"kind",pkg:"reflect",typ:$funcType([],[CC],false)},{prop:"ro",name:"ro",pkg:"reflect",typ:$funcType([],[EZ],false)},{prop:"mustBe",name:"mustBe",pkg:"reflect",typ:$funcType([CC],[],false)},{prop:"mustBeExported",name:"mustBeExported",pkg:"reflect",typ:$funcType([],[],false)},{prop:"mustBeAssignable",name:"mustBeAssignable",pkg:"reflect",typ:$funcType([],[],false)}];JS.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];JR.methods=[{prop:"Key",name:"Key",pkg:"",typ:$funcType([],[EY],false)},{prop:"Value",name:"Value",pkg:"",typ:$funcType([],[EY],false)},{prop:"Next",name:"Next",pkg:"",typ:$funcType([],[$Bool],false)}];N.init("reflect",[{prop:"pkgPath",name:"pkgPath",embedded:false,exported:false,typ:DB,tag:""},{prop:"mcount",name:"mcount",embedded:false,exported:false,typ:$Uint16,tag:""},{prop:"xcount",name:"xcount",embedded:false,exported:false,typ:$Uint16,tag:""},{prop:"moff",name:"moff",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"_methods",name:"_methods",embedded:false,exported:false,typ:IB,tag:""}]);P.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:"reflect:\"func\""},{prop:"inCount",name:"inCount",embedded:false,exported:false,typ:$Uint16,tag:""},{prop:"outCount",name:"outCount",embedded:false,exported:false,typ:$Uint16,tag:""},{prop:"_in",name:"_in",embedded:false,exported:false,typ:HS,tag:""},{prop:"_out",name:"_out",embedded:false,exported:false,typ:HS,tag:""}]);Q.init("reflect",[{prop:"bytes",name:"bytes",embedded:false,exported:false,typ:IA,tag:""}]);R.init("reflect",[{prop:"name",name:"name",embedded:false,exported:false,typ:$String,tag:""},{prop:"tag",name:"tag",embedded:false,exported:false,typ:$String,tag:""},{prop:"exported",name:"exported",embedded:false,exported:false,typ:$Bool,tag:""}]);AW.init("reflect",[{prop:"t",name:"t",embedded:false,exported:false,typ:CB,tag:""},{prop:"m",name:"m",embedded:false,exported:false,typ:HW,tag:""},{prop:"keys",name:"keys",embedded:false,exported:false,typ:HW,tag:""},{prop:"i",name:"i",embedded:false,exported:false,typ:$Int,tag:""},{prop:"last",name:"last",embedded:false,exported:false,typ:HW,tag:""}]);CB.init([{prop:"Align",name:"Align",pkg:"",typ:$funcType([],[$Int],false)},{prop:"AssignableTo",name:"AssignableTo",pkg:"",typ:$funcType([CB],[$Bool],false)},{prop:"Bits",name:"Bits",pkg:"",typ:$funcType([],[$Int],false)},{prop:"ChanDir",name:"ChanDir",pkg:"",typ:$funcType([],[CH],false)},{prop:"Comparable",name:"Comparable",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"ConvertibleTo",name:"ConvertibleTo",pkg:"",typ:$funcType([CB],[$Bool],false)},{prop:"Elem",name:"Elem",pkg:"",typ:$funcType([],[CB],false)},{prop:"Field",name:"Field",pkg:"",typ:$funcType([$Int],[DG],false)},{prop:"FieldAlign",name:"FieldAlign",pkg:"",typ:$funcType([],[$Int],false)},{prop:"FieldByIndex",name:"FieldByIndex",pkg:"",typ:$funcType([IR],[DG],false)},{prop:"FieldByName",name:"FieldByName",pkg:"",typ:$funcType([$String],[DG,$Bool],false)},{prop:"FieldByNameFunc",name:"FieldByNameFunc",pkg:"",typ:$funcType([JG],[DG,$Bool],false)},{prop:"Implements",name:"Implements",pkg:"",typ:$funcType([CB],[$Bool],false)},{prop:"In",name:"In",pkg:"",typ:$funcType([$Int],[CB],false)},{prop:"IsVariadic",name:"IsVariadic",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Key",name:"Key",pkg:"",typ:$funcType([],[CB],false)},{prop:"Kind",name:"Kind",pkg:"",typ:$funcType([],[CC],false)},{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Method",name:"Method",pkg:"",typ:$funcType([$Int],[CS],false)},{prop:"MethodByName",name:"MethodByName",pkg:"",typ:$funcType([$String],[CS,$Bool],false)},{prop:"Name",name:"Name",pkg:"",typ:$funcType([],[$String],false)},{prop:"NumField",name:"NumField",pkg:"",typ:$funcType([],[$Int],false)},{prop:"NumIn",name:"NumIn",pkg:"",typ:$funcType([],[$Int],false)},{prop:"NumMethod",name:"NumMethod",pkg:"",typ:$funcType([],[$Int],false)},{prop:"NumOut",name:"NumOut",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Out",name:"Out",pkg:"",typ:$funcType([$Int],[CB],false)},{prop:"PkgPath",name:"PkgPath",pkg:"",typ:$funcType([],[$String],false)},{prop:"Size",name:"Size",pkg:"",typ:$funcType([],[$Uintptr],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"common",name:"common",pkg:"reflect",typ:$funcType([],[HR],false)},{prop:"uncommon",name:"uncommon",pkg:"reflect",typ:$funcType([],[IE],false)}]);CE.init("reflect",[{prop:"size",name:"size",embedded:false,exported:false,typ:$Uintptr,tag:""},{prop:"ptrdata",name:"ptrdata",embedded:false,exported:false,typ:$Uintptr,tag:""},{prop:"hash",name:"hash",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"tflag",name:"tflag",embedded:false,exported:false,typ:CD,tag:""},{prop:"align",name:"align",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"fieldAlign",name:"fieldAlign",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"kind",name:"kind",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"alg",name:"alg",embedded:false,exported:false,typ:HZ,tag:""},{prop:"gcdata",name:"gcdata",embedded:false,exported:false,typ:IA,tag:""},{prop:"str",name:"str",embedded:false,exported:false,typ:DB,tag:""},{prop:"ptrToThis",name:"ptrToThis",embedded:false,exported:false,typ:DC,tag:""}]);CF.init("reflect",[{prop:"hash",name:"hash",embedded:false,exported:false,typ:JH,tag:""},{prop:"equal",name:"equal",embedded:false,exported:false,typ:JI,tag:""}]);CG.init("reflect",[{prop:"name",name:"name",embedded:false,exported:false,typ:DB,tag:""},{prop:"mtyp",name:"mtyp",embedded:false,exported:false,typ:DC,tag:""},{prop:"ifn",name:"ifn",embedded:false,exported:false,typ:DD,tag:""},{prop:"tfn",name:"tfn",embedded:false,exported:false,typ:DD,tag:""}]);CI.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"elem",name:"elem",embedded:false,exported:false,typ:HR,tag:""},{prop:"slice",name:"slice",embedded:false,exported:false,typ:HR,tag:""},{prop:"len",name:"len",embedded:false,exported:false,typ:$Uintptr,tag:""}]);CJ.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"elem",name:"elem",embedded:false,exported:false,typ:HR,tag:""},{prop:"dir",name:"dir",embedded:false,exported:false,typ:$Uintptr,tag:""}]);CK.init("reflect",[{prop:"name",name:"name",embedded:false,exported:false,typ:DB,tag:""},{prop:"typ",name:"typ",embedded:false,exported:false,typ:DC,tag:""}]);CL.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"pkgPath",name:"pkgPath",embedded:false,exported:false,typ:Q,tag:""},{prop:"methods",name:"methods",embedded:false,exported:false,typ:IC,tag:""}]);CM.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"key",name:"key",embedded:false,exported:false,typ:HR,tag:""},{prop:"elem",name:"elem",embedded:false,exported:false,typ:HR,tag:""},{prop:"bucket",name:"bucket",embedded:false,exported:false,typ:HR,tag:""},{prop:"keysize",name:"keysize",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"valuesize",name:"valuesize",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"bucketsize",name:"bucketsize",embedded:false,exported:false,typ:$Uint16,tag:""},{prop:"flags",name:"flags",embedded:false,exported:false,typ:$Uint32,tag:""}]);CN.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"elem",name:"elem",embedded:false,exported:false,typ:HR,tag:""}]);CO.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"elem",name:"elem",embedded:false,exported:false,typ:HR,tag:""}]);CP.init("reflect",[{prop:"name",name:"name",embedded:false,exported:false,typ:Q,tag:""},{prop:"typ",name:"typ",embedded:false,exported:false,typ:HR,tag:""},{prop:"offsetEmbed",name:"offsetEmbed",embedded:false,exported:false,typ:$Uintptr,tag:""}]);CQ.init("reflect",[{prop:"rtype",name:"rtype",embedded:true,exported:false,typ:CE,tag:""},{prop:"pkgPath",name:"pkgPath",embedded:false,exported:false,typ:Q,tag:""},{prop:"fields",name:"fields",embedded:false,exported:false,typ:ID,tag:""}]);CS.init("",[{prop:"Name",name:"Name",embedded:false,exported:true,typ:$String,tag:""},{prop:"PkgPath",name:"PkgPath",embedded:false,exported:true,typ:$String,tag:""},{prop:"Type",name:"Type",embedded:false,exported:true,typ:CB,tag:""},{prop:"Func",name:"Func",embedded:false,exported:true,typ:EY,tag:""},{prop:"Index",name:"Index",embedded:false,exported:true,typ:$Int,tag:""}]);DG.init("",[{prop:"Name",name:"Name",embedded:false,exported:true,typ:$String,tag:""},{prop:"PkgPath",name:"PkgPath",embedded:false,exported:true,typ:$String,tag:""},{prop:"Type",name:"Type",embedded:false,exported:true,typ:CB,tag:""},{prop:"Tag",name:"Tag",embedded:false,exported:true,typ:DH,tag:""},{prop:"Offset",name:"Offset",embedded:false,exported:true,typ:$Uintptr,tag:""},{prop:"Index",name:"Index",embedded:false,exported:true,typ:IR,tag:""},{prop:"Anonymous",name:"Anonymous",embedded:false,exported:true,typ:$Bool,tag:""}]);DI.init("reflect",[{prop:"typ",name:"typ",embedded:false,exported:false,typ:IT,tag:""},{prop:"index",name:"index",embedded:false,exported:false,typ:IR,tag:""}]);EY.init("reflect",[{prop:"typ",name:"typ",embedded:false,exported:false,typ:HR,tag:""},{prop:"ptr",name:"ptr",embedded:false,exported:false,typ:$UnsafePointer,tag:""},{prop:"flag",name:"flag",embedded:true,exported:false,typ:EZ,tag:""}]);FC.init("",[{prop:"Method",name:"Method",embedded:false,exported:true,typ:$String,tag:""},{prop:"Kind",name:"Kind",embedded:false,exported:true,typ:CC,tag:""}]);FM.init("reflect",[{prop:"m",name:"m",embedded:false,exported:false,typ:EY,tag:""},{prop:"it",name:"it",embedded:false,exported:false,typ:$UnsafePointer,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}U=HQ.nil;W=HS.nil;I=false;O={};S={};BJ=$assertType($internalize($call,$emptyInterface),HX);BO=$assertType($internalize($select,$emptyInterface),HX);BK=L($jsObjectPtr);CT=new HY(["invalid","bool","int","int8","int16","int32","int64","uint","uint8","uint16","uint32","uint64","uintptr","float32","float64","complex64","complex128","array","chan","func","interface","map","ptr","slice","string","struct","unsafe.Pointer"]);FL=$assertType(AD(new $Uint8(0)),HR);$r=J();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["sort"]=(function(){var $pkg={},$init,A,I,T,Z,AW,B,E,J,K,L,M,N,O,P,Q,R,U,AC,AG,AH,AI,AJ;A=$packages["reflect"];I=$pkg.Interface=$newType(8,$kindInterface,"sort.Interface",true,"sort",true,null);T=$pkg.reverse=$newType(0,$kindStruct,"sort.reverse",true,"sort",false,function(Interface_){this.$val=this;if(arguments.length===0){this.Interface=$ifaceNil;return;}this.Interface=Interface_;});Z=$pkg.StringSlice=$newType(12,$kindSlice,"sort.StringSlice",true,"sort",true,null);AW=$sliceType($String);B=function(a,b){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=0;d=a;e=c;f=d;case 1:if(!(e>0)>>>0))>>>1>>>0)>>0));h=b(g);$s=6;case 6:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if(!h){$s=3;continue;}$s=4;continue;case 3:e=g+1>>0;$s=5;continue;case 4:f=g;case 5:$s=1;continue;case 2:$s=-1;return e;}return;}if($f===undefined){$f={$blk:B};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Search=B;E=function(a,b){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];c=B(a[0].$length,(function(a,b){return function(c){var c;return((c<0||c>=a[0].$length)?($throwRuntimeError("index out of range"),undefined):a[0].$array[a[0].$offset+c])>=b[0];};})(a,b));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:E};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};$pkg.SearchStrings=E;Z.prototype.Search=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=E($subslice(new AW(b.$array),b.$offset,b.$offset+b.$length),a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:Z.prototype.Search};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(Z).prototype.Search=function(a){return this.$get().Search(a);};J=function(a,b,c){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=b+1>>0;case 1:if(!(db)){f=false;$s=5;continue s;}g=a.Less(e,e-1>>0);$s=6;case 6:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;case 5:if(!(f)){$s=4;continue;}$r=a.Swap(e,e-1>>0);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=e-(1)>>0;$s=3;continue;case 4:d=d+(1)>>0;$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:J};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};K=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=b;case 1:f=($imul(2,e))+1>>0;if(f>=c){$s=2;continue;}if(!((f+1>>0)>0,(d+f>>0)+1>>0);$s=6;case 6:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;case 5:if(g){$s=3;continue;}$s=4;continue;case 3:f=f+(1)>>0;case 4:i=a.Less(d+e>>0,d+f>>0);$s=9;case 9:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}if(!i){$s=7;continue;}$s=8;continue;case 7:$s=-1;return;case 8:$r=a.Swap(d+e>>0,d+f>>0);$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=f;$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:K};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};L=function(a,b,c){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=b;e=0;f=c-b>>0;h=(g=((f-1>>0))/2,(g===g&&g!==1/0&&g!==-1/0)?g>>0:$throwRuntimeError("integer divide by zero"));case 1:if(!(h>=0)){$s=2;continue;}$r=K(a,h,f,d);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}h=h-(1)>>0;$s=1;continue;case 2:i=f-1>>0;case 4:if(!(i>=0)){$s=5;continue;}$r=a.Swap(d,d+i>>0);$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=K(a,e,i,d);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=i-(1)>>0;$s=4;continue;case 5:$s=-1;return;}return;}if($f===undefined){$f={$blk:L};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};M=function(a,b,c,d){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=a.Less(b,c);$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}if(e){$s=1;continue;}$s=2;continue;case 1:$r=a.Swap(b,c);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:f=a.Less(d,b);$s=7;case 7:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}if(f){$s=5;continue;}$s=6;continue;case 5:$r=a.Swap(d,b);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}g=a.Less(b,c);$s=11;case 11:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}if(g){$s=9;continue;}$s=10;continue;case 9:$r=a.Swap(b,c);$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 10:case 6:$s=-1;return;}return;}if($f===undefined){$f={$blk:M};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};N=function(a,b,c,d){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=0;case 1:if(!(e>0,c+e>>0);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=e+(1)>>0;$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:N};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};O=function(a,b,c){var a,aa,ab,ac,ad,ae,af,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=0;f=((((((b+c>>0)>>>0))>>>1>>>0)>>0));if((c-b>>0)>40){$s=1;continue;}$s=2;continue;case 1:h=(g=((c-b>>0))/8,(g===g&&g!==1/0&&g!==-1/0)?g>>0:$throwRuntimeError("integer divide by zero"));$r=M(a,b,b+h>>0,b+($imul(2,h))>>0);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=M(a,f,f-h>>0,f+h>>0);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=M(a,c-1>>0,(c-1>>0)-h>>0,(c-1>>0)-($imul(2,h))>>0);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:$r=M(a,b,f,c-1>>0);$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=b;j=b+1>>0;k=c-1>>0;l=j;m=k;case 7:if(!(l>0;$s=7;continue;case 8:p=l;case 11:case 13:if(!(p>0;$s=13;continue;case 14:case 17:if(!(p>0);$s=20;case 20:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}s=t;case 19:if(!(s)){$s=18;continue;}m=m-(1)>>0;$s=17;continue;case 18:if(p>=m){$s=12;continue;}$r=a.Swap(p,m-1>>0);$s=21;case 21:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}p=p+(1)>>0;m=m-(1)>>0;$s=11;continue;case 12:u=(c-m>>0)<5;if(!u&&(c-m>>0)<(v=((c-b>>0))/4,(v===v&&v!==1/0&&v!==-1/0)?v>>0:$throwRuntimeError("integer divide by zero"))){$s=22;continue;}$s=23;continue;case 22:w=0;x=a.Less(i,c-1>>0);$s=26;case 26:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}if(!x){$s=24;continue;}$s=25;continue;case 24:$r=a.Swap(m,c-1>>0);$s=27;case 27:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}m=m+(1)>>0;w=w+(1)>>0;case 25:y=a.Less(p-1>>0,i);$s=30;case 30:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}if(!y){$s=28;continue;}$s=29;continue;case 28:p=p-(1)>>0;w=w+(1)>>0;case 29:z=a.Less(f,i);$s=33;case 33:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}if(!z){$s=31;continue;}$s=32;continue;case 31:$r=a.Swap(f,p-1>>0);$s=34;case 34:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}p=p-(1)>>0;w=w+(1)>>0;case 32:u=w>1;case 23:if(u){$s=35;continue;}$s=36;continue;case 35:case 37:case 39:if(!(l>0,i);$s=42;case 42:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}aa=!ab;case 41:if(!(aa)){$s=40;continue;}p=p-(1)>>0;$s=39;continue;case 40:case 43:if(!(l>0;$s=43;continue;case 44:if(l>=p){$s=38;continue;}$r=a.Swap(l,p-1>>0);$s=47;case 47:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}l=l+(1)>>0;p=p-(1)>>0;$s=37;continue;case 38:case 36:$r=a.Swap(i,p-1>>0);$s=48;case 48:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}ae=p-1>>0;af=m;d=ae;e=af;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:O};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};P=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:case 1:if(!((c-b>>0)>12)){$s=2;continue;}if(d===0){$s=3;continue;}$s=4;continue;case 3:$r=L(a,b,c);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 4:d=d-(1)>>0;f=O(a,b,c);$s=6;case 6:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;g=e[0];h=e[1];if((g-b>>0)<(c-h>>0)){$s=7;continue;}$s=8;continue;case 7:$r=P(a,b,g,d);$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b=h;$s=9;continue;case 8:$r=P(a,h,c,d);$s=11;case 11:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=g;case 9:$s=1;continue;case 2:if((c-b>>0)>1){$s=12;continue;}$s=13;continue;case 12:i=b+6>>0;case 14:if(!(i>0);$s=18;case 18:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}if(j){$s=16;continue;}$s=17;continue;case 16:$r=a.Swap(i,i-6>>0);$s=19;case 19:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 17:i=i+(1)>>0;$s=14;continue;case 15:$r=J(a,b,c);$s=20;case 20:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 13:$s=-1;return;}return;}if($f===undefined){$f={$blk:P};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};Q=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=a.Len();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$r=P(a,0,c,R(c));$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:Q};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Sort=Q;R=function(a){var a,b,c;b=0;c=a;while(true){if(!(c>0)){break;}b=b+(1)>>0;c=(c>>$min((1),31))>>0;}return $imul(b,2);};T.ptr.prototype.Less=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.Interface.Less(b,a);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:T.ptr.prototype.Less};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};T.prototype.Less=function(a,b){return this.$val.Less(a,b);};U=function(a){var a;return new T.ptr(a);};$pkg.Reverse=U;Z.prototype.Len=function(){var a;a=this;return a.$length;};$ptrType(Z).prototype.Len=function(){return this.$get().Len();};Z.prototype.Less=function(a,b){var a,b,c;c=this;return((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a])<((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]);};$ptrType(Z).prototype.Less=function(a,b){return this.$get().Less(a,b);};Z.prototype.Swap=function(a,b){var a,b,c,d,e;c=this;d=((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]);e=((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]);((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]=d);((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]=e);};$ptrType(Z).prototype.Swap=function(a,b){return this.$get().Swap(a,b);};Z.prototype.Sort=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;$r=Q(a);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:Z.prototype.Sort};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(Z).prototype.Sort=function(){return this.$get().Sort();};AC=function(a){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=Q(($subslice(new Z(a.$array),a.$offset,a.$offset+a.$length)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AC};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Strings=AC;AG=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=a;c=a.Len();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;$r=AH(b,d);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AG};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Stable=AG;AH=function(a,b){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=20;d=0;e=c;f=d;g=e;case 1:if(!(g<=b)){$s=2;continue;}$r=J(a,f,g);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}f=g;g=g+(c)>>0;$s=1;continue;case 2:$r=J(a,f,b);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 5:if(!(c>0,g);$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}f=g;g=g+(($imul(2,c)))>>0;$s=7;continue;case 8:j=f+c>>0;if(j>0)===1){$s=1;continue;}$s=2;continue;case 1:e=c;f=d;case 3:if(!(e>0)>>>0))>>>1>>>0)>>0));h=a.Less(g,b);$s=8;case 8:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if(h){$s=5;continue;}$s=6;continue;case 5:e=g+1>>0;$s=7;continue;case 6:f=g;case 7:$s=3;continue;case 4:i=b;case 9:if(!(i<(e-1>>0))){$s=10;continue;}$r=a.Swap(i,i+1>>0);$s=11;case 11:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=i+(1)>>0;$s=9;continue;case 10:$s=-1;return;case 2:if((d-c>>0)===1){$s=12;continue;}$s=13;continue;case 12:j=b;k=c;case 14:if(!(j>0)>>>0))>>>1>>>0)>>0));m=a.Less(c,l);$s=19;case 19:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}if(!m){$s=16;continue;}$s=17;continue;case 16:j=l+1>>0;$s=18;continue;case 17:k=l;case 18:$s=14;continue;case 15:n=c;case 20:if(!(n>j)){$s=21;continue;}$r=a.Swap(n,n-1>>0);$s=22;case 22:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}n=n-(1)>>0;$s=20;continue;case 21:$s=-1;return;case 13:o=((((((b+d>>0)>>>0))>>>1>>>0)>>0));p=o+c>>0;q=0;r=0;s=q;t=r;if(c>o){s=p-d>>0;t=o;}else{s=b;t=c;}u=p-1>>0;case 23:if(!(s>0)>>>0))>>>1>>>0)>>0));w=a.Less(u-v>>0,v);$s=28;case 28:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}if(!w){$s=25;continue;}$s=26;continue;case 25:s=v+1>>0;$s=27;continue;case 26:t=v;case 27:$s=23;continue;case 24:x=p-s>>0;if(s>0;f=d-c>>0;case 1:if(!(!((e===f)))){$s=2;continue;}if(e>f){$s=3;continue;}$s=4;continue;case 3:$r=N(a,c-e>>0,c,f);$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=e-(f)>>0;$s=5;continue;case 4:$r=N(a,c-e>>0,(c+f>>0)-e>>0,e);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}f=f-(e)>>0;case 5:$s=1;continue;case 2:$r=N(a,c-e>>0,c,e);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AJ};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};T.methods=[{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)}];Z.methods=[{prop:"Search",name:"Search",pkg:"",typ:$funcType([$String],[$Int],false)},{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)},{prop:"Sort",name:"Sort",pkg:"",typ:$funcType([],[],false)}];I.init([{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)}]);T.init("",[{prop:"Interface",name:"Interface",embedded:true,exported:true,typ:I,tag:""}]);Z.init($String);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/fmtsort"]=(function(){var $pkg={},$init,A,B,C,I,J,D,E,F,G,H;A=$packages["reflect"];B=$packages["sort"];C=$pkg.SortedMap=$newType(0,$kindStruct,"fmtsort.SortedMap",true,"internal/fmtsort",true,function(Key_,Value_){this.$val=this;if(arguments.length===0){this.Key=J.nil;this.Value=J.nil;return;}this.Key=Key_;this.Value=Value_;});I=$ptrType(C);J=$sliceType(A.Value);C.ptr.prototype.Len=function(){var a;a=this;return a.Key.$length;};C.prototype.Len=function(){return this.$val.Len();};C.ptr.prototype.Less=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;f=E($clone((d=c.Key,((a<0||a>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+a])),A.Value),$clone((e=c.Key,((b<0||b>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+b])),A.Value));$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return f<0;}return;}if($f===undefined){$f={$blk:C.ptr.prototype.Less};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};C.prototype.Less=function(a,b){return this.$val.Less(a,b);};C.ptr.prototype.Swap=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;c=this;d=(e=c.Key,((b<0||b>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+b]));f=(g=c.Key,((a<0||a>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+a]));(h=c.Key,((a<0||a>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+a]=d));(i=c.Key,((b<0||b>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+b]=f));j=(k=c.Value,((b<0||b>=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+b]));l=(m=c.Value,((a<0||a>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+a]));(n=c.Value,((a<0||a>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+a]=j));(o=c.Value,((b<0||b>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+b]=l));};C.prototype.Swap=function(a,b){return this.$val.Swap(a,b);};D=function(a){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=$clone(a,A.Value).Type().Kind();$s=3;case 3:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}if(!((b===21))){$s=1;continue;}$s=2;continue;case 1:$s=-1;return I.nil;case 2:c=$makeSlice(J,$clone(a,A.Value).Len());d=$makeSlice(J,c.$length);e=$clone(a,A.Value).MapRange();f=0;case 4:g=e.Next();$s=6;case 6:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}if(!(g)){$s=5;continue;}h=e.Key();$s=7;case 7:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=h);i=e.Value();$s=8;case 8:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}((f<0||f>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+f]=i);f=f+(1)>>0;$s=4;continue;case 5:j=new C.ptr(c,d);$r=B.Stable(j);$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return j;}return;}if($f===undefined){$f={$blk:D};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Sort=D;E=function(a,b){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;bu=$f.bu;bv=$f.bv;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=$clone(a,A.Value).Type();d=$clone(b,A.Value).Type();e=c;f=d;if(!($interfaceIsEqual(e,f))){$s=-1;return-1;}g=$clone(a,A.Value).Kind();if((g===(2))||(g===(3))||(g===(4))||(g===(5))||(g===(6))){$s=2;continue;}if((g===(7))||(g===(8))||(g===(9))||(g===(10))||(g===(11))||(g===(12))){$s=3;continue;}if(g===(24)){$s=4;continue;}if((g===(13))||(g===(14))){$s=5;continue;}if((g===(15))||(g===(16))){$s=6;continue;}if(g===(1)){$s=7;continue;}if(g===(22)){$s=8;continue;}if(g===(18)){$s=9;continue;}if(g===(25)){$s=10;continue;}if(g===(17)){$s=11;continue;}if(g===(20)){$s=12;continue;}$s=13;continue;case 2:h=$clone(a,A.Value).Int();i=$clone(b,A.Value).Int();j=h;k=i;if((j.$highk.$high||(j.$high===k.$high&&j.$low>k.$low))){$s=-1;return 1;}else{$s=-1;return 0;}$s=14;continue;case 3:l=$clone(a,A.Value).Uint();m=$clone(b,A.Value).Uint();n=l;o=m;if((n.$higho.$high||(n.$high===o.$high&&n.$low>o.$low))){$s=-1;return 1;}else{$s=-1;return 0;}$s=14;continue;case 4:q=$clone(a,A.Value).String();$s=15;case 15:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;s=$clone(b,A.Value).String();$s=16;case 16:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}r=s;t=p;u=r;if(tu){$s=-1;return 1;}else{$s=-1;return 0;}$s=14;continue;case 5:$s=-1;return G($clone(a,A.Value).Float(),$clone(b,A.Value).Float());case 6:v=$clone(a,A.Value).Complex();w=$clone(b,A.Value).Complex();x=v;y=w;z=G(x.$real,y.$real);if(!((z===0))){$s=-1;return z;}$s=-1;return G(x.$imag,y.$imag);case 7:aa=$clone(a,A.Value).Bool();ab=$clone(b,A.Value).Bool();ac=aa;ad=ab;if(ac===ad){$s=-1;return 0;}else if(ac){$s=-1;return 1;}else{$s=-1;return-1;}$s=14;continue;case 8:ae=$clone(a,A.Value).Pointer();af=$clone(b,A.Value).Pointer();ag=ae;ah=af;if(agah){$s=-1;return 1;}else{$s=-1;return 0;}$s=14;continue;case 9:ai=F($clone(a,A.Value),$clone(b,A.Value));aj=ai[0];ak=ai[1];if(ak){$s=-1;return aj;}al=$clone(a,A.Value).Pointer();am=$clone(b,A.Value).Pointer();an=al;ao=am;if(anao){$s=-1;return 1;}else{$s=-1;return 0;}$s=14;continue;case 10:ap=0;case 17:if(!(ap<$clone(a,A.Value).NumField())){$s=18;continue;}aq=$clone(a,A.Value).Field(ap);$s=19;case 19:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=$clone(aq,A.Value);as=$clone(b,A.Value).Field(ap);$s=20;case 20:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}at=$clone(as,A.Value);au=E(ar,at);$s=21;case 21:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}av=au;if(!((av===0))){$s=-1;return av;}ap=ap+(1)>>0;$s=17;continue;case 18:$s=-1;return 0;case 11:aw=0;case 22:if(!(aw<$clone(a,A.Value).Len())){$s=23;continue;}ax=$clone(a,A.Value).Index(aw);$s=24;case 24:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ay=$clone(ax,A.Value);az=$clone(b,A.Value).Index(aw);$s=25;case 25:if($c){$c=false;az=az.$blk();}if(az&&az.$blk!==undefined){break s;}ba=$clone(az,A.Value);bb=E(ay,ba);$s=26;case 26:if($c){$c=false;bb=bb.$blk();}if(bb&&bb.$blk!==undefined){break s;}bc=bb;if(!((bc===0))){$s=-1;return bc;}aw=aw+(1)>>0;$s=22;continue;case 23:$s=-1;return 0;case 12:bd=F($clone(a,A.Value),$clone(b,A.Value));be=bd[0];bf=bd[1];if(bf){$s=-1;return be;}bg=$clone(a,A.Value).Elem();$s=27;case 27:if($c){$c=false;bg=bg.$blk();}if(bg&&bg.$blk!==undefined){break s;}bh=$clone(bg,A.Value).Type();$s=28;case 28:if($c){$c=false;bh=bh.$blk();}if(bh&&bh.$blk!==undefined){break s;}bi=A.ValueOf(bh);$s=29;case 29:if($c){$c=false;bi=bi.$blk();}if(bi&&bi.$blk!==undefined){break s;}bj=$clone(bi,A.Value);bk=$clone(b,A.Value).Elem();$s=30;case 30:if($c){$c=false;bk=bk.$blk();}if(bk&&bk.$blk!==undefined){break s;}bl=$clone(bk,A.Value).Type();$s=31;case 31:if($c){$c=false;bl=bl.$blk();}if(bl&&bl.$blk!==undefined){break s;}bm=A.ValueOf(bl);$s=32;case 32:if($c){$c=false;bm=bm.$blk();}if(bm&&bm.$blk!==undefined){break s;}bn=$clone(bm,A.Value);bo=E(bj,bn);$s=33;case 33:if($c){$c=false;bo=bo.$blk();}if(bo&&bo.$blk!==undefined){break s;}bp=bo;if(!((bp===0))){$s=-1;return bp;}bq=$clone(a,A.Value).Elem();$s=34;case 34:if($c){$c=false;bq=bq.$blk();}if(bq&&bq.$blk!==undefined){break s;}br=$clone(bq,A.Value);bs=$clone(b,A.Value).Elem();$s=35;case 35:if($c){$c=false;bs=bs.$blk();}if(bs&&bs.$blk!==undefined){break s;}bt=$clone(bs,A.Value);bu=E(br,bt);$s=36;case 36:if($c){$c=false;bu=bu.$blk();}if(bu&&bu.$blk!==undefined){break s;}$s=-1;return bu;case 13:bv=e.String();$s=37;case 37:if($c){$c=false;bv=bv.$blk();}if(bv&&bv.$blk!==undefined){break s;}$panic(new $String("bad type in compare: "+bv));case 14:case 1:$s=-1;return 0;}return;}if($f===undefined){$f={$blk:E};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.bu=bu;$f.bv=bv;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};F=function(a,b){var a,b;if($clone(a,A.Value).IsNil()){if($clone(b,A.Value).IsNil()){return[0,true];}return[-1,true];}if($clone(b,A.Value).IsNil()){return[1,true];}return[0,false];};G=function(a,b){var a,b;if(H(a)){return-1;}else if(H(b)){return 1;}else if(ab){return 1;}return 0;};H=function(a){var a;return!((a===a));};I.methods=[{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)}];C.init("",[{prop:"Key",name:"Key",embedded:false,exported:true,typ:J,tag:""},{prop:"Value",name:"Value",embedded:false,exported:true,typ:J,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["io"]=(function(){var $pkg={},$init,A,B,C,D,E,K,O,P,V,W,AG,AY,AZ,AJ,AK,Z,AA,AC,AE;A=$packages["errors"];B=$packages["sync"];C=$packages["sync/atomic"];D=$pkg.Reader=$newType(8,$kindInterface,"io.Reader",true,"io",true,null);E=$pkg.Writer=$newType(8,$kindInterface,"io.Writer",true,"io",true,null);K=$pkg.ReadWriteCloser=$newType(8,$kindInterface,"io.ReadWriteCloser",true,"io",true,null);O=$pkg.ReaderFrom=$newType(8,$kindInterface,"io.ReaderFrom",true,"io",true,null);P=$pkg.WriterTo=$newType(8,$kindInterface,"io.WriterTo",true,"io",true,null);V=$pkg.RuneReader=$newType(8,$kindInterface,"io.RuneReader",true,"io",true,null);W=$pkg.RuneScanner=$newType(8,$kindInterface,"io.RuneScanner",true,"io",true,null);AG=$pkg.LimitedReader=$newType(0,$kindStruct,"io.LimitedReader",true,"io",true,function(R_,N_){this.$val=this;if(arguments.length===0){this.R=$ifaceNil;this.N=new $Int64(0,0);return;}this.R=R_;this.N=N_;});AY=$sliceType($Uint8);AZ=$ptrType(AG);Z=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;if(b.$length>0;$s=1;continue;case 2:if(d>=c){e=$ifaceNil;}else if(d>0&&$interfaceIsEqual(e,$pkg.EOF)){e=$pkg.ErrUnexpectedEOF;}$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:Z};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};$pkg.ReadAtLeast=Z;AA=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=0;d=$ifaceNil;f=Z(a,b,b.$length);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;c=e[0];d=e[1];$s=-1;return[c,d];}return;}if($f===undefined){$f={$blk:AA};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};$pkg.ReadFull=AA;AC=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=new $Int64(0,0);d=$ifaceNil;f=AE(a,b,AY.nil);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;c=e[0];d=e[1];$s=-1;return[c,d];}return;}if($f===undefined){$f={$blk:AC};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Copy=AC;AE=function(a,b,c){var a,aa,ab,ac,ad,ae,af,ag,ah,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=new $Int64(0,0);e=$ifaceNil;f=$assertType(b,P,true);g=f[0];h=f[1];if(h){$s=1;continue;}$s=2;continue;case 1:j=g.WriteTo(a);$s=3;case 3:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;d=i[0];e=i[1];$s=-1;return[d,e];case 2:k=$assertType(a,O,true);l=k[0];m=k[1];if(m){$s=4;continue;}$s=5;continue;case 4:o=l.ReadFrom(b);$s=6;case 6:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;d=n[0];e=n[1];$s=-1;return[d,e];case 5:if(c===AY.nil){p=32768;q=$assertType(b,AZ,true);r=q[0];s=q[1];if(s&&(t=(new $Int64(0,p)),u=r.N,(t.$high>u.$high||(t.$high===u.$high&&t.$low>u.$low)))){if((v=r.N,(v.$high<0||(v.$high===0&&v.$low<1)))){p=1;}else{p=(((w=r.N,w.$low+((w.$high>>31)*4294967296))>>0));}}c=$makeSlice(AY,p);}case 7:y=b.Read(c);$s=9;case 9:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;z=x[0];aa=x[1];if(z>0){$s=10;continue;}$s=11;continue;case 10:ac=a.Write($subslice(c,0,z));$s=12;case 12:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}ab=ac;ad=ab[0];ae=ab[1];if(ad>0){d=(af=(new $Int64(0,ad)),new $Int64(d.$high+af.$high,d.$low+af.$low));}if(!($interfaceIsEqual(ae,$ifaceNil))){e=ae;$s=8;continue;}if(!((z===ad))){e=$pkg.ErrShortWrite;$s=8;continue;}case 11:if(!($interfaceIsEqual(aa,$ifaceNil))){if(!($interfaceIsEqual(aa,$pkg.EOF))){e=aa;}$s=8;continue;}$s=7;continue;case 8:ag=d;ah=e;d=ag;e=ah;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:AE};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AG.ptr.prototype.Read=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if((e=d.N,(e.$high<0||(e.$high===0&&e.$low<=0)))){f=0;g=$pkg.EOF;b=f;c=g;$s=-1;return[b,c];}if((h=(new $Int64(0,a.$length)),i=d.N,(h.$high>i.$high||(h.$high===i.$high&&h.$low>i.$low)))){a=$subslice(a,0,$flatten64(d.N));}k=d.R.Read(a);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;b=j[0];c=j[1];d.N=(l=d.N,m=(new $Int64(0,b)),new $Int64(l.$high-m.$high,l.$low-m.$low));$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AG.ptr.prototype.Read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};AG.prototype.Read=function(a){return this.$val.Read(a);};AZ.methods=[{prop:"Read",name:"Read",pkg:"",typ:$funcType([AY],[$Int,$error],false)}];D.init([{prop:"Read",name:"Read",pkg:"",typ:$funcType([AY],[$Int,$error],false)}]);E.init([{prop:"Write",name:"Write",pkg:"",typ:$funcType([AY],[$Int,$error],false)}]);K.init([{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([AY],[$Int,$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([AY],[$Int,$error],false)}]);O.init([{prop:"ReadFrom",name:"ReadFrom",pkg:"",typ:$funcType([D],[$Int64,$error],false)}]);P.init([{prop:"WriteTo",name:"WriteTo",pkg:"",typ:$funcType([E],[$Int64,$error],false)}]);V.init([{prop:"ReadRune",name:"ReadRune",pkg:"",typ:$funcType([],[$Int32,$Int,$error],false)}]);W.init([{prop:"ReadRune",name:"ReadRune",pkg:"",typ:$funcType([],[$Int32,$Int,$error],false)},{prop:"UnreadRune",name:"UnreadRune",pkg:"",typ:$funcType([],[$error],false)}]);AG.init("",[{prop:"R",name:"R",embedded:false,exported:true,typ:D,tag:""},{prop:"N",name:"N",embedded:false,exported:true,typ:$Int64,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$pkg.ErrShortWrite=A.New("short write");$pkg.ErrShortBuffer=A.New("short buffer");$pkg.EOF=A.New("EOF");$pkg.ErrUnexpectedEOF=A.New("unexpected EOF");$pkg.ErrNoProgress=A.New("multiple Read calls return no data or error");AJ=A.New("Seek: invalid whence");AK=A.New("Seek: invalid offset");$pkg.ErrClosedPipe=A.New("io: read/write on closed pipe");}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["syscall"]=(function(){var $pkg={},$init,A,D,B,C,CB,CF,CI,CL,EH,EI,GM,GN,GV,GW,GX,GY,NJ,NS,NX,NY,NZ,OA,OB,OC,OD,OE,OF,OG,OH,OI,OJ,OK,OS,OU,OW,OX,OY,PL,PN,PV,PZ,QF,QG,QH,QL,QM,QN,QO,QP,QT,QU,RA,RB,RC,RD,RE,RG,RK,RL,RO,RP,RQ,RR,RS,RT,RU,RV,RW,RX,RY,RZ,SF,E,F,P,Q,R,AG,FX,GO,GP,GQ,HR,PU,HW,G,H,I,K,L,M,S,T,U,V,Y,Z,AA,AB,AC,BC,BD,BZ,CA,CD,CE,CG,CH,CJ,CK,CM,CN,CZ,DA,DF,DH,DL,DP,EJ,EK,EL,EM,EU,EV,EX,FP,FQ,FR,FS,GA,GC,GR,GT,GU,GZ,HC,HD,HE,HF,HG,HH,HI,HJ,HL,HO,HZ,IB,IR,IS,IY,IZ,JB,JE,JF,JZ,KU,KY,LG,LH,LJ,LT,LU,LV,MF,MK,ML,MM,MO,MR,MS,MT,MW,MX,MY,MZ,NA,NB;A=$packages["github.com/gopherjs/gopherjs/js"];D=$packages["internal/race"];B=$packages["runtime"];C=$packages["sync"];CB=$pkg.RawConn=$newType(8,$kindInterface,"syscall.RawConn",true,"syscall",true,null);CF=$pkg.NetlinkRouteRequest=$newType(0,$kindStruct,"syscall.NetlinkRouteRequest",true,"syscall",true,function(Header_,Data_){this.$val=this;if(arguments.length===0){this.Header=new OS.ptr(0,0,0,0,0);this.Data=new OU.ptr(0);return;}this.Header=Header_;this.Data=Data_;});CI=$pkg.NetlinkMessage=$newType(0,$kindStruct,"syscall.NetlinkMessage",true,"syscall",true,function(Header_,Data_){this.$val=this;if(arguments.length===0){this.Header=new OS.ptr(0,0,0,0,0);this.Data=PL.nil;return;}this.Header=Header_;this.Data=Data_;});CL=$pkg.NetlinkRouteAttr=$newType(0,$kindStruct,"syscall.NetlinkRouteAttr",true,"syscall",true,function(Attr_,Value_){this.$val=this;if(arguments.length===0){this.Attr=new OW.ptr(0,0);this.Value=PL.nil;return;}this.Attr=Attr_;this.Value=Value_;});EH=$pkg.SockaddrLinklayer=$newType(0,$kindStruct,"syscall.SockaddrLinklayer",true,"syscall",true,function(Protocol_,Ifindex_,Hatype_,Pkttype_,Halen_,Addr_,raw_){this.$val=this;if(arguments.length===0){this.Protocol=0;this.Ifindex=0;this.Hatype=0;this.Pkttype=0;this.Halen=0;this.Addr=QF.zero();this.raw=new OA.ptr(0,0,0,0,0,0,QF.zero());return;}this.Protocol=Protocol_;this.Ifindex=Ifindex_;this.Hatype=Hatype_;this.Pkttype=Pkttype_;this.Halen=Halen_;this.Addr=Addr_;this.raw=raw_;});EI=$pkg.SockaddrNetlink=$newType(0,$kindStruct,"syscall.SockaddrNetlink",true,"syscall",true,function(Family_,Pad_,Pid_,Groups_,raw_){this.$val=this;if(arguments.length===0){this.Family=0;this.Pad=0;this.Pid=0;this.Groups=0;this.raw=new OB.ptr(0,0,0,0);return;}this.Family=Family_;this.Pad=Pad_;this.Pid=Pid_;this.Groups=Groups_;this.raw=raw_;});GM=$pkg.mmapper=$newType(0,$kindStruct,"syscall.mmapper",true,"syscall",false,function(Mutex_,active_,mmap_,munmap_){this.$val=this;if(arguments.length===0){this.Mutex=new C.Mutex.ptr(0,0);this.active=false;this.mmap=$throwNilPointerError;this.munmap=$throwNilPointerError;return;}this.Mutex=Mutex_;this.active=active_;this.mmap=mmap_;this.munmap=munmap_;});GN=$pkg.Errno=$newType(4,$kindUintptr,"syscall.Errno",true,"syscall",true,null);GV=$pkg.Sockaddr=$newType(8,$kindInterface,"syscall.Sockaddr",true,"syscall",true,null);GW=$pkg.SockaddrInet4=$newType(0,$kindStruct,"syscall.SockaddrInet4",true,"syscall",true,function(Port_,Addr_,raw_){this.$val=this;if(arguments.length===0){this.Port=0;this.Addr=RB.zero();this.raw=new NX.ptr(0,0,RB.zero(),QF.zero());return;}this.Port=Port_;this.Addr=Addr_;this.raw=raw_;});GX=$pkg.SockaddrInet6=$newType(0,$kindStruct,"syscall.SockaddrInet6",true,"syscall",true,function(Port_,ZoneId_,Addr_,raw_){this.$val=this;if(arguments.length===0){this.Port=0;this.ZoneId=0;this.Addr=QH.zero();this.raw=new NY.ptr(0,0,0,QH.zero(),0);return;}this.Port=Port_;this.ZoneId=ZoneId_;this.Addr=Addr_;this.raw=raw_;});GY=$pkg.SockaddrUnix=$newType(0,$kindStruct,"syscall.SockaddrUnix",true,"syscall",true,function(Name_,raw_){this.$val=this;if(arguments.length===0){this.Name="";this.raw=new NZ.ptr(0,RA.zero());return;}this.Name=Name_;this.raw=raw_;});NJ=$pkg.Timespec=$newType(0,$kindStruct,"syscall.Timespec",true,"syscall",true,function(Sec_,Nsec_){this.$val=this;if(arguments.length===0){this.Sec=new $Int64(0,0);this.Nsec=new $Int64(0,0);return;}this.Sec=Sec_;this.Nsec=Nsec_;});NS=$pkg.Stat_t=$newType(0,$kindStruct,"syscall.Stat_t",true,"syscall",true,function(Dev_,Ino_,Nlink_,Mode_,Uid_,Gid_,X__pad0_,Rdev_,Size_,Blksize_,Blocks_,Atim_,Mtim_,Ctim_,X__unused_){this.$val=this;if(arguments.length===0){this.Dev=new $Uint64(0,0);this.Ino=new $Uint64(0,0);this.Nlink=new $Uint64(0,0);this.Mode=0;this.Uid=0;this.Gid=0;this.X__pad0=0;this.Rdev=new $Uint64(0,0);this.Size=new $Int64(0,0);this.Blksize=new $Int64(0,0);this.Blocks=new $Int64(0,0);this.Atim=new NJ.ptr(new $Int64(0,0),new $Int64(0,0));this.Mtim=new NJ.ptr(new $Int64(0,0),new $Int64(0,0));this.Ctim=new NJ.ptr(new $Int64(0,0),new $Int64(0,0));this.X__unused=QU.zero();return;}this.Dev=Dev_;this.Ino=Ino_;this.Nlink=Nlink_;this.Mode=Mode_;this.Uid=Uid_;this.Gid=Gid_;this.X__pad0=X__pad0_;this.Rdev=Rdev_;this.Size=Size_;this.Blksize=Blksize_;this.Blocks=Blocks_;this.Atim=Atim_;this.Mtim=Mtim_;this.Ctim=Ctim_;this.X__unused=X__unused_;});NX=$pkg.RawSockaddrInet4=$newType(0,$kindStruct,"syscall.RawSockaddrInet4",true,"syscall",true,function(Family_,Port_,Addr_,Zero_){this.$val=this;if(arguments.length===0){this.Family=0;this.Port=0;this.Addr=RB.zero();this.Zero=QF.zero();return;}this.Family=Family_;this.Port=Port_;this.Addr=Addr_;this.Zero=Zero_;});NY=$pkg.RawSockaddrInet6=$newType(0,$kindStruct,"syscall.RawSockaddrInet6",true,"syscall",true,function(Family_,Port_,Flowinfo_,Addr_,Scope_id_){this.$val=this;if(arguments.length===0){this.Family=0;this.Port=0;this.Flowinfo=0;this.Addr=QH.zero();this.Scope_id=0;return;}this.Family=Family_;this.Port=Port_;this.Flowinfo=Flowinfo_;this.Addr=Addr_;this.Scope_id=Scope_id_;});NZ=$pkg.RawSockaddrUnix=$newType(0,$kindStruct,"syscall.RawSockaddrUnix",true,"syscall",true,function(Family_,Path_){this.$val=this;if(arguments.length===0){this.Family=0;this.Path=RA.zero();return;}this.Family=Family_;this.Path=Path_;});OA=$pkg.RawSockaddrLinklayer=$newType(0,$kindStruct,"syscall.RawSockaddrLinklayer",true,"syscall",true,function(Family_,Protocol_,Ifindex_,Hatype_,Pkttype_,Halen_,Addr_){this.$val=this;if(arguments.length===0){this.Family=0;this.Protocol=0;this.Ifindex=0;this.Hatype=0;this.Pkttype=0;this.Halen=0;this.Addr=QF.zero();return;}this.Family=Family_;this.Protocol=Protocol_;this.Ifindex=Ifindex_;this.Hatype=Hatype_;this.Pkttype=Pkttype_;this.Halen=Halen_;this.Addr=Addr_;});OB=$pkg.RawSockaddrNetlink=$newType(0,$kindStruct,"syscall.RawSockaddrNetlink",true,"syscall",true,function(Family_,Pad_,Pid_,Groups_){this.$val=this;if(arguments.length===0){this.Family=0;this.Pad=0;this.Pid=0;this.Groups=0;return;}this.Family=Family_;this.Pad=Pad_;this.Pid=Pid_;this.Groups=Groups_;});OC=$pkg.RawSockaddr=$newType(0,$kindStruct,"syscall.RawSockaddr",true,"syscall",true,function(Family_,Data_){this.$val=this;if(arguments.length===0){this.Family=0;this.Data=RC.zero();return;}this.Family=Family_;this.Data=Data_;});OD=$pkg.RawSockaddrAny=$newType(0,$kindStruct,"syscall.RawSockaddrAny",true,"syscall",true,function(Addr_,Pad_){this.$val=this;if(arguments.length===0){this.Addr=new OC.ptr(0,RC.zero());this.Pad=RD.zero();return;}this.Addr=Addr_;this.Pad=Pad_;});OE=$pkg._Socklen=$newType(4,$kindUint32,"syscall._Socklen",true,"syscall",false,null);OF=$pkg.Linger=$newType(0,$kindStruct,"syscall.Linger",true,"syscall",true,function(Onoff_,Linger_){this.$val=this;if(arguments.length===0){this.Onoff=0;this.Linger=0;return;}this.Onoff=Onoff_;this.Linger=Linger_;});OG=$pkg.Iovec=$newType(0,$kindStruct,"syscall.Iovec",true,"syscall",true,function(Base_,Len_){this.$val=this;if(arguments.length===0){this.Base=PV.nil;this.Len=new $Uint64(0,0);return;}this.Base=Base_;this.Len=Len_;});OH=$pkg.IPMreq=$newType(0,$kindStruct,"syscall.IPMreq",true,"syscall",true,function(Multiaddr_,Interface_){this.$val=this;if(arguments.length===0){this.Multiaddr=RB.zero();this.Interface=RB.zero();return;}this.Multiaddr=Multiaddr_;this.Interface=Interface_;});OI=$pkg.IPMreqn=$newType(0,$kindStruct,"syscall.IPMreqn",true,"syscall",true,function(Multiaddr_,Address_,Ifindex_){this.$val=this;if(arguments.length===0){this.Multiaddr=RB.zero();this.Address=RB.zero();this.Ifindex=0;return;}this.Multiaddr=Multiaddr_;this.Address=Address_;this.Ifindex=Ifindex_;});OJ=$pkg.IPv6Mreq=$newType(0,$kindStruct,"syscall.IPv6Mreq",true,"syscall",true,function(Multiaddr_,Interface_){this.$val=this;if(arguments.length===0){this.Multiaddr=QH.zero();this.Interface=0;return;}this.Multiaddr=Multiaddr_;this.Interface=Interface_;});OK=$pkg.Msghdr=$newType(0,$kindStruct,"syscall.Msghdr",true,"syscall",true,function(Name_,Namelen_,Pad_cgo_0_,Iov_,Iovlen_,Control_,Controllen_,Flags_,Pad_cgo_1_){this.$val=this;if(arguments.length===0){this.Name=PV.nil;this.Namelen=0;this.Pad_cgo_0=RB.zero();this.Iov=RG.nil;this.Iovlen=new $Uint64(0,0);this.Control=PV.nil;this.Controllen=new $Uint64(0,0);this.Flags=0;this.Pad_cgo_1=RB.zero();return;}this.Name=Name_;this.Namelen=Namelen_;this.Pad_cgo_0=Pad_cgo_0_;this.Iov=Iov_;this.Iovlen=Iovlen_;this.Control=Control_;this.Controllen=Controllen_;this.Flags=Flags_;this.Pad_cgo_1=Pad_cgo_1_;});OS=$pkg.NlMsghdr=$newType(0,$kindStruct,"syscall.NlMsghdr",true,"syscall",true,function(Len_,Type_,Flags_,Seq_,Pid_){this.$val=this;if(arguments.length===0){this.Len=0;this.Type=0;this.Flags=0;this.Seq=0;this.Pid=0;return;}this.Len=Len_;this.Type=Type_;this.Flags=Flags_;this.Seq=Seq_;this.Pid=Pid_;});OU=$pkg.RtGenmsg=$newType(0,$kindStruct,"syscall.RtGenmsg",true,"syscall",true,function(Family_){this.$val=this;if(arguments.length===0){this.Family=0;return;}this.Family=Family_;});OW=$pkg.RtAttr=$newType(0,$kindStruct,"syscall.RtAttr",true,"syscall",true,function(Len_,Type_){this.$val=this;if(arguments.length===0){this.Len=0;this.Type=0;return;}this.Len=Len_;this.Type=Type_;});OX=$pkg.IfInfomsg=$newType(0,$kindStruct,"syscall.IfInfomsg",true,"syscall",true,function(Family_,X__ifi_pad_,Type_,Index_,Flags_,Change_){this.$val=this;if(arguments.length===0){this.Family=0;this.X__ifi_pad=0;this.Type=0;this.Index=0;this.Flags=0;this.Change=0;return;}this.Family=Family_;this.X__ifi_pad=X__ifi_pad_;this.Type=Type_;this.Index=Index_;this.Flags=Flags_;this.Change=Change_;});OY=$pkg.IfAddrmsg=$newType(0,$kindStruct,"syscall.IfAddrmsg",true,"syscall",true,function(Family_,Prefixlen_,Flags_,Scope_,Index_){this.$val=this;if(arguments.length===0){this.Family=0;this.Prefixlen=0;this.Flags=0;this.Scope=0;this.Index=0;return;}this.Family=Family_;this.Prefixlen=Prefixlen_;this.Flags=Flags_;this.Scope=Scope_;this.Index=Index_;});PL=$sliceType($Uint8);PN=$sliceType($String);PV=$ptrType($Uint8);PZ=$ptrType($Int32);QF=$arrayType($Uint8,8);QG=$ptrType($Uint16);QH=$arrayType($Uint8,16);QL=$ptrType(EI);QM=$sliceType(CI);QN=$ptrType(OS);QO=$sliceType(CL);QP=$ptrType(OW);QT=$arrayType($Uint8,32);QU=$arrayType($Int64,3);RA=$arrayType($Int8,108);RB=$arrayType($Uint8,4);RC=$arrayType($Int8,14);RD=$arrayType($Int8,96);RE=$ptrType(OE);RG=$ptrType(OG);RK=$structType("syscall",[{prop:"addr",name:"addr",embedded:false,exported:false,typ:$Uintptr,tag:""},{prop:"len",name:"len",embedded:false,exported:false,typ:$Int,tag:""},{prop:"cap",name:"cap",embedded:false,exported:false,typ:$Int,tag:""}]);RL=$ptrType($Int64);RO=$funcType([$Uintptr],[],false);RP=$funcType([$Uintptr],[$Bool],false);RQ=$ptrType(CF);RR=$ptrType(EH);RS=$ptrType(GM);RT=$mapType(PV,PL);RU=$funcType([$Uintptr,$Uintptr,$Int,$Int,$Int,$Int64],[$Uintptr,$error],false);RV=$funcType([$Uintptr,$Uintptr],[$error],false);RW=$ptrType(GW);RX=$ptrType(GX);RY=$ptrType(GY);RZ=$ptrType(NJ);SF=$ptrType(OK);G=function(){$flushConsole=(function(){if(!((F.$length===0))){$global.console.log($externalize(($bytesToString(F)),$String));F=PL.nil;}});};H=function(){if(!E){$global.console.error($externalize("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md",$String));}E=true;};I=function(k){var k,l,m;l=$global.goPrintToConsole;if(!(l===undefined)){l(k);return;}F=$appendSlice(F,k);while(true){m=L(F,10);if(m===-1){break;}$global.console.log($externalize(($bytesToString($subslice(F,0,m))),$String));F=$subslice(F,(m+1>>0));}};K=function(k){var k;T(231,((k>>>0)),0,0);};$pkg.Exit=K;L=function(k,l){var k,l,m,n,o,p;m=k;n=0;while(true){if(!(n=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+n]);if(p===l){return o;}n++;}return-1;};M=function(){var k,l,m,n,o,p;k=$global.process;if(k===undefined){return PN.nil;}l=k.env;m=$global.Object.keys(l);n=$makeSlice(PN,$parseInt(m.length));o=0;while(true){if(!(o<$parseInt(m.length))){break;}p=$internalize(m[o],$String);((o<0||o>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]=p+"="+$internalize(l[$externalize(p,$String)],$String));o=o+(1)>>0;}return n;};S=function(k){var k,l,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);$deferred.push([(function(){$recover();}),[]]);if(P===null){if(Q){return null;}Q=true;l=$global.require;if(l===undefined){$panic(new $String(""));}P=l($externalize("syscall",$String));}return P[$externalize(k,$String)];}catch(err){$err=err;return null;}finally{$callDeferred($deferred,$err);}};T=function(k,l,m,n){var aa,ab,ac,ad,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;o=0;p=0;q=0;r=S("Syscall");if(!(r===null)){s=r(k,l,m,n);t=((($parseInt(s[0])>>0)>>>0));u=((($parseInt(s[1])>>0)>>>0));v=((($parseInt(s[2])>>0)>>>0));o=t;p=u;q=v;return[o,p,q];}if((k===1)&&((l===1)||(l===2))){w=m;x=$makeSlice(PL,$parseInt(w.length));x.$array=w;I(x);y=(($parseInt(w.length)>>>0));z=0;aa=0;o=y;p=z;q=aa;return[o,p,q];}if(k===231){B.Goexit();}H();ab=((R>>>0));ac=0;ad=13;o=ab;p=ac;q=ad;return[o,p,q];};$pkg.Syscall=T;U=function(k,l,m,n,o,p,q){var aa,ab,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;r=0;s=0;t=0;u=S("Syscall6");if(!(u===null)){v=u(k,l,m,n,o,p,q);w=((($parseInt(v[0])>>0)>>>0));x=((($parseInt(v[1])>>0)>>>0));y=((($parseInt(v[2])>>0)>>>0));r=w;s=x;t=y;return[r,s,t];}if(!((k===202))){H();}z=((R>>>0));aa=0;ab=13;r=z;s=aa;t=ab;return[r,s,t];};$pkg.Syscall6=U;V=function(k,l,m,n){var k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;o=0;p=0;q=0;r=S("Syscall");if(!(r===null)){s=r(k,l,m,n);t=((($parseInt(s[0])>>0)>>>0));u=((($parseInt(s[1])>>0)>>>0));v=((($parseInt(s[2])>>0)>>>0));o=t;p=u;q=v;return[o,p,q];}H();w=((R>>>0));x=0;y=13;o=w;p=x;q=y;return[o,p,q];};$pkg.RawSyscall=V;Y=function(k){var k,l,m,n,o,p;l=new($global.Uint8Array)(k.length+1>>0);m=(new PL($stringToBytes(k)));n=0;while(true){if(!(n=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+n]);if(p===0){return[PV.nil,new GN(22)];}l[o]=p;n++;}l[k.length]=0;return[((l)),$ifaceNil];};$pkg.BytePtrFromString=Y;Z=function(k,l,m){var k,l,m,n,o,p,q,r,s,t,u;n=new $Uint64(0,0);o=false;if(k.$length<(((l+m>>>0)>>0))){p=new $Uint64(0,0);q=false;n=p;o=q;return[n,o];}if(false){r=AA($subslice(k,l),m);s=true;n=r;o=s;return[n,o];}t=AB($subslice(k,l),m);u=true;n=t;o=u;return[n,o];};AA=function(k,l){var aa,ab,ac,ad,ae,af,ag,ah,ai,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;m=l;if(m===(1)){return(new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])));}else if(m===(2)){$unused((1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]));return(n=(new $Uint64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),o=$shiftLeft64((new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),8),new $Uint64(n.$high|o.$high,(n.$low|o.$low)>>>0));}else if(m===(4)){$unused((3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]));return(p=(q=(r=(new $Uint64(0,(3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]))),s=$shiftLeft64((new $Uint64(0,(2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2]))),8),new $Uint64(r.$high|s.$high,(r.$low|s.$low)>>>0)),t=$shiftLeft64((new $Uint64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),16),new $Uint64(q.$high|t.$high,(q.$low|t.$low)>>>0)),u=$shiftLeft64((new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),24),new $Uint64(p.$high|u.$high,(p.$low|u.$low)>>>0));}else if(m===(8)){$unused((7>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+7]));return(v=(w=(x=(y=(z=(aa=(ab=(new $Uint64(0,(7>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+7]))),ac=$shiftLeft64((new $Uint64(0,(6>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+6]))),8),new $Uint64(ab.$high|ac.$high,(ab.$low|ac.$low)>>>0)),ad=$shiftLeft64((new $Uint64(0,(5>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+5]))),16),new $Uint64(aa.$high|ad.$high,(aa.$low|ad.$low)>>>0)),ae=$shiftLeft64((new $Uint64(0,(4>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+4]))),24),new $Uint64(z.$high|ae.$high,(z.$low|ae.$low)>>>0)),af=$shiftLeft64((new $Uint64(0,(3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]))),32),new $Uint64(y.$high|af.$high,(y.$low|af.$low)>>>0)),ag=$shiftLeft64((new $Uint64(0,(2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2]))),40),new $Uint64(x.$high|ag.$high,(x.$low|ag.$low)>>>0)),ah=$shiftLeft64((new $Uint64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),48),new $Uint64(w.$high|ah.$high,(w.$low|ah.$low)>>>0)),ai=$shiftLeft64((new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),56),new $Uint64(v.$high|ai.$high,(v.$low|ai.$low)>>>0));}else{$panic(new $String("syscall: readInt with unsupported size"));}};AB=function(k,l){var aa,ab,ac,ad,ae,af,ag,ah,ai,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;m=l;if(m===(1)){return(new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])));}else if(m===(2)){$unused((1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]));return(n=(new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),o=$shiftLeft64((new $Uint64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),8),new $Uint64(n.$high|o.$high,(n.$low|o.$low)>>>0));}else if(m===(4)){$unused((3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]));return(p=(q=(r=(new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),s=$shiftLeft64((new $Uint64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),8),new $Uint64(r.$high|s.$high,(r.$low|s.$low)>>>0)),t=$shiftLeft64((new $Uint64(0,(2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2]))),16),new $Uint64(q.$high|t.$high,(q.$low|t.$low)>>>0)),u=$shiftLeft64((new $Uint64(0,(3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]))),24),new $Uint64(p.$high|u.$high,(p.$low|u.$low)>>>0));}else if(m===(8)){$unused((7>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+7]));return(v=(w=(x=(y=(z=(aa=(ab=(new $Uint64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),ac=$shiftLeft64((new $Uint64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),8),new $Uint64(ab.$high|ac.$high,(ab.$low|ac.$low)>>>0)),ad=$shiftLeft64((new $Uint64(0,(2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2]))),16),new $Uint64(aa.$high|ad.$high,(aa.$low|ad.$low)>>>0)),ae=$shiftLeft64((new $Uint64(0,(3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]))),24),new $Uint64(z.$high|ae.$high,(z.$low|ae.$low)>>>0)),af=$shiftLeft64((new $Uint64(0,(4>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+4]))),32),new $Uint64(y.$high|af.$high,(y.$low|af.$low)>>>0)),ag=$shiftLeft64((new $Uint64(0,(5>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+5]))),40),new $Uint64(x.$high|ag.$high,(x.$low|ag.$low)>>>0)),ah=$shiftLeft64((new $Uint64(0,(6>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+6]))),48),new $Uint64(w.$high|ah.$high,(w.$low|ah.$low)>>>0)),ai=$shiftLeft64((new $Uint64(0,(7>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+7]))),56),new $Uint64(v.$high|ai.$high,(v.$low|ai.$low)>>>0));}else{$panic(new $String("syscall: readInt with unsupported size"));}};AC=function(k,l,m){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;n=0;o=0;p=PN.nil;q=k.$length;o=0;while(true){if(!(!((l===0))&&k.$length>0)){break;}r=FR(k);s=r[0];t=r[1];if(!t||(u=(new $Uint64(0,k.$length)),(s.$high>u.$high||(s.$high===u.$high&&s.$low>u.$low)))){v=q;w=o;x=m;n=v;o=w;p=x;return[n,o,p];}y=$subslice(k,0,$flatten64(s));k=$subslice(k,$flatten64(s));z=FQ(y);aa=z[0];t=z[1];if(!t){break;}if((aa.$high===0&&aa.$low===0)){continue;}ab=FS(y);ac=ab[0];t=ab[1];if(!t||(ad=new $Uint64(0+ac.$high,19+ac.$low),ae=(new $Uint64(0,y.$length)),(ad.$high>ae.$high||(ad.$high===ae.$high&&ad.$low>ae.$low)))){break;}af=$subslice(y,19,$flatten64(new $Uint64(0+ac.$high,19+ac.$low)));ag=af;ah=0;while(true){if(!(ah=ag.$length)?($throwRuntimeError("index out of range"),undefined):ag.$array[ag.$offset+ah]);if(aj===0){af=$subslice(af,0,ai);break;}ah++;}if(($bytesToString(af))==="."||($bytesToString(af))===".."){continue;}l=l-(1)>>0;o=o+(1)>>0;m=$append(m,($bytesToString(af)));}ak=q-k.$length>>0;al=o;am=m;n=ak;o=al;p=am;return[n,o,p];};$pkg.ParseDirent=AC;BC=function(k){var k;JB(k,2,1);};$pkg.CloseOnExec=BC;BD=function(k,l){var k,l,m,n,o,p;m=$ifaceNil;n=JB(k,3,0);o=n[0];m=n[1];if(!($interfaceIsEqual(m,$ifaceNil))){m=m;return m;}if(l){o=o|(2048);}else{o=(o&~(2048))>>0;}p=JB(k,4,o);m=p[1];m=m;return m;};$pkg.SetNonblock=BD;BZ=function(k,l){var k,l;};CA=function(k,l){var k,l;};CD=function(k){var k;return(((k+4>>0)-1>>0))&-4;};CE=function(k){var k;return(((k+4>>0)-1>>0))&-4;};CF.ptr.prototype.toWireFormat=function(){var k,l;k=this;l=$makeSlice(PL,k.Header.Len);(($sliceToArray($subslice(l,0,4)))).$set(k.Header.Len);(($sliceToArray($subslice(l,4,6)))).$set(k.Header.Type);(($sliceToArray($subslice(l,6,8)))).$set(k.Header.Flags);(($sliceToArray($subslice(l,8,12)))).$set(k.Header.Seq);(($sliceToArray($subslice(l,12,16)))).$set(k.Header.Pid);(16>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+16]=(k.Data.Family));return l;};CF.prototype.toWireFormat=function(){return this.$val.toWireFormat();};CG=function(k,l,m){var k,l,m,n;n=new CF.ptr(new OS.ptr(0,0,0,0,0),new OU.ptr(0));n.Header.Len=17;n.Header.Type=((k<<16>>>16));n.Header.Flags=769;n.Header.Seq=((l>>>0));n.Data.Family=((m<<24>>>24));return n.toWireFormat();};CH=function(k,l){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);m=HO(16,3,0);n=m[0];o=m[1];if(!($interfaceIsEqual(o,$ifaceNil))){$s=-1;return[PL.nil,o];}$deferred.push([IR,[n]]);p=new EI.ptr(16,0,0,0,new OB.ptr(0,0,0,0));q=GZ(n,p);$s=1;case 1:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}r=q;if(!($interfaceIsEqual(r,$ifaceNil))){$s=-1;return[PL.nil,r];}s=CG(k,1,l);t=HE(n,s,0,p);$s=2;case 2:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}u=t;if(!($interfaceIsEqual(u,$ifaceNil))){$s=-1;return[PL.nil,u];}v=PL.nil;w=$makeSlice(PL,DF());done:while(true){x=w;y=HD(n,x,0);z=y[0];aa=y[2];if(!($interfaceIsEqual(aa,$ifaceNil))){$s=-1;return[PL.nil,aa];}if(z<16){$s=-1;return[PL.nil,new GN(22)];}x=$subslice(x,0,z);v=$appendSlice(v,x);ab=CJ(x);ac=ab[0];aa=ab[1];if(!($interfaceIsEqual(aa,$ifaceNil))){$s=-1;return[PL.nil,aa];}ad=ac;ae=0;while(true){if(!(ae=ad.$length)?($throwRuntimeError("index out of range"),undefined):ad.$array[ad.$offset+ae]),CI);ag=EM(n);ah=ag[0];ai=ag[1];if(!($interfaceIsEqual(ai,$ifaceNil))){$s=-1;return[PL.nil,ai];}aj=ah;if($assertType(aj,QL,true)[1]){ak=aj.$val;if(!((af.Header.Seq===1))||!((af.Header.Pid===ak.Pid))){$s=-1;return[PL.nil,new GN(22)];}}else{al=aj;$s=-1;return[PL.nil,new GN(22)];}if(af.Header.Type===3){break done;}if(af.Header.Type===2){$s=-1;return[PL.nil,new GN(22)];}ae++;}}$s=-1;return[v,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[PL.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:CH};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};$pkg.NetlinkRIB=CH;CJ=function(k){var k,l,m,n,o,p,q,r;l=QM.nil;while(true){if(!(k.$length>=16)){break;}m=CK(k);n=m[0];o=m[1];p=m[2];q=m[3];if(!($interfaceIsEqual(q,$ifaceNil))){return[QM.nil,q];}r=new CI.ptr($clone(n,OS),$subslice(o,0,(((n.Len>>0))-16>>0)));l=$append(l,r);k=$subslice(k,p);}return[l,$ifaceNil];};$pkg.ParseNetlinkMessage=CJ;CK=function(k){var k,l,m,n,o,p;o=((l=($sliceToArray(k)),m=new OS.ptr(0,0,0,0,0),n=new DataView(l.buffer,l.byteOffset),m.Len=n.getUint32(0,true),m.Type=n.getUint16(4,true),m.Flags=n.getUint16(6,true),m.Seq=n.getUint32(8,true),m.Pid=n.getUint32(12,true),m));p=CD(((o.Len>>0)));if(((o.Len>>0))<16||p>k.$length){return[QN.nil,PL.nil,0,new GN(22)];}return[o,$subslice(k,16),p,$ifaceNil];};CM=function(k){var k,l,m,n,o,p,q,r,s,t;l=PL.nil;m=k.Header.Type;if((m===(16))||(m===(17))){l=$subslice(k.Data,16);}else if((m===(20))||(m===(21))){l=$subslice(k.Data,8);}else if((m===(24))||(m===(25))){l=$subslice(k.Data,12);}else{return[QO.nil,new GN(22)];}n=QO.nil;while(true){if(!(l.$length>=4)){break;}o=CN(l);p=o[0];q=o[1];r=o[2];s=o[3];if(!($interfaceIsEqual(s,$ifaceNil))){return[QO.nil,s];}t=new CL.ptr($clone(p,OW),$subslice(q,0,(((p.Len>>0))-4>>0)));n=$append(n,t);l=$subslice(l,r);}return[n,$ifaceNil];};$pkg.ParseNetlinkRouteAttr=CM;CN=function(k){var k,l,m,n,o;o=((l=($sliceToArray(k)),m=new OW.ptr(0,0),n=new DataView(l.buffer,l.byteOffset),m.Len=n.getUint16(0,true),m.Type=n.getUint16(2,true),m));if(((o.Len>>0))<4||((o.Len>>0))>k.$length){return[QP.nil,PL.nil,0,new GN(22)];}return[o,$subslice(k,4),CE(((o.Len>>0))),$ifaceNil];};CZ=function(k){var k;if(k<0){return"-"+DA(((-k>>>0)));}return DA(((k>>>0)));};DA=function(k){var k,l,m,n,o;l=QT.zero();m=31;while(true){if(!(k>=10)){break;}((m<0||m>=l.length)?($throwRuntimeError("index out of range"),undefined):l[m]=((((n=k%10,n===n?n:$throwRuntimeError("integer divide by zero"))+48>>>0)<<24>>>24)));m=m-(1)>>0;k=(o=k/(10),(o===o&&o!==1/0&&o!==-1/0)?o>>>0:$throwRuntimeError("integer divide by zero"));}((m<0||m>=l.length)?($throwRuntimeError("index out of range"),undefined):l[m]=(((k+48>>>0)<<24>>>24)));return($bytesToString($subslice(new PL(l),m)));};NJ.ptr.prototype.Unix=function(){var k,l,m,n,o;k=new $Int64(0,0);l=new $Int64(0,0);m=this;n=(m.Sec);o=(m.Nsec);k=n;l=o;return[k,l];};NJ.prototype.Unix=function(){return this.$val.Unix();};NJ.ptr.prototype.Nano=function(){var k,l,m;k=this;return(l=$mul64((k.Sec),new $Int64(0,1000000000)),m=(k.Nsec),new $Int64(l.$high+m.$high,l.$low+m.$low));};NJ.prototype.Nano=function(){return this.$val.Nano();};DF=function(){$throwRuntimeError("native function not implemented: syscall.Getpagesize");};$pkg.Getpagesize=DF;DH=function(k,l){var k,l,m;m=$ifaceNil;m=DL(-100,k,l,0);return m;};$pkg.Chmod=DH;DL=function(k,l,m,n){var k,l,m,n,o;o=$ifaceNil;if(!((((n&~256)>>0)===0))){o=new GN(22);return o;}else if(!(((n&256)===0))){o=new GN(95);return o;}o=HZ(k,l,m);return o;};$pkg.Fchmodat=DL;DP=function(k,l,m){var k,l,m,n,o,p;n=0;o=$ifaceNil;p=IB(-100,k,l|0,m);n=p[0];o=p[1];return[n,o];};$pkg.Open=DP;GW.ptr.prototype.sockaddr=function(){var k,l,m,n,o,p,q,r,s;k=this;if(k.Port<0||k.Port>65535){return[0,0,new GN(22)];}k.raw.Family=2;m=(((l=k.raw,(l.$ptr_Port||(l.$ptr_Port=new QG(function(){return this.$target.Port;},function($v){this.$target.Port=$v;},l))))));m.nilCheck,m[0]=(((k.Port>>8>>0)<<24>>>24));m.nilCheck,m[1]=((k.Port<<24>>>24));n=0;while(true){if(!(n<4)){break;}(p=k.raw.Addr,((n<0||n>=p.length)?($throwRuntimeError("index out of range"),undefined):p[n]=(o=k.Addr,((n<0||n>=o.length)?($throwRuntimeError("index out of range"),undefined):o[n]))));n=n+(1)>>0;}q=new Uint8Array(16);return[(q),16,$ifaceNil];};GW.prototype.sockaddr=function(){return this.$val.sockaddr();};GX.ptr.prototype.sockaddr=function(){var k,l,m,n,o,p,q,r,s;k=this;if(k.Port<0||k.Port>65535){return[0,0,new GN(22)];}k.raw.Family=10;m=(((l=k.raw,(l.$ptr_Port||(l.$ptr_Port=new QG(function(){return this.$target.Port;},function($v){this.$target.Port=$v;},l))))));m.nilCheck,m[0]=(((k.Port>>8>>0)<<24>>>24));m.nilCheck,m[1]=((k.Port<<24>>>24));k.raw.Scope_id=k.ZoneId;n=0;while(true){if(!(n<16)){break;}(p=k.raw.Addr,((n<0||n>=p.length)?($throwRuntimeError("index out of range"),undefined):p[n]=(o=k.Addr,((n<0||n>=o.length)?($throwRuntimeError("index out of range"),undefined):o[n]))));n=n+(1)>>0;}q=new Uint8Array(28);return[(q),28,$ifaceNil];};GX.prototype.sockaddr=function(){return this.$val.sockaddr();};GY.ptr.prototype.sockaddr=function(){var k,l,m,n,o,p,q,r,s;k=this;l=k.Name;m=l.length;if(m>108){return[0,0,new GN(22)];}if((m===108)&&!((l.charCodeAt(0)===64))){return[0,0,new GN(22)];}k.raw.Family=1;n=0;while(true){if(!(n=o.length)?($throwRuntimeError("index out of range"),undefined):o[n]=((l.charCodeAt(n)<<24>>24))));n=n+(1)>>0;}p=2;if(m>0){p=p+((((m>>>0))+1>>>0))>>>0;}if(k.raw.Path[0]===64){k.raw.Path[0]=0;p=p-(1)>>>0;}q=new Uint8Array(110);return[(q),p,$ifaceNil];};GY.prototype.sockaddr=function(){return this.$val.sockaddr();};EH.ptr.prototype.sockaddr=function(){var k,l,m,n,o,p,q;k=this;if(k.Ifindex<0||k.Ifindex>2147483647){return[0,0,new GN(22)];}k.raw.Family=17;k.raw.Protocol=k.Protocol;k.raw.Ifindex=((k.Ifindex>>0));k.raw.Hatype=k.Hatype;k.raw.Pkttype=k.Pkttype;k.raw.Halen=k.Halen;l=0;while(true){if(!(l<8)){break;}(n=k.raw.Addr,((l<0||l>=n.length)?($throwRuntimeError("index out of range"),undefined):n[l]=(m=k.Addr,((l<0||l>=m.length)?($throwRuntimeError("index out of range"),undefined):m[l]))));l=l+(1)>>0;}o=new Uint8Array(20);return[(o),20,$ifaceNil];};EH.prototype.sockaddr=function(){return this.$val.sockaddr();};EI.ptr.prototype.sockaddr=function(){var k,l,m,n;k=this;k.raw.Family=16;k.raw.Pad=k.Pad;k.raw.Pid=k.Pid;k.raw.Groups=k.Groups;l=new Uint8Array(12);return[(l),12,$ifaceNil];};EI.prototype.sockaddr=function(){return this.$val.sockaddr();};EJ=function(k){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;l=k.Addr.Family;if(l===(16)){p=new Uint8Array(112);s=((m=(p),n=new OB.ptr(0,0,0,0),o=new DataView(m.buffer,m.byteOffset),n.Family=o.getUint16(0,true),n.Pad=o.getUint16(2,true),n.Pid=o.getUint32(4,true),n.Groups=o.getUint32(8,true),n));q=k,r=new DataView(p.buffer,p.byteOffset),q.Addr.Family=r.getUint16(0,true),q.Addr.Data=new($nativeArray($kindInt8))(p.buffer,$min(p.byteOffset+2,p.buffer.byteLength)),q.Pad=new($nativeArray($kindInt8))(p.buffer,$min(p.byteOffset+16,p.buffer.byteLength));t=new EI.ptr(0,0,0,0,new OB.ptr(0,0,0,0));t.Family=s.Family;t.Pad=s.Pad;t.Pid=s.Pid;t.Groups=s.Groups;return[t,$ifaceNil];}else if(l===(17)){x=new Uint8Array(112);aa=((u=(x),v=new OA.ptr(0,0,0,0,0,0,QF.zero()),w=new DataView(u.buffer,u.byteOffset),v.Family=w.getUint16(0,true),v.Protocol=w.getUint16(2,true),v.Ifindex=w.getInt32(4,true),v.Hatype=w.getUint16(8,true),v.Pkttype=w.getUint8(10,true),v.Halen=w.getUint8(11,true),v.Addr=new($nativeArray($kindUint8))(u.buffer,$min(u.byteOffset+12,u.buffer.byteLength)),v));y=k,z=new DataView(x.buffer,x.byteOffset),y.Addr.Family=z.getUint16(0,true),y.Addr.Data=new($nativeArray($kindInt8))(x.buffer,$min(x.byteOffset+2,x.buffer.byteLength)),y.Pad=new($nativeArray($kindInt8))(x.buffer,$min(x.byteOffset+16,x.buffer.byteLength));ab=new EH.ptr(0,0,0,0,0,QF.zero(),new OA.ptr(0,0,0,0,0,0,QF.zero()));ab.Protocol=aa.Protocol;ab.Ifindex=((aa.Ifindex>>0));ab.Hatype=aa.Hatype;ab.Pkttype=aa.Pkttype;ab.Halen=aa.Halen;ac=0;while(true){if(!(ac<8)){break;}(ae=ab.Addr,((ac<0||ac>=ae.length)?($throwRuntimeError("index out of range"),undefined):ae[ac]=(ad=aa.Addr,((ac<0||ac>=ad.length)?($throwRuntimeError("index out of range"),undefined):ad[ac]))));ac=ac+(1)>>0;}return[ab,$ifaceNil];}else if(l===(1)){ai=new Uint8Array(112);al=((af=(ai),ag=new NZ.ptr(0,RA.zero()),ah=new DataView(af.buffer,af.byteOffset),ag.Family=ah.getUint16(0,true),ag.Path=new($nativeArray($kindInt8))(af.buffer,$min(af.byteOffset+2,af.buffer.byteLength)),ag));aj=k,ak=new DataView(ai.buffer,ai.byteOffset),aj.Addr.Family=ak.getUint16(0,true),aj.Addr.Data=new($nativeArray($kindInt8))(ai.buffer,$min(ai.byteOffset+2,ai.buffer.byteLength)),aj.Pad=new($nativeArray($kindInt8))(ai.buffer,$min(ai.byteOffset+16,ai.buffer.byteLength));am=new GY.ptr("",new NZ.ptr(0,RA.zero()));if(al.Path[0]===0){al.Path[0]=64;}an=0;while(true){if(!(an<108&&!(((ao=al.Path,((an<0||an>=ao.length)?($throwRuntimeError("index out of range"),undefined):ao[an]))===0)))){break;}an=an+(1)>>0;}ap=$subslice(new PL((($sliceToArray(new PL(al.Path))))),0,an);am.Name=($bytesToString(ap));return[am,$ifaceNil];}else if(l===(2)){at=new Uint8Array(112);aw=((aq=(at),ar=new NX.ptr(0,0,RB.zero(),QF.zero()),as=new DataView(aq.buffer,aq.byteOffset),ar.Family=as.getUint16(0,true),ar.Port=as.getUint16(2,true),ar.Addr=new($nativeArray($kindUint8))(aq.buffer,$min(aq.byteOffset+4,aq.buffer.byteLength)),ar.Zero=new($nativeArray($kindUint8))(aq.buffer,$min(aq.byteOffset+8,aq.buffer.byteLength)),ar));au=k,av=new DataView(at.buffer,at.byteOffset),au.Addr.Family=av.getUint16(0,true),au.Addr.Data=new($nativeArray($kindInt8))(at.buffer,$min(at.byteOffset+2,at.buffer.byteLength)),au.Pad=new($nativeArray($kindInt8))(at.buffer,$min(at.byteOffset+16,at.buffer.byteLength));ax=new GW.ptr(0,RB.zero(),new NX.ptr(0,0,RB.zero(),QF.zero()));ay=(((aw.$ptr_Port||(aw.$ptr_Port=new QG(function(){return this.$target.Port;},function($v){this.$target.Port=$v;},aw)))));ax.Port=((((ay.nilCheck,ay[0])>>0))<<8>>0)+(((ay.nilCheck,ay[1])>>0))>>0;az=0;while(true){if(!(az<4)){break;}(bb=ax.Addr,((az<0||az>=bb.length)?($throwRuntimeError("index out of range"),undefined):bb[az]=(ba=aw.Addr,((az<0||az>=ba.length)?($throwRuntimeError("index out of range"),undefined):ba[az]))));az=az+(1)>>0;}return[ax,$ifaceNil];}else if(l===(10)){bf=new Uint8Array(112);bi=((bc=(bf),bd=new NY.ptr(0,0,0,QH.zero(),0),be=new DataView(bc.buffer,bc.byteOffset),bd.Family=be.getUint16(0,true),bd.Port=be.getUint16(2,true),bd.Flowinfo=be.getUint32(4,true),bd.Addr=new($nativeArray($kindUint8))(bc.buffer,$min(bc.byteOffset+8,bc.buffer.byteLength)),bd.Scope_id=be.getUint32(24,true),bd));bg=k,bh=new DataView(bf.buffer,bf.byteOffset),bg.Addr.Family=bh.getUint16(0,true),bg.Addr.Data=new($nativeArray($kindInt8))(bf.buffer,$min(bf.byteOffset+2,bf.buffer.byteLength)),bg.Pad=new($nativeArray($kindInt8))(bf.buffer,$min(bf.byteOffset+16,bf.buffer.byteLength));bj=new GX.ptr(0,0,QH.zero(),new NY.ptr(0,0,0,QH.zero(),0));bk=(((bi.$ptr_Port||(bi.$ptr_Port=new QG(function(){return this.$target.Port;},function($v){this.$target.Port=$v;},bi)))));bj.Port=((((bk.nilCheck,bk[0])>>0))<<8>>0)+(((bk.nilCheck,bk[1])>>0))>>0;bj.ZoneId=bi.Scope_id;bl=0;while(true){if(!(bl<16)){break;}(bn=bj.Addr,((bl<0||bl>=bn.length)?($throwRuntimeError("index out of range"),undefined):bn[bl]=(bm=bi.Addr,((bl<0||bl>=bm.length)?($throwRuntimeError("index out of range"),undefined):bm[bl]))));bl=bl+(1)>>0;}return[bj,$ifaceNil];}return[$ifaceNil,new GN(97)];};EK=function(k){var k,l,m,n,o,p,q,r,s;l=0;m=$ifaceNil;n=$ifaceNil;o=new OD.ptr(new OC.ptr(0,RC.zero()),RD.zero());p=112;q=MK(k,o,(r||(r=new RE(function(){return p;},function($v){p=$v;}))));l=q[0];n=q[1];if(!($interfaceIsEqual(n,$ifaceNil))){return[l,m,n];}s=EJ(o);m=s[0];n=s[1];if(!($interfaceIsEqual(n,$ifaceNil))){IR(l);l=0;}return[l,m,n];};$pkg.Accept=EK;EL=function(k,l){var k,l,m,n,o,p,q,r,s,t;m=0;n=$ifaceNil;o=$ifaceNil;p=new OD.ptr(new OC.ptr(0,RC.zero()),RD.zero());q=112;r=ML(k,p,(s||(s=new RE(function(){return q;},function($v){q=$v;}))),l);m=r[0];o=r[1];if(!($interfaceIsEqual(o,$ifaceNil))){return[m,n,o];}if(q>112){$panic(new $String("RawSockaddrAny too small"));}t=EJ(p);n=t[0];o=t[1];if(!($interfaceIsEqual(o,$ifaceNil))){IR(m);m=0;}return[m,n,o];};$pkg.Accept4=EL;EM=function(k){var k,l,m,n,o,p,q;l=$ifaceNil;m=$ifaceNil;n=new OD.ptr(new OC.ptr(0,RC.zero()),RD.zero());o=112;m=MW(k,n,(p||(p=new RE(function(){return o;},function($v){o=$v;}))));if(!($interfaceIsEqual(m,$ifaceNil))){return[l,m];}q=EJ(n);l=q[0];m=q[1];return[l,m];};$pkg.Getsockname=EM;EU=function(k,l,m,n){var k,l,m,n,o,p,q,r;o=$ifaceNil;p=new Uint8Array(12);o=MS(k,l,m,(p),12);q=n,r=new DataView(p.buffer,p.byteOffset),q.Multiaddr=new($nativeArray($kindUint8))(p.buffer,$min(p.byteOffset+0,p.buffer.byteLength)),q.Address=new($nativeArray($kindUint8))(p.buffer,$min(p.byteOffset+4,p.buffer.byteLength)),q.Ifindex=r.getInt32(8,true);return o;};$pkg.SetsockoptIPMreqn=EU;EV=function(k,l,m,n){var aa,ab,ac,ad,ae,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;o=0;p=0;q=0;r=$ifaceNil;s=$ifaceNil;t=new OK.ptr(PV.nil,0,RB.zero(),RG.nil,new $Uint64(0,0),PV.nil,new $Uint64(0,0),0,RB.zero());u=new OD.ptr(new OC.ptr(0,RC.zero()),RD.zero());v=new Uint8Array(112);t.Name=((v));w=u,x=new DataView(v.buffer,v.byteOffset),w.Addr.Family=x.getUint16(0,true),w.Addr.Data=new($nativeArray($kindInt8))(v.buffer,$min(v.byteOffset+2,v.buffer.byteLength)),w.Pad=new($nativeArray($kindInt8))(v.buffer,$min(v.byteOffset+16,v.buffer.byteLength));t.Namelen=112;y=new OG.ptr(PV.nil,new $Uint64(0,0));if(l.$length>0){y.Base=$indexPtr(l.$array,l.$offset+0,PV);y.SetLen(l.$length);}z=0;if(m.$length>0){if(l.$length===0){aa=0;ab=HC(k,1,3);aa=ab[0];s=ab[1];if(!($interfaceIsEqual(s,$ifaceNil))){return[o,p,q,r,s];}if(!((aa===2))){y.Base=(ac||(ac=new PV(function(){return z;},function($v){z=$v;})));y.SetLen(1);}}t.Control=$indexPtr(m.$array,m.$offset+0,PV);t.SetControllen(m.$length);}t.Iov=y;t.Iovlen=new $Uint64(0,1);ad=MZ(k,t,n);o=ad[0];s=ad[1];if(!($interfaceIsEqual(s,$ifaceNil))){return[o,p,q,r,s];}p=((t.Controllen.$low>>0));q=((t.Flags>>0));if(!((u.Addr.Family===0))){ae=EJ(u);r=ae[0];s=ae[1];}return[o,p,q,r,s];};$pkg.Recvmsg=EV;EX=function(k,l,m,n,o){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:p=[p];q=[q];r=[r];s=0;t=$ifaceNil;u=0;v=0;if(!($interfaceIsEqual(n,$ifaceNil))){$s=1;continue;}$s=2;continue;case 1:w=$ifaceNil;y=n.sockaddr();$s=3;case 3:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;u=x[0];v=x[1];w=x[2];if(!($interfaceIsEqual(w,$ifaceNil))){z=0;aa=w;s=z;t=aa;$s=-1;return[s,t];}case 2:r[0]=new OK.ptr(PV.nil,0,RB.zero(),RG.nil,new $Uint64(0,0),PV.nil,new $Uint64(0,0),0,RB.zero());r[0].Name=(u);r[0].Namelen=((v>>>0));q[0]=new OG.ptr(PV.nil,new $Uint64(0,0));if(l.$length>0){q[0].Base=$indexPtr(l.$array,l.$offset+0,PV);q[0].SetLen(l.$length);}p[0]=0;if(m.$length>0){if(l.$length===0){ab=0;ac=HC(k,1,3);ab=ac[0];t=ac[1];if(!($interfaceIsEqual(t,$ifaceNil))){ad=0;ae=t;s=ad;t=ae;$s=-1;return[s,t];}if(!((ab===2))){q[0].Base=(p.$ptr||(p.$ptr=new PV(function(){return this.$target[0];},function($v){this.$target[0]=$v;},p)));q[0].SetLen(1);}}r[0].Control=$indexPtr(m.$array,m.$offset+0,PV);r[0].SetControllen(m.$length);}r[0].Iov=q[0];r[0].Iovlen=new $Uint64(0,1);af=NA(k,r[0],o);s=af[0];t=af[1];if(!($interfaceIsEqual(t,$ifaceNil))){ag=0;ah=t;s=ag;t=ah;$s=-1;return[s,t];}if(m.$length>0&&(l.$length===0)){s=0;}ai=s;aj=$ifaceNil;s=ai;t=aj;$s=-1;return[s,t];}return;}if($f===undefined){$f={$blk:EX};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$pkg.SendmsgN=EX;FP=function(k,l){var k,l,m,n,o;m=0;n=$ifaceNil;o=JF(k,l);m=o[0];n=o[1];return[m,n];};$pkg.ReadDirent=FP;FQ=function(k){var k;return Z(k,0,8);};FR=function(k){var k;return Z(k,16,2);};FS=function(k){var k,l,m,n;l=FR(k);m=l[0];n=l[1];if(!n){return[new $Uint64(0,0),false];}return[new $Uint64(m.$high-0,m.$low-19),true];};GA=function(k,l){var k,l,m;m=$ifaceNil;m=MO(-100,k,l,0);return m;};$pkg.Stat=GA;GC=function(k,l){var k,l,m;m=$ifaceNil;m=MO(-100,k,l,256);return m;};$pkg.Lstat=GC;OG.ptr.prototype.SetLen=function(k){var k,l;l=this;l.Len=(new $Uint64(0,k));};OG.prototype.SetLen=function(k){return this.$val.SetLen(k);};OK.ptr.prototype.SetControllen=function(k){var k,l;l=this;l.Controllen=(new $Uint64(0,k));};OK.prototype.SetControllen=function(k){return this.$val.SetControllen(k);};GM.ptr.prototype.Mmap=function(k,l,m,n,o){var aa,ab,ac,ad,ae,af,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);p=[p];q=PL.nil;r=$ifaceNil;s=this;if(m<=0){t=PL.nil;u=new GN(22);q=t;r=u;$s=-1;return[q,r];}w=s.mmap(0,((m>>>0)),n,o,k,l);$s=1;case 1:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}v=w;x=v[0];y=v[1];if(!($interfaceIsEqual(y,$ifaceNil))){z=PL.nil;aa=y;q=z;r=aa;$s=-1;return[q,r];}p[0]=new RK.ptr(x,m,m);ab=p[0];ac=$indexPtr(ab.$array,ab.$offset+(ab.$capacity-1>>0),PV);$r=s.Mutex.Lock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(s.Mutex,"Unlock"),[]]);ad=ac;(s.active||$throwRuntimeError("assignment to entry in nil map"))[PV.keyFor(ad)]={k:ad,v:ab};ae=ab;af=$ifaceNil;q=ae;r=af;$s=-1;return[q,r];}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return[q,r];}if($curGoroutine.asleep){if($f===undefined){$f={$blk:GM.ptr.prototype.Mmap};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};GM.prototype.Mmap=function(k,l,m,n,o){return this.$val.Mmap(k,l,m,n,o);};GM.ptr.prototype.Munmap=function(k){var k,l,m,n,o,p,q,r,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);l=$ifaceNil;m=this;if((k.$length===0)||!((k.$length===k.$capacity))){l=new GN(22);$s=-1;return l;}n=$indexPtr(k.$array,k.$offset+(k.$capacity-1>>0),PV);$r=m.Mutex.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(m.Mutex,"Unlock"),[]]);p=(o=m.active[PV.keyFor(n)],o!==undefined?o.v:PL.nil);if(p===PL.nil||!($indexPtr(p.$array,p.$offset+0,PV)===$indexPtr(k.$array,k.$offset+0,PV))){l=new GN(22);$s=-1;return l;}q=m.munmap((($sliceToArray(p))),((p.$length>>>0)));$s=2;case 2:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}r=q;if(!($interfaceIsEqual(r,$ifaceNil))){l=r;$s=-1;return l;}delete m.active[PV.keyFor(n)];l=$ifaceNil;$s=-1;return l;}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return l;}if($curGoroutine.asleep){if($f===undefined){$f={$blk:GM.ptr.prototype.Munmap};}$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};GM.prototype.Munmap=function(k){return this.$val.Munmap(k);};GN.prototype.Error=function(){var k,l;k=this.$val;if(0<=((k>>0))&&((k>>0))<133){l=((k<0||k>=HW.length)?($throwRuntimeError("index out of range"),undefined):HW[k]);if(!(l==="")){return l;}}return"errno "+CZ(((k>>0)));};$ptrType(GN).prototype.Error=function(){return new GN(this.$get()).Error();};GN.prototype.Temporary=function(){var k;k=this.$val;return(k===4)||(k===24)||new GN(k).Timeout();};$ptrType(GN).prototype.Temporary=function(){return new GN(this.$get()).Temporary();};GN.prototype.Timeout=function(){var k;k=this.$val;return(k===11)||(k===11)||(k===110);};$ptrType(GN).prototype.Timeout=function(){return new GN(this.$get()).Timeout();};GR=function(k){var k,l;l=k;if(l===(0)){return $ifaceNil;}else if(l===(11)){return GO;}else if(l===(22)){return GP;}else if(l===(2)){return GQ;}return new GN(k);};GT=function(k,l){var k,l,m,n,o;m=0;n=$ifaceNil;o=JZ(k,l);m=o[0];n=o[1];if(false){if(m>0){D.WriteRange(($sliceToArray(l)),m);}if($interfaceIsEqual(n,$ifaceNil)){D.Acquire(((PU||(PU=new RL(function(){return HR;},function($v){HR=$v;})))));}}if(false&&m>0){CA(($sliceToArray(l)),m);}return[m,n];};$pkg.Read=GT;GU=function(k,l){var k,l,m,n,o;m=0;n=$ifaceNil;if(false){D.ReleaseMerge(((PU||(PU=new RL(function(){return HR;},function($v){HR=$v;})))));}o=KU(k,l);m=o[0];n=o[1];if(false&&m>0){D.ReadRange(($sliceToArray(l)),m);}if(false&&m>0){BZ(($sliceToArray(l)),m);}return[m,n];};$pkg.Write=GU;GZ=function(k,l){var k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:m=$ifaceNil;o=l.sockaddr();$s=1;case 1:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;p=n[0];q=n[1];m=n[2];if(!($interfaceIsEqual(m,$ifaceNil))){m=m;$s=-1;return m;}m=MM(k,p,q);$s=-1;return m;}return;}if($f===undefined){$f={$blk:GZ};}$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Bind=GZ;HC=function(k,l,m){var k,l,m,n,o,p,q,r,s,t,u;n=0;o=$ifaceNil;p=0;q=4;o=MR(k,l,m,((r||(r=new PZ(function(){return p;},function($v){p=$v;})))),(s||(s=new RE(function(){return q;},function($v){q=$v;}))));t=((p>>0));u=o;n=t;o=u;return[n,o];};$pkg.GetsockoptInt=HC;HD=function(k,l,m){var k,l,m,n,o,p,q,r,s,t,u;n=0;o=$ifaceNil;p=$ifaceNil;q=new OD.ptr(new OC.ptr(0,RC.zero()),RD.zero());r=112;s=MX(k,l,m,q,(t||(t=new RE(function(){return r;},function($v){r=$v;}))));n=s[0];p=s[1];if(!($interfaceIsEqual(p,$ifaceNil))){return[n,o,p];}if(!((q.Addr.Family===0))){u=EJ(q);o=u[0];p=u[1];}return[n,o,p];};$pkg.Recvfrom=HD;HE=function(k,l,m,n){var k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:o=$ifaceNil;q=n.sockaddr();$s=1;case 1:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;r=p[0];s=p[1];o=p[2];if(!($interfaceIsEqual(o,$ifaceNil))){o=o;$s=-1;return o;}o=MY(k,l,m,r,s);$s=-1;return o;}return;}if($f===undefined){$f={$blk:HE};}$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Sendto=HE;HF=function(k,l,m,n){var k,l,m,n,o,p;o=$ifaceNil;o=MS(k,l,m,((p||(p=new PV(function(){return n;},function($v){n=$v;})))),1);return o;};$pkg.SetsockoptByte=HF;HG=function(k,l,m,n){var k,l,m,n,o,p,q;o=$ifaceNil;p=((n>>0));o=MS(k,l,m,((q||(q=new PZ(function(){return p;},function($v){p=$v;})))),4);return o;};$pkg.SetsockoptInt=HG;HH=function(k,l,m,n){var k,l,m,n,o;o=$ifaceNil;o=MS(k,l,m,($sliceToArray(new PL(n))),4);return o;};$pkg.SetsockoptInet4Addr=HH;HI=function(k,l,m,n){var k,l,m,n,o,p,q,r;o=$ifaceNil;p=new Uint8Array(8);o=MS(k,l,m,(p),8);q=n,r=new DataView(p.buffer,p.byteOffset),q.Multiaddr=new($nativeArray($kindUint8))(p.buffer,$min(p.byteOffset+0,p.buffer.byteLength)),q.Interface=new($nativeArray($kindUint8))(p.buffer,$min(p.byteOffset+4,p.buffer.byteLength));return o;};$pkg.SetsockoptIPMreq=HI;HJ=function(k,l,m,n){var k,l,m,n,o,p,q,r;o=$ifaceNil;p=new Uint8Array(20);o=MS(k,l,m,(p),20);q=n,r=new DataView(p.buffer,p.byteOffset),q.Multiaddr=new($nativeArray($kindUint8))(p.buffer,$min(p.byteOffset+0,p.buffer.byteLength)),q.Interface=r.getUint32(16,true);return o;};$pkg.SetsockoptIPv6Mreq=HJ;HL=function(k,l,m,n){var k,l,m,n,o,p,q,r;o=$ifaceNil;p=new Uint8Array(8);o=MS(k,l,m,(p),8);q=n,r=new DataView(p.buffer,p.byteOffset),q.Onoff=r.getInt32(0,true),q.Linger=r.getInt32(4,true);return o;};$pkg.SetsockoptLinger=HL;HO=function(k,l,m){var k,l,m,n,o,p,q,r;n=0;o=$ifaceNil;if((k===10)&&$pkg.SocketDisableIPv6){p=-1;q=new GN(97);n=p;o=q;return[n,o];}r=MT(k,l,m);n=r[0];o=r[1];return[n,o];};$pkg.Socket=HO;HZ=function(k,l,m){var k,l,m,n,o,p,q,r;n=$ifaceNil;o=PV.nil;p=Y(l);o=p[0];n=p[1];if(!($interfaceIsEqual(n,$ifaceNil))){return n;}q=T(268,((k>>>0)),((o)),((m>>>0)));r=q[2];if(!((r===0))){n=GR(r);}return n;};IB=function(k,l,m,n){var k,l,m,n,o,p,q,r,s,t,u;o=0;p=$ifaceNil;q=PV.nil;r=Y(l);q=r[0];p=r[1];if(!($interfaceIsEqual(p,$ifaceNil))){return[o,p];}s=U(257,((k>>>0)),((q)),((m>>>0)),((n>>>0)),0,0);t=s[0];u=s[2];o=((t>>0));if(!((u===0))){p=GR(u);}return[o,p];};IR=function(k){var k,l,m,n;l=$ifaceNil;m=T(3,((k>>>0)),0,0);n=m[2];if(!((n===0))){l=GR(n);}return l;};$pkg.Close=IR;IS=function(k){var k,l,m,n,o,p;l=0;m=$ifaceNil;n=T(32,((k>>>0)),0,0);o=n[0];p=n[2];l=((o>>0));if(!((p===0))){m=GR(p);}return[l,m];};$pkg.Dup=IS;IY=function(k){var k,l,m,n;l=$ifaceNil;m=T(81,((k>>>0)),0,0);n=m[2];if(!((n===0))){l=GR(n);}return l;};$pkg.Fchdir=IY;IZ=function(k,l){var k,l,m,n,o;m=$ifaceNil;n=T(91,((k>>>0)),((l>>>0)),0);o=n[2];if(!((o===0))){m=GR(o);}return m;};$pkg.Fchmod=IZ;JB=function(k,l,m){var k,l,m,n,o,p,q,r;n=0;o=$ifaceNil;p=T(72,((k>>>0)),((l>>>0)),((m>>>0)));q=p[0];r=p[2];n=((q>>0));if(!((r===0))){o=GR(r);}return[n,o];};JE=function(k){var k,l,m,n;l=$ifaceNil;m=T(74,((k>>>0)),0,0);n=m[2];if(!((n===0))){l=GR(n);}return l;};$pkg.Fsync=JE;JF=function(k,l){var k,l,m,n,o,p,q,r;m=0;n=$ifaceNil;o=0;if(l.$length>0){o=($sliceToArray(l));}else{o=(new Uint8Array(0));}p=T(217,((k>>>0)),(o),((l.$length>>>0)));q=p[0];r=p[2];m=((q>>0));if(!((r===0))){n=GR(r);}return[m,n];};$pkg.Getdents=JF;JZ=function(k,l){var k,l,m,n,o,p,q,r;m=0;n=$ifaceNil;o=0;if(l.$length>0){o=($sliceToArray(l));}else{o=(new Uint8Array(0));}p=T(0,((k>>>0)),(o),((l.$length>>>0)));q=p[0];r=p[2];m=((q>>0));if(!((r===0))){n=GR(r);}return[m,n];};KU=function(k,l){var k,l,m,n,o,p,q,r;m=0;n=$ifaceNil;o=0;if(l.$length>0){o=($sliceToArray(l));}else{o=(new Uint8Array(0));}p=T(1,((k>>>0)),(o),((l.$length>>>0)));q=p[0];r=p[2];m=((q>>0));if(!((r===0))){n=GR(r);}return[m,n];};KY=function(k,l){var k,l,m,n,o;m=$ifaceNil;n=T(11,(k),(l),0);o=n[2];if(!((o===0))){m=GR(o);}return m;};LG=function(k,l,m){var k,l,m,n,o,p;n=$ifaceNil;o=T(93,((k>>>0)),((l>>>0)),((m>>>0)));p=o[2];if(!((p===0))){n=GR(p);}return n;};$pkg.Fchown=LG;LH=function(k,l){var k,l,m,n,o,p,q,r;m=$ifaceNil;o=new Uint8Array(144);n=T(5,((k>>>0)),((o)),0);p=l,q=new DataView(o.buffer,o.byteOffset),p.Dev=new $Uint64(q.getUint32(4,true),q.getUint32(0,true)),p.Ino=new $Uint64(q.getUint32(12,true),q.getUint32(8,true)),p.Nlink=new $Uint64(q.getUint32(20,true),q.getUint32(16,true)),p.Mode=q.getUint32(24,true),p.Uid=q.getUint32(28,true),p.Gid=q.getUint32(32,true),p.X__pad0=q.getInt32(36,true),p.Rdev=new $Uint64(q.getUint32(44,true),q.getUint32(40,true)),p.Size=new $Int64(q.getUint32(52,true),q.getUint32(48,true)),p.Blksize=new $Int64(q.getUint32(60,true),q.getUint32(56,true)),p.Blocks=new $Int64(q.getUint32(68,true),q.getUint32(64,true)),p.Atim.Sec=new $Int64(q.getUint32(76,true),q.getUint32(72,true)),p.Atim.Nsec=new $Int64(q.getUint32(84,true),q.getUint32(80,true)),p.Mtim.Sec=new $Int64(q.getUint32(92,true),q.getUint32(88,true)),p.Mtim.Nsec=new $Int64(q.getUint32(100,true),q.getUint32(96,true)),p.Ctim.Sec=new $Int64(q.getUint32(108,true),q.getUint32(104,true)),p.Ctim.Nsec=new $Int64(q.getUint32(116,true),q.getUint32(112,true)),p.X__unused=new($nativeArray($kindInt64))(o.buffer,$min(o.byteOffset+120,o.buffer.byteLength));r=n[2];if(!((r===0))){m=GR(r);}return m;};$pkg.Fstat=LH;LJ=function(k,l){var k,l,m,n,o;m=$ifaceNil;n=T(77,((k>>>0)),((l.$low>>>0)),0);o=n[2];if(!((o===0))){m=GR(o);}return m;};$pkg.Ftruncate=LJ;LT=function(k,l,m){var k,l,m,n,o,p,q,r,s;n=0;o=$ifaceNil;p=0;if(l.$length>0){p=($sliceToArray(l));}else{p=(new Uint8Array(0));}q=U(17,((k>>>0)),(p),((l.$length>>>0)),((m.$low>>>0)),0,0);r=q[0];s=q[2];n=((r>>0));if(!((s===0))){o=GR(s);}return[n,o];};$pkg.Pread=LT;LU=function(k,l,m){var k,l,m,n,o,p,q,r,s;n=0;o=$ifaceNil;p=0;if(l.$length>0){p=($sliceToArray(l));}else{p=(new Uint8Array(0));}q=U(18,((k>>>0)),(p),((l.$length>>>0)),((m.$low>>>0)),0,0);r=q[0];s=q[2];n=((r>>0));if(!((s===0))){o=GR(s);}return[n,o];};$pkg.Pwrite=LU;LV=function(k,l,m){var k,l,m,n,o,p,q,r;n=new $Int64(0,0);o=$ifaceNil;p=T(8,((k>>>0)),((l.$low>>>0)),((m>>>0)));q=p[0];r=p[2];n=(new $Int64(0,q.constructor===Number?q:1));if(!((r===0))){o=GR(r);}return[n,o];};$pkg.Seek=LV;MF=function(k,l){var k,l,m,n,o;m=$ifaceNil;n=T(48,((k>>>0)),((l>>>0)),0);o=n[2];if(!((o===0))){m=GR(o);}return m;};$pkg.Shutdown=MF;MK=function(k,l,m){var k,l,m,n,o,p,q,r,s,t,u;n=0;o=$ifaceNil;q=new Uint8Array(112);p=T(43,((k>>>0)),((q)),((m)));r=l,s=new DataView(q.buffer,q.byteOffset),r.Addr.Family=s.getUint16(0,true),r.Addr.Data=new($nativeArray($kindInt8))(q.buffer,$min(q.byteOffset+2,q.buffer.byteLength)),r.Pad=new($nativeArray($kindInt8))(q.buffer,$min(q.byteOffset+16,q.buffer.byteLength));t=p[0];u=p[2];n=((t>>0));if(!((u===0))){o=GR(u);}return[n,o];};ML=function(k,l,m,n){var k,l,m,n,o,p,q,r,s,t,u,v;o=0;p=$ifaceNil;r=new Uint8Array(112);q=U(288,((k>>>0)),((r)),((m)),((n>>>0)),0,0);s=l,t=new DataView(r.buffer,r.byteOffset),s.Addr.Family=t.getUint16(0,true),s.Addr.Data=new($nativeArray($kindInt8))(r.buffer,$min(r.byteOffset+2,r.buffer.byteLength)),s.Pad=new($nativeArray($kindInt8))(r.buffer,$min(r.byteOffset+16,r.buffer.byteLength));u=q[0];v=q[2];o=((u>>0));if(!((v===0))){p=GR(v);}return[o,p];};MM=function(k,l,m){var k,l,m,n,o,p;n=$ifaceNil;o=T(49,((k>>>0)),(l),((m>>>0)));p=o[2];if(!((p===0))){n=GR(p);}return n;};MO=function(k,l,m,n){var k,l,m,n,o,p,q,r,s,t,u,v;o=$ifaceNil;p=PV.nil;q=Y(l);p=q[0];o=q[1];if(!($interfaceIsEqual(o,$ifaceNil))){return o;}s=new Uint8Array(144);r=U(262,((k>>>0)),((p)),((s)),((n>>>0)),0,0);t=m,u=new DataView(s.buffer,s.byteOffset),t.Dev=new $Uint64(u.getUint32(4,true),u.getUint32(0,true)),t.Ino=new $Uint64(u.getUint32(12,true),u.getUint32(8,true)),t.Nlink=new $Uint64(u.getUint32(20,true),u.getUint32(16,true)),t.Mode=u.getUint32(24,true),t.Uid=u.getUint32(28,true),t.Gid=u.getUint32(32,true),t.X__pad0=u.getInt32(36,true),t.Rdev=new $Uint64(u.getUint32(44,true),u.getUint32(40,true)),t.Size=new $Int64(u.getUint32(52,true),u.getUint32(48,true)),t.Blksize=new $Int64(u.getUint32(60,true),u.getUint32(56,true)),t.Blocks=new $Int64(u.getUint32(68,true),u.getUint32(64,true)),t.Atim.Sec=new $Int64(u.getUint32(76,true),u.getUint32(72,true)),t.Atim.Nsec=new $Int64(u.getUint32(84,true),u.getUint32(80,true)),t.Mtim.Sec=new $Int64(u.getUint32(92,true),u.getUint32(88,true)),t.Mtim.Nsec=new $Int64(u.getUint32(100,true),u.getUint32(96,true)),t.Ctim.Sec=new $Int64(u.getUint32(108,true),u.getUint32(104,true)),t.Ctim.Nsec=new $Int64(u.getUint32(116,true),u.getUint32(112,true)),t.X__unused=new($nativeArray($kindInt64))(s.buffer,$min(s.byteOffset+120,s.buffer.byteLength));v=r[2];if(!((v===0))){o=GR(v);}return o;};MR=function(k,l,m,n,o){var k,l,m,n,o,p,q,r;p=$ifaceNil;q=U(55,((k>>>0)),((l>>>0)),((m>>>0)),(n),((o)),0);r=q[2];if(!((r===0))){p=GR(r);}return p;};MS=function(k,l,m,n,o){var k,l,m,n,o,p,q,r;p=$ifaceNil;q=U(54,((k>>>0)),((l>>>0)),((m>>>0)),(n),(o),0);r=q[2];if(!((r===0))){p=GR(r);}return p;};MT=function(k,l,m){var k,l,m,n,o,p,q,r;n=0;o=$ifaceNil;p=V(41,((k>>>0)),((l>>>0)),((m>>>0)));q=p[0];r=p[2];n=((q>>0));if(!((r===0))){o=GR(r);}return[n,o];};MW=function(k,l,m){var k,l,m,n,o,p,q,r,s;n=$ifaceNil;p=new Uint8Array(112);o=V(51,((k>>>0)),((p)),((m)));q=l,r=new DataView(p.buffer,p.byteOffset),q.Addr.Family=r.getUint16(0,true),q.Addr.Data=new($nativeArray($kindInt8))(p.buffer,$min(p.byteOffset+2,p.buffer.byteLength)),q.Pad=new($nativeArray($kindInt8))(p.buffer,$min(p.byteOffset+16,p.buffer.byteLength));s=o[2];if(!((s===0))){n=GR(s);}return n;};MX=function(k,l,m,n,o){var k,l,m,n,o,p,q,r,s,t,u,v,w,x;p=0;q=$ifaceNil;r=0;if(l.$length>0){r=($sliceToArray(l));}else{r=(new Uint8Array(0));}t=new Uint8Array(112);s=U(45,((k>>>0)),(r),((l.$length>>>0)),((m>>>0)),((t)),((o)));u=n,v=new DataView(t.buffer,t.byteOffset),u.Addr.Family=v.getUint16(0,true),u.Addr.Data=new($nativeArray($kindInt8))(t.buffer,$min(t.byteOffset+2,t.buffer.byteLength)),u.Pad=new($nativeArray($kindInt8))(t.buffer,$min(t.byteOffset+16,t.buffer.byteLength));w=s[0];x=s[2];p=((w>>0));if(!((x===0))){q=GR(x);}return[p,q];};MY=function(k,l,m,n,o){var k,l,m,n,o,p,q,r,s;p=$ifaceNil;q=0;if(l.$length>0){q=($sliceToArray(l));}else{q=(new Uint8Array(0));}r=U(44,((k>>>0)),(q),((l.$length>>>0)),((m>>>0)),(n),((o>>>0)));s=r[2];if(!((s===0))){p=GR(s);}return p;};MZ=function(k,l,m){var k,l,m,n,o,p,q,r,s,t,u;n=0;o=$ifaceNil;q=new Uint8Array(48);p=T(47,((k>>>0)),((q)),((m>>>0)));r=l,s=new DataView(q.buffer,q.byteOffset),r.Namelen=s.getUint32(4,true),r.Pad_cgo_0=new($nativeArray($kindUint8))(q.buffer,$min(q.byteOffset+8,q.buffer.byteLength)),r.Iovlen=new $Uint64(s.getUint32(20,true),s.getUint32(16,true)),r.Controllen=new $Uint64(s.getUint32(36,true),s.getUint32(32,true)),r.Flags=s.getInt32(40,true),r.Pad_cgo_1=new($nativeArray($kindUint8))(q.buffer,$min(q.byteOffset+44,q.buffer.byteLength));t=p[0];u=p[2];n=((t>>0));if(!((u===0))){o=GR(u);}return[n,o];};NA=function(k,l,m){var k,l,m,n,o,p,q,r,s,t,u;n=0;o=$ifaceNil;q=new Uint8Array(48);p=T(46,((k>>>0)),((q)),((m>>>0)));r=l,s=new DataView(q.buffer,q.byteOffset),r.Namelen=s.getUint32(4,true),r.Pad_cgo_0=new($nativeArray($kindUint8))(q.buffer,$min(q.byteOffset+8,q.buffer.byteLength)),r.Iovlen=new $Uint64(s.getUint32(20,true),s.getUint32(16,true)),r.Controllen=new $Uint64(s.getUint32(36,true),s.getUint32(32,true)),r.Flags=s.getInt32(40,true),r.Pad_cgo_1=new($nativeArray($kindUint8))(q.buffer,$min(q.byteOffset+44,q.buffer.byteLength));t=p[0];u=p[2];n=((t>>0));if(!((u===0))){o=GR(u);}return[n,o];};NB=function(k,l,m,n,o,p){var k,l,m,n,o,p,q,r,s,t,u;q=0;r=$ifaceNil;s=U(9,(k),(l),((m>>>0)),((n>>>0)),((o>>>0)),((p.$low>>>0)));t=s[0];u=s[2];q=(t);if(!((u===0))){r=GR(u);}return[q,r];};RQ.methods=[{prop:"toWireFormat",name:"toWireFormat",pkg:"syscall",typ:$funcType([],[PL],false)}];RR.methods=[{prop:"sockaddr",name:"sockaddr",pkg:"syscall",typ:$funcType([],[$UnsafePointer,OE,$error],false)}];QL.methods=[{prop:"sockaddr",name:"sockaddr",pkg:"syscall",typ:$funcType([],[$UnsafePointer,OE,$error],false)}];RS.methods=[{prop:"Mmap",name:"Mmap",pkg:"",typ:$funcType([$Int,$Int64,$Int,$Int,$Int],[PL,$error],false)},{prop:"Munmap",name:"Munmap",pkg:"",typ:$funcType([PL],[$error],false)}];GN.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)}];RW.methods=[{prop:"sockaddr",name:"sockaddr",pkg:"syscall",typ:$funcType([],[$UnsafePointer,OE,$error],false)}];RX.methods=[{prop:"sockaddr",name:"sockaddr",pkg:"syscall",typ:$funcType([],[$UnsafePointer,OE,$error],false)}];RY.methods=[{prop:"sockaddr",name:"sockaddr",pkg:"syscall",typ:$funcType([],[$UnsafePointer,OE,$error],false)}];RZ.methods=[{prop:"Unix",name:"Unix",pkg:"",typ:$funcType([],[$Int64,$Int64],false)},{prop:"Nano",name:"Nano",pkg:"",typ:$funcType([],[$Int64],false)}];RG.methods=[{prop:"SetLen",name:"SetLen",pkg:"",typ:$funcType([$Int],[],false)}];SF.methods=[{prop:"SetControllen",name:"SetControllen",pkg:"",typ:$funcType([$Int],[],false)}];CB.init([{prop:"Control",name:"Control",pkg:"",typ:$funcType([RO],[$error],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([RP],[$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([RP],[$error],false)}]);CF.init("",[{prop:"Header",name:"Header",embedded:false,exported:true,typ:OS,tag:""},{prop:"Data",name:"Data",embedded:false,exported:true,typ:OU,tag:""}]);CI.init("",[{prop:"Header",name:"Header",embedded:false,exported:true,typ:OS,tag:""},{prop:"Data",name:"Data",embedded:false,exported:true,typ:PL,tag:""}]);CL.init("",[{prop:"Attr",name:"Attr",embedded:false,exported:true,typ:OW,tag:""},{prop:"Value",name:"Value",embedded:false,exported:true,typ:PL,tag:""}]);EH.init("syscall",[{prop:"Protocol",name:"Protocol",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Ifindex",name:"Ifindex",embedded:false,exported:true,typ:$Int,tag:""},{prop:"Hatype",name:"Hatype",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Pkttype",name:"Pkttype",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Halen",name:"Halen",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:QF,tag:""},{prop:"raw",name:"raw",embedded:false,exported:false,typ:OA,tag:""}]);EI.init("syscall",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Pad",name:"Pad",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Pid",name:"Pid",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Groups",name:"Groups",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"raw",name:"raw",embedded:false,exported:false,typ:OB,tag:""}]);GM.init("syscall",[{prop:"Mutex",name:"Mutex",embedded:true,exported:true,typ:C.Mutex,tag:""},{prop:"active",name:"active",embedded:false,exported:false,typ:RT,tag:""},{prop:"mmap",name:"mmap",embedded:false,exported:false,typ:RU,tag:""},{prop:"munmap",name:"munmap",embedded:false,exported:false,typ:RV,tag:""}]);GV.init([{prop:"sockaddr",name:"sockaddr",pkg:"syscall",typ:$funcType([],[$UnsafePointer,OE,$error],false)}]);GW.init("syscall",[{prop:"Port",name:"Port",embedded:false,exported:true,typ:$Int,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:RB,tag:""},{prop:"raw",name:"raw",embedded:false,exported:false,typ:NX,tag:""}]);GX.init("syscall",[{prop:"Port",name:"Port",embedded:false,exported:true,typ:$Int,tag:""},{prop:"ZoneId",name:"ZoneId",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:QH,tag:""},{prop:"raw",name:"raw",embedded:false,exported:false,typ:NY,tag:""}]);GY.init("syscall",[{prop:"Name",name:"Name",embedded:false,exported:true,typ:$String,tag:""},{prop:"raw",name:"raw",embedded:false,exported:false,typ:NZ,tag:""}]);NJ.init("",[{prop:"Sec",name:"Sec",embedded:false,exported:true,typ:$Int64,tag:""},{prop:"Nsec",name:"Nsec",embedded:false,exported:true,typ:$Int64,tag:""}]);NS.init("",[{prop:"Dev",name:"Dev",embedded:false,exported:true,typ:$Uint64,tag:""},{prop:"Ino",name:"Ino",embedded:false,exported:true,typ:$Uint64,tag:""},{prop:"Nlink",name:"Nlink",embedded:false,exported:true,typ:$Uint64,tag:""},{prop:"Mode",name:"Mode",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Uid",name:"Uid",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Gid",name:"Gid",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"X__pad0",name:"X__pad0",embedded:false,exported:true,typ:$Int32,tag:""},{prop:"Rdev",name:"Rdev",embedded:false,exported:true,typ:$Uint64,tag:""},{prop:"Size",name:"Size",embedded:false,exported:true,typ:$Int64,tag:""},{prop:"Blksize",name:"Blksize",embedded:false,exported:true,typ:$Int64,tag:""},{prop:"Blocks",name:"Blocks",embedded:false,exported:true,typ:$Int64,tag:""},{prop:"Atim",name:"Atim",embedded:false,exported:true,typ:NJ,tag:""},{prop:"Mtim",name:"Mtim",embedded:false,exported:true,typ:NJ,tag:""},{prop:"Ctim",name:"Ctim",embedded:false,exported:true,typ:NJ,tag:""},{prop:"X__unused",name:"X__unused",embedded:false,exported:true,typ:QU,tag:""}]);NX.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Port",name:"Port",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:RB,tag:""},{prop:"Zero",name:"Zero",embedded:false,exported:true,typ:QF,tag:""}]);NY.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Port",name:"Port",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Flowinfo",name:"Flowinfo",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:QH,tag:""},{prop:"Scope_id",name:"Scope_id",embedded:false,exported:true,typ:$Uint32,tag:""}]);NZ.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Path",name:"Path",embedded:false,exported:true,typ:RA,tag:""}]);OA.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Protocol",name:"Protocol",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Ifindex",name:"Ifindex",embedded:false,exported:true,typ:$Int32,tag:""},{prop:"Hatype",name:"Hatype",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Pkttype",name:"Pkttype",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Halen",name:"Halen",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:QF,tag:""}]);OB.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Pad",name:"Pad",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Pid",name:"Pid",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Groups",name:"Groups",embedded:false,exported:true,typ:$Uint32,tag:""}]);OC.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Data",name:"Data",embedded:false,exported:true,typ:RC,tag:""}]);OD.init("",[{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:OC,tag:""},{prop:"Pad",name:"Pad",embedded:false,exported:true,typ:RD,tag:""}]);OF.init("",[{prop:"Onoff",name:"Onoff",embedded:false,exported:true,typ:$Int32,tag:""},{prop:"Linger",name:"Linger",embedded:false,exported:true,typ:$Int32,tag:""}]);OG.init("",[{prop:"Base",name:"Base",embedded:false,exported:true,typ:PV,tag:""},{prop:"Len",name:"Len",embedded:false,exported:true,typ:$Uint64,tag:""}]);OH.init("",[{prop:"Multiaddr",name:"Multiaddr",embedded:false,exported:true,typ:RB,tag:""},{prop:"Interface",name:"Interface",embedded:false,exported:true,typ:RB,tag:""}]);OI.init("",[{prop:"Multiaddr",name:"Multiaddr",embedded:false,exported:true,typ:RB,tag:""},{prop:"Address",name:"Address",embedded:false,exported:true,typ:RB,tag:""},{prop:"Ifindex",name:"Ifindex",embedded:false,exported:true,typ:$Int32,tag:""}]);OJ.init("",[{prop:"Multiaddr",name:"Multiaddr",embedded:false,exported:true,typ:QH,tag:""},{prop:"Interface",name:"Interface",embedded:false,exported:true,typ:$Uint32,tag:""}]);OK.init("",[{prop:"Name",name:"Name",embedded:false,exported:true,typ:PV,tag:""},{prop:"Namelen",name:"Namelen",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Pad_cgo_0",name:"Pad_cgo_0",embedded:false,exported:true,typ:RB,tag:""},{prop:"Iov",name:"Iov",embedded:false,exported:true,typ:RG,tag:""},{prop:"Iovlen",name:"Iovlen",embedded:false,exported:true,typ:$Uint64,tag:""},{prop:"Control",name:"Control",embedded:false,exported:true,typ:PV,tag:""},{prop:"Controllen",name:"Controllen",embedded:false,exported:true,typ:$Uint64,tag:""},{prop:"Flags",name:"Flags",embedded:false,exported:true,typ:$Int32,tag:""},{prop:"Pad_cgo_1",name:"Pad_cgo_1",embedded:false,exported:true,typ:RB,tag:""}]);OS.init("",[{prop:"Len",name:"Len",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Type",name:"Type",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Flags",name:"Flags",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Seq",name:"Seq",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Pid",name:"Pid",embedded:false,exported:true,typ:$Uint32,tag:""}]);OU.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint8,tag:""}]);OW.init("",[{prop:"Len",name:"Len",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Type",name:"Type",embedded:false,exported:true,typ:$Uint16,tag:""}]);OX.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"X__ifi_pad",name:"X__ifi_pad",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Type",name:"Type",embedded:false,exported:true,typ:$Uint16,tag:""},{prop:"Index",name:"Index",embedded:false,exported:true,typ:$Int32,tag:""},{prop:"Flags",name:"Flags",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Change",name:"Change",embedded:false,exported:true,typ:$Uint32,tag:""}]);OY.init("",[{prop:"Family",name:"Family",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Prefixlen",name:"Prefixlen",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Flags",name:"Flags",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Scope",name:"Scope",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Index",name:"Index",embedded:false,exported:true,typ:$Uint32,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}F=PL.nil;P=null;$pkg.ForkLock=new C.RWMutex.ptr(new C.Mutex.ptr(0,0),0,0,0,0);$pkg.SocketDisableIPv6=false;HR=new $Int64(0,0);E=false;Q=false;R=-1;AG=M();$pkg.Stdin=0;$pkg.Stdout=1;$pkg.Stderr=2;GO=new GN(11);GP=new GN(22);GQ=new GN(2);HW=$toNativeArray($kindString,["","operation not permitted","no such file or directory","no such process","interrupted system call","input/output error","no such device or address","argument list too long","exec format error","bad file descriptor","no child processes","resource temporarily unavailable","cannot allocate memory","permission denied","bad address","block device required","device or resource busy","file exists","invalid cross-device link","no such device","not a directory","is a directory","invalid argument","too many open files in system","too many open files","inappropriate ioctl for device","text file busy","file too large","no space left on device","illegal seek","read-only file system","too many links","broken pipe","numerical argument out of domain","numerical result out of range","resource deadlock avoided","file name too long","no locks available","function not implemented","directory not empty","too many levels of symbolic links","","no message of desired type","identifier removed","channel number out of range","level 2 not synchronized","level 3 halted","level 3 reset","link number out of range","protocol driver not attached","no CSI structure available","level 2 halted","invalid exchange","invalid request descriptor","exchange full","no anode","invalid request code","invalid slot","","bad font file format","device not a stream","no data available","timer expired","out of streams resources","machine is not on the network","package not installed","object is remote","link has been severed","advertise error","srmount error","communication error on send","protocol error","multihop attempted","RFS specific error","bad message","value too large for defined data type","name not unique on network","file descriptor in bad state","remote address changed","can not access a needed shared library","accessing a corrupted shared library",".lib section in a.out corrupted","attempting to link in too many shared libraries","cannot exec a shared library directly","invalid or incomplete multibyte or wide character","interrupted system call should be restarted","streams pipe error","too many users","socket operation on non-socket","destination address required","message too long","protocol wrong type for socket","protocol not available","protocol not supported","socket type not supported","operation not supported","protocol family not supported","address family not supported by protocol","address already in use","cannot assign requested address","network is down","network is unreachable","network dropped connection on reset","software caused connection abort","connection reset by peer","no buffer space available","transport endpoint is already connected","transport endpoint is not connected","cannot send after transport endpoint shutdown","too many references: cannot splice","connection timed out","connection refused","host is down","no route to host","operation already in progress","operation now in progress","stale NFS file handle","structure needs cleaning","not a XENIX named type file","no XENIX semaphores available","is a named type file","remote I/O error","disk quota exceeded","no medium found","wrong medium type","operation canceled","required key not available","key has expired","key has been revoked","key was rejected by service","owner died","state not recoverable","operation not possible due to RF-kill"]);FX=new GM.ptr(new C.Mutex.ptr(0,0),{},NB,KY);G();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/gopherjs/gopherjs/nosync"]=(function(){var $pkg={},$init,B,E,F,J,M,N,O,P,Q;B=$pkg.Mutex=$newType(0,$kindStruct,"nosync.Mutex",true,"github.com/gopherjs/gopherjs/nosync",true,function(locked_){this.$val=this;if(arguments.length===0){this.locked=false;return;}this.locked=locked_;});E=$pkg.Once=$newType(0,$kindStruct,"nosync.Once",true,"github.com/gopherjs/gopherjs/nosync",true,function(doing_,done_){this.$val=this;if(arguments.length===0){this.doing=false;this.done=false;return;}this.doing=doing_;this.done=done_;});F=$pkg.Pool=$newType(0,$kindStruct,"nosync.Pool",true,"github.com/gopherjs/gopherjs/nosync",true,function(store_,New_){this.$val=this;if(arguments.length===0){this.store=O.nil;this.New=$throwNilPointerError;return;}this.store=store_;this.New=New_;});J=$ptrType(B);M=$funcType([],[],false);N=$ptrType(E);O=$sliceType($emptyInterface);P=$ptrType(F);Q=$funcType([],[$emptyInterface],false);B.ptr.prototype.Lock=function(){var a;a=this;if(a.locked){$panic(new $String("nosync: mutex is already locked"));}a.locked=true;};B.prototype.Lock=function(){return this.$val.Lock();};B.ptr.prototype.Unlock=function(){var a;a=this;if(!a.locked){$panic(new $String("nosync: unlock of unlocked mutex"));}a.locked=false;};B.prototype.Unlock=function(){return this.$val.Unlock();};E.ptr.prototype.Do=function(a){var a,b,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=[b];b[0]=this;if(b[0].done){$s=-1;return;}if(b[0].doing){$panic(new $String("nosync: Do called within f"));}b[0].doing=true;$deferred.push([(function(b){return function(){b[0].doing=false;b[0].done=true;};})(b),[]]);$r=a();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:E.ptr.prototype.Do};}$f.a=a;$f.b=b;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};E.prototype.Do=function(a){return this.$val.Do(a);};F.ptr.prototype.Get=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;if(a.store.$length===0){$s=1;continue;}$s=2;continue;case 1:if(!(a.New===$throwNilPointerError)){$s=3;continue;}$s=4;continue;case 3:b=a.New();$s=5;case 5:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return b;case 4:$s=-1;return $ifaceNil;case 2:e=(c=a.store,d=a.store.$length-1>>0,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]));a.store=$subslice(a.store,0,(a.store.$length-1>>0));$s=-1;return e;}return;}if($f===undefined){$f={$blk:F.ptr.prototype.Get};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};F.prototype.Get=function(){return this.$val.Get();};F.ptr.prototype.Put=function(a){var a,b;b=this;if($interfaceIsEqual(a,$ifaceNil)){return;}b.store=$append(b.store,a);};F.prototype.Put=function(a){return this.$val.Put(a);};J.methods=[{prop:"Lock",name:"Lock",pkg:"",typ:$funcType([],[],false)},{prop:"Unlock",name:"Unlock",pkg:"",typ:$funcType([],[],false)}];N.methods=[{prop:"Do",name:"Do",pkg:"",typ:$funcType([M],[],false)}];P.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([],[$emptyInterface],false)},{prop:"Put",name:"Put",pkg:"",typ:$funcType([$emptyInterface],[],false)}];B.init("github.com/gopherjs/gopherjs/nosync",[{prop:"locked",name:"locked",embedded:false,exported:false,typ:$Bool,tag:""}]);E.init("github.com/gopherjs/gopherjs/nosync",[{prop:"doing",name:"doing",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"done",name:"done",embedded:false,exported:false,typ:$Bool,tag:""}]);F.init("github.com/gopherjs/gopherjs/nosync",[{prop:"store",name:"store",embedded:false,exported:false,typ:O,tag:""},{prop:"New",name:"New",embedded:false,exported:true,typ:Q,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["time"]=(function(){var $pkg={},$init,C,B,E,A,D,G,AE,AX,BI,BL,BM,BO,BS,CJ,CK,CL,DK,DL,DM,DO,DQ,DR,DS,DT,DU,DV,DX,EA,EB,EC,ED,EE,EF,EG,O,Q,T,U,V,W,AA,AD,AR,BN,BP,BZ,CB,CM,DI,CN,DJ,CO,CQ,CY,h,F,H,I,J,L,M,P,R,S,X,Y,Z,AB,AC,AF,AG,AH,AI,AJ,AK,AM,AN,AO,AP,AQ,AS,AW,AY,AZ,BJ,BQ,BR,BT,BU,BV,BX,BY,CA,CC,CD,CE,CF,CG,CH,CI,CP;C=$packages["errors"];B=$packages["github.com/gopherjs/gopherjs/js"];E=$packages["github.com/gopherjs/gopherjs/nosync"];A=$packages["runtime"];D=$packages["syscall"];G=$pkg.runtimeTimer=$newType(0,$kindStruct,"time.runtimeTimer",true,"time",false,function(i_,when_,period_,f_,arg_,timeout_,active_){this.$val=this;if(arguments.length===0){this.i=0;this.when=new $Int64(0,0);this.period=new $Int64(0,0);this.f=$throwNilPointerError;this.arg=$ifaceNil;this.timeout=null;this.active=false;return;}this.i=i_;this.when=when_;this.period=period_;this.f=f_;this.arg=arg_;this.timeout=timeout_;this.active=active_;});AE=$pkg.ParseError=$newType(0,$kindStruct,"time.ParseError",true,"time",true,function(Layout_,Value_,LayoutElem_,ValueElem_,Message_){this.$val=this;if(arguments.length===0){this.Layout="";this.Value="";this.LayoutElem="";this.ValueElem="";this.Message="";return;}this.Layout=Layout_;this.Value=Value_;this.LayoutElem=LayoutElem_;this.ValueElem=ValueElem_;this.Message=Message_;});AX=$pkg.Timer=$newType(0,$kindStruct,"time.Timer",true,"time",true,function(C_,r_){this.$val=this;if(arguments.length===0){this.C=$chanNil;this.r=new G.ptr(0,new $Int64(0,0),new $Int64(0,0),$throwNilPointerError,$ifaceNil,null,false);return;}this.C=C_;this.r=r_;});BI=$pkg.Ticker=$newType(0,$kindStruct,"time.Ticker",true,"time",true,function(C_,r_){this.$val=this;if(arguments.length===0){this.C=$chanNil;this.r=new G.ptr(0,new $Int64(0,0),new $Int64(0,0),$throwNilPointerError,$ifaceNil,null,false);return;}this.C=C_;this.r=r_;});BL=$pkg.Time=$newType(0,$kindStruct,"time.Time",true,"time",true,function(wall_,ext_,loc_){this.$val=this;if(arguments.length===0){this.wall=new $Uint64(0,0);this.ext=new $Int64(0,0);this.loc=DU.nil;return;}this.wall=wall_;this.ext=ext_;this.loc=loc_;});BM=$pkg.Month=$newType(4,$kindInt,"time.Month",true,"time",true,null);BO=$pkg.Weekday=$newType(4,$kindInt,"time.Weekday",true,"time",true,null);BS=$pkg.Duration=$newType(8,$kindInt64,"time.Duration",true,"time",true,null);CJ=$pkg.Location=$newType(0,$kindStruct,"time.Location",true,"time",true,function(name_,zone_,tx_,cacheStart_,cacheEnd_,cacheZone_){this.$val=this;if(arguments.length===0){this.name="";this.zone=DK.nil;this.tx=DL.nil;this.cacheStart=new $Int64(0,0);this.cacheEnd=new $Int64(0,0);this.cacheZone=DM.nil;return;}this.name=name_;this.zone=zone_;this.tx=tx_;this.cacheStart=cacheStart_;this.cacheEnd=cacheEnd_;this.cacheZone=cacheZone_;});CK=$pkg.zone=$newType(0,$kindStruct,"time.zone",true,"time",false,function(name_,offset_,isDST_){this.$val=this;if(arguments.length===0){this.name="";this.offset=0;this.isDST=false;return;}this.name=name_;this.offset=offset_;this.isDST=isDST_;});CL=$pkg.zoneTrans=$newType(0,$kindStruct,"time.zoneTrans",true,"time",false,function(when_,index_,isstd_,isutc_){this.$val=this;if(arguments.length===0){this.when=new $Int64(0,0);this.index=0;this.isstd=false;this.isutc=false;return;}this.when=when_;this.index=index_;this.isstd=isstd_;this.isutc=isutc_;});DK=$sliceType(CK);DL=$sliceType(CL);DM=$ptrType(CK);DO=$sliceType($String);DQ=$arrayType($Uint8,20);DR=$sliceType($Uint8);DS=$arrayType($Uint8,9);DT=$arrayType($Uint8,64);DU=$ptrType(CJ);DV=$chanType(BL,false,false);DX=$arrayType($Uint8,32);EA=$funcType([$emptyInterface,$Uintptr],[],false);EB=$ptrType(B.Object);EC=$ptrType(AE);ED=$ptrType(AX);EE=$chanType(BL,false,true);EF=$ptrType(BI);EG=$ptrType(BL);F=function(){$unused(CE(new $Int64(0,0),new $Int64(0,0)));};H=function(){var i,j,k,l;i=new($global.Date)();j=$internalize(i,$String);k=P(j,40);l=P(j,41);if((k===-1)||(l===-1)){CN.name="UTC";return;}CN.name=$substring(j,(k+1>>0),l);CN.zone=new DK([new CK.ptr(CN.name,$imul(($parseInt(i.getTimezoneOffset())>>0),-60),false)]);};I=function(){return $mul64($internalize(new($global.Date)().getTime(),$Int64),new $Int64(0,1000000));};J=function(){var i,j,k,l,m,n,o,p;i=new $Int64(0,0);j=0;k=new $Int64(0,0);l=I();m=$div64(l,new $Int64(0,1000000000),false);n=(((o=$div64(l,new $Int64(0,1000000000),true),o.$low+((o.$high>>31)*4294967296))>>0));p=l;i=m;j=n;k=p;return[i,j,k];};L=function(i){var i,j,k,l;i.active=true;l=$div64(((j=i.when,k=I(),new $Int64(j.$high-k.$high,j.$low-k.$low))),new $Int64(0,1000000),false);if((l.$high>0||(l.$high===0&&l.$low>2147483647))){return;}if((l.$high<0||(l.$high===0&&l.$low<0))){l=new $Int64(0,0);}i.timeout=$setTimeout((function(){var m,n,o;i.active=false;if(!((m=i.period,(m.$high===0&&m.$low===0)))){i.when=(n=i.when,o=i.period,new $Int64(n.$high+o.$high,n.$low+o.$low));L(i);}$go(i.f,[i.arg,0]);}),$externalize(new $Int64(l.$high+0,l.$low+1),$Int64));};M=function(i){var i,j;$global.clearTimeout(i.timeout);j=i.active;i.active=false;return j;};P=function(i,j){var i,j;return $parseInt(i.indexOf($global.String.fromCharCode(j)))>>0;};R=function(i){var i,j;if(i.length===0){return false;}j=i.charCodeAt(0);return 97<=j&&j<=122;};S=function(i){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,ct,cu,cv,cw,cx,cy,cz,da,db,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;j="";k=0;l="";m=0;while(true){if(!(m>0));o=n;if(o===(74)){if(i.length>=(m+3>>0)&&$substring(i,m,(m+3>>0))==="Jan"){if(i.length>=(m+7>>0)&&$substring(i,m,(m+7>>0))==="January"){p=$substring(i,0,m);q=257;r=$substring(i,(m+7>>0));j=p;k=q;l=r;return[j,k,l];}if(!R($substring(i,(m+3>>0)))){s=$substring(i,0,m);t=258;u=$substring(i,(m+3>>0));j=s;k=t;l=u;return[j,k,l];}}}else if(o===(77)){if(i.length>=(m+3>>0)){if($substring(i,m,(m+3>>0))==="Mon"){if(i.length>=(m+6>>0)&&$substring(i,m,(m+6>>0))==="Monday"){v=$substring(i,0,m);w=261;x=$substring(i,(m+6>>0));j=v;k=w;l=x;return[j,k,l];}if(!R($substring(i,(m+3>>0)))){y=$substring(i,0,m);z=262;aa=$substring(i,(m+3>>0));j=y;k=z;l=aa;return[j,k,l];}}if($substring(i,m,(m+3>>0))==="MST"){ab=$substring(i,0,m);ac=21;ad=$substring(i,(m+3>>0));j=ab;k=ac;l=ad;return[j,k,l];}}}else if(o===(48)){if(i.length>=(m+2>>0)&&49<=i.charCodeAt((m+1>>0))&&i.charCodeAt((m+1>>0))<=54){ae=$substring(i,0,m);af=(ag=i.charCodeAt((m+1>>0))-49<<24>>>24,((ag<0||ag>=Q.length)?($throwRuntimeError("index out of range"),undefined):Q[ag]));ah=$substring(i,(m+2>>0));j=ae;k=af;l=ah;return[j,k,l];}}else if(o===(49)){if(i.length>=(m+2>>0)&&(i.charCodeAt((m+1>>0))===53)){ai=$substring(i,0,m);aj=522;ak=$substring(i,(m+2>>0));j=ai;k=aj;l=ak;return[j,k,l];}al=$substring(i,0,m);am=259;an=$substring(i,(m+1>>0));j=al;k=am;l=an;return[j,k,l];}else if(o===(50)){if(i.length>=(m+4>>0)&&$substring(i,m,(m+4>>0))==="2006"){ao=$substring(i,0,m);ap=273;aq=$substring(i,(m+4>>0));j=ao;k=ap;l=aq;return[j,k,l];}ar=$substring(i,0,m);as=263;at=$substring(i,(m+1>>0));j=ar;k=as;l=at;return[j,k,l];}else if(o===(95)){if(i.length>=(m+2>>0)&&(i.charCodeAt((m+1>>0))===50)){if(i.length>=(m+5>>0)&&$substring(i,(m+1>>0),(m+5>>0))==="2006"){au=$substring(i,0,(m+1>>0));av=273;aw=$substring(i,(m+5>>0));j=au;k=av;l=aw;return[j,k,l];}ax=$substring(i,0,m);ay=264;az=$substring(i,(m+2>>0));j=ax;k=ay;l=az;return[j,k,l];}}else if(o===(51)){ba=$substring(i,0,m);bb=523;bc=$substring(i,(m+1>>0));j=ba;k=bb;l=bc;return[j,k,l];}else if(o===(52)){bd=$substring(i,0,m);be=525;bf=$substring(i,(m+1>>0));j=bd;k=be;l=bf;return[j,k,l];}else if(o===(53)){bg=$substring(i,0,m);bh=527;bi=$substring(i,(m+1>>0));j=bg;k=bh;l=bi;return[j,k,l];}else if(o===(80)){if(i.length>=(m+2>>0)&&(i.charCodeAt((m+1>>0))===77)){bj=$substring(i,0,m);bk=531;bl=$substring(i,(m+2>>0));j=bj;k=bk;l=bl;return[j,k,l];}}else if(o===(112)){if(i.length>=(m+2>>0)&&(i.charCodeAt((m+1>>0))===109)){bm=$substring(i,0,m);bn=532;bo=$substring(i,(m+2>>0));j=bm;k=bn;l=bo;return[j,k,l];}}else if(o===(45)){if(i.length>=(m+7>>0)&&$substring(i,m,(m+7>>0))==="-070000"){bp=$substring(i,0,m);bq=28;br=$substring(i,(m+7>>0));j=bp;k=bq;l=br;return[j,k,l];}if(i.length>=(m+9>>0)&&$substring(i,m,(m+9>>0))==="-07:00:00"){bs=$substring(i,0,m);bt=31;bu=$substring(i,(m+9>>0));j=bs;k=bt;l=bu;return[j,k,l];}if(i.length>=(m+5>>0)&&$substring(i,m,(m+5>>0))==="-0700"){bv=$substring(i,0,m);bw=27;bx=$substring(i,(m+5>>0));j=bv;k=bw;l=bx;return[j,k,l];}if(i.length>=(m+6>>0)&&$substring(i,m,(m+6>>0))==="-07:00"){by=$substring(i,0,m);bz=30;ca=$substring(i,(m+6>>0));j=by;k=bz;l=ca;return[j,k,l];}if(i.length>=(m+3>>0)&&$substring(i,m,(m+3>>0))==="-07"){cb=$substring(i,0,m);cc=29;cd=$substring(i,(m+3>>0));j=cb;k=cc;l=cd;return[j,k,l];}}else if(o===(90)){if(i.length>=(m+7>>0)&&$substring(i,m,(m+7>>0))==="Z070000"){ce=$substring(i,0,m);cf=23;cg=$substring(i,(m+7>>0));j=ce;k=cf;l=cg;return[j,k,l];}if(i.length>=(m+9>>0)&&$substring(i,m,(m+9>>0))==="Z07:00:00"){ch=$substring(i,0,m);ci=26;cj=$substring(i,(m+9>>0));j=ch;k=ci;l=cj;return[j,k,l];}if(i.length>=(m+5>>0)&&$substring(i,m,(m+5>>0))==="Z0700"){ck=$substring(i,0,m);cl=22;cm=$substring(i,(m+5>>0));j=ck;k=cl;l=cm;return[j,k,l];}if(i.length>=(m+6>>0)&&$substring(i,m,(m+6>>0))==="Z07:00"){cn=$substring(i,0,m);co=25;cp=$substring(i,(m+6>>0));j=cn;k=co;l=cp;return[j,k,l];}if(i.length>=(m+3>>0)&&$substring(i,m,(m+3>>0))==="Z07"){cq=$substring(i,0,m);cr=24;cs=$substring(i,(m+3>>0));j=cq;k=cr;l=cs;return[j,k,l];}}else if(o===(46)){if((m+1>>0)>0))===48)||(i.charCodeAt((m+1>>0))===57))){ct=i.charCodeAt((m+1>>0));cu=m+1>>0;while(true){if(!(cu>0;}if(!AG(i,cu)){cv=32;if(i.charCodeAt((m+1>>0))===57){cv=33;}cv=cv|((((cu-((m+1>>0))>>0))<<16>>0));cw=$substring(i,0,m);cx=cv;cy=$substring(i,cu);j=cw;k=cx;l=cy;return[j,k,l];}}}m=m+(1)>>0;}cz=i;da=0;db="";j=cz;k=da;l=db;return[j,k,l];};X=function(i,j){var i,j,k,l,m;k=0;while(true){if(!(k>>0;m=(m|(32))>>>0;if(!((l===m))||l<97||l>122){return false;}}k=k+(1)>>0;}return true;};Y=function(i,j){var i,j,k,l,m,n;k=i;l=0;while(true){if(!(l=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+l]);if(j.length>=n.length&&X($substring(j,0,n.length),n)){return[m,$substring(j,n.length),$ifaceNil];}l++;}return[-1,j,AD];};Z=function(i,j,k){var i,j,k,l,m,n,o,p,q;l=((j>>>0));if(j<0){i=$append(i,45);l=((-j>>>0));}m=DQ.zero();n=20;while(true){if(!(l>=10)){break;}n=n-(1)>>0;p=(o=l/10,(o===o&&o!==1/0&&o!==-1/0)?o>>>0:$throwRuntimeError("integer divide by zero"));((n<0||n>=m.length)?($throwRuntimeError("index out of range"),undefined):m[n]=((((48+l>>>0)-(p*10>>>0)>>>0)<<24>>>24)));l=p;}n=n-(1)>>0;((n<0||n>=m.length)?($throwRuntimeError("index out of range"),undefined):m[n]=(((48+l>>>0)<<24>>>24)));q=20-n>>0;while(true){if(!(q>0;}return $appendSlice(i,$subslice(new DR(m),n));};AB=function(i){var i,j,k,l,m,n,o,p,q,r,s;j=0;k=$ifaceNil;l=false;if(!(i==="")&&((i.charCodeAt(0)===45)||(i.charCodeAt(0)===43))){l=i.charCodeAt(0)===45;i=$substring(i,1);}m=AS(i);n=m[0];o=m[1];k=m[2];j=(((n.$low+((n.$high>>31)*4294967296))>>0));if(!($interfaceIsEqual(k,$ifaceNil))||!(o==="")){p=0;q=AA;j=p;k=q;return[j,k];}if(l){j=-j;}r=j;s=$ifaceNil;j=r;k=s;return[j,k];};AC=function(i,j,k,l){var i,j,k,l,m,n,o,p,q,r;m=j;n=DS.zero();o=9;while(true){if(!(o>0)){break;}o=o-(1)>>0;((o<0||o>=n.length)?($throwRuntimeError("index out of range"),undefined):n[o]=((((p=m%10,p===p?p:$throwRuntimeError("integer divide by zero"))+48>>>0)<<24>>>24)));m=(q=m/(10),(q===q&&q!==1/0&&q!==-1/0)?q>>>0:$throwRuntimeError("integer divide by zero"));}if(k>9){k=9;}if(l){while(true){if(!(k>0&&((r=k-1>>0,((r<0||r>=n.length)?($throwRuntimeError("index out of range"),undefined):n[r]))===48))){break;}k=k-(1)>>0;}if(k===0){return i;}}i=$append(i,46);return $appendSlice(i,$subslice(new DR(n),0,k));};BL.ptr.prototype.String=function(){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=$clone(i,BL).Format("2006-01-02 15:04:05.999999999 -0700 MST");$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j;if(!((l=(m=i.wall,new $Uint64(m.$high&2147483648,(m.$low&0)>>>0)),(l.$high===0&&l.$low===0)))){o=((n=i.ext,new $Uint64(n.$high,n.$low)));p=43;if((q=i.ext,(q.$high<0||(q.$high===0&&q.$low<0)))){p=45;o=new $Uint64(-o.$high,-o.$low);}r=$div64(o,new $Uint64(0,1000000000),false);s=$div64(o,new $Uint64(0,1000000000),true);t=r;o=s;u=$div64(t,new $Uint64(0,1000000000),false);v=$div64(t,new $Uint64(0,1000000000),true);w=u;t=v;x=DR.nil;x=$appendSlice(x," m=");x=$append(x,p);y=0;if(!((w.$high===0&&w.$low===0))){x=Z(x,((w.$low>>0)),0);y=9;}x=Z(x,((t.$low>>0)),y);x=$append(x,46);x=Z(x,((o.$low>>0)),9);k=k+(($bytesToString(x)));}$s=-1;return k;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.String};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.String=function(){return this.$val.String();};BL.ptr.prototype.Format=function(i){var i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j=this;k=DR.nil;l=i.length+10>>0;if(l<64){m=DT.zero();k=$subslice(new DR(m),0,0);}else{k=$makeSlice(DR,0,l);}n=$clone(j,BL).AppendFormat(k,i);$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}k=n;$s=-1;return($bytesToString(k));}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.Format};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.Format=function(i){return this.$val.Format(i);};BL.ptr.prototype.AppendFormat=function(i,j){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:k=this;m=$clone(k,BL).locabs();$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;n=l[0];o=l[1];p=l[2];q=-1;r=0;s=0;t=-1;u=0;v=0;while(true){if(!(!(j===""))){break;}w=S(j);x=w[0];y=w[1];z=w[2];if(!(x==="")){i=$appendSlice(i,x);}if(y===0){break;}j=z;if(q<0&&!(((y&256)===0))){aa=BY(p,true);q=aa[0];r=aa[1];s=aa[2];}if(t<0&&!(((y&512)===0))){ab=BR(p);t=ab[0];u=ab[1];v=ab[2];}switch(0){default:ac=y&65535;if(ac===(274)){ad=q;if(ad<0){ad=-ad;}i=Z(i,(ae=ad%100,ae===ae?ae:$throwRuntimeError("integer divide by zero")),2);}else if(ac===(273)){i=Z(i,q,4);}else if(ac===(258)){i=$appendSlice(i,$substring(new BM(r).String(),0,3));}else if(ac===(257)){af=new BM(r).String();i=$appendSlice(i,af);}else if(ac===(259)){i=Z(i,((r>>0)),0);}else if(ac===(260)){i=Z(i,((r>>0)),2);}else if(ac===(262)){i=$appendSlice(i,$substring(new BO(BQ(p)).String(),0,3));}else if(ac===(261)){ag=new BO(BQ(p)).String();i=$appendSlice(i,ag);}else if(ac===(263)){i=Z(i,s,0);}else if(ac===(264)){if(s<10){i=$append(i,32);}i=Z(i,s,0);}else if(ac===(265)){i=Z(i,s,2);}else if(ac===(522)){i=Z(i,t,2);}else if(ac===(523)){ai=(ah=t%12,ah===ah?ah:$throwRuntimeError("integer divide by zero"));if(ai===0){ai=12;}i=Z(i,ai,0);}else if(ac===(524)){ak=(aj=t%12,aj===aj?aj:$throwRuntimeError("integer divide by zero"));if(ak===0){ak=12;}i=Z(i,ak,2);}else if(ac===(525)){i=Z(i,u,0);}else if(ac===(526)){i=Z(i,u,2);}else if(ac===(527)){i=Z(i,v,0);}else if(ac===(528)){i=Z(i,v,2);}else if(ac===(531)){if(t>=12){i=$appendSlice(i,"PM");}else{i=$appendSlice(i,"AM");}}else if(ac===(532)){if(t>=12){i=$appendSlice(i,"pm");}else{i=$appendSlice(i,"am");}}else if((ac===(22))||(ac===(25))||(ac===(23))||(ac===(24))||(ac===(26))||(ac===(27))||(ac===(30))||(ac===(28))||(ac===(29))||(ac===(31))){if((o===0)&&((y===22)||(y===25)||(y===23)||(y===24)||(y===26))){i=$append(i,90);break;}am=(al=o/60,(al===al&&al!==1/0&&al!==-1/0)?al>>0:$throwRuntimeError("integer divide by zero"));an=o;if(am<0){i=$append(i,45);am=-am;an=-an;}else{i=$append(i,43);}i=Z(i,(ao=am/60,(ao===ao&&ao!==1/0&&ao!==-1/0)?ao>>0:$throwRuntimeError("integer divide by zero")),2);if((y===25)||(y===30)||(y===26)||(y===31)){i=$append(i,58);}if(!((y===29))&&!((y===24))){i=Z(i,(ap=am%60,ap===ap?ap:$throwRuntimeError("integer divide by zero")),2);}if((y===23)||(y===28)||(y===31)||(y===26)){if((y===31)||(y===26)){i=$append(i,58);}i=Z(i,(aq=an%60,aq===aq?aq:$throwRuntimeError("integer divide by zero")),2);}}else if(ac===(21)){if(!(n==="")){i=$appendSlice(i,n);break;}as=(ar=o/60,(ar===ar&&ar!==1/0&&ar!==-1/0)?ar>>0:$throwRuntimeError("integer divide by zero"));if(as<0){i=$append(i,45);as=-as;}else{i=$append(i,43);}i=Z(i,(at=as/60,(at===at&&at!==1/0&&at!==-1/0)?at>>0:$throwRuntimeError("integer divide by zero")),2);i=Z(i,(au=as%60,au===au?au:$throwRuntimeError("integer divide by zero")),2);}else if((ac===(32))||(ac===(33))){i=AC(i,(($clone(k,BL).Nanosecond()>>>0)),y>>16>>0,(y&65535)===33);}}}$s=-1;return i;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.AppendFormat};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.AppendFormat=function(i,j){return this.$val.AppendFormat(i,j);};AF=function(i){var i;return"\""+i+"\"";};AE.ptr.prototype.Error=function(){var i;i=this;if(i.Message===""){return"parsing time "+AF(i.Value)+" as "+AF(i.Layout)+": cannot parse "+AF(i.ValueElem)+" as "+AF(i.LayoutElem);}return"parsing time "+AF(i.Value)+i.Message;};AE.prototype.Error=function(){return this.$val.Error();};AG=function(i,j){var i,j,k;if(i.length<=j){return false;}k=i.charCodeAt(j);return 48<=k&&k<=57;};AH=function(i,j){var i,j;if(!AG(i,0)){return[0,i,AD];}if(!AG(i,1)){if(j){return[0,i,AD];}return[(((i.charCodeAt(0)-48<<24>>>24)>>0)),$substring(i,1),$ifaceNil];}return[($imul((((i.charCodeAt(0)-48<<24>>>24)>>0)),10))+(((i.charCodeAt(1)-48<<24>>>24)>>0))>>0,$substring(i,2),$ifaceNil];};AI=function(i){var i;while(true){if(!(i.length>0&&(i.charCodeAt(0)===32))){break;}i=$substring(i,1);}return i;};AJ=function(i,j){var i,j;while(true){if(!(j.length>0)){break;}if(j.charCodeAt(0)===32){if(i.length>0&&!((i.charCodeAt(0)===32))){return[i,AD];}j=AI(j);i=AI(i);continue;}if((i.length===0)||!((i.charCodeAt(0)===j.charCodeAt(0)))){return[i,AD];}j=$substring(j,1);i=$substring(i,1);}return[i,$ifaceNil];};AK=function(i,j){var i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:k=AM(i,j,$pkg.UTC,$pkg.Local);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}$s=-1;return k;}return;}if($f===undefined){$f={$blk:AK};}$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Parse=AK;AM=function(i,j,k,l){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,ct,cu,cv,cw,cx,cy,cz,da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl,dm,dn,dp,dq,dr,ds,dt,du,dv,dw,dx,dy,dz,ea,eb,ec,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;bu=$f.bu;bv=$f.bv;bw=$f.bw;bx=$f.bx;by=$f.by;bz=$f.bz;ca=$f.ca;cb=$f.cb;cc=$f.cc;cd=$f.cd;ce=$f.ce;cf=$f.cf;cg=$f.cg;ch=$f.ch;ci=$f.ci;cj=$f.cj;ck=$f.ck;cl=$f.cl;cm=$f.cm;cn=$f.cn;co=$f.co;cp=$f.cp;cq=$f.cq;cr=$f.cr;cs=$f.cs;ct=$f.ct;cu=$f.cu;cv=$f.cv;cw=$f.cw;cx=$f.cx;cy=$f.cy;cz=$f.cz;da=$f.da;db=$f.db;dc=$f.dc;dd=$f.dd;de=$f.de;df=$f.df;dg=$f.dg;dh=$f.dh;di=$f.di;dj=$f.dj;dk=$f.dk;dl=$f.dl;dm=$f.dm;dn=$f.dn;dp=$f.dp;dq=$f.dq;dr=$f.dr;ds=$f.ds;dt=$f.dt;du=$f.du;dv=$f.dv;dw=$f.dw;dx=$f.dx;dy=$f.dy;dz=$f.dz;ea=$f.ea;eb=$f.eb;ec=$f.ec;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:m=i;n=j;o=m;p=n;q="";r=false;s=false;t=0;u=1;v=1;w=0;x=0;y=0;z=0;aa=DU.nil;ab=-1;ac="";while(true){ad=$ifaceNil;ae=S(i);af=ae[0];ag=ae[1];ah=ae[2];ai=$substring(i,af.length,(i.length-ah.length>>0));aj=AJ(j,af);j=aj[0];ad=aj[1];if(!($interfaceIsEqual(ad,$ifaceNil))){$s=-1;return[new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil),new AE.ptr(o,p,af,j,"")];}if(ag===0){if(!((j.length===0))){$s=-1;return[new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil),new AE.ptr(o,p,"",j,": extra text: "+j)];}break;}i=ah;ak="";switch(0){default:al=ag&65535;if(al===(274)){if(j.length<2){ad=AD;break;}am=$substring(j,0,2);an=$substring(j,2);ak=am;j=an;ao=AB(ak);t=ao[0];ad=ao[1];if(t>=69){t=t+(1900)>>0;}else{t=t+(2000)>>0;}}else if(al===(273)){if(j.length<4||!AG(j,0)){ad=AD;break;}ap=$substring(j,0,4);aq=$substring(j,4);ak=ap;j=aq;ar=AB(ak);t=ar[0];ad=ar[1];}else if(al===(258)){as=Y(V,j);u=as[0];j=as[1];ad=as[2];u=u+(1)>>0;}else if(al===(257)){at=Y(W,j);u=at[0];j=at[1];ad=at[2];u=u+(1)>>0;}else if((al===(259))||(al===(260))){au=AH(j,ag===260);u=au[0];j=au[1];ad=au[2];if(u<=0||120&&(j.charCodeAt(0)===32)){j=$substring(j,1);}ax=AH(j,ag===265);v=ax[0];j=ax[1];ad=ax[2];if(v<0){q="day";}}else if(al===(522)){ay=AH(j,false);w=ay[0];j=ay[1];ad=ay[2];if(w<0||24<=w){q="hour";}}else if((al===(523))||(al===(524))){az=AH(j,ag===524);w=az[0];j=az[1];ad=az[2];if(w<0||12=2&&(j.charCodeAt(0)===46)&&AG(j,1)){bc=S(i);ag=bc[1];ag=ag&(65535);if((ag===32)||(ag===33)){break;}bd=2;while(true){if(!(bd>0;}be=AQ(j,bd);z=be[0];q=be[1];ad=be[2];j=$substring(j,bd);}}else if(al===(531)){if(j.length<2){ad=AD;break;}bf=$substring(j,0,2);bg=$substring(j,2);ak=bf;j=bg;bh=ak;if(bh===("PM")){s=true;}else if(bh===("AM")){r=true;}else{ad=AD;}}else if(al===(532)){if(j.length<2){ad=AD;break;}bi=$substring(j,0,2);bj=$substring(j,2);ak=bi;j=bj;bk=ak;if(bk===("pm")){s=true;}else if(bk===("am")){r=true;}else{ad=AD;}}else if((al===(22))||(al===(25))||(al===(23))||(al===(24))||(al===(26))||(al===(27))||(al===(29))||(al===(30))||(al===(28))||(al===(31))){if(((ag===22)||(ag===24)||(ag===25))&&j.length>=1&&(j.charCodeAt(0)===90)){j=$substring(j,1);aa=$pkg.UTC;break;}bl="";bm="";bn="";bo="";bp=bl;bq=bm;br=bn;bs=bo;if((ag===25)||(ag===30)){if(j.length<6){ad=AD;break;}if(!((j.charCodeAt(3)===58))){ad=AD;break;}bt=$substring(j,0,1);bu=$substring(j,1,3);bv=$substring(j,4,6);bw="00";bx=$substring(j,6);bp=bt;bq=bu;br=bv;bs=bw;j=bx;}else if((ag===29)||(ag===24)){if(j.length<3){ad=AD;break;}by=$substring(j,0,1);bz=$substring(j,1,3);ca="00";cb="00";cc=$substring(j,3);bp=by;bq=bz;br=ca;bs=cb;j=cc;}else if((ag===26)||(ag===31)){if(j.length<9){ad=AD;break;}if(!((j.charCodeAt(3)===58))||!((j.charCodeAt(6)===58))){ad=AD;break;}cd=$substring(j,0,1);ce=$substring(j,1,3);cf=$substring(j,4,6);cg=$substring(j,7,9);ch=$substring(j,9);bp=cd;bq=ce;br=cf;bs=cg;j=ch;}else if((ag===23)||(ag===28)){if(j.length<7){ad=AD;break;}ci=$substring(j,0,1);cj=$substring(j,1,3);ck=$substring(j,3,5);cl=$substring(j,5,7);cm=$substring(j,7);bp=ci;bq=cj;br=ck;bs=cl;j=cm;}else{if(j.length<5){ad=AD;break;}cn=$substring(j,0,1);co=$substring(j,1,3);cp=$substring(j,3,5);cq="00";cr=$substring(j,5);bp=cn;bq=co;br=cp;bs=cq;j=cr;}cs=0;ct=0;cu=0;cv=cs;cw=ct;cx=cu;cy=AB(bq);cv=cy[0];ad=cy[1];if($interfaceIsEqual(ad,$ifaceNil)){cz=AB(br);cw=cz[0];ad=cz[1];}if($interfaceIsEqual(ad,$ifaceNil)){da=AB(bs);cx=da[0];ad=da[1];}ab=($imul(((($imul(cv,60))+cw>>0)),60))+cx>>0;db=bp.charCodeAt(0);if(db===(43)){}else if(db===(45)){ab=-ab;}else{ad=AD;}}else if(al===(21)){if(j.length>=3&&$substring(j,0,3)==="UTC"){aa=$pkg.UTC;j=$substring(j,3);break;}dc=AN(j);dd=dc[0];de=dc[1];if(!de){ad=AD;break;}df=$substring(j,0,dd);dg=$substring(j,dd);ac=df;j=dg;}else if(al===(32)){dh=1+((ag>>16>>0))>>0;if(j.length>0)>0))&&j.charCodeAt((dj+1>>0))<=57)){break;}dj=dj+(1)>>0;}dk=AQ(j,1+dj>>0);z=dk[0];q=dk[1];ad=dk[2];j=$substring(j,(1+dj>>0));}}if(!(q==="")){$s=-1;return[new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil),new AE.ptr(o,p,ai,j,": "+q+" out of range")];}if(!($interfaceIsEqual(ad,$ifaceNil))){$s=-1;return[new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil),new AE.ptr(o,p,ai,j,"")];}}if(s&&w<12){w=w+(12)>>0;}else if(r&&(w===12)){w=0;}if(v<1||v>CA(((u>>0)),t)){$s=-1;return[new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil),new AE.ptr(o,p,"",j,": day out of range")];}if(!(aa===DU.nil)){$s=1;continue;}$s=2;continue;case 1:dl=CH(t,((u>>0)),v,w,x,y,z,aa);$s=3;case 3:if($c){$c=false;dl=dl.$blk();}if(dl&&dl.$blk!==undefined){break s;}$s=-1;return[dl,$ifaceNil];case 2:if(!((ab===-1))){$s=4;continue;}$s=5;continue;case 4:dm=CH(t,((u>>0)),v,w,x,y,z,$pkg.UTC);$s=6;case 6:if($c){$c=false;dm=dm.$blk();}if(dm&&dm.$blk!==undefined){break s;}dn=$clone(dm,BL);dn.addSec((dp=(new $Int64(0,ab)),new $Int64(-dp.$high,-dp.$low)));dr=l.lookup(dn.unixSec());$s=7;case 7:if($c){$c=false;dr=dr.$blk();}if(dr&&dr.$blk!==undefined){break s;}dq=dr;ds=dq[0];dt=dq[1];if((dt===ab)&&(ac===""||ds===ac)){dn.setLoc(l);$s=-1;return[dn,$ifaceNil];}dn.setLoc(CP(ac,ab));$s=-1;return[dn,$ifaceNil];case 5:if(!(ac==="")){$s=8;continue;}$s=9;continue;case 8:du=CH(t,((u>>0)),v,w,x,y,z,$pkg.UTC);$s=10;case 10:if($c){$c=false;du=du.$blk();}if(du&&du.$blk!==undefined){break s;}dv=$clone(du,BL);dx=l.lookupName(ac,dv.unixSec());$s=11;case 11:if($c){$c=false;dx=dx.$blk();}if(dx&&dx.$blk!==undefined){break s;}dw=dx;dy=dw[0];dz=dw[1];if(dz){dv.addSec((ea=(new $Int64(0,dy)),new $Int64(-ea.$high,-ea.$low)));dv.setLoc(l);$s=-1;return[dv,$ifaceNil];}if(ac.length>3&&$substring(ac,0,3)==="GMT"){eb=AB($substring(ac,3));dy=eb[0];dy=$imul(dy,(3600));}dv.setLoc(CP(ac,dy));$s=-1;return[dv,$ifaceNil];case 9:ec=CH(t,((u>>0)),v,w,x,y,z,k);$s=12;case 12:if($c){$c=false;ec=ec.$blk();}if(ec&&ec.$blk!==undefined){break s;}$s=-1;return[ec,$ifaceNil];}return;}if($f===undefined){$f={$blk:AM};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.bu=bu;$f.bv=bv;$f.bw=bw;$f.bx=bx;$f.by=by;$f.bz=bz;$f.ca=ca;$f.cb=cb;$f.cc=cc;$f.cd=cd;$f.ce=ce;$f.cf=cf;$f.cg=cg;$f.ch=ch;$f.ci=ci;$f.cj=cj;$f.ck=ck;$f.cl=cl;$f.cm=cm;$f.cn=cn;$f.co=co;$f.cp=cp;$f.cq=cq;$f.cr=cr;$f.cs=cs;$f.ct=ct;$f.cu=cu;$f.cv=cv;$f.cw=cw;$f.cx=cx;$f.cy=cy;$f.cz=cz;$f.da=da;$f.db=db;$f.dc=dc;$f.dd=dd;$f.de=de;$f.df=df;$f.dg=dg;$f.dh=dh;$f.di=di;$f.dj=dj;$f.dk=dk;$f.dl=dl;$f.dm=dm;$f.dn=dn;$f.dp=dp;$f.dq=dq;$f.dr=dr;$f.ds=ds;$f.dt=dt;$f.du=du;$f.dv=dv;$f.dw=dw;$f.dx=dx;$f.dy=dy;$f.dz=dz;$f.ea=ea;$f.eb=eb;$f.ec=ec;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AN=function(i){var aa,ab,ac,ad,ae,af,ag,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;j=0;k=false;if(i.length<3){l=0;m=false;j=l;k=m;return[j,k];}if(i.length>=4&&($substring(i,0,4)==="ChST"||$substring(i,0,4)==="MeST")){n=4;o=true;j=n;k=o;return[j,k];}if($substring(i,0,3)==="GMT"){j=AO(i);p=j;q=true;j=p;k=q;return[j,k];}if((i.charCodeAt(0)===43)||(i.charCodeAt(0)===45)){j=AP(i);r=j>0;s=j;t=r;j=s;k=t;return[j,k];}u=0;u=0;while(true){if(!(u<6)){break;}if(u>=i.length){break;}v=i.charCodeAt(u);if(v<65||90>0;}w=u;if((w===(0))||(w===(1))||(w===(2))||(w===(6))){x=0;y=false;j=x;k=y;return[j,k];}else if(w===(5)){if(i.charCodeAt(4)===84){z=5;aa=true;j=z;k=aa;return[j,k];}}else if(w===(4)){if((i.charCodeAt(3)===84)||$substring(i,0,4)==="WITA"){ab=4;ac=true;j=ab;k=ac;return[j,k];}}else if(w===(3)){ad=3;ae=true;j=ad;k=ae;return[j,k];}af=0;ag=false;j=af;k=ag;return[j,k];};AO=function(i){var i;i=$substring(i,3);if(i.length===0){return 3;}return 3+AP(i)>>0;};AP=function(i){var i,j,k,l,m,n;j=i.charCodeAt(0);if(!((j===45))&&!((j===43))){return 0;}k=AS($substring(i,1));l=k[0];m=k[1];n=k[2];if(!($interfaceIsEqual(n,$ifaceNil))||$substring(i,1)===m){return 0;}if(j===45){l=new $Int64(-l.$high,-l.$low);}if((l.$high<-1||(l.$high===-1&&l.$low<4294967273))||(0>0;};AQ=function(i,j){var i,j,k,l,m,n,o,p;k=0;l="";m=$ifaceNil;if(!((i.charCodeAt(0)===46))){m=AD;return[k,l,m];}n=AB($substring(i,1,j));k=n[0];m=n[1];if(!($interfaceIsEqual(m,$ifaceNil))){return[k,l,m];}if(k<0||1000000000<=k){l="fractional second";return[k,l,m];}o=10-j>>0;p=0;while(true){if(!(p>0;}return[k,l,m];};AS=function(i){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;j=new $Int64(0,0);k="";l=$ifaceNil;m=0;while(true){if(!(m57){break;}if((j.$high>214748364||(j.$high===214748364&&j.$low>3435973836))){o=new $Int64(0,0);p="";q=AR;j=o;k=p;l=q;return[j,k,l];}j=(r=(s=$mul64(j,new $Int64(0,10)),t=(new $Int64(0,n)),new $Int64(s.$high+t.$high,s.$low+t.$low)),new $Int64(r.$high-0,r.$low-48));if((j.$high<0||(j.$high===0&&j.$low<0))){u=new $Int64(0,0);v="";w=AR;j=u;k=v;l=w;return[j,k,l];}m=m+(1)>>0;}x=j;y=$substring(i,m);z=$ifaceNil;j=x;k=y;l=z;return[j,k,l];};AW=function(i){var i,j,k,l;if((i.$high<0||(i.$high===0&&i.$low<=0))){return I();}l=(j=I(),k=(new $Int64(i.$high,i.$low)),new $Int64(j.$high+k.$high,j.$low+k.$low));if((l.$high<0||(l.$high===0&&l.$low<0))){l=new $Int64(2147483647,4294967295);}return l;};AX.ptr.prototype.Stop=function(){var i;i=this;if(i.r.f===$throwNilPointerError){$panic(new $String("time: Stop called on uninitialized Timer"));}return M(i.r);};AX.prototype.Stop=function(){return this.$val.Stop();};AY=function(i){var i,j,k;j=new $Chan(BL,1);k=new AX.ptr(j,new G.ptr(0,AW(i),new $Int64(0,0),AZ,new DV(j),null,false));L(k.r);return k;};$pkg.NewTimer=AY;AX.ptr.prototype.Reset=function(i){var i,j,k,l;j=this;if(j.r.f===$throwNilPointerError){$panic(new $String("time: Reset called on uninitialized Timer"));}k=AW(i);l=M(j.r);j.r.when=k;L(j.r);return l;};AX.prototype.Reset=function(i){return this.$val.Reset(i);};AZ=function(i,j){var i,j,k,$r;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;$r=$f.$r;}k=$select([[$assertType(i,DV),$clone(CC(),BL)],[]]);if(k[0]===0){}else if(k[0]===1){}if($f===undefined){$f={$blk:AZ};}$f.i=i;$f.j=j;$f.k=k;$f.$r=$r;return $f;};BJ=function(i){var i,j,k;if((i.$high<0||(i.$high===0&&i.$low<=0))){$panic(C.New("non-positive interval for NewTicker"));}j=new $Chan(BL,1);k=new BI.ptr(j,new G.ptr(0,AW(i),(new $Int64(i.$high,i.$low)),AZ,new DV(j),null,false));L(k.r);return k;};$pkg.NewTicker=BJ;BI.ptr.prototype.Stop=function(){var i;i=this;M(i.r);};BI.prototype.Stop=function(){return this.$val.Stop();};BL.ptr.prototype.nsec=function(){var i,j;i=this;return(((j=i.wall,new $Uint64(j.$high&0,(j.$low&1073741823)>>>0)).$low>>0));};BL.prototype.nsec=function(){return this.$val.nsec();};BL.ptr.prototype.sec=function(){var i,j,k,l,m;i=this;if(!((j=(k=i.wall,new $Uint64(k.$high&2147483648,(k.$low&0)>>>0)),(j.$high===0&&j.$low===0)))){return(l=((m=$shiftRightUint64($shiftLeft64(i.wall,1),31),new $Int64(m.$high,m.$low))),new $Int64(13+l.$high,3618733952+l.$low));}return i.ext;};BL.prototype.sec=function(){return this.$val.sec();};BL.ptr.prototype.unixSec=function(){var i,j;i=this;return(j=i.sec(),new $Int64(j.$high+-15,j.$low+2288912640));};BL.prototype.unixSec=function(){return this.$val.unixSec();};BL.ptr.prototype.addSec=function(i){var i,j,k,l,m,n,o,p,q,r,s,t,u;j=this;if(!((k=(l=j.wall,new $Uint64(l.$high&2147483648,(l.$low&0)>>>0)),(k.$high===0&&k.$low===0)))){n=((m=$shiftRightUint64($shiftLeft64(j.wall,1),31),new $Int64(m.$high,m.$low)));o=new $Int64(n.$high+i.$high,n.$low+i.$low);if((0>>0)),s=$shiftLeft64((new $Uint64(o.$high,o.$low)),30),new $Uint64(q.$high|s.$high,(q.$low|s.$low)>>>0)),new $Uint64(p.$high|2147483648,(p.$low|0)>>>0));return;}j.stripMono();}j.ext=(t=j.ext,u=i,new $Int64(t.$high+u.$high,t.$low+u.$low));};BL.prototype.addSec=function(i){return this.$val.addSec(i);};BL.ptr.prototype.setLoc=function(i){var i,j;j=this;if(i===CM){i=DU.nil;}j.stripMono();j.loc=i;};BL.prototype.setLoc=function(i){return this.$val.setLoc(i);};BL.ptr.prototype.stripMono=function(){var i,j,k,l,m;i=this;if(!((j=(k=i.wall,new $Uint64(k.$high&2147483648,(k.$low&0)>>>0)),(j.$high===0&&j.$low===0)))){i.ext=i.sec();i.wall=(l=i.wall,m=new $Uint64(0,1073741823),new $Uint64(l.$high&m.$high,(l.$low&m.$low)>>>0));}};BL.prototype.stripMono=function(){return this.$val.stripMono();};BL.ptr.prototype.After=function(i){var i,j,k,l,m,n,o,p,q,r;j=this;if(!((k=(l=(m=j.wall,n=i.wall,new $Uint64(m.$high&n.$high,(m.$low&n.$low)>>>0)),new $Uint64(l.$high&2147483648,(l.$low&0)>>>0)),(k.$high===0&&k.$low===0)))){return(o=j.ext,p=i.ext,(o.$high>p.$high||(o.$high===p.$high&&o.$low>p.$low)));}q=j.sec();r=i.sec();return(q.$high>r.$high||(q.$high===r.$high&&q.$low>r.$low))||(q.$high===r.$high&&q.$low===r.$low)&&j.nsec()>i.nsec();};BL.prototype.After=function(i){return this.$val.After(i);};BL.ptr.prototype.Before=function(i){var i,j,k,l,m,n,o,p,q,r,s,t;j=this;if(!((k=(l=(m=j.wall,n=i.wall,new $Uint64(m.$high&n.$high,(m.$low&n.$low)>>>0)),new $Uint64(l.$high&2147483648,(l.$low&0)>>>0)),(k.$high===0&&k.$low===0)))){return(o=j.ext,p=i.ext,(o.$high>>0)),new $Uint64(l.$high&2147483648,(l.$low&0)>>>0)),(k.$high===0&&k.$low===0)))){return(o=j.ext,p=i.ext,(o.$high===p.$high&&o.$low===p.$low));}return(q=j.sec(),r=i.sec(),(q.$high===r.$high&&q.$low===r.$low))&&(j.nsec()===i.nsec());};BL.prototype.Equal=function(i){return this.$val.Equal(i);};BM.prototype.String=function(){var i,j,k,l;i=this.$val;if(1<=i&&i<=12){return(j=i-1>>0,((j<0||j>=BN.length)?($throwRuntimeError("index out of range"),undefined):BN[j]));}k=$makeSlice(DR,20);l=BU(k,(new $Uint64(0,i)));return"%!Month("+($bytesToString($subslice(k,l)))+")";};$ptrType(BM).prototype.String=function(){return new BM(this.$get()).String();};BO.prototype.String=function(){var i,j,k;i=this.$val;if(0<=i&&i<=6){return((i<0||i>=BP.length)?($throwRuntimeError("index out of range"),undefined):BP[i]);}j=$makeSlice(DR,20);k=BU(j,(new $Uint64(0,i)));return"%!Weekday("+($bytesToString($subslice(j,k)))+")";};$ptrType(BO).prototype.String=function(){return new BO(this.$get()).String();};BL.ptr.prototype.IsZero=function(){var i,j;i=this;return(j=i.sec(),(j.$high===0&&j.$low===0))&&(i.nsec()===0);};BL.prototype.IsZero=function(){return this.$val.IsZero();};BL.ptr.prototype.abs=function(){var i,j,k,l,m,n,o,p,q,r,s,t,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=i.loc;if(j===DU.nil||j===CN){$s=1;continue;}$s=2;continue;case 1:k=j.get();$s=3;case 3:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;case 2:l=i.unixSec();if(!(j===CM)){$s=4;continue;}$s=5;continue;case 4:if(!(j.cacheZone===DM.nil)&&(m=j.cacheStart,(m.$high>0))/86400,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero"))>>0));};BL.ptr.prototype.ISOWeek=function(){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=0;j=0;k=this;m=$clone(k,BL).date(true);$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;i=l[0];n=l[1];o=l[2];p=l[3];r=$clone(k,BL).Weekday();$s=2;case 2:if($c){$c=false;r=r.$blk();}if(r&&r.$blk!==undefined){break s;}s=(q=(((r+6>>0)>>0))%7,q===q?q:$throwRuntimeError("integer divide by zero"));j=(t=(((p-s>>0)+7>>0))/7,(t===t&&t!==1/0&&t!==-1/0)?t>>0:$throwRuntimeError("integer divide by zero"));v=(u=(((s-p>>0)+371>>0))%7,u===u?u:$throwRuntimeError("integer divide by zero"));if(1<=v&&v<=3){j=j+(1)>>0;}if(j===0){i=i-(1)>>0;j=52;if((v===4)||((v===5)&&CF(i))){j=j+(1)>>0;}}if((n===12)&&o>=29&&s<3){x=(w=(((s+31>>0)-o>>0))%7,w===w?w:$throwRuntimeError("integer divide by zero"));if(0<=x&&x<=2){i=i+(1)>>0;j=1;}}$s=-1;return[i,j];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.ISOWeek};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.ISOWeek=function(){return this.$val.ISOWeek();};BL.ptr.prototype.Clock=function(){var i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=0;j=0;k=0;l=this;n=$clone(l,BL).abs();$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}o=BR(n);$s=2;case 2:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}m=o;i=m[0];j=m[1];k=m[2];$s=-1;return[i,j,k];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.Clock};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.Clock=function(){return this.$val.Clock();};BR=function(i){var i,j,k,l,m,n;j=0;k=0;l=0;l=(($div64(i,new $Uint64(0,86400),true).$low>>0));j=(m=l/3600,(m===m&&m!==1/0&&m!==-1/0)?m>>0:$throwRuntimeError("integer divide by zero"));l=l-(($imul(j,3600)))>>0;k=(n=l/60,(n===n&&n!==1/0&&n!==-1/0)?n>>0:$throwRuntimeError("integer divide by zero"));l=l-(($imul(k,60)))>>0;return[j,k,l];};BL.ptr.prototype.Hour=function(){var i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;k=$clone(i,BL).abs();$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}$s=-1;return(j=(($div64(k,new $Uint64(0,86400),true).$low>>0))/3600,(j===j&&j!==1/0&&j!==-1/0)?j>>0:$throwRuntimeError("integer divide by zero"));}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.Hour};}$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.Hour=function(){return this.$val.Hour();};BL.ptr.prototype.Minute=function(){var i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;k=$clone(i,BL).abs();$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}$s=-1;return(j=(($div64(k,new $Uint64(0,3600),true).$low>>0))/60,(j===j&&j!==1/0&&j!==-1/0)?j>>0:$throwRuntimeError("integer divide by zero"));}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.Minute};}$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.Minute=function(){return this.$val.Minute();};BL.ptr.prototype.Second=function(){var i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=$clone(i,BL).abs();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}$s=-1;return(($div64(j,new $Uint64(0,60),true).$low>>0));}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.Second};}$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.Second=function(){return this.$val.Second();};BL.ptr.prototype.Nanosecond=function(){var i;i=this;return((i.nsec()>>0));};BL.prototype.Nanosecond=function(){return this.$val.Nanosecond();};BL.ptr.prototype.YearDay=function(){var i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;k=$clone(i,BL).date(false);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;l=j[3];$s=-1;return l+1>>0;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.YearDay};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.YearDay=function(){return this.$val.YearDay();};BS.prototype.String=function(){var i,j,k,l,m,n,o,p;i=this;j=DX.zero();k=32;l=(new $Uint64(i.$high,i.$low));m=(i.$high<0||(i.$high===0&&i.$low<0));if(m){l=new $Uint64(-l.$high,-l.$low);}if((l.$high<0||(l.$high===0&&l.$low<1000000000))){n=0;k=k-(1)>>0;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=115);k=k-(1)>>0;if((l.$high===0&&l.$low===0)){return"0s";}else if((l.$high<0||(l.$high===0&&l.$low<1000))){n=0;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=110);}else if((l.$high<0||(l.$high===0&&l.$low<1000000))){n=3;k=k-(1)>>0;$copyString($subslice(new DR(j),k),"\xC2\xB5");}else{n=6;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=109);}o=BT($subslice(new DR(j),0,k),l,n);k=o[0];l=o[1];k=BU($subslice(new DR(j),0,k),l);}else{k=k-(1)>>0;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=115);p=BT($subslice(new DR(j),0,k),l,9);k=p[0];l=p[1];k=BU($subslice(new DR(j),0,k),$div64(l,new $Uint64(0,60),true));l=$div64(l,(new $Uint64(0,60)),false);if((l.$high>0||(l.$high===0&&l.$low>0))){k=k-(1)>>0;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=109);k=BU($subslice(new DR(j),0,k),$div64(l,new $Uint64(0,60),true));l=$div64(l,(new $Uint64(0,60)),false);if((l.$high>0||(l.$high===0&&l.$low>0))){k=k-(1)>>0;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=104);k=BU($subslice(new DR(j),0,k),l);}}}if(m){k=k-(1)>>0;((k<0||k>=j.length)?($throwRuntimeError("index out of range"),undefined):j[k]=45);}return($bytesToString($subslice(new DR(j),k)));};$ptrType(BS).prototype.String=function(){return this.$get().String();};BT=function(i,j,k){var i,j,k,l,m,n,o,p,q,r,s;l=0;m=new $Uint64(0,0);n=i.$length;o=false;p=0;while(true){if(!(p>0;((n<0||n>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+n]=(((q.$low<<24>>>24))+48<<24>>>24));}j=$div64(j,(new $Uint64(0,10)),false);p=p+(1)>>0;}if(o){n=n-(1)>>0;((n<0||n>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+n]=46);}r=n;s=j;l=r;m=s;return[l,m];};BU=function(i,j){var i,j,k;k=i.$length;if((j.$high===0&&j.$low===0)){k=k-(1)>>0;((k<0||k>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+k]=48);}else{while(true){if(!((j.$high>0||(j.$high===0&&j.$low>0)))){break;}k=k-(1)>>0;((k<0||k>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+k]=((($div64(j,new $Uint64(0,10),true).$low<<24>>>24))+48<<24>>>24));j=$div64(j,(new $Uint64(0,10)),false);}}return k;};BS.prototype.Nanoseconds=function(){var i;i=this;return(new $Int64(i.$high,i.$low));};$ptrType(BS).prototype.Nanoseconds=function(){return this.$get().Nanoseconds();};BS.prototype.Seconds=function(){var i,j,k;i=this;j=$div64(i,new BS(0,1000000000),false);k=$div64(i,new BS(0,1000000000),true);return($flatten64(j))+($flatten64(k))/1e+09;};$ptrType(BS).prototype.Seconds=function(){return this.$get().Seconds();};BS.prototype.Minutes=function(){var i,j,k;i=this;j=$div64(i,new BS(13,4165425152),false);k=$div64(i,new BS(13,4165425152),true);return($flatten64(j))+($flatten64(k))/6e+10;};$ptrType(BS).prototype.Minutes=function(){return this.$get().Minutes();};BS.prototype.Hours=function(){var i,j,k;i=this;j=$div64(i,new BS(838,817405952),false);k=$div64(i,new BS(838,817405952),true);return($flatten64(j))+($flatten64(k))/3.6e+12;};$ptrType(BS).prototype.Hours=function(){return this.$get().Hours();};BS.prototype.Truncate=function(i){var i,j,k;j=this;if((i.$high<0||(i.$high===0&&i.$low<=0))){return j;}return(k=$div64(j,i,true),new BS(j.$high-k.$high,j.$low-k.$low));};$ptrType(BS).prototype.Truncate=function(i){return this.$get().Truncate(i);};BV=function(i,j){var i,j,k,l,m,n;return(k=(l=(new $Uint64(i.$high,i.$low)),m=(new $Uint64(i.$high,i.$low)),new $Uint64(l.$high+m.$high,l.$low+m.$low)),n=(new $Uint64(j.$high,j.$low)),(k.$highj.$high||(o.$high===j.$high&&o.$low>j.$low))){return o;}return new BS(2147483647,4294967295);};$ptrType(BS).prototype.Round=function(i){return this.$get().Round(i);};BL.ptr.prototype.Add=function(i){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;j=this;l=((k=$div64(i,new BS(0,1000000000),false),new $Int64(k.$high,k.$low)));n=j.nsec()+(((m=$div64(i,new BS(0,1000000000),true),m.$low+((m.$high>>31)*4294967296))>>0))>>0;if(n>=1000000000){l=(o=new $Int64(0,1),new $Int64(l.$high+o.$high,l.$low+o.$low));n=n-(1000000000)>>0;}else if(n<0){l=(p=new $Int64(0,1),new $Int64(l.$high-p.$high,l.$low-p.$low));n=n+(1000000000)>>0;}j.wall=(q=(r=j.wall,new $Uint64(r.$high&~0,(r.$low&~1073741823)>>>0)),s=(new $Uint64(0,n)),new $Uint64(q.$high|s.$high,(q.$low|s.$low)>>>0));j.addSec(l);if(!((t=(u=j.wall,new $Uint64(u.$high&2147483648,(u.$low&0)>>>0)),(t.$high===0&&t.$low===0)))){x=(v=j.ext,w=(new $Int64(i.$high,i.$low)),new $Int64(v.$high+w.$high,v.$low+w.$low));if((i.$high<0||(i.$high===0&&i.$low<0))&&(y=j.ext,(x.$high>y.$high||(x.$high===y.$high&&x.$low>y.$low)))||(i.$high>0||(i.$high===0&&i.$low>0))&&(z=j.ext,(x.$high>>0)),new $Uint64(l.$high&2147483648,(l.$low&0)>>>0)),(k.$high===0&&k.$low===0)))){o=j.ext;p=i.ext;r=((q=new $Int64(o.$high-p.$high,o.$low-p.$low),new BS(q.$high,q.$low)));if((r.$high<0||(r.$high===0&&r.$low<0))&&(o.$high>p.$high||(o.$high===p.$high&&o.$low>p.$low))){return new BS(2147483647,4294967295);}if((r.$high>0||(r.$high===0&&r.$low>0))&&(o.$high>0))),new BS(s.$high+w.$high,s.$low+w.$low));if($clone($clone(i,BL).Add(x),BL).Equal($clone(j,BL))){return x;}else if($clone(j,BL).Before($clone(i,BL))){return new BS(-2147483648,0);}else{return new BS(2147483647,4294967295);}};BL.prototype.Sub=function(i){return this.$val.Sub(i);};BX=function(i){var i,j,k,l,m;j=new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil);if(!((k=(l=i.wall,new $Uint64(l.$high&2147483648,(l.$low&0)>>>0)),(k.$high===0&&k.$low===0)))){BL.copy(j,new BL.ptr(new $Uint64(2147483648,0),(m=I(),new $Int64(m.$high-CB.$high,m.$low-CB.$low)),DU.nil));}else{BL.copy(j,CC());}return $clone(i,BL).Sub($clone(j,BL));};$pkg.Until=BX;BL.ptr.prototype.AddDate=function(i,j,k){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;n=$clone(l,BL).Date();$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];q=m[2];s=$clone(l,BL).Clock();$s=2;case 2:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}r=s;t=r[0];u=r[1];v=r[2];w=CH(o+i>>0,p+((j>>0))>>0,q+k>>0,t,u,v,((l.nsec()>>0)),$clone(l,BL).Location());$s=3;case 3:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}$s=-1;return w;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.AddDate};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.AddDate=function(i,j,k){return this.$val.AddDate(i,j,k);};BL.ptr.prototype.date=function(i){var i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j=0;k=0;l=0;m=0;n=this;p=$clone(n,BL).abs();$s=1;case 1:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=BY(p,i);$s=2;case 2:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}o=q;j=o[0];k=o[1];l=o[2];m=o[3];$s=-1;return[j,k,l,m];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.date};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.date=function(i){return this.$val.date(i);};BY=function(i,j){var aa,ab,ac,ad,ae,af,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;k=0;l=0;m=0;n=0;o=$div64(i,new $Uint64(0,86400),false);p=$div64(o,new $Uint64(0,146097),false);q=$mul64(new $Uint64(0,400),p);o=(r=$mul64(new $Uint64(0,146097),p),new $Uint64(o.$high-r.$high,o.$low-r.$low));p=$div64(o,new $Uint64(0,36524),false);p=(s=$shiftRightUint64(p,2),new $Uint64(p.$high-s.$high,p.$low-s.$low));q=(t=$mul64(new $Uint64(0,100),p),new $Uint64(q.$high+t.$high,q.$low+t.$low));o=(u=$mul64(new $Uint64(0,36524),p),new $Uint64(o.$high-u.$high,o.$low-u.$low));p=$div64(o,new $Uint64(0,1461),false);q=(v=$mul64(new $Uint64(0,4),p),new $Uint64(q.$high+v.$high,q.$low+v.$low));o=(w=$mul64(new $Uint64(0,1461),p),new $Uint64(o.$high-w.$high,o.$low-w.$low));p=$div64(o,new $Uint64(0,365),false);p=(x=$shiftRightUint64(p,2),new $Uint64(p.$high-x.$high,p.$low-x.$low));q=(y=p,new $Uint64(q.$high+y.$high,q.$low+y.$low));o=(z=$mul64(new $Uint64(0,365),p),new $Uint64(o.$high-z.$high,o.$low-z.$low));k=(((aa=(ab=(new $Int64(q.$high,q.$low)),new $Int64(ab.$high+-69,ab.$low+4075721025)),aa.$low+((aa.$high>>31)*4294967296))>>0));n=((o.$low>>0));if(!j){return[k,l,m,n];}m=n;if(CF(k)){if(m>59){m=m-(1)>>0;}else if((m===59)){l=2;m=29;return[k,l,m,n];}}l=(((ac=m/31,(ac===ac&&ac!==1/0&&ac!==-1/0)?ac>>0:$throwRuntimeError("integer divide by zero"))>>0));ae=(((ad=l+1>>0,((ad<0||ad>=BZ.length)?($throwRuntimeError("index out of range"),undefined):BZ[ad]))>>0));af=0;if(m>=ae){l=l+(1)>>0;af=ae;}else{af=((((l<0||l>=BZ.length)?($throwRuntimeError("index out of range"),undefined):BZ[l])>>0));}l=l+(1)>>0;m=(m-af>>0)+1>>0;return[k,l,m,n];};CA=function(i,j){var i,j,k;if((i===2)&&CF(j)){return 29;}return(((((i<0||i>=BZ.length)?($throwRuntimeError("index out of range"),undefined):BZ[i])-(k=i-1>>0,((k<0||k>=BZ.length)?($throwRuntimeError("index out of range"),undefined):BZ[k]))>>0)>>0));};CC=function(){var i,j,k,l,m,n,o,p,q,r;i=J();j=i[0];k=i[1];l=i[2];l=(m=CB,new $Int64(l.$high-m.$high,l.$low-m.$low));j=(n=new $Int64(0,2682288000),new $Int64(j.$high+n.$high,j.$low+n.$low));if(!((o=$shiftRightUint64((new $Uint64(j.$high,j.$low)),33),(o.$high===0&&o.$low===0)))){return new BL.ptr((new $Uint64(0,k)),new $Int64(j.$high+13,j.$low+3618733952),$pkg.Local);}return new BL.ptr((p=(q=$shiftLeft64((new $Uint64(j.$high,j.$low)),30),new $Uint64(2147483648|q.$high,(0|q.$low)>>>0)),r=(new $Uint64(0,k)),new $Uint64(p.$high|r.$high,(p.$low|r.$low)>>>0)),l,$pkg.Local);};$pkg.Now=CC;CD=function(i,j){var i,j;return new BL.ptr((new $Uint64(0,j)),new $Int64(i.$high+14,i.$low+2006054656),$pkg.Local);};BL.ptr.prototype.UTC=function(){var i;i=this;i.setLoc(CM);return i;};BL.prototype.UTC=function(){return this.$val.UTC();};BL.ptr.prototype.Local=function(){var i;i=this;i.setLoc($pkg.Local);return i;};BL.prototype.Local=function(){return this.$val.Local();};BL.ptr.prototype.In=function(i){var i,j;j=this;if(i===DU.nil){$panic(new $String("time: missing Location in call to Time.In"));}j.setLoc(i);return j;};BL.prototype.In=function(i){return this.$val.In(i);};BL.ptr.prototype.Location=function(){var i,j;i=this;j=i.loc;if(j===DU.nil){j=$pkg.UTC;}return j;};BL.prototype.Location=function(){return this.$val.Location();};BL.ptr.prototype.Zone=function(){var i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i="";j=0;k=this;m=k.loc.lookup(k.unixSec());$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;i=l[0];j=l[1];$s=-1;return[i,j];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.Zone};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.Zone=function(){return this.$val.Zone();};BL.ptr.prototype.Unix=function(){var i;i=this;return i.unixSec();};BL.prototype.Unix=function(){return this.$val.Unix();};BL.ptr.prototype.UnixNano=function(){var i,j,k;i=this;return(j=$mul64((i.unixSec()),new $Int64(0,1000000000)),k=(new $Int64(0,i.nsec())),new $Int64(j.$high+k.$high,j.$low+k.$low));};BL.prototype.UnixNano=function(){return this.$val.UnixNano();};BL.ptr.prototype.MarshalBinary=function(){var i,j,k,l,m,n,o,p,q,r,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=0;if($clone(i,BL).Location()===$pkg.UTC){$s=1;continue;}$s=2;continue;case 1:j=-1;$s=3;continue;case 2:l=$clone(i,BL).Zone();$s=4;case 4:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}k=l;m=k[1];if(!(((n=m%60,n===n?n:$throwRuntimeError("integer divide by zero"))===0))){$s=-1;return[DR.nil,C.New("Time.MarshalBinary: zone offset has fractional minute")];}m=(o=m/(60),(o===o&&o!==1/0&&o!==-1/0)?o>>0:$throwRuntimeError("integer divide by zero"));if(m<-32768||(m===-1)||m>32767){$s=-1;return[DR.nil,C.New("Time.MarshalBinary: unexpected zone offset")];}j=((m<<16>>16));case 3:p=i.sec();q=i.nsec();r=new DR([1,(($shiftRightInt64(p,56).$low<<24>>>24)),(($shiftRightInt64(p,48).$low<<24>>>24)),(($shiftRightInt64(p,40).$low<<24>>>24)),(($shiftRightInt64(p,32).$low<<24>>>24)),(($shiftRightInt64(p,24).$low<<24>>>24)),(($shiftRightInt64(p,16).$low<<24>>>24)),(($shiftRightInt64(p,8).$low<<24>>>24)),((p.$low<<24>>>24)),(((q>>24>>0)<<24>>>24)),(((q>>16>>0)<<24>>>24)),(((q>>8>>0)<<24>>>24)),((q<<24>>>24)),(((j>>8<<16>>16)<<24>>>24)),((j<<24>>>24))]);$s=-1;return[r,$ifaceNil];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.MarshalBinary};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.MarshalBinary=function(){return this.$val.MarshalBinary();};BL.ptr.prototype.UnmarshalBinary=function(i){var aa,ab,ac,ad,ae,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j=this;k=i;if(k.$length===0){$s=-1;return C.New("Time.UnmarshalBinary: no data");}if(!(((0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])===1))){$s=-1;return C.New("Time.UnmarshalBinary: unsupported version");}if(!((k.$length===15))){$s=-1;return C.New("Time.UnmarshalBinary: invalid length");}k=$subslice(k,1);z=(l=(m=(n=(o=(p=(q=(r=(new $Int64(0,(7>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+7]))),s=$shiftLeft64((new $Int64(0,(6>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+6]))),8),new $Int64(r.$high|s.$high,(r.$low|s.$low)>>>0)),t=$shiftLeft64((new $Int64(0,(5>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+5]))),16),new $Int64(q.$high|t.$high,(q.$low|t.$low)>>>0)),u=$shiftLeft64((new $Int64(0,(4>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+4]))),24),new $Int64(p.$high|u.$high,(p.$low|u.$low)>>>0)),v=$shiftLeft64((new $Int64(0,(3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3]))),32),new $Int64(o.$high|v.$high,(o.$low|v.$low)>>>0)),w=$shiftLeft64((new $Int64(0,(2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2]))),40),new $Int64(n.$high|w.$high,(n.$low|w.$low)>>>0)),x=$shiftLeft64((new $Int64(0,(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]))),48),new $Int64(m.$high|x.$high,(m.$low|x.$low)>>>0)),y=$shiftLeft64((new $Int64(0,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]))),56),new $Int64(l.$high|y.$high,(l.$low|y.$low)>>>0));k=$subslice(k,8);aa=(((((3>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+3])>>0))|((((2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2])>>0))<<8>>0))|((((1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1])>>0))<<16>>0))|((((0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])>>0))<<24>>0);k=$subslice(k,4);ab=$imul(((((((1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1])<<16>>16))|((((0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])<<16>>16))<<8<<16>>16))>>0)),60);BL.copy(j,new BL.ptr(new $Uint64(0,0),new $Int64(0,0),DU.nil));j.wall=(new $Uint64(0,aa));j.ext=z;if(ab===-60){$s=1;continue;}$s=2;continue;case 1:j.setLoc(CM);$s=3;continue;case 2:ad=$pkg.Local.lookup(j.unixSec());$s=4;case 4:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ac=ad;ae=ac[1];if(ab===ae){j.setLoc($pkg.Local);}else{j.setLoc(CP("",ab));}case 3:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.UnmarshalBinary};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.UnmarshalBinary=function(i){return this.$val.UnmarshalBinary(i);};BL.ptr.prototype.GobEncode=function(){var i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=$clone(i,BL).MarshalBinary();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}$s=-1;return j;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.GobEncode};}$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.GobEncode=function(){return this.$val.GobEncode();};BL.ptr.prototype.GobDecode=function(i){var i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j=this;k=j.UnmarshalBinary(i);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}$s=-1;return k;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.GobDecode};}$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.GobDecode=function(i){return this.$val.GobDecode(i);};BL.ptr.prototype.MarshalJSON=function(){var i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=$clone(i,BL).Year();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j;if(k<0||k>=10000){$s=-1;return[DR.nil,C.New("Time.MarshalJSON: year outside of range [0,9999]")];}l=$makeSlice(DR,0,37);l=$append(l,34);m=$clone(i,BL).AppendFormat(l,"2006-01-02T15:04:05.999999999Z07:00");$s=2;case 2:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;l=$append(l,34);$s=-1;return[l,$ifaceNil];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.MarshalJSON};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.MarshalJSON=function(){return this.$val.MarshalJSON();};BL.ptr.prototype.UnmarshalJSON=function(i){var i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j=this;if(($bytesToString(i))==="null"){$s=-1;return $ifaceNil;}k=$ifaceNil;m=AK("\"2006-01-02T15:04:05Z07:00\"",($bytesToString(i)));$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;BL.copy(j,l[0]);k=l[1];$s=-1;return k;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.UnmarshalJSON};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.UnmarshalJSON=function(i){return this.$val.UnmarshalJSON(i);};BL.ptr.prototype.MarshalText=function(){var i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=$clone(i,BL).Year();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j;if(k<0||k>=10000){$s=-1;return[DR.nil,C.New("Time.MarshalText: year outside of range [0,9999]")];}l=$makeSlice(DR,0,35);m=$clone(i,BL).AppendFormat(l,"2006-01-02T15:04:05.999999999Z07:00");$s=2;case 2:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}$s=-1;return[m,$ifaceNil];}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.MarshalText};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.MarshalText=function(){return this.$val.MarshalText();};BL.ptr.prototype.UnmarshalText=function(i){var i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j=this;k=$ifaceNil;m=AK("2006-01-02T15:04:05Z07:00",($bytesToString(i)));$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;BL.copy(j,l[0]);k=l[1];$s=-1;return k;}return;}if($f===undefined){$f={$blk:BL.ptr.prototype.UnmarshalText};}$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};BL.prototype.UnmarshalText=function(i){return this.$val.UnmarshalText(i);};CE=function(i,j){var i,j,k,l,m,n,o;if((j.$high<0||(j.$high===0&&j.$low<0))||(j.$high>0||(j.$high===0&&j.$low>=1000000000))){k=$div64(j,new $Int64(0,1000000000),false);i=(l=k,new $Int64(i.$high+l.$high,i.$low+l.$low));j=(m=$mul64(k,new $Int64(0,1000000000)),new $Int64(j.$high-m.$high,j.$low-m.$low));if((j.$high<0||(j.$high===0&&j.$low<0))){j=(n=new $Int64(0,1000000000),new $Int64(j.$high+n.$high,j.$low+n.$low));i=(o=new $Int64(0,1),new $Int64(i.$high-o.$high,i.$low-o.$low));}}return CD(i,(((j.$low+((j.$high>>31)*4294967296))>>0)));};$pkg.Unix=CE;CF=function(i){var i,j,k,l;return((j=i%4,j===j?j:$throwRuntimeError("integer divide by zero"))===0)&&(!(((k=i%100,k===k?k:$throwRuntimeError("integer divide by zero"))===0))||((l=i%400,l===l?l:$throwRuntimeError("integer divide by zero"))===0));};CG=function(i,j,k){var i,j,k,l,m,n,o,p,q,r,s;l=0;m=0;if(j<0){o=(n=((-j-1>>0))/k,(n===n&&n!==1/0&&n!==-1/0)?n>>0:$throwRuntimeError("integer divide by zero"))+1>>0;i=i-(o)>>0;j=j+(($imul(o,k)))>>0;}if(j>=k){q=(p=j/k,(p===p&&p!==1/0&&p!==-1/0)?p>>0:$throwRuntimeError("integer divide by zero"));i=i+(q)>>0;j=j-(($imul(q,k)))>>0;}r=i;s=j;l=r;m=s;return[l,m];};CH=function(i,j,k,l,m,n,o,p){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(p===DU.nil){$panic(new $String("time: missing Location in call to Date"));}q=((j>>0))-1>>0;r=CG(i,q,12);i=r[0];q=r[1];j=((q>>0))+1>>0;s=CG(n,o,1000000000);n=s[0];o=s[1];t=CG(m,n,60);m=t[0];n=t[1];u=CG(l,m,60);l=u[0];m=u[1];v=CG(k,l,24);k=v[0];l=v[1];y=((w=(x=(new $Int64(0,i)),new $Int64(x.$high- -69,x.$low-4075721025)),new $Uint64(w.$high,w.$low)));z=$div64(y,new $Uint64(0,400),false);y=(aa=$mul64(new $Uint64(0,400),z),new $Uint64(y.$high-aa.$high,y.$low-aa.$low));ab=$mul64(new $Uint64(0,146097),z);z=$div64(y,new $Uint64(0,100),false);y=(ac=$mul64(new $Uint64(0,100),z),new $Uint64(y.$high-ac.$high,y.$low-ac.$low));ab=(ad=$mul64(new $Uint64(0,36524),z),new $Uint64(ab.$high+ad.$high,ab.$low+ad.$low));z=$div64(y,new $Uint64(0,4),false);y=(ae=$mul64(new $Uint64(0,4),z),new $Uint64(y.$high-ae.$high,y.$low-ae.$low));ab=(af=$mul64(new $Uint64(0,1461),z),new $Uint64(ab.$high+af.$high,ab.$low+af.$low));z=y;ab=(ag=$mul64(new $Uint64(0,365),z),new $Uint64(ab.$high+ag.$high,ab.$low+ag.$low));ab=(ah=(new $Uint64(0,(ai=j-1>>0,((ai<0||ai>=BZ.length)?($throwRuntimeError("index out of range"),undefined):BZ[ai])))),new $Uint64(ab.$high+ah.$high,ab.$low+ah.$low));if(CF(i)&&j>=3){ab=(aj=new $Uint64(0,1),new $Uint64(ab.$high+aj.$high,ab.$low+aj.$low));}ab=(ak=(new $Uint64(0,(k-1>>0))),new $Uint64(ab.$high+ak.$high,ab.$low+ak.$low));al=$mul64(ab,new $Uint64(0,86400));al=(am=(new $Uint64(0,((($imul(l,3600))+($imul(m,60))>>0)+n>>0))),new $Uint64(al.$high+am.$high,al.$low+am.$low));ao=(an=(new $Int64(al.$high,al.$low)),new $Int64(an.$high+-2147483647,an.$low+3844486912));aq=p.lookup(ao);$s=1;case 1:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ap=aq;ar=ap[1];as=ap[2];at=ap[3];if(!((ar===0))){$s=2;continue;}$s=3;continue;case 2:av=(au=(new $Int64(0,ar)),new $Int64(ao.$high-au.$high,ao.$low-au.$low));if((av.$highat.$high||(av.$high===at.$high&&av.$low>=at.$low))){$s=6;continue;}$s=7;continue;case 5:ax=p.lookup(new $Int64(as.$high-0,as.$low-1));$s=8;case 8:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}aw=ax;ar=aw[1];$s=7;continue;case 6:az=p.lookup(at);$s=9;case 9:if($c){$c=false;az=az.$blk();}if(az&&az.$blk!==undefined){break s;}ay=az;ar=ay[1];case 7:case 4:ao=(ba=(new $Int64(0,ar)),new $Int64(ao.$high-ba.$high,ao.$low-ba.$low));case 3:bb=$clone(CD(ao,((o>>0))),BL);bb.setLoc(p);$s=-1;return bb;}return;}if($f===undefined){$f={$blk:CH};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Date=CH;BL.ptr.prototype.Truncate=function(i){var i,j,k,l;j=this;j.stripMono();if((i.$high<0||(i.$high===0&&i.$low<=0))){return j;}k=CI($clone(j,BL),i);l=k[1];return $clone(j,BL).Add(new BS(-l.$high,-l.$low));};BL.prototype.Truncate=function(i){return this.$val.Truncate(i);};BL.ptr.prototype.Round=function(i){var i,j,k,l;j=this;j.stripMono();if((i.$high<0||(i.$high===0&&i.$low<=0))){return j;}k=CI($clone(j,BL),i);l=k[1];if(BV(l,i)){return $clone(j,BL).Add(new BS(-l.$high,-l.$low));}return $clone(j,BL).Add(new BS(i.$high-l.$high,i.$low-l.$low));};BL.prototype.Round=function(i){return this.$val.Round(i);};CI=function(i,j){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;k=0;l=new BS(0,0);m=false;n=i.nsec();o=i.sec();if((o.$high<0||(o.$high===0&&o.$low<0))){m=true;o=new $Int64(-o.$high,-o.$low);n=-n;if(n<0){n=n+(1000000000)>>0;o=(p=new $Int64(0,1),new $Int64(o.$high-p.$high,o.$low-p.$low));}}if((j.$high<0||(j.$high===0&&j.$low<1000000000))&&(q=$div64(new BS(0,1000000000),(new BS(j.$high+j.$high,j.$low+j.$low)),true),(q.$high===0&&q.$low===0))){k=(((s=n/(((j.$low+((j.$high>>31)*4294967296))>>0)),(s===s&&s!==1/0&&s!==-1/0)?s>>0:$throwRuntimeError("integer divide by zero"))>>0))&1;l=(new BS(0,(t=n%(((j.$low+((j.$high>>31)*4294967296))>>0)),t===t?t:$throwRuntimeError("integer divide by zero"))));}else if((r=$div64(j,new BS(0,1000000000),true),(r.$high===0&&r.$low===0))){v=((u=$div64(j,new BS(0,1000000000),false),new $Int64(u.$high,u.$low)));k=(((w=$div64(o,v,false),w.$low+((w.$high>>31)*4294967296))>>0))&1;l=(x=$mul64(((y=$div64(o,v,true),new BS(y.$high,y.$low))),new BS(0,1000000000)),z=(new BS(0,n)),new BS(x.$high+z.$high,x.$low+z.$low));}else{aa=(new $Uint64(o.$high,o.$low));ab=$mul64(($shiftRightUint64(aa,32)),new $Uint64(0,1000000000));ac=$shiftRightUint64(ab,32);ad=$shiftLeft64(ab,32);ab=$mul64((new $Uint64(aa.$high&0,(aa.$low&4294967295)>>>0)),new $Uint64(0,1000000000));ae=ad;af=new $Uint64(ad.$high+ab.$high,ad.$low+ab.$low);ag=ae;ad=af;if((ad.$higham.$high||(ac.$high===am.$high&&ac.$low>am.$low))||(ac.$high===am.$high&&ac.$low===am.$low)&&(ad.$high>ao.$high||(ad.$high===ao.$high&&ad.$low>=ao.$low))){k=1;ap=ad;aq=new $Uint64(ad.$high-ao.$high,ad.$low-ao.$low);ag=ap;ad=aq;if((ad.$high>ag.$high||(ad.$high===ag.$high&&ad.$low>ag.$low))){ac=(ar=new $Uint64(0,1),new $Uint64(ac.$high-ar.$high,ac.$low-ar.$low));}ac=(as=am,new $Uint64(ac.$high-as.$high,ac.$low-as.$low));}if((am.$high===0&&am.$low===0)&&(at=(new $Uint64(j.$high,j.$low)),(ao.$high===at.$high&&ao.$low===at.$low))){break;}ao=$shiftRightUint64(ao,(1));ao=(au=$shiftLeft64((new $Uint64(am.$high&0,(am.$low&1)>>>0)),63),new $Uint64(ao.$high|au.$high,(ao.$low|au.$low)>>>0));am=$shiftRightUint64(am,(1));}l=(new BS(ad.$high,ad.$low));}if(m&&!((l.$high===0&&l.$low===0))){k=(k^(1))>>0;l=new BS(j.$high-l.$high,j.$low-l.$low);}return[k,l];};CJ.ptr.prototype.get=function(){var i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;if(i===DU.nil){$s=-1;return CM;}if(i===CN){$s=1;continue;}$s=2;continue;case 1:$r=CO.Do(H);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:$s=-1;return i;}return;}if($f===undefined){$f={$blk:CJ.ptr.prototype.get};}$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};CJ.prototype.get=function(){return this.$val.get();};CJ.ptr.prototype.String=function(){var i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:i=this;j=i.get();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}$s=-1;return j.name;}return;}if($f===undefined){$f={$blk:CJ.ptr.prototype.String};}$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};CJ.prototype.String=function(){return this.$val.String();};CP=function(i,j){var i,j,k,l;k=new CJ.ptr(i,new DK([new CK.ptr(i,j,false)]),new DL([new CL.ptr(new $Int64(-2147483648,0),0,false,false)]),new $Int64(-2147483648,0),new $Int64(2147483647,4294967295),DM.nil);k.cacheZone=(l=k.zone,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0]));return k;};$pkg.FixedZone=CP;CJ.ptr.prototype.lookup=function(i){var aa,ab,ac,ad,ae,af,ag,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:j="";k=0;l=new $Int64(0,0);m=new $Int64(0,0);n=this;o=n.get();$s=1;case 1:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;if(n.zone.$length===0){j="UTC";k=0;l=new $Int64(-2147483648,0);m=new $Int64(2147483647,4294967295);$s=-1;return[j,k,l,m];}p=n.cacheZone;if(!(p===DM.nil)&&(q=n.cacheStart,(q.$high=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+0])).when,(i.$high=u.$length)?($throwRuntimeError("index out of range"),undefined):u.$array[u.$offset+v]));j=w.name;k=w.offset;l=new $Int64(-2147483648,0);if(n.tx.$length>0){m=(x=n.tx,(0>=x.$length?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+0])).when;}else{m=new $Int64(2147483647,4294967295);}$s=-1;return[j,k,l,m];}y=n.tx;m=new $Int64(2147483647,4294967295);z=0;aa=y.$length;while(true){if(!((aa-z>>0)>1)){break;}ac=z+(ab=((aa-z>>0))/2,(ab===ab&&ab!==1/0&&ab!==-1/0)?ab>>0:$throwRuntimeError("integer divide by zero"))>>0;ad=((ac<0||ac>=y.$length)?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+ac]).when;if((i.$high=y.$length)?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+z]).index,((af<0||af>=ae.$length)?($throwRuntimeError("index out of range"),undefined):ae.$array[ae.$offset+af]));j=ag.name;k=ag.offset;l=((z<0||z>=y.$length)?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+z]).when;$s=-1;return[j,k,l,m];}return;}if($f===undefined){$f={$blk:CJ.ptr.prototype.lookup};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};CJ.prototype.lookup=function(i){return this.$val.lookup(i);};CJ.ptr.prototype.lookupFirstZone=function(){var i,j,k,l,m,n,o,p,q,r,s;i=this;if(!i.firstZoneUsed()){return 0;}if(i.tx.$length>0&&(j=i.zone,k=(l=i.tx,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])).index,((k<0||k>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+k])).isDST){n=(((m=i.tx,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])).index>>0))-1>>0;while(true){if(!(n>=0)){break;}if(!(o=i.zone,((n<0||n>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+n])).isDST){return n;}n=n-(1)>>0;}}p=i.zone;q=0;while(true){if(!(q=s.$length)?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+r])).isDST){return r;}q++;}return 0;};CJ.prototype.lookupFirstZone=function(){return this.$val.lookupFirstZone();};CJ.ptr.prototype.firstZoneUsed=function(){var i,j,k,l;i=this;j=i.tx;k=0;while(true){if(!(k=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+k]),CL);if(l.index===0){return true;}k++;}return false;};CJ.prototype.firstZoneUsed=function(){return this.$val.firstZoneUsed();};CJ.ptr.prototype.lookupName=function(i,j){var aa,ab,ac,ad,ae,af,ag,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:k=0;l=false;m=this;n=m.get();$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m.zone;p=0;case 2:if(!(p=r.$length)?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+q]));if(s.name===i){$s=4;continue;}$s=5;continue;case 4:v=m.lookup((u=(new $Int64(0,s.offset)),new $Int64(j.$high-u.$high,j.$low-u.$low)));$s=6;case 6:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}t=v;w=t[0];x=t[1];if(w===s.name){y=x;z=true;k=y;l=z;$s=-1;return[k,l];}case 5:p++;$s=2;continue;case 3:aa=m.zone;ab=0;while(true){if(!(ab=ad.$length)?($throwRuntimeError("index out of range"),undefined):ad.$array[ad.$offset+ac]));if(ae.name===i){af=ae.offset;ag=true;k=af;l=ag;$s=-1;return[k,l];}ab++;}$s=-1;return[k,l];}return;}if($f===undefined){$f={$blk:CJ.ptr.prototype.lookupName};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};CJ.prototype.lookupName=function(i,j){return this.$val.lookupName(i,j);};EC.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];ED.methods=[{prop:"Stop",name:"Stop",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Reset",name:"Reset",pkg:"",typ:$funcType([BS],[$Bool],false)}];EF.methods=[{prop:"Stop",name:"Stop",pkg:"",typ:$funcType([],[],false)}];BL.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Format",name:"Format",pkg:"",typ:$funcType([$String],[$String],false)},{prop:"AppendFormat",name:"AppendFormat",pkg:"",typ:$funcType([DR,$String],[DR],false)},{prop:"After",name:"After",pkg:"",typ:$funcType([BL],[$Bool],false)},{prop:"Before",name:"Before",pkg:"",typ:$funcType([BL],[$Bool],false)},{prop:"Equal",name:"Equal",pkg:"",typ:$funcType([BL],[$Bool],false)},{prop:"IsZero",name:"IsZero",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"abs",name:"abs",pkg:"time",typ:$funcType([],[$Uint64],false)},{prop:"locabs",name:"locabs",pkg:"time",typ:$funcType([],[$String,$Int,$Uint64],false)},{prop:"Date",name:"Date",pkg:"",typ:$funcType([],[$Int,BM,$Int],false)},{prop:"Year",name:"Year",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Month",name:"Month",pkg:"",typ:$funcType([],[BM],false)},{prop:"Day",name:"Day",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Weekday",name:"Weekday",pkg:"",typ:$funcType([],[BO],false)},{prop:"ISOWeek",name:"ISOWeek",pkg:"",typ:$funcType([],[$Int,$Int],false)},{prop:"Clock",name:"Clock",pkg:"",typ:$funcType([],[$Int,$Int,$Int],false)},{prop:"Hour",name:"Hour",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Minute",name:"Minute",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Second",name:"Second",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Nanosecond",name:"Nanosecond",pkg:"",typ:$funcType([],[$Int],false)},{prop:"YearDay",name:"YearDay",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Add",name:"Add",pkg:"",typ:$funcType([BS],[BL],false)},{prop:"Sub",name:"Sub",pkg:"",typ:$funcType([BL],[BS],false)},{prop:"AddDate",name:"AddDate",pkg:"",typ:$funcType([$Int,$Int,$Int],[BL],false)},{prop:"date",name:"date",pkg:"time",typ:$funcType([$Bool],[$Int,BM,$Int,$Int],false)},{prop:"UTC",name:"UTC",pkg:"",typ:$funcType([],[BL],false)},{prop:"Local",name:"Local",pkg:"",typ:$funcType([],[BL],false)},{prop:"In",name:"In",pkg:"",typ:$funcType([DU],[BL],false)},{prop:"Location",name:"Location",pkg:"",typ:$funcType([],[DU],false)},{prop:"Zone",name:"Zone",pkg:"",typ:$funcType([],[$String,$Int],false)},{prop:"Unix",name:"Unix",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"UnixNano",name:"UnixNano",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"MarshalBinary",name:"MarshalBinary",pkg:"",typ:$funcType([],[DR,$error],false)},{prop:"GobEncode",name:"GobEncode",pkg:"",typ:$funcType([],[DR,$error],false)},{prop:"MarshalJSON",name:"MarshalJSON",pkg:"",typ:$funcType([],[DR,$error],false)},{prop:"MarshalText",name:"MarshalText",pkg:"",typ:$funcType([],[DR,$error],false)},{prop:"Truncate",name:"Truncate",pkg:"",typ:$funcType([BS],[BL],false)},{prop:"Round",name:"Round",pkg:"",typ:$funcType([BS],[BL],false)}];EG.methods=[{prop:"nsec",name:"nsec",pkg:"time",typ:$funcType([],[$Int32],false)},{prop:"sec",name:"sec",pkg:"time",typ:$funcType([],[$Int64],false)},{prop:"unixSec",name:"unixSec",pkg:"time",typ:$funcType([],[$Int64],false)},{prop:"addSec",name:"addSec",pkg:"time",typ:$funcType([$Int64],[],false)},{prop:"setLoc",name:"setLoc",pkg:"time",typ:$funcType([DU],[],false)},{prop:"stripMono",name:"stripMono",pkg:"time",typ:$funcType([],[],false)},{prop:"setMono",name:"setMono",pkg:"time",typ:$funcType([$Int64],[],false)},{prop:"mono",name:"mono",pkg:"time",typ:$funcType([],[$Int64],false)},{prop:"UnmarshalBinary",name:"UnmarshalBinary",pkg:"",typ:$funcType([DR],[$error],false)},{prop:"GobDecode",name:"GobDecode",pkg:"",typ:$funcType([DR],[$error],false)},{prop:"UnmarshalJSON",name:"UnmarshalJSON",pkg:"",typ:$funcType([DR],[$error],false)},{prop:"UnmarshalText",name:"UnmarshalText",pkg:"",typ:$funcType([DR],[$error],false)}];BM.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];BO.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];BS.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Nanoseconds",name:"Nanoseconds",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Seconds",name:"Seconds",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Minutes",name:"Minutes",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Hours",name:"Hours",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Truncate",name:"Truncate",pkg:"",typ:$funcType([BS],[BS],false)},{prop:"Round",name:"Round",pkg:"",typ:$funcType([BS],[BS],false)}];DU.methods=[{prop:"get",name:"get",pkg:"time",typ:$funcType([],[DU],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"lookup",name:"lookup",pkg:"time",typ:$funcType([$Int64],[$String,$Int,$Int64,$Int64],false)},{prop:"lookupFirstZone",name:"lookupFirstZone",pkg:"time",typ:$funcType([],[$Int],false)},{prop:"firstZoneUsed",name:"firstZoneUsed",pkg:"time",typ:$funcType([],[$Bool],false)},{prop:"lookupName",name:"lookupName",pkg:"time",typ:$funcType([$String,$Int64],[$Int,$Bool],false)}];G.init("time",[{prop:"i",name:"i",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"when",name:"when",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"period",name:"period",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"f",name:"f",embedded:false,exported:false,typ:EA,tag:""},{prop:"arg",name:"arg",embedded:false,exported:false,typ:$emptyInterface,tag:""},{prop:"timeout",name:"timeout",embedded:false,exported:false,typ:EB,tag:""},{prop:"active",name:"active",embedded:false,exported:false,typ:$Bool,tag:""}]);AE.init("",[{prop:"Layout",name:"Layout",embedded:false,exported:true,typ:$String,tag:""},{prop:"Value",name:"Value",embedded:false,exported:true,typ:$String,tag:""},{prop:"LayoutElem",name:"LayoutElem",embedded:false,exported:true,typ:$String,tag:""},{prop:"ValueElem",name:"ValueElem",embedded:false,exported:true,typ:$String,tag:""},{prop:"Message",name:"Message",embedded:false,exported:true,typ:$String,tag:""}]);AX.init("time",[{prop:"C",name:"C",embedded:false,exported:true,typ:EE,tag:""},{prop:"r",name:"r",embedded:false,exported:false,typ:G,tag:""}]);BI.init("time",[{prop:"C",name:"C",embedded:false,exported:true,typ:EE,tag:""},{prop:"r",name:"r",embedded:false,exported:false,typ:G,tag:""}]);BL.init("time",[{prop:"wall",name:"wall",embedded:false,exported:false,typ:$Uint64,tag:""},{prop:"ext",name:"ext",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"loc",name:"loc",embedded:false,exported:false,typ:DU,tag:""}]);CJ.init("time",[{prop:"name",name:"name",embedded:false,exported:false,typ:$String,tag:""},{prop:"zone",name:"zone",embedded:false,exported:false,typ:DK,tag:""},{prop:"tx",name:"tx",embedded:false,exported:false,typ:DL,tag:""},{prop:"cacheStart",name:"cacheStart",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"cacheEnd",name:"cacheEnd",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"cacheZone",name:"cacheZone",embedded:false,exported:false,typ:DM,tag:""}]);CK.init("time",[{prop:"name",name:"name",embedded:false,exported:false,typ:$String,tag:""},{prop:"offset",name:"offset",embedded:false,exported:false,typ:$Int,tag:""},{prop:"isDST",name:"isDST",embedded:false,exported:false,typ:$Bool,tag:""}]);CL.init("time",[{prop:"when",name:"when",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"index",name:"index",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"isstd",name:"isstd",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"isutc",name:"isutc",embedded:false,exported:false,typ:$Bool,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=C.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}CN=new CJ.ptr("",DK.nil,DL.nil,new $Int64(0,0),new $Int64(0,0),DM.nil);CO=new E.Once.ptr(false,false);O=new DO([A.GOROOT()+"/lib/time/zoneinfo.zip"]);Q=$toNativeArray($kindInt,[260,265,524,526,528,274]);T=new DO(["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]);U=new DO(["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]);V=new DO(["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]);W=new DO(["January","February","March","April","May","June","July","August","September","October","November","December"]);AA=C.New("time: invalid number");AD=C.New("bad value for field");AR=C.New("time: bad [0-9]*");BN=$toNativeArray($kindString,["January","February","March","April","May","June","July","August","September","October","November","December"]);BP=$toNativeArray($kindString,["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]);BZ=$toNativeArray($kindInt32,[0,31,59,90,120,151,181,212,243,273,304,334,365]);CB=(h=I(),new $Int64(h.$high-0,h.$low-1));CM=new CJ.ptr("UTC",DK.nil,DL.nil,new $Int64(0,0),new $Int64(0,0),DM.nil);$pkg.UTC=CM;$pkg.Local=CN;CQ=C.New("time: invalid location name");CY=C.New("malformed time zone information");$unused(new DO(["/usr/share/zoneinfo/","/usr/share/lib/zoneinfo/","/usr/lib/locale/TZ/",A.GOROOT()+"/lib/time/zoneinfo.zip"]));F();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/poll"]=(function(){var $pkg={},$init,B,E,F,D,C,A,G,M,P,Q,AG,AH,AI,AJ,AK,AM,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH,K,R,AE,I,J,L,N,O,S,T,U,W;B=$packages["errors"];E=$packages["io"];F=$packages["runtime"];D=$packages["sync/atomic"];C=$packages["syscall"];A=$packages["time"];G=$pkg.pollDesc=$newType(0,$kindStruct,"poll.pollDesc",true,"internal/poll",false,function(closing_){this.$val=this;if(arguments.length===0){this.closing=false;return;}this.closing=closing_;});M=$pkg.TimeoutError=$newType(0,$kindStruct,"poll.TimeoutError",true,"internal/poll",true,function(){this.$val=this;if(arguments.length===0){return;}});P=$pkg.fdMutex=$newType(0,$kindStruct,"poll.fdMutex",true,"internal/poll",false,function(state_,rsema_,wsema_){this.$val=this;if(arguments.length===0){this.state=new $Uint64(0,0);this.rsema=0;this.wsema=0;return;}this.state=state_;this.rsema=rsema_;this.wsema=wsema_;});Q=$pkg.FD=$newType(0,$kindStruct,"poll.FD",true,"internal/poll",true,function(fdmu_,Sysfd_,pd_,iovecs_,csema_,isBlocking_,IsStream_,ZeroReadIsEOF_,isFile_){this.$val=this;if(arguments.length===0){this.fdmu=new P.ptr(new $Uint64(0,0),0,0);this.Sysfd=0;this.pd=new G.ptr(false);this.iovecs=AS.nil;this.csema=0;this.isBlocking=0;this.IsStream=false;this.ZeroReadIsEOF=false;this.isFile=false;return;}this.fdmu=fdmu_;this.Sysfd=Sysfd_;this.pd=pd_;this.iovecs=iovecs_;this.csema=csema_;this.isBlocking=isBlocking_;this.IsStream=IsStream_;this.ZeroReadIsEOF=ZeroReadIsEOF_;this.isFile=isFile_;});AG=$ptrType($Uint32);AH=$chanType($Bool,false,false);AI=$sliceType(AH);AJ=$ptrType($Uint64);AK=$ptrType($Int32);AM=$arrayType($Uint8,4);AR=$sliceType(C.Iovec);AS=$ptrType(AR);AT=$ptrType($Uint8);AU=$ptrType(Q);AV=$ptrType(G);AW=$ptrType(M);AX=$ptrType(P);AY=$sliceType($Uint8);AZ=$ptrType(C.Stat_t);BA=$funcType([$Uintptr],[],false);BB=$funcType([$Uintptr],[$Bool],false);BC=$ptrType(C.Linger);BD=$ptrType(C.IPMreqn);BE=$ptrType(C.IPMreq);BF=$ptrType(C.IPv6Mreq);BG=$sliceType(AY);BH=$ptrType(BG);G.ptr.prototype.init=function(c){var c,d;d=this;return $ifaceNil;};G.prototype.init=function(c){return this.$val.init(c);};G.ptr.prototype.close=function(){var c;c=this;};G.prototype.close=function(){return this.$val.close();};G.ptr.prototype.evict=function(){var c;c=this;c.closing=true;};G.prototype.evict=function(){return this.$val.evict();};G.ptr.prototype.prepare=function(c,d){var c,d,e;e=this;if(e.closing){return L(d);}return $ifaceNil;};G.prototype.prepare=function(c,d){return this.$val.prepare(c,d);};G.ptr.prototype.prepareRead=function(c){var c,d;d=this;return d.prepare(114,c);};G.prototype.prepareRead=function(c){return this.$val.prepareRead(c);};G.ptr.prototype.prepareWrite=function(c){var c,d;d=this;return d.prepare(119,c);};G.prototype.prepareWrite=function(c){return this.$val.prepareWrite(c);};G.ptr.prototype.wait=function(c,d){var c,d,e;e=this;if(e.closing){return L(d);}return $pkg.ErrTimeout;};G.prototype.wait=function(c,d){return this.$val.wait(c,d);};G.ptr.prototype.waitRead=function(c){var c,d;d=this;return d.wait(114,c);};G.prototype.waitRead=function(c){return this.$val.waitRead(c);};G.ptr.prototype.waitWrite=function(c){var c,d;d=this;return d.wait(119,c);};G.prototype.waitWrite=function(c){return this.$val.waitWrite(c);};G.ptr.prototype.pollable=function(){return true;};G.prototype.pollable=function(){return this.$val.pollable();};Q.ptr.prototype.SetDeadline=function(c){var c;return $ifaceNil;};Q.prototype.SetDeadline=function(c){return this.$val.SetDeadline(c);};Q.ptr.prototype.SetReadDeadline=function(c){var c;return $ifaceNil;};Q.prototype.SetReadDeadline=function(c){return this.$val.SetReadDeadline(c);};Q.ptr.prototype.SetWriteDeadline=function(c){var c;return $ifaceNil;};Q.prototype.SetWriteDeadline=function(c){return this.$val.SetWriteDeadline(c);};I=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(c.$get()===0){$s=1;continue;}$s=2;continue;case 1:d=new $Chan($Bool,0);e=c;(K||$throwRuntimeError("assignment to entry in nil map"))[AG.keyFor(e)]={k:e,v:$append((f=K[AG.keyFor(c)],f!==undefined?f.v:AI.nil),d)};g=$recv(d);$s=3;case 3:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g[0];case 2:c.$set(c.$get()-(1)>>>0);$s=-1;return;}return;}if($f===undefined){$f={$blk:I};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};J=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c.$set(c.$get()+(1)>>>0);e=(d=K[AG.keyFor(c)],d!==undefined?d.v:AI.nil);if(e.$length===0){$s=-1;return;}f=(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]);e=$subslice(e,1);g=c;(K||$throwRuntimeError("assignment to entry in nil map"))[AG.keyFor(g)]={k:g,v:e};if(e.$length===0){delete K[AG.keyFor(c)];}$r=$send(f,true);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:J};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};L=function(c){var c;if(c){return $pkg.ErrFileClosing;}return $pkg.ErrNetClosing;};M.ptr.prototype.Error=function(){var c;c=this;return"i/o timeout";};M.prototype.Error=function(){return this.$val.Error();};M.ptr.prototype.Timeout=function(){var c;c=this;return true;};M.prototype.Timeout=function(){return this.$val.Timeout();};M.ptr.prototype.Temporary=function(){var c;c=this;return true;};M.prototype.Temporary=function(){return this.$val.Temporary();};N=function(c,d){var c,d,e,f,g,h,i;while(true){if(!(c.$get().$length>0)){break;}f=(new $Int64(0,(e=c.$get(),(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0])).$length));if((f.$high>d.$high||(f.$high===d.$high&&f.$low>d.$low))){(h=c.$get(),(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0]=$subslice((g=c.$get(),(0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0])),$flatten64(d))));return;}d=(i=f,new $Int64(d.$high-i.$high,d.$low-i.$low));c.$set($subslice((c.$get()),1));}};Q.ptr.prototype.Fsync=function(){var c,d,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=c.incref();if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return d;}$deferred.push([$methodVal(c,"decref"),[]]);$s=-1;return C.Fsync(c.Sysfd);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Fsync};}$f.c=c;$f.d=d;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Fsync=function(){return this.$val.Fsync();};O=function(c,d,e){var c,d,e,f,g,h;f=C.Syscall(72,((c>>>0)),((d>>>0)),((e>>>0)));g=f[0];h=f[2];if(!((h===0))){return[((g>>0)),new C.Errno((h))];}return[((g>>0)),$ifaceNil];};P.ptr.prototype.incref=function(){var c,d,e,f,g;c=this;while(true){d=D.LoadUint64((c.$ptr_state||(c.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},c))));if(!((e=new $Uint64(d.$high&0,(d.$low&1)>>>0),(e.$high===0&&e.$low===0)))){return false;}f=new $Uint64(d.$high+0,d.$low+8);if((g=new $Uint64(f.$high&0,(f.$low&8388600)>>>0),(g.$high===0&&g.$low===0))){$panic(new $String("too many concurrent operations on a single file or socket (max 1048575)"));}if(D.CompareAndSwapUint64((c.$ptr_state||(c.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},c))),d,f)){return true;}}};P.prototype.incref=function(){return this.$val.incref();};P.ptr.prototype.increfAndClose=function(){var c,d,e,f,g,h,i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;case 1:d=D.LoadUint64((c.$ptr_state||(c.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},c))));if(!((e=new $Uint64(d.$high&0,(d.$low&1)>>>0),(e.$high===0&&e.$low===0)))){$s=-1;return false;}g=(f=new $Uint64(d.$high|0,(d.$low|1)>>>0),new $Uint64(f.$high+0,f.$low+8));if((h=new $Uint64(g.$high&0,(g.$low&8388600)>>>0),(h.$high===0&&h.$low===0))){$panic(new $String("too many concurrent operations on a single file or socket (max 1048575)"));}g=(i=new $Uint64(2147483647,4286578688),new $Uint64(g.$high&~i.$high,(g.$low&~i.$low)>>>0));if(D.CompareAndSwapUint64((c.$ptr_state||(c.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},c))),d,g)){$s=3;continue;}$s=4;continue;case 3:case 5:if(!(!((j=new $Uint64(d.$high&2047,(d.$low&4286578688)>>>0),(j.$high===0&&j.$low===0))))){$s=6;continue;}d=(k=new $Uint64(0,8388608),new $Uint64(d.$high-k.$high,d.$low-k.$low));$r=J((c.$ptr_rsema||(c.$ptr_rsema=new AG(function(){return this.$target.rsema;},function($v){this.$target.rsema=$v;},c))));$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=5;continue;case 6:case 8:if(!(!((l=new $Uint64(d.$high&2147481600,(d.$low&0)>>>0),(l.$high===0&&l.$low===0))))){$s=9;continue;}d=(m=new $Uint64(2048,0),new $Uint64(d.$high-m.$high,d.$low-m.$low));$r=J((c.$ptr_wsema||(c.$ptr_wsema=new AG(function(){return this.$target.wsema;},function($v){this.$target.wsema=$v;},c))));$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=8;continue;case 9:$s=-1;return true;case 4:$s=1;continue;case 2:$s=-1;return false;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.increfAndClose};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.increfAndClose=function(){return this.$val.increfAndClose();};P.ptr.prototype.decref=function(){var c,d,e,f,g;c=this;while(true){d=D.LoadUint64((c.$ptr_state||(c.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},c))));if((e=new $Uint64(d.$high&0,(d.$low&8388600)>>>0),(e.$high===0&&e.$low===0))){$panic(new $String("inconsistent poll.fdMutex"));}f=new $Uint64(d.$high-0,d.$low-8);if(D.CompareAndSwapUint64((c.$ptr_state||(c.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},c))),d,f)){return(g=new $Uint64(f.$high&0,(f.$low&8388601)>>>0),(g.$high===0&&g.$low===1));}}};P.prototype.decref=function(){return this.$val.decref();};P.ptr.prototype.rwlock=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=new $Uint64(0,0);f=new $Uint64(0,0);g=new $Uint64(0,0);h=e;i=f;j=g;k=AG.nil;if(c){h=new $Uint64(0,2);i=new $Uint64(0,8388608);j=new $Uint64(2047,4286578688);k=(d.$ptr_rsema||(d.$ptr_rsema=new AG(function(){return this.$target.rsema;},function($v){this.$target.rsema=$v;},d)));}else{h=new $Uint64(0,4);i=new $Uint64(2048,0);j=new $Uint64(2147481600,0);k=(d.$ptr_wsema||(d.$ptr_wsema=new AG(function(){return this.$target.wsema;},function($v){this.$target.wsema=$v;},d)));}case 1:l=D.LoadUint64((d.$ptr_state||(d.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},d))));if(!((m=new $Uint64(l.$high&0,(l.$low&1)>>>0),(m.$high===0&&m.$low===0)))){$s=-1;return false;}n=new $Uint64(0,0);if((o=new $Uint64(l.$high&h.$high,(l.$low&h.$low)>>>0),(o.$high===0&&o.$low===0))){n=(p=new $Uint64(l.$high|h.$high,(l.$low|h.$low)>>>0),new $Uint64(p.$high+0,p.$low+8));if((q=new $Uint64(n.$high&0,(n.$low&8388600)>>>0),(q.$high===0&&q.$low===0))){$panic(new $String("too many concurrent operations on a single file or socket (max 1048575)"));}}else{n=new $Uint64(l.$high+i.$high,l.$low+i.$low);if((r=new $Uint64(n.$high&j.$high,(n.$low&j.$low)>>>0),(r.$high===0&&r.$low===0))){$panic(new $String("too many concurrent operations on a single file or socket (max 1048575)"));}}if(D.CompareAndSwapUint64((d.$ptr_state||(d.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},d))),l,n)){$s=3;continue;}$s=4;continue;case 3:if((s=new $Uint64(l.$high&h.$high,(l.$low&h.$low)>>>0),(s.$high===0&&s.$low===0))){$s=-1;return true;}$r=I(k);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 4:$s=1;continue;case 2:$s=-1;return false;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.rwlock};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.rwlock=function(c){return this.$val.rwlock(c);};P.ptr.prototype.rwunlock=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=new $Uint64(0,0);f=new $Uint64(0,0);g=new $Uint64(0,0);h=e;i=f;j=g;k=AG.nil;if(c){h=new $Uint64(0,2);i=new $Uint64(0,8388608);j=new $Uint64(2047,4286578688);k=(d.$ptr_rsema||(d.$ptr_rsema=new AG(function(){return this.$target.rsema;},function($v){this.$target.rsema=$v;},d)));}else{h=new $Uint64(0,4);i=new $Uint64(2048,0);j=new $Uint64(2147481600,0);k=(d.$ptr_wsema||(d.$ptr_wsema=new AG(function(){return this.$target.wsema;},function($v){this.$target.wsema=$v;},d)));}case 1:l=D.LoadUint64((d.$ptr_state||(d.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},d))));if((m=new $Uint64(l.$high&h.$high,(l.$low&h.$low)>>>0),(m.$high===0&&m.$low===0))||(n=new $Uint64(l.$high&0,(l.$low&8388600)>>>0),(n.$high===0&&n.$low===0))){$panic(new $String("inconsistent poll.fdMutex"));}p=(o=new $Uint64(l.$high&~h.$high,(l.$low&~h.$low)>>>0),new $Uint64(o.$high-0,o.$low-8));if(!((q=new $Uint64(l.$high&j.$high,(l.$low&j.$low)>>>0),(q.$high===0&&q.$low===0)))){p=(r=i,new $Uint64(p.$high-r.$high,p.$low-r.$low));}if(D.CompareAndSwapUint64((d.$ptr_state||(d.$ptr_state=new AJ(function(){return this.$target.state;},function($v){this.$target.state=$v;},d))),l,p)){$s=3;continue;}$s=4;continue;case 3:if(!((s=new $Uint64(l.$high&j.$high,(l.$low&j.$low)>>>0),(s.$high===0&&s.$low===0)))){$s=5;continue;}$s=6;continue;case 5:$r=J(k);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 6:$s=-1;return(t=new $Uint64(p.$high&0,(p.$low&8388601)>>>0),(t.$high===0&&t.$low===1));case 4:$s=1;continue;case 2:$s=-1;return false;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.rwunlock};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.rwunlock=function(c){return this.$val.rwunlock(c);};Q.ptr.prototype.incref=function(){var c;c=this;if(!c.fdmu.incref()){return L(c.isFile);}return $ifaceNil;};Q.prototype.incref=function(){return this.$val.incref();};Q.ptr.prototype.decref=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(c.fdmu.decref()){$s=1;continue;}$s=2;continue;case 1:d=c.destroy();$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.decref};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.decref=function(){return this.$val.decref();};Q.ptr.prototype.readLock=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.fdmu.rwlock(true);$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}if(!d){$s=1;continue;}$s=2;continue;case 1:$s=-1;return L(c.isFile);case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.readLock};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.readLock=function(){return this.$val.readLock();};Q.ptr.prototype.readUnlock=function(){var c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.fdmu.rwunlock(true);$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}if(d){$s=1;continue;}$s=2;continue;case 1:e=c.destroy();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.readUnlock};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.readUnlock=function(){return this.$val.readUnlock();};Q.ptr.prototype.writeLock=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.fdmu.rwlock(false);$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}if(!d){$s=1;continue;}$s=2;continue;case 1:$s=-1;return L(c.isFile);case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.writeLock};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.writeLock=function(){return this.$val.writeLock();};Q.ptr.prototype.writeUnlock=function(){var c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.fdmu.rwunlock(false);$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}if(d){$s=1;continue;}$s=2;continue;case 1:e=c.destroy();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.writeUnlock};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.writeUnlock=function(){return this.$val.writeUnlock();};Q.ptr.prototype.eofError=function(c,d){var c,d,e;e=this;if((c===0)&&$interfaceIsEqual(d,$ifaceNil)&&e.ZeroReadIsEOF){return E.EOF;}return d;};Q.prototype.eofError=function(c,d){return this.$val.eofError(c,d);};Q.ptr.prototype.Fchmod=function(c){var c,d,e,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.incref();if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}$deferred.push([$methodVal(d,"decref"),[]]);$s=-1;return C.Fchmod(d.Sysfd,c);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Fchmod};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Fchmod=function(c){return this.$val.Fchmod(c);};Q.ptr.prototype.Fchown=function(c,d){var c,d,e,f,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);e=this;f=e.incref();if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return f;}$deferred.push([$methodVal(e,"decref"),[]]);$s=-1;return C.Fchown(e.Sysfd,c,d);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Fchown};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Fchown=function(c,d){return this.$val.Fchown(c,d);};Q.ptr.prototype.Ftruncate=function(c){var c,d,e,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.incref();if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}$deferred.push([$methodVal(d,"decref"),[]]);$s=-1;return C.Ftruncate(d.Sysfd,c);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Ftruncate};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Ftruncate=function(c){return this.$val.Ftruncate(c);};Q.ptr.prototype.Init=function(c,d){var c,d,e,f;e=this;if(c==="file"){e.isFile=true;}if(!d){e.isBlocking=1;return $ifaceNil;}f=e.pd.init(e);if(!($interfaceIsEqual(f,$ifaceNil))){e.isBlocking=1;}return f;};Q.prototype.Init=function(c,d){return this.$val.Init(c,d);};Q.ptr.prototype.destroy=function(){var c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;c.pd.close();d=$pkg.CloseFunc(c.Sysfd);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;c.Sysfd=-1;$r=J((c.$ptr_csema||(c.$ptr_csema=new AG(function(){return this.$target.csema;},function($v){this.$target.csema=$v;},c))));$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.destroy};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.destroy=function(){return this.$val.destroy();};Q.ptr.prototype.Close=function(){var c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.fdmu.increfAndClose();$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}if(!d){$s=1;continue;}$s=2;continue;case 1:$s=-1;return L(c.isFile);case 2:c.pd.evict();e=c.decref();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(c.isBlocking===0){$s=5;continue;}$s=6;continue;case 5:$r=I((c.$ptr_csema||(c.$ptr_csema=new AG(function(){return this.$target.csema;},function($v){this.$target.csema=$v;},c))));$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 6:$s=-1;return f;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.Close};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.Close=function(){return this.$val.Close();};Q.ptr.prototype.Shutdown=function(c){var c,d,e,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.incref();if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}$deferred.push([$methodVal(d,"decref"),[]]);$s=-1;return C.Shutdown(d.Sysfd,c);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Shutdown};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Shutdown=function(c){return this.$val.Shutdown(c);};Q.ptr.prototype.SetBlocking=function(){var c,d,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=c.incref();if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return d;}$deferred.push([$methodVal(c,"decref"),[]]);D.StoreUint32((c.$ptr_isBlocking||(c.$ptr_isBlocking=new AG(function(){return this.$target.isBlocking;},function($v){this.$target.isBlocking=$v;},c))),1);$s=-1;return C.SetNonblock(c.Sysfd,false);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetBlocking};}$f.c=c;$f.d=d;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetBlocking=function(){return this.$val.SetBlocking();};Q.ptr.prototype.Read=function(c){var c,d,e,f,g,h,i,j,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.readLock();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[0,f];}$deferred.push([$methodVal(d,"readUnlock"),[]]);if(c.$length===0){$s=-1;return[0,$ifaceNil];}g=d.pd.prepareRead(d.isFile);if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[0,g];}if(d.IsStream&&c.$length>1073741824){c=$subslice(c,0,1073741824);}while(true){h=C.Read(d.Sysfd,c);i=h[0];j=h[1];if(!($interfaceIsEqual(j,$ifaceNil))){i=0;if($interfaceIsEqual(j,new C.Errno(11))&&d.pd.pollable()){j=d.pd.waitRead(d.isFile);if($interfaceIsEqual(j,$ifaceNil)){continue;}}if(false&&$interfaceIsEqual(j,new C.Errno(4))){continue;}}j=d.eofError(i,j);$s=-1;return[i,j];}$s=-1;return[0,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Read};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Read=function(c){return this.$val.Read(c);};Q.ptr.prototype.Pread=function(c,d){var c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=e.incref();if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[0,f];}if(e.IsStream&&c.$length>1073741824){c=$subslice(c,0,1073741824);}g=C.Pread(e.Sysfd,c,d);h=g[0];i=g[1];if(!($interfaceIsEqual(i,$ifaceNil))){h=0;}j=e.decref();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}j;i=e.eofError(h,i);$s=-1;return[h,i];}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.Pread};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.Pread=function(c,d){return this.$val.Pread(c,d);};Q.ptr.prototype.ReadFrom=function(c){var c,d,e,f,g,h,i,j,k,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.readLock();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[0,$ifaceNil,f];}$deferred.push([$methodVal(d,"readUnlock"),[]]);g=d.pd.prepareRead(d.isFile);if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[0,$ifaceNil,g];}while(true){h=C.Recvfrom(d.Sysfd,c,0);i=h[0];j=h[1];k=h[2];if(!($interfaceIsEqual(k,$ifaceNil))){i=0;if($interfaceIsEqual(k,new C.Errno(11))&&d.pd.pollable()){k=d.pd.waitRead(d.isFile);if($interfaceIsEqual(k,$ifaceNil)){continue;}}}k=d.eofError(i,k);$s=-1;return[i,j,k];}$s=-1;return[0,$ifaceNil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.ReadFrom};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.ReadFrom=function(c){return this.$val.ReadFrom(c);};Q.ptr.prototype.ReadMsg=function(c,d){var c,d,e,f,g,h,i,j,k,l,m,n,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);e=this;f=e.readLock();$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[0,0,0,$ifaceNil,g];}$deferred.push([$methodVal(e,"readUnlock"),[]]);h=e.pd.prepareRead(e.isFile);if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[0,0,0,$ifaceNil,h];}while(true){i=C.Recvmsg(e.Sysfd,c,d,0);j=i[0];k=i[1];l=i[2];m=i[3];n=i[4];if(!($interfaceIsEqual(n,$ifaceNil))){if($interfaceIsEqual(n,new C.Errno(11))&&e.pd.pollable()){n=e.pd.waitRead(e.isFile);if($interfaceIsEqual(n,$ifaceNil)){continue;}}}n=e.eofError(j,n);$s=-1;return[j,k,l,m,n];}$s=-1;return[0,0,0,$ifaceNil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,0,0,$ifaceNil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.ReadMsg};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.ReadMsg=function(c,d){return this.$val.ReadMsg(c,d);};Q.ptr.prototype.Write=function(c){var c,d,e,f,g,h,i,j,k,l,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.writeLock();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[0,f];}$deferred.push([$methodVal(d,"writeUnlock"),[]]);g=d.pd.prepareWrite(d.isFile);if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[0,g];}h=0;while(true){i=c.$length;if(d.IsStream&&(i-h>>0)>1073741824){i=h+1073741824>>0;}j=C.Write(d.Sysfd,$subslice(c,h,i));k=j[0];l=j[1];if(k>0){h=h+(k)>>0;}if(h===c.$length){$s=-1;return[h,l];}if($interfaceIsEqual(l,new C.Errno(11))&&d.pd.pollable()){l=d.pd.waitWrite(d.isFile);if($interfaceIsEqual(l,$ifaceNil)){continue;}}if(!($interfaceIsEqual(l,$ifaceNil))){$s=-1;return[h,l];}if(k===0){$s=-1;return[h,E.ErrUnexpectedEOF];}}$s=-1;return[0,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Write};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Write=function(c){return this.$val.Write(c);};Q.ptr.prototype.Pwrite=function(c,d){var c,d,e,f,g,h,i,j,k,l,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);e=this;f=e.incref();if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[0,f];}$deferred.push([$methodVal(e,"decref"),[]]);g=0;while(true){h=c.$length;if(e.IsStream&&(h-g>>0)>1073741824){h=g+1073741824>>0;}i=C.Pwrite(e.Sysfd,$subslice(c,g,h),(j=(new $Int64(0,g)),new $Int64(d.$high+j.$high,d.$low+j.$low)));k=i[0];l=i[1];if(k>0){g=g+(k)>>0;}if(g===c.$length){$s=-1;return[g,l];}if(!($interfaceIsEqual(l,$ifaceNil))){$s=-1;return[g,l];}if(k===0){$s=-1;return[g,E.ErrUnexpectedEOF];}}$s=-1;return[0,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Pwrite};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Pwrite=function(c,d){return this.$val.Pwrite(c,d);};Q.ptr.prototype.WriteTo=function(c,d){var c,d,e,f,g,h,i,j,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);e=this;f=e.writeLock();$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[0,g];}$deferred.push([$methodVal(e,"writeUnlock"),[]]);h=e.pd.prepareWrite(e.isFile);if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[0,h];}case 2:i=C.Sendto(e.Sysfd,c,0,d);$s=4;case 4:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}j=i;if($interfaceIsEqual(j,new C.Errno(11))&&e.pd.pollable()){j=e.pd.waitWrite(e.isFile);if($interfaceIsEqual(j,$ifaceNil)){$s=2;continue;}}if(!($interfaceIsEqual(j,$ifaceNil))){$s=-1;return[0,j];}$s=-1;return[c.$length,$ifaceNil];$s=2;continue;case 3:$s=-1;return[0,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.WriteTo};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.WriteTo=function(c,d){return this.$val.WriteTo(c,d);};Q.ptr.prototype.WriteMsg=function(c,d,e){var c,d,e,f,g,h,i,j,k,l,m,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.writeLock();$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[0,0,h];}$deferred.push([$methodVal(f,"writeUnlock"),[]]);i=f.pd.prepareWrite(f.isFile);if(!($interfaceIsEqual(i,$ifaceNil))){$s=-1;return[0,0,i];}case 2:k=C.SendmsgN(f.Sysfd,c,d,e,0);$s=4;case 4:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;l=j[0];m=j[1];if($interfaceIsEqual(m,new C.Errno(11))&&f.pd.pollable()){m=f.pd.waitWrite(f.isFile);if($interfaceIsEqual(m,$ifaceNil)){$s=2;continue;}}if(!($interfaceIsEqual(m,$ifaceNil))){$s=-1;return[l,0,m];}$s=-1;return[l,d.$length,m];$s=2;continue;case 3:$s=-1;return[0,0,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.WriteMsg};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.WriteMsg=function(c,d,e){return this.$val.WriteMsg(c,d,e);};Q.ptr.prototype.Accept=function(){var c,d,e,f,g,h,i,j,k,l,m,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=c.readLock();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[-1,$ifaceNil,"",e];}$deferred.push([$methodVal(c,"readUnlock"),[]]);f=c.pd.prepareRead(c.isFile);if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[-1,$ifaceNil,"",f];}case 2:h=W(c.Sysfd);$s=4;case 4:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;i=g[0];j=g[1];k=g[2];l=g[3];if($interfaceIsEqual(l,$ifaceNil)){$s=-1;return[i,j,"",l];}m=l;if($interfaceIsEqual(m,new C.Errno((11)))){if(c.pd.pollable()){l=c.pd.waitRead(c.isFile);if($interfaceIsEqual(l,$ifaceNil)){$s=2;continue;}}}else if($interfaceIsEqual(m,new C.Errno((103)))){$s=2;continue;}$s=-1;return[-1,$ifaceNil,k,l];$s=2;continue;case 3:$s=-1;return[0,$ifaceNil,"",$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil,"",$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Accept};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Accept=function(){return this.$val.Accept();};Q.ptr.prototype.Seek=function(c,d){var c,d,e,f,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);e=this;f=e.incref();if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[new $Int64(0,0),f];}$deferred.push([$methodVal(e,"decref"),[]]);$s=-1;return C.Seek(e.Sysfd,c,d);}return;}}catch(err){$err=err;$s=-1;return[new $Int64(0,0),$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Seek};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Seek=function(c,d){return this.$val.Seek(c,d);};Q.ptr.prototype.ReadDirent=function(c){var c,d,e,f,g,h,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.incref();if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[0,e];}$deferred.push([$methodVal(d,"decref"),[]]);while(true){f=C.ReadDirent(d.Sysfd,c);g=f[0];h=f[1];if(!($interfaceIsEqual(h,$ifaceNil))){g=0;if($interfaceIsEqual(h,new C.Errno(11))&&d.pd.pollable()){h=d.pd.waitRead(d.isFile);if($interfaceIsEqual(h,$ifaceNil)){continue;}}}$s=-1;return[g,h];}$s=-1;return[0,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.ReadDirent};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.ReadDirent=function(c){return this.$val.ReadDirent(c);};Q.ptr.prototype.Fchdir=function(){var c,d,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=c.incref();if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return d;}$deferred.push([$methodVal(c,"decref"),[]]);$s=-1;return C.Fchdir(c.Sysfd);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Fchdir};}$f.c=c;$f.d=d;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Fchdir=function(){return this.$val.Fchdir();};Q.ptr.prototype.Fstat=function(c){var c,d,e,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.incref();if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}$deferred.push([$methodVal(d,"decref"),[]]);$s=-1;return C.Fstat(d.Sysfd,c);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Fstat};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Fstat=function(c){return this.$val.Fstat(c);};S=function(c){var c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(D.LoadInt32((AE||(AE=new AK(function(){return R;},function($v){R=$v;}))))===1){d=O(c,1030,0);e=d[0];f=d[1];if($interfaceIsEqual(f,$ifaceNil)){$s=-1;return[e,"",$ifaceNil];}g=$assertType(f,C.Errno);if((g===(22))||(g===(38))){D.StoreInt32((AE||(AE=new AK(function(){return R;},function($v){R=$v;}))),0);}else{$s=-1;return[-1,"fcntl",f];}}h=T(c);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$s=-1;return h;}return;}if($f===undefined){$f={$blk:S};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};$pkg.DupCloseOnExec=S;T=function(c){var c,d,e,f,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);$r=C.ForkLock.RLock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(C.ForkLock,"RUnlock"),[]]);d=C.Dup(c);e=d[0];f=d[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[-1,"dup",f];}C.CloseOnExec(e);$s=-1;return[e,"",$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[0,"",$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:T};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.ptr.prototype.Dup=function(){var c,d,e,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=c.incref();if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return[-1,"",d];}$deferred.push([$methodVal(c,"decref"),[]]);e=S(c.Sysfd);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}}catch(err){$err=err;$s=-1;return[0,"",$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Dup};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Dup=function(){return this.$val.Dup();};Q.ptr.prototype.WaitWrite=function(){var c;c=this;return c.pd.waitWrite(c.isFile);};Q.prototype.WaitWrite=function(){return this.$val.WaitWrite();};Q.ptr.prototype.WriteOnce=function(c){var c,d,e,f,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.writeLock();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[0,f];}$deferred.push([$methodVal(d,"writeUnlock"),[]]);$s=-1;return C.Write(d.Sysfd,c);}return;}}catch(err){$err=err;$s=-1;return[0,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.WriteOnce};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.WriteOnce=function(c){return this.$val.WriteOnce(c);};Q.ptr.prototype.RawControl=function(c){var c,d,e,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.incref();if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}$deferred.push([$methodVal(d,"decref"),[]]);$r=c(((d.Sysfd>>>0)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return $ifaceNil;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.RawControl};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.RawControl=function(c){return this.$val.RawControl(c);};Q.ptr.prototype.RawRead=function(c){var c,d,e,f,g,h,i,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.readLock();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return f;}$deferred.push([$methodVal(d,"readUnlock"),[]]);g=d.pd.prepareRead(d.isFile);if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}case 2:h=c(((d.Sysfd>>>0)));$s=6;case 6:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if(h){$s=4;continue;}$s=5;continue;case 4:$s=-1;return $ifaceNil;case 5:i=d.pd.waitRead(d.isFile);if(!($interfaceIsEqual(i,$ifaceNil))){$s=-1;return i;}$s=2;continue;case 3:$s=-1;return $ifaceNil;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.RawRead};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.RawRead=function(c){return this.$val.RawRead(c);};Q.ptr.prototype.RawWrite=function(c){var c,d,e,f,g,h,i,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=this;e=d.writeLock();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return f;}$deferred.push([$methodVal(d,"writeUnlock"),[]]);g=d.pd.prepareWrite(d.isFile);if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}case 2:h=c(((d.Sysfd>>>0)));$s=6;case 6:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if(h){$s=4;continue;}$s=5;continue;case 4:$s=-1;return $ifaceNil;case 5:i=d.pd.waitWrite(d.isFile);if(!($interfaceIsEqual(i,$ifaceNil))){$s=-1;return i;}$s=2;continue;case 3:$s=-1;return $ifaceNil;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.RawWrite};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.RawWrite=function(c){return this.$val.RawWrite(c);};U=function(c,d){var c,d,e,f,g;e=C.Syscall(20,((c>>>0)),(($sliceToArray(d))),((d.$length>>>0)));f=e[0];g=e[2];if(!((g===0))){return[f,new C.Errno((g))];}return[f,$ifaceNil];};W=function(c){var c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=$pkg.Accept4Func(c,526336);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;f=d[0];g=d[1];h=d[2];i=h;if($interfaceIsEqual(i,$ifaceNil)){$s=-1;return[f,g,"",$ifaceNil];}else if($interfaceIsEqual(i,new C.Errno((38)))){}else if($interfaceIsEqual(i,new C.Errno((22)))){}else if($interfaceIsEqual(i,new C.Errno((13)))){}else if($interfaceIsEqual(i,new C.Errno((14)))){}else{$s=-1;return[-1,g,"accept4",h];}k=$pkg.AcceptFunc(c);$s=2;case 2:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;f=j[0];g=j[1];h=j[2];if($interfaceIsEqual(h,$ifaceNil)){C.CloseOnExec(f);}if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[-1,$ifaceNil,"accept",h];}h=C.SetNonblock(f,true);if(!($interfaceIsEqual(h,$ifaceNil))){$s=3;continue;}$s=4;continue;case 3:l=$pkg.CloseFunc(f);$s=5;case 5:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}l;$s=-1;return[-1,$ifaceNil,"setnonblock",h];case 4:$s=-1;return[f,g,"",$ifaceNil];}return;}if($f===undefined){$f={$blk:W};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};Q.ptr.prototype.SetsockoptInt=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptInt(f.Sysfd,c,d,e);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptInt};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptInt=function(c,d,e){return this.$val.SetsockoptInt(c,d,e);};Q.ptr.prototype.SetsockoptInet4Addr=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptInet4Addr(f.Sysfd,c,d,$clone(e,AM));}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptInet4Addr};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptInet4Addr=function(c,d,e){return this.$val.SetsockoptInet4Addr(c,d,e);};Q.ptr.prototype.SetsockoptLinger=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptLinger(f.Sysfd,c,d,e);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptLinger};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptLinger=function(c,d,e){return this.$val.SetsockoptLinger(c,d,e);};Q.ptr.prototype.SetsockoptIPMreqn=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptIPMreqn(f.Sysfd,c,d,e);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptIPMreqn};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptIPMreqn=function(c,d,e){return this.$val.SetsockoptIPMreqn(c,d,e);};Q.ptr.prototype.SetsockoptByte=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptByte(f.Sysfd,c,d,e);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptByte};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptByte=function(c,d,e){return this.$val.SetsockoptByte(c,d,e);};Q.ptr.prototype.SetsockoptIPMreq=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptIPMreq(f.Sysfd,c,d,e);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptIPMreq};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptIPMreq=function(c,d,e){return this.$val.SetsockoptIPMreq(c,d,e);};Q.ptr.prototype.SetsockoptIPv6Mreq=function(c,d,e){var c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);f=this;g=f.incref();if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}$deferred.push([$methodVal(f,"decref"),[]]);$s=-1;return C.SetsockoptIPv6Mreq(f.Sysfd,c,d,e);}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.SetsockoptIPv6Mreq};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.SetsockoptIPv6Mreq=function(c,d,e){return this.$val.SetsockoptIPv6Mreq(c,d,e);};Q.ptr.prototype.Writev=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);d=[d];e=this;f=e.writeLock();$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[new $Int64(0,0),g];}$deferred.push([$methodVal(e,"writeUnlock"),[]]);h=e.pd.prepareWrite(e.isFile);if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[new $Int64(0,0),h];}d[0]=AR.nil;if(!(e.iovecs===AS.nil)){d[0]=e.iovecs.$get();}i=1024;j=new $Int64(0,0);k=$ifaceNil;case 2:if(!(c.$get().$length>0)){$s=3;continue;}d[0]=$subslice(d[0],0,0);l=c.$get();m=0;case 4:if(!(m=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m]);if(n.$length===0){m++;$s=4;continue;}d[0]=$append(d[0],new C.Iovec.ptr($indexPtr(n.$array,n.$offset+0,AT),new $Uint64(0,0)));if(e.IsStream&&n.$length>1073741824){(o=d[0].$length-1>>0,((o<0||o>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+o])).SetLen(1073741824);$s=5;continue;}(p=d[0].$length-1>>0,((p<0||p>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+p])).SetLen(n.$length);if(d[0].$length===i){$s=5;continue;}m++;$s=4;continue;case 5:if(d[0].$length===0){$s=3;continue;}e.iovecs=(d.$ptr||(d.$ptr=new AS(function(){return this.$target[0];},function($v){this.$target[0]=$v;},d)));q=0;r=U(e.Sysfd,d[0]);q=r[0];k=r[1];if(q===4294967295){q=0;}$r=$pkg.TestHookDidWritev(((q>>0)));$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}j=(s=(new $Int64(0,q.constructor===Number?q:1)),new $Int64(j.$high+s.$high,j.$low+s.$low));N(c,(new $Int64(0,q.constructor===Number?q:1)));if(!($interfaceIsEqual(k,$ifaceNil))){if($assertType(k,C.Errno)===11){k=e.pd.waitWrite(e.isFile);if($interfaceIsEqual(k,$ifaceNil)){$s=2;continue;}}$s=3;continue;}if((j.$high===0&&j.$low===0)){k=E.ErrUnexpectedEOF;$s=3;continue;}$s=2;continue;case 3:$s=-1;return[j,k];}return;}}catch(err){$err=err;$s=-1;return[new $Int64(0,0),$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.Writev};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.Writev=function(c){return this.$val.Writev(c);};AV.methods=[{prop:"init",name:"init",pkg:"internal/poll",typ:$funcType([AU],[$error],false)},{prop:"close",name:"close",pkg:"internal/poll",typ:$funcType([],[],false)},{prop:"evict",name:"evict",pkg:"internal/poll",typ:$funcType([],[],false)},{prop:"prepare",name:"prepare",pkg:"internal/poll",typ:$funcType([$Int,$Bool],[$error],false)},{prop:"prepareRead",name:"prepareRead",pkg:"internal/poll",typ:$funcType([$Bool],[$error],false)},{prop:"prepareWrite",name:"prepareWrite",pkg:"internal/poll",typ:$funcType([$Bool],[$error],false)},{prop:"wait",name:"wait",pkg:"internal/poll",typ:$funcType([$Int,$Bool],[$error],false)},{prop:"waitRead",name:"waitRead",pkg:"internal/poll",typ:$funcType([$Bool],[$error],false)},{prop:"waitWrite",name:"waitWrite",pkg:"internal/poll",typ:$funcType([$Bool],[$error],false)},{prop:"waitCanceled",name:"waitCanceled",pkg:"internal/poll",typ:$funcType([$Int],[],false)},{prop:"pollable",name:"pollable",pkg:"internal/poll",typ:$funcType([],[$Bool],false)}];AW.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}];AX.methods=[{prop:"incref",name:"incref",pkg:"internal/poll",typ:$funcType([],[$Bool],false)},{prop:"increfAndClose",name:"increfAndClose",pkg:"internal/poll",typ:$funcType([],[$Bool],false)},{prop:"decref",name:"decref",pkg:"internal/poll",typ:$funcType([],[$Bool],false)},{prop:"rwlock",name:"rwlock",pkg:"internal/poll",typ:$funcType([$Bool],[$Bool],false)},{prop:"rwunlock",name:"rwunlock",pkg:"internal/poll",typ:$funcType([$Bool],[$Bool],false)}];AU.methods=[{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([A.Time],[$error],false)},{prop:"SetReadDeadline",name:"SetReadDeadline",pkg:"",typ:$funcType([A.Time],[$error],false)},{prop:"SetWriteDeadline",name:"SetWriteDeadline",pkg:"",typ:$funcType([A.Time],[$error],false)},{prop:"Fsync",name:"Fsync",pkg:"",typ:$funcType([],[$error],false)},{prop:"incref",name:"incref",pkg:"internal/poll",typ:$funcType([],[$error],false)},{prop:"decref",name:"decref",pkg:"internal/poll",typ:$funcType([],[$error],false)},{prop:"readLock",name:"readLock",pkg:"internal/poll",typ:$funcType([],[$error],false)},{prop:"readUnlock",name:"readUnlock",pkg:"internal/poll",typ:$funcType([],[],false)},{prop:"writeLock",name:"writeLock",pkg:"internal/poll",typ:$funcType([],[$error],false)},{prop:"writeUnlock",name:"writeUnlock",pkg:"internal/poll",typ:$funcType([],[],false)},{prop:"eofError",name:"eofError",pkg:"internal/poll",typ:$funcType([$Int,$error],[$error],false)},{prop:"Fchmod",name:"Fchmod",pkg:"",typ:$funcType([$Uint32],[$error],false)},{prop:"Fchown",name:"Fchown",pkg:"",typ:$funcType([$Int,$Int],[$error],false)},{prop:"Ftruncate",name:"Ftruncate",pkg:"",typ:$funcType([$Int64],[$error],false)},{prop:"Init",name:"Init",pkg:"",typ:$funcType([$String,$Bool],[$error],false)},{prop:"destroy",name:"destroy",pkg:"internal/poll",typ:$funcType([],[$error],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"Shutdown",name:"Shutdown",pkg:"",typ:$funcType([$Int],[$error],false)},{prop:"SetBlocking",name:"SetBlocking",pkg:"",typ:$funcType([],[$error],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([AY],[$Int,$error],false)},{prop:"Pread",name:"Pread",pkg:"",typ:$funcType([AY,$Int64],[$Int,$error],false)},{prop:"ReadFrom",name:"ReadFrom",pkg:"",typ:$funcType([AY],[$Int,C.Sockaddr,$error],false)},{prop:"ReadMsg",name:"ReadMsg",pkg:"",typ:$funcType([AY,AY],[$Int,$Int,$Int,C.Sockaddr,$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([AY],[$Int,$error],false)},{prop:"Pwrite",name:"Pwrite",pkg:"",typ:$funcType([AY,$Int64],[$Int,$error],false)},{prop:"WriteTo",name:"WriteTo",pkg:"",typ:$funcType([AY,C.Sockaddr],[$Int,$error],false)},{prop:"WriteMsg",name:"WriteMsg",pkg:"",typ:$funcType([AY,AY,C.Sockaddr],[$Int,$Int,$error],false)},{prop:"Accept",name:"Accept",pkg:"",typ:$funcType([],[$Int,C.Sockaddr,$String,$error],false)},{prop:"Seek",name:"Seek",pkg:"",typ:$funcType([$Int64,$Int],[$Int64,$error],false)},{prop:"ReadDirent",name:"ReadDirent",pkg:"",typ:$funcType([AY],[$Int,$error],false)},{prop:"Fchdir",name:"Fchdir",pkg:"",typ:$funcType([],[$error],false)},{prop:"Fstat",name:"Fstat",pkg:"",typ:$funcType([AZ],[$error],false)},{prop:"Dup",name:"Dup",pkg:"",typ:$funcType([],[$Int,$String,$error],false)},{prop:"WaitWrite",name:"WaitWrite",pkg:"",typ:$funcType([],[$error],false)},{prop:"WriteOnce",name:"WriteOnce",pkg:"",typ:$funcType([AY],[$Int,$error],false)},{prop:"RawControl",name:"RawControl",pkg:"",typ:$funcType([BA],[$error],false)},{prop:"RawRead",name:"RawRead",pkg:"",typ:$funcType([BB],[$error],false)},{prop:"RawWrite",name:"RawWrite",pkg:"",typ:$funcType([BB],[$error],false)},{prop:"SetsockoptInt",name:"SetsockoptInt",pkg:"",typ:$funcType([$Int,$Int,$Int],[$error],false)},{prop:"SetsockoptInet4Addr",name:"SetsockoptInet4Addr",pkg:"",typ:$funcType([$Int,$Int,AM],[$error],false)},{prop:"SetsockoptLinger",name:"SetsockoptLinger",pkg:"",typ:$funcType([$Int,$Int,BC],[$error],false)},{prop:"SetsockoptIPMreqn",name:"SetsockoptIPMreqn",pkg:"",typ:$funcType([$Int,$Int,BD],[$error],false)},{prop:"SetsockoptByte",name:"SetsockoptByte",pkg:"",typ:$funcType([$Int,$Int,$Uint8],[$error],false)},{prop:"SetsockoptIPMreq",name:"SetsockoptIPMreq",pkg:"",typ:$funcType([$Int,$Int,BE],[$error],false)},{prop:"SetsockoptIPv6Mreq",name:"SetsockoptIPv6Mreq",pkg:"",typ:$funcType([$Int,$Int,BF],[$error],false)},{prop:"Writev",name:"Writev",pkg:"",typ:$funcType([BH],[$Int64,$error],false)}];G.init("internal/poll",[{prop:"closing",name:"closing",embedded:false,exported:false,typ:$Bool,tag:""}]);M.init("",[]);P.init("internal/poll",[{prop:"state",name:"state",embedded:false,exported:false,typ:$Uint64,tag:""},{prop:"rsema",name:"rsema",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"wsema",name:"wsema",embedded:false,exported:false,typ:$Uint32,tag:""}]);Q.init("internal/poll",[{prop:"fdmu",name:"fdmu",embedded:false,exported:false,typ:P,tag:""},{prop:"Sysfd",name:"Sysfd",embedded:false,exported:true,typ:$Int,tag:""},{prop:"pd",name:"pd",embedded:false,exported:false,typ:G,tag:""},{prop:"iovecs",name:"iovecs",embedded:false,exported:false,typ:AS,tag:""},{prop:"csema",name:"csema",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"isBlocking",name:"isBlocking",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"IsStream",name:"IsStream",embedded:false,exported:true,typ:$Bool,tag:""},{prop:"ZeroReadIsEOF",name:"ZeroReadIsEOF",embedded:false,exported:true,typ:$Bool,tag:""},{prop:"isFile",name:"isFile",embedded:false,exported:false,typ:$Bool,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}K={};$pkg.ErrNetClosing=B.New("use of closed network connection");$pkg.ErrFileClosing=B.New("use of closed file");$pkg.ErrNoDeadline=B.New("file type does not support deadline");$pkg.ErrTimeout=new M.ptr();$pkg.TestHookDidWritev=(function(c){var c;});R=1;$pkg.Accept4Func=C.Accept4;$pkg.CloseFunc=C.Close;$pkg.AcceptFunc=C.Accept;}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/syscall/unix"]=(function(){var $pkg={},$init,B,A,C;B=$packages["sync/atomic"];A=$packages["syscall"];C=function(b){var b,c,d,e,f;c=false;d=$ifaceNil;e=false;f=$ifaceNil;c=e;d=f;return[c,d];};$pkg.IsNonblock=C;$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["internal/testlog"]=(function(){var $pkg={},$init,A,B,I,C,E,G,H;A=$packages["sync/atomic"];B=$pkg.Interface=$newType(8,$kindInterface,"testlog.Interface",true,"internal/testlog",true,null);I=$ptrType(B);E=function(){var a;a=C.Load();if($interfaceIsEqual(a,$ifaceNil)){return $ifaceNil;}return $assertType(a,I).$get();};$pkg.Logger=E;G=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=E();if(!($interfaceIsEqual(b,$ifaceNil))){$s=1;continue;}$s=2;continue;case 1:$r=b.Open(a);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:G};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Open=G;H=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=E();if(!($interfaceIsEqual(b,$ifaceNil))){$s=1;continue;}$s=2;continue;case 1:$r=b.Stat(a);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Stat=H;B.init([{prop:"Chdir",name:"Chdir",pkg:"",typ:$funcType([$String],[],false)},{prop:"Getenv",name:"Getenv",pkg:"",typ:$funcType([$String],[],false)},{prop:"Open",name:"Open",pkg:"",typ:$funcType([$String],[],false)},{prop:"Stat",name:"Stat",pkg:"",typ:$funcType([$String],[],false)}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}C=new A.Value.ptr($ifaceNil);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["os"]=(function(){var $pkg={},$init,A,B,G,K,F,C,D,H,I,E,J,P,AC,AD,AE,BC,BZ,DC,DT,DU,DV,DX,EA,EB,EC,ED,EE,EF,EG,EH,ET,EU,EV,EW,EX,FB,FG,FH,FL,FM,FN,AZ,BJ,L,M,N,AF,AH,AK,AL,AN,BE,BG,BI,BP,BQ,BS,BT,BX,CA,CC,CD,CE,CR,CV,DB,DD,DH,DI,DJ,DK,DM,DN;A=$packages["errors"];B=$packages["github.com/gopherjs/gopherjs/js"];G=$packages["internal/poll"];K=$packages["internal/syscall/unix"];F=$packages["internal/testlog"];C=$packages["io"];D=$packages["runtime"];H=$packages["sync"];I=$packages["sync/atomic"];E=$packages["syscall"];J=$packages["time"];P=$pkg.dirInfo=$newType(0,$kindStruct,"os.dirInfo",true,"os",false,function(buf_,nbuf_,bufp_){this.$val=this;if(arguments.length===0){this.buf=EE.nil;this.nbuf=0;this.bufp=0;return;}this.buf=buf_;this.nbuf=nbuf_;this.bufp=bufp_;});AC=$pkg.timeout=$newType(8,$kindInterface,"os.timeout",true,"os",false,null);AD=$pkg.PathError=$newType(0,$kindStruct,"os.PathError",true,"os",true,function(Op_,Path_,Err_){this.$val=this;if(arguments.length===0){this.Op="";this.Path="";this.Err=$ifaceNil;return;}this.Op=Op_;this.Path=Path_;this.Err=Err_;});AE=$pkg.SyscallError=$newType(0,$kindStruct,"os.SyscallError",true,"os",true,function(Syscall_,Err_){this.$val=this;if(arguments.length===0){this.Syscall="";this.Err=$ifaceNil;return;}this.Syscall=Syscall_;this.Err=Err_;});BC=$pkg.LinkError=$newType(0,$kindStruct,"os.LinkError",true,"os",true,function(Op_,Old_,New_,Err_){this.$val=this;if(arguments.length===0){this.Op="";this.Old="";this.New="";this.Err=$ifaceNil;return;}this.Op=Op_;this.Old=Old_;this.New=New_;this.Err=Err_;});BZ=$pkg.file=$newType(0,$kindStruct,"os.file",true,"os",false,function(pfd_,name_,dirinfo_,nonblock_,stdoutOrErr_){this.$val=this;if(arguments.length===0){this.pfd=new G.FD.ptr(new G.fdMutex.ptr(new $Uint64(0,0),0,0),0,new G.pollDesc.ptr(false),EU.nil,0,0,false,false,false);this.name="";this.dirinfo=ED.nil;this.nonblock=false;this.stdoutOrErr=false;return;}this.pfd=pfd_;this.name=name_;this.dirinfo=dirinfo_;this.nonblock=nonblock_;this.stdoutOrErr=stdoutOrErr_;});DC=$pkg.rawConn=$newType(0,$kindStruct,"os.rawConn",true,"os",false,function(file_){this.$val=this;if(arguments.length===0){this.file=EB.nil;return;}this.file=file_;});DT=$pkg.File=$newType(0,$kindStruct,"os.File",true,"os",true,function(file_){this.$val=this;if(arguments.length===0){this.file=EW.nil;return;}this.file=file_;});DU=$pkg.FileInfo=$newType(8,$kindInterface,"os.FileInfo",true,"os",true,null);DV=$pkg.FileMode=$newType(4,$kindUint32,"os.FileMode",true,"os",true,null);DX=$pkg.fileStat=$newType(0,$kindStruct,"os.fileStat",true,"os",false,function(name_,size_,mode_,modTime_,sys_){this.$val=this;if(arguments.length===0){this.name="";this.size=new $Int64(0,0);this.mode=0;this.modTime=new J.Time.ptr(new $Uint64(0,0),new $Int64(0,0),FB.nil);this.sys=new E.Stat_t.ptr(new $Uint64(0,0),new $Uint64(0,0),new $Uint64(0,0),0,0,0,0,new $Uint64(0,0),new $Int64(0,0),new $Int64(0,0),new $Int64(0,0),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),EV.zero());return;}this.name=name_;this.size=size_;this.mode=mode_;this.modTime=modTime_;this.sys=sys_;});EA=$sliceType($String);EB=$ptrType(DT);EC=$sliceType(DU);ED=$ptrType(P);EE=$sliceType($Uint8);EF=$ptrType(AD);EG=$ptrType(BC);EH=$ptrType(AE);ET=$sliceType(E.Iovec);EU=$ptrType(ET);EV=$arrayType($Int64,3);EW=$ptrType(BZ);EX=$funcType([EW],[$error],false);FB=$ptrType(J.Location);FG=$arrayType($Uint8,32);FH=$ptrType(DX);FL=$funcType([$Uintptr],[],false);FM=$funcType([$Uintptr],[$Bool],false);FN=$ptrType(DC);L=function(){return $pkg.Args;};M=function(){var c,d,e;c=$global.process;if(!(c===undefined)){d=c.argv;$pkg.Args=$makeSlice(EA,($parseInt(d.length)-1>>0));e=0;while(true){if(!(e<($parseInt(d.length)-1>>0))){break;}((e<0||e>=$pkg.Args.$length)?($throwRuntimeError("index out of range"),undefined):$pkg.Args.$array[$pkg.Args.$offset+e]=$internalize(d[(e+1>>0)],$String));e=e+(1)>>0;}}if($pkg.Args.$length===0){$pkg.Args=new EA(["?"]);}};N=function(){};DT.ptr.prototype.Readdir=function(c){var c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;if(d===EB.nil){$s=-1;return[EC.nil,$pkg.ErrInvalid];}e=d.readdir(c);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Readdir};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Readdir=function(c){return this.$val.Readdir(c);};DT.ptr.prototype.Readdirnames=function(c){var c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=EA.nil;e=$ifaceNil;f=this;if(f===EB.nil){g=EA.nil;h=$pkg.ErrInvalid;d=g;e=h;$s=-1;return[d,e];}j=f.readdirnames(c);$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;d=i[0];e=i[1];$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Readdirnames};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Readdirnames=function(c){return this.$val.Readdirnames(c);};P.ptr.prototype.close=function(){var c;c=this;};P.prototype.close=function(){return this.$val.close();};DT.ptr.prototype.readdirnames=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=EA.nil;e=$ifaceNil;f=this;if(f.file.dirinfo===ED.nil){f.file.dirinfo=new P.ptr(EE.nil,0,0);f.file.dirinfo.buf=$makeSlice(EE,8192);}g=f.file.dirinfo;h=c;if(h<=0){h=100;c=-1;}d=$makeSlice(EA,0,h);case 1:if(!(!((c===0)))){$s=2;continue;}if(g.bufp>=g.nbuf){$s=3;continue;}$s=4;continue;case 3:g.bufp=0;i=$ifaceNil;k=f.file.pfd.ReadDirent(g.buf);$s=5;case 5:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;g.nbuf=j[0];i=j[1];D.KeepAlive(f);if(!($interfaceIsEqual(i,$ifaceNil))){l=d;m=AL("readdirent",i);d=l;e=m;$s=-1;return[d,e];}if(g.nbuf<=0){$s=2;continue;}case 4:n=0;o=0;p=n;q=o;r=E.ParseDirent($subslice(g.buf,g.bufp,g.nbuf),c,d);p=r[0];q=r[1];d=r[2];g.bufp=g.bufp+(p)>>0;c=c-(q)>>0;$s=1;continue;case 2:if(c>=0&&(d.$length===0)){s=d;t=C.EOF;d=s;e=t;$s=-1;return[d,e];}u=d;v=$ifaceNil;d=u;e=v;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.readdirnames};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.readdirnames=function(c){return this.$val.readdirnames(c);};AD.ptr.prototype.Error=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.Err.Error();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return c.Op+" "+c.Path+": "+d;}return;}if($f===undefined){$f={$blk:AD.ptr.prototype.Error};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AD.prototype.Error=function(){return this.$val.Error();};AD.ptr.prototype.Timeout=function(){var c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=$assertType(c.Err,AC,true);e=d[0];f=d[1];if(!(f)){g=false;$s=1;continue s;}h=e.Timeout();$s=2;case 2:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;case 1:$s=-1;return g;}return;}if($f===undefined){$f={$blk:AD.ptr.prototype.Timeout};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};AD.prototype.Timeout=function(){return this.$val.Timeout();};AE.ptr.prototype.Error=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.Err.Error();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return c.Syscall+": "+d;}return;}if($f===undefined){$f={$blk:AE.ptr.prototype.Error};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AE.prototype.Error=function(){return this.$val.Error();};AE.ptr.prototype.Timeout=function(){var c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=$assertType(c.Err,AC,true);e=d[0];f=d[1];if(!(f)){g=false;$s=1;continue s;}h=e.Timeout();$s=2;case 2:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;case 1:$s=-1;return g;}return;}if($f===undefined){$f={$blk:AE.ptr.prototype.Timeout};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};AE.prototype.Timeout=function(){return this.$val.Timeout();};AF=function(c,d){var c,d;if($interfaceIsEqual(d,$ifaceNil)){return $ifaceNil;}return new AE.ptr(c,d);};$pkg.NewSyscallError=AF;AH=function(c){var c;return AN(c);};$pkg.IsNotExist=AH;AK=function(c){var c,d,e,f,g;d=c;if($assertType(d,EF,true)[1]){e=d.$val;return e.Err;}else if($assertType(d,EG,true)[1]){f=d.$val;return f.Err;}else if($assertType(d,EH,true)[1]){g=d.$val;return g.Err;}return c;};AL=function(c,d){var c,d,e,f;e=$assertType(d,E.Errno,true);f=e[1];if(f){d=AF(c,d);}return d;};AN=function(c){var c;c=AK(c);return $interfaceIsEqual(c,new E.Errno(2))||$interfaceIsEqual(c,$pkg.ErrNotExist);};DT.ptr.prototype.Name=function(){var c;c=this;return c.file.name;};DT.prototype.Name=function(){return this.$val.Name();};BC.ptr.prototype.Error=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.Err.Error();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return c.Op+" "+c.Old+" "+c.New+": "+d;}return;}if($f===undefined){$f={$blk:BC.ptr.prototype.Error};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};BC.prototype.Error=function(){return this.$val.Error();};DT.ptr.prototype.Read=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;f=this;g=f.checkValid("read");if(!($interfaceIsEqual(g,$ifaceNil))){h=0;i=g;d=h;e=i;$s=-1;return[d,e];}k=f.read(c);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;d=j[0];l=j[1];m=d;n=f.wrapErr("read",l);d=m;e=n;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Read};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Read=function(c){return this.$val.Read(c);};DT.ptr.prototype.ReadAt=function(c,d){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=0;f=$ifaceNil;g=this;h=g.checkValid("read");if(!($interfaceIsEqual(h,$ifaceNil))){i=0;j=h;e=i;f=j;$s=-1;return[e,f];}if((d.$high<0||(d.$high===0&&d.$low<0))){k=0;l=new AD.ptr("readat",g.file.name,A.New("negative offset"));e=k;f=l;$s=-1;return[e,f];}case 1:if(!(c.$length>0)){$s=2;continue;}n=g.pread(c,d);$s=3;case 3:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];if(!($interfaceIsEqual(p,$ifaceNil))){f=g.wrapErr("read",p);$s=2;continue;}e=e+(o)>>0;c=$subslice(c,o);d=(q=(new $Int64(0,o)),new $Int64(d.$high+q.$high,d.$low+q.$low));$s=1;continue;case 2:$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.ReadAt};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.ReadAt=function(c,d){return this.$val.ReadAt(c,d);};DT.ptr.prototype.Write=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;f=this;g=f.checkValid("write");if(!($interfaceIsEqual(g,$ifaceNil))){h=0;i=g;d=h;e=i;$s=-1;return[d,e];}k=f.write(c);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;d=j[0];l=j[1];if(d<0){d=0;}if(!((d===c.$length))){e=C.ErrShortWrite;}CD(f,l);if(!($interfaceIsEqual(l,$ifaceNil))){e=f.wrapErr("write",l);}m=d;n=e;d=m;e=n;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Write};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Write=function(c){return this.$val.Write(c);};DT.ptr.prototype.WriteAt=function(c,d){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=0;f=$ifaceNil;g=this;h=g.checkValid("write");if(!($interfaceIsEqual(h,$ifaceNil))){i=0;j=h;e=i;f=j;$s=-1;return[e,f];}if((d.$high<0||(d.$high===0&&d.$low<0))){k=0;l=new AD.ptr("writeat",g.file.name,A.New("negative offset"));e=k;f=l;$s=-1;return[e,f];}case 1:if(!(c.$length>0)){$s=2;continue;}n=g.pwrite(c,d);$s=3;case 3:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];if(!($interfaceIsEqual(p,$ifaceNil))){f=g.wrapErr("write",p);$s=2;continue;}e=e+(o)>>0;c=$subslice(c,o);d=(q=(new $Int64(0,o)),new $Int64(d.$high+q.$high,d.$low+q.$low));$s=1;continue;case 2:$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.WriteAt};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.WriteAt=function(c,d){return this.$val.WriteAt(c,d);};DT.ptr.prototype.Seek=function(c,d){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=new $Int64(0,0);f=$ifaceNil;g=this;h=g.checkValid("seek");if(!($interfaceIsEqual(h,$ifaceNil))){i=new $Int64(0,0);j=h;e=i;f=j;$s=-1;return[e,f];}l=g.seek(c,d);$s=1;case 1:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}k=l;m=k[0];n=k[1];if($interfaceIsEqual(n,$ifaceNil)&&!(g.file.dirinfo===ED.nil)&&!((m.$high===0&&m.$low===0))){n=new E.Errno(21);}if(!($interfaceIsEqual(n,$ifaceNil))){o=new $Int64(0,0);p=g.wrapErr("seek",n);e=o;f=p;$s=-1;return[e,f];}q=m;r=$ifaceNil;e=q;f=r;$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Seek};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Seek=function(c,d){return this.$val.Seek(c,d);};DT.ptr.prototype.WriteString=function(c){var c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;f=this;h=f.Write((new EE($stringToBytes(c))));$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;d=g[0];e=g[1];$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.WriteString};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.WriteString=function(c){return this.$val.WriteString(c);};BE=function(c){var c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=DH(c);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;f=d[0];g=d[1];if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return g;}h=c;i=f.Mode();$s=2;case 2:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}j=(i|1048576)>>>0;k=BP(h,j);$s=3;case 3:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}$s=-1;return k;}return;}if($f===undefined){$f={$blk:BE};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};BG=function(c){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=BI(c,0,0);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:BG};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Open=BG;BI=function(c,d,e){var c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=F.Open(c);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}f=CE(c,d,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return f;}return;}if($f===undefined){$f={$blk:BI};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};$pkg.OpenFile=BI;DT.ptr.prototype.wrapErr=function(c,d){var c,d,e;e=this;if($interfaceIsEqual(d,$ifaceNil)||$interfaceIsEqual(d,C.EOF)){return d;}if($interfaceIsEqual(d,G.ErrFileClosing)){d=$pkg.ErrClosed;}return new AD.ptr(c,e.file.name,d);};DT.prototype.wrapErr=function(c,d){return this.$val.wrapErr(c,d);};BP=function(c,d){var c,d;return BT(c,d);};$pkg.Chmod=BP;DT.ptr.prototype.Chmod=function(c){var c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.chmod(c);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Chmod};}$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Chmod=function(c){return this.$val.Chmod(c);};DT.ptr.prototype.SetDeadline=function(c){var c,d;d=this;return d.setDeadline($clone(c,J.Time));};DT.prototype.SetDeadline=function(c){return this.$val.SetDeadline(c);};DT.ptr.prototype.SetReadDeadline=function(c){var c,d;d=this;return d.setReadDeadline($clone(c,J.Time));};DT.prototype.SetReadDeadline=function(c){return this.$val.SetReadDeadline(c);};DT.ptr.prototype.SetWriteDeadline=function(c){var c,d;d=this;return d.setWriteDeadline($clone(c,J.Time));};DT.prototype.SetWriteDeadline=function(c){return this.$val.SetWriteDeadline(c);};DT.ptr.prototype.SyscallConn=function(){var c,d,e;c=this;d=c.checkValid("SyscallConn");if(!($interfaceIsEqual(d,$ifaceNil))){return[$ifaceNil,d];}e=DD(c);return[e[0],e[1]];};DT.prototype.SyscallConn=function(){return this.$val.SyscallConn();};BQ=function(){$throwRuntimeError("native function not implemented: os.sigpipe");};BS=function(c){var c,d;d=0;d=(d|(((new DV(c).Perm()>>>0))))>>>0;if(!((((c&8388608)>>>0)===0))){d=(d|(2048))>>>0;}if(!((((c&4194304)>>>0)===0))){d=(d|(1024))>>>0;}if(!((((c&1048576)>>>0)===0))){d=(d|(512))>>>0;}return d;};BT=function(c,d){var c,d,e;e=E.Chmod(BX(c),BS(d));if(!($interfaceIsEqual(e,$ifaceNil))){return new AD.ptr("chmod",c,e);}return $ifaceNil;};DT.ptr.prototype.chmod=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.checkValid("chmod");if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}f=d.file.pfd.Fchmod(BS(c));$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return d.wrapErr("chmod",g);}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.chmod};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.chmod=function(c){return this.$val.chmod(c);};DT.ptr.prototype.Chown=function(c,d){var c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=e.checkValid("chown");if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return f;}g=e.file.pfd.Fchown(c,d);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return e.wrapErr("chown",h);}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Chown};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Chown=function(c,d){return this.$val.Chown(c,d);};DT.ptr.prototype.Truncate=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.checkValid("truncate");if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}f=d.file.pfd.Ftruncate(c);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return d.wrapErr("truncate",g);}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Truncate};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Truncate=function(c){return this.$val.Truncate(c);};DT.ptr.prototype.Sync=function(){var c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.checkValid("sync");if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return d;}e=c.file.pfd.Fsync();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return c.wrapErr("sync",f);}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Sync};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Sync=function(){return this.$val.Sync();};DT.ptr.prototype.Chdir=function(){var c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=c.checkValid("chdir");if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return d;}e=c.file.pfd.Fchdir();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return c.wrapErr("chdir",f);}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Chdir};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Chdir=function(){return this.$val.Chdir();};DT.ptr.prototype.setDeadline=function(c){var c,d,e;d=this;e=d.checkValid("SetDeadline");if(!($interfaceIsEqual(e,$ifaceNil))){return e;}return d.file.pfd.SetDeadline($clone(c,J.Time));};DT.prototype.setDeadline=function(c){return this.$val.setDeadline(c);};DT.ptr.prototype.setReadDeadline=function(c){var c,d,e;d=this;e=d.checkValid("SetReadDeadline");if(!($interfaceIsEqual(e,$ifaceNil))){return e;}return d.file.pfd.SetReadDeadline($clone(c,J.Time));};DT.prototype.setReadDeadline=function(c){return this.$val.setReadDeadline(c);};DT.ptr.prototype.setWriteDeadline=function(c){var c,d,e;d=this;e=d.checkValid("SetWriteDeadline");if(!($interfaceIsEqual(e,$ifaceNil))){return e;}return d.file.pfd.SetWriteDeadline($clone(c,J.Time));};DT.prototype.setWriteDeadline=function(c){return this.$val.setWriteDeadline(c);};DT.ptr.prototype.checkValid=function(c){var c,d;d=this;if(d===EB.nil){return $pkg.ErrInvalid;}return $ifaceNil;};DT.prototype.checkValid=function(c){return this.$val.checkValid(c);};BX=function(c){var c;return c;};DT.ptr.prototype.Fd=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(c===EB.nil){$s=-1;return 4294967295;}if(c.file.nonblock){$s=1;continue;}$s=2;continue;case 1:d=c.file.pfd.SetBlocking();$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d;case 2:$s=-1;return((c.file.pfd.Sysfd>>>0));}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Fd};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Fd=function(){return this.$val.Fd();};CA=function(c,d){var c,d,e,f,g,h;e=0;f=K.IsNonblock(((c>>0)));g=f[0];h=f[1];if($interfaceIsEqual(h,$ifaceNil)&&g){e=3;}return CC(c,d,e);};$pkg.NewFile=CA;CC=function(c,d,e){var c,d,e,f,g,h,i,j,k,l,m,n;f=((c>>0));if(f<0){return EB.nil;}g=new DT.ptr(new BZ.ptr(new G.FD.ptr(new G.fdMutex.ptr(new $Uint64(0,0),0,0),f,new G.pollDesc.ptr(false),EU.nil,0,0,true,true,false),d,ED.nil,false,(f===1)||(f===2)));h=(e===1)||(e===2)||(e===3);if(e===1){i=new E.Stat_t.ptr(new $Uint64(0,0),new $Uint64(0,0),new $Uint64(0,0),0,0,0,0,new $Uint64(0,0),new $Int64(0,0),new $Int64(0,0),new $Int64(0,0),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),EV.zero());j="linux";if(j===("freebsd")){h=false;}else if(j===("dragonfly")||j===("netbsd")||j===("openbsd")){k=E.Fstat(f,i);if($interfaceIsEqual(k,$ifaceNil)&&(((i.Mode&61440)>>>0)===32768)){h=false;}}else if(j===("darwin")){l=E.Fstat(f,i);if($interfaceIsEqual(l,$ifaceNil)&&((((i.Mode&61440)>>>0)===4096)||(((i.Mode&61440)>>>0)===32768))){h=false;}}}m=g.file.pfd.Init("file",h);if(!($interfaceIsEqual(m,$ifaceNil))){}else if(h){n=E.SetNonblock(f,true);if($interfaceIsEqual(n,$ifaceNil)){g.file.nonblock=true;}}D.SetFinalizer(g.file,new EX($methodExpr(EW,"close")));return g;};CD=function(c,d){var c,d;if($interfaceIsEqual(d,new E.Errno(32))&&c.file.stdoutOrErr){BQ();}};CE=function(c,d,e){var c,d,e,f,g,h,i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=false;if(false&&!(((d&64)===0))&&!((((e&1048576)>>>0)===0))){$s=1;continue;}$s=2;continue;case 1:h=DH(c);$s=3;case 3:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;i=g[1];if(AH(i)){f=true;}case 2:j=0;case 4:k=$ifaceNil;l=E.Open(c,d|524288,BS(e));j=l[0];k=l[1];if($interfaceIsEqual(k,$ifaceNil)){$s=5;continue;}if(false&&$interfaceIsEqual(k,new E.Errno(4))){$s=4;continue;}$s=-1;return[EB.nil,new AD.ptr("open",c,k)];$s=4;continue;case 5:if(f){$s=6;continue;}$s=7;continue;case 6:m=BE(c);$s=8;case 8:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}m;case 7:if(false){E.CloseOnExec(j);}$s=-1;return[CC(((j>>>0)),c,1),$ifaceNil];}return;}if($f===undefined){$f={$blk:CE};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};DT.ptr.prototype.Close=function(){var c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(c===EB.nil){$s=-1;return $pkg.ErrInvalid;}d=c.file.close();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Close};}$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Close=function(){return this.$val.Close();};BZ.ptr.prototype.close=function(){var c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(c===EW.nil){$s=-1;return new E.Errno(22);}if(!(c.dirinfo===ED.nil)){c.dirinfo.close();}d=$ifaceNil;e=c.pfd.Close();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){if($interfaceIsEqual(f,G.ErrFileClosing)){f=$pkg.ErrClosed;}d=new AD.ptr("close",c.name,f);}D.SetFinalizer(c,$ifaceNil);$s=-1;return d;}return;}if($f===undefined){$f={$blk:BZ.ptr.prototype.close};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};BZ.prototype.close=function(){return this.$val.close();};DT.ptr.prototype.read=function(c){var c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;f=this;h=f.file.pfd.Read(c);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;d=g[0];e=g[1];D.KeepAlive(f);i=d;j=e;d=i;e=j;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.read};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.read=function(c){return this.$val.read(c);};DT.ptr.prototype.pread=function(c,d){var c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=0;f=$ifaceNil;g=this;i=g.file.pfd.Pread(c,d);$s=1;case 1:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;e=h[0];f=h[1];D.KeepAlive(g);j=e;k=f;e=j;f=k;$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.pread};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.pread=function(c,d){return this.$val.pread(c,d);};DT.ptr.prototype.write=function(c){var c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;f=this;h=f.file.pfd.Write(c);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;d=g[0];e=g[1];D.KeepAlive(f);i=d;j=e;d=i;e=j;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.write};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.write=function(c){return this.$val.write(c);};DT.ptr.prototype.pwrite=function(c,d){var c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=0;f=$ifaceNil;g=this;i=g.file.pfd.Pwrite(c,d);$s=1;case 1:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;e=h[0];f=h[1];D.KeepAlive(g);j=e;k=f;e=j;f=k;$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.pwrite};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.pwrite=function(c,d){return this.$val.pwrite(c,d);};DT.ptr.prototype.seek=function(c,d){var c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=new $Int64(0,0);f=$ifaceNil;g=this;i=g.file.pfd.Seek(c,d);$s=1;case 1:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;e=h[0];f=h[1];D.KeepAlive(g);j=e;k=f;e=j;f=k;$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.seek};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.seek=function(c,d){return this.$val.seek(c,d);};DT.ptr.prototype.readdir=function(c){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=EC.nil;e=$ifaceNil;f=this;g=f.file.name;if(g===""){g=".";}i=f.Readdirnames(c);$s=1;case 1:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;j=h[0];e=h[1];d=$makeSlice(EC,0,j.$length);k=j;l=0;case 2:if(!(l=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+l]);o=BJ(g+"/"+m);$s=4;case 4:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;p=n[0];q=n[1];if(AH(q)){l++;$s=2;continue;}if(!($interfaceIsEqual(q,$ifaceNil))){r=d;s=q;d=r;e=s;$s=-1;return[d,e];}d=$append(d,p);l++;$s=2;continue;case 3:if((d.$length===0)&&$interfaceIsEqual(e,$ifaceNil)&&c>0){e=C.EOF;}t=d;u=e;d=t;e=u;$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.readdir};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.readdir=function(c){return this.$val.readdir(c);};CR=function(c){var c,d;d=c.length-1>>0;while(true){if(!(d>0&&(c.charCodeAt(d)===47))){break;}c=$substring(c,0,d);d=d-(1)>>0;}d=d-(1)>>0;while(true){if(!(d>=0)){break;}if(c.charCodeAt(d)===47){c=$substring(c,(d+1>>0));break;}d=d-(1)>>0;}return c;};CV=function(){if(false){return;}$pkg.Args=L();};DB=function(c){var c;if(c===0){N();}E.Exit(c);};$pkg.Exit=DB;DC.ptr.prototype.Control=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.file.checkValid("SyscallConn.Control");if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}f=d.file.file.pfd.RawControl(c);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;D.KeepAlive(d.file);$s=-1;return g;}return;}if($f===undefined){$f={$blk:DC.ptr.prototype.Control};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};DC.prototype.Control=function(c){return this.$val.Control(c);};DC.ptr.prototype.Read=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.file.checkValid("SyscallConn.Read");if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}f=d.file.file.pfd.RawRead(c);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;D.KeepAlive(d.file);$s=-1;return g;}return;}if($f===undefined){$f={$blk:DC.ptr.prototype.Read};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};DC.prototype.Read=function(c){return this.$val.Read(c);};DC.ptr.prototype.Write=function(c){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.file.checkValid("SyscallConn.Write");if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return e;}f=d.file.file.pfd.RawWrite(c);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;D.KeepAlive(d.file);$s=-1;return g;}return;}if($f===undefined){$f={$blk:DC.ptr.prototype.Write};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};DC.prototype.Write=function(c){return this.$val.Write(c);};DD=function(c){var c;return[new DC.ptr(c),$ifaceNil];};DH=function(c){var c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=F.Stat(c);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return DM(c);}return;}if($f===undefined){$f={$blk:DH};}$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Stat=DH;DI=function(c){var c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=F.Stat(c);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return DN(c);}return;}if($f===undefined){$f={$blk:DI};}$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Lstat=DI;DJ=function(c,d){var c,d,e;c.name=CR(d);c.size=c.sys.Size;J.Time.copy(c.modTime,DK($clone(c.sys.Mtim,E.Timespec)));c.mode=((((c.sys.Mode&511)>>>0)>>>0));e=(c.sys.Mode&61440)>>>0;if(e===(24576)){c.mode=(c.mode|(67108864))>>>0;}else if(e===(8192)){c.mode=(c.mode|(69206016))>>>0;}else if(e===(16384)){c.mode=(c.mode|(2147483648))>>>0;}else if(e===(4096)){c.mode=(c.mode|(33554432))>>>0;}else if(e===(40960)){c.mode=(c.mode|(134217728))>>>0;}else if(e===(32768)){}else if(e===(49152)){c.mode=(c.mode|(16777216))>>>0;}if(!((((c.sys.Mode&1024)>>>0)===0))){c.mode=(c.mode|(4194304))>>>0;}if(!((((c.sys.Mode&2048)>>>0)===0))){c.mode=(c.mode|(8388608))>>>0;}if(!((((c.sys.Mode&512)>>>0)===0))){c.mode=(c.mode|(1048576))>>>0;}};DK=function(c){var c;return J.Unix((c.Sec),(c.Nsec));};DT.ptr.prototype.Stat=function(){var c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];d=this;if(d===EB.nil){$s=-1;return[$ifaceNil,$pkg.ErrInvalid];}c[0]=new DX.ptr("",new $Int64(0,0),0,new J.Time.ptr(new $Uint64(0,0),new $Int64(0,0),FB.nil),new E.Stat_t.ptr(new $Uint64(0,0),new $Uint64(0,0),new $Uint64(0,0),0,0,0,0,new $Uint64(0,0),new $Int64(0,0),new $Int64(0,0),new $Int64(0,0),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),EV.zero()));e=d.file.pfd.Fstat(c[0].sys);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[$ifaceNil,new AD.ptr("stat",d.file.name,f)];}DJ(c[0],d.file.name);$s=-1;return[c[0],$ifaceNil];}return;}if($f===undefined){$f={$blk:DT.ptr.prototype.Stat};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};DT.prototype.Stat=function(){return this.$val.Stat();};DM=function(c){var c,d,e;d=new DX.ptr("",new $Int64(0,0),0,new J.Time.ptr(new $Uint64(0,0),new $Int64(0,0),FB.nil),new E.Stat_t.ptr(new $Uint64(0,0),new $Uint64(0,0),new $Uint64(0,0),0,0,0,0,new $Uint64(0,0),new $Int64(0,0),new $Int64(0,0),new $Int64(0,0),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),EV.zero()));e=E.Stat(c,d.sys);if(!($interfaceIsEqual(e,$ifaceNil))){return[$ifaceNil,new AD.ptr("stat",c,e)];}DJ(d,c);return[d,$ifaceNil];};DN=function(c){var c,d,e;d=new DX.ptr("",new $Int64(0,0),0,new J.Time.ptr(new $Uint64(0,0),new $Int64(0,0),FB.nil),new E.Stat_t.ptr(new $Uint64(0,0),new $Uint64(0,0),new $Uint64(0,0),0,0,0,0,new $Uint64(0,0),new $Int64(0,0),new $Int64(0,0),new $Int64(0,0),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),new E.Timespec.ptr(new $Int64(0,0),new $Int64(0,0)),EV.zero()));e=E.Lstat(c,d.sys);if(!($interfaceIsEqual(e,$ifaceNil))){return[$ifaceNil,new AD.ptr("lstat",c,e)];}DJ(d,c);return[d,$ifaceNil];};DV.prototype.String=function(){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=this.$val;d=FG.zero();e=0;f="dalTLDpSugct?";g=0;while(true){if(!(g>0)>>>0)),k<32?(1<>>0)))>>>0)===0))){((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=((j<<24>>>24)));e=e+(1)>>0;}g+=h[1];}if(e===0){((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=45);e=e+(1)>>0;}l="rwxrwxrwx";m=0;while(true){if(!(m>0)>>>0)),q<32?(1<>>0)))>>>0)===0))){((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=((p<<24>>>24)));}else{((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=45);}e=e+(1)>>0;m+=n[1];}return($bytesToString($subslice(new EE(d),0,e)));};$ptrType(DV).prototype.String=function(){return new DV(this.$get()).String();};DV.prototype.IsDir=function(){var c;c=this.$val;return!((((c&2147483648)>>>0)===0));};$ptrType(DV).prototype.IsDir=function(){return new DV(this.$get()).IsDir();};DV.prototype.IsRegular=function(){var c;c=this.$val;return((c&2401763328)>>>0)===0;};$ptrType(DV).prototype.IsRegular=function(){return new DV(this.$get()).IsRegular();};DV.prototype.Perm=function(){var c;c=this.$val;return(c&511)>>>0;};$ptrType(DV).prototype.Perm=function(){return new DV(this.$get()).Perm();};DX.ptr.prototype.Name=function(){var c;c=this;return c.name;};DX.prototype.Name=function(){return this.$val.Name();};DX.ptr.prototype.IsDir=function(){var c;c=this;return new DV(c.Mode()).IsDir();};DX.prototype.IsDir=function(){return this.$val.IsDir();};DX.ptr.prototype.Size=function(){var c;c=this;return c.size;};DX.prototype.Size=function(){return this.$val.Size();};DX.ptr.prototype.Mode=function(){var c;c=this;return c.mode;};DX.prototype.Mode=function(){return this.$val.Mode();};DX.ptr.prototype.ModTime=function(){var c;c=this;return c.modTime;};DX.prototype.ModTime=function(){return this.$val.ModTime();};DX.ptr.prototype.Sys=function(){var c;c=this;return c.sys;};DX.prototype.Sys=function(){return this.$val.Sys();};ED.methods=[{prop:"close",name:"close",pkg:"os",typ:$funcType([],[],false)}];EF.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)}];EH.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)}];EG.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];EW.methods=[{prop:"close",name:"close",pkg:"os",typ:$funcType([],[$error],false)}];FN.methods=[{prop:"Control",name:"Control",pkg:"",typ:$funcType([FL],[$error],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([FM],[$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([FM],[$error],false)}];EB.methods=[{prop:"Readdir",name:"Readdir",pkg:"",typ:$funcType([$Int],[EC,$error],false)},{prop:"Readdirnames",name:"Readdirnames",pkg:"",typ:$funcType([$Int],[EA,$error],false)},{prop:"readdirnames",name:"readdirnames",pkg:"os",typ:$funcType([$Int],[EA,$error],false)},{prop:"Name",name:"Name",pkg:"",typ:$funcType([],[$String],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([EE],[$Int,$error],false)},{prop:"ReadAt",name:"ReadAt",pkg:"",typ:$funcType([EE,$Int64],[$Int,$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([EE],[$Int,$error],false)},{prop:"WriteAt",name:"WriteAt",pkg:"",typ:$funcType([EE,$Int64],[$Int,$error],false)},{prop:"Seek",name:"Seek",pkg:"",typ:$funcType([$Int64,$Int],[$Int64,$error],false)},{prop:"WriteString",name:"WriteString",pkg:"",typ:$funcType([$String],[$Int,$error],false)},{prop:"wrapErr",name:"wrapErr",pkg:"os",typ:$funcType([$String,$error],[$error],false)},{prop:"Chmod",name:"Chmod",pkg:"",typ:$funcType([DV],[$error],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([J.Time],[$error],false)},{prop:"SetReadDeadline",name:"SetReadDeadline",pkg:"",typ:$funcType([J.Time],[$error],false)},{prop:"SetWriteDeadline",name:"SetWriteDeadline",pkg:"",typ:$funcType([J.Time],[$error],false)},{prop:"SyscallConn",name:"SyscallConn",pkg:"",typ:$funcType([],[E.RawConn,$error],false)},{prop:"chmod",name:"chmod",pkg:"os",typ:$funcType([DV],[$error],false)},{prop:"Chown",name:"Chown",pkg:"",typ:$funcType([$Int,$Int],[$error],false)},{prop:"Truncate",name:"Truncate",pkg:"",typ:$funcType([$Int64],[$error],false)},{prop:"Sync",name:"Sync",pkg:"",typ:$funcType([],[$error],false)},{prop:"Chdir",name:"Chdir",pkg:"",typ:$funcType([],[$error],false)},{prop:"setDeadline",name:"setDeadline",pkg:"os",typ:$funcType([J.Time],[$error],false)},{prop:"setReadDeadline",name:"setReadDeadline",pkg:"os",typ:$funcType([J.Time],[$error],false)},{prop:"setWriteDeadline",name:"setWriteDeadline",pkg:"os",typ:$funcType([J.Time],[$error],false)},{prop:"checkValid",name:"checkValid",pkg:"os",typ:$funcType([$String],[$error],false)},{prop:"Fd",name:"Fd",pkg:"",typ:$funcType([],[$Uintptr],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"read",name:"read",pkg:"os",typ:$funcType([EE],[$Int,$error],false)},{prop:"pread",name:"pread",pkg:"os",typ:$funcType([EE,$Int64],[$Int,$error],false)},{prop:"write",name:"write",pkg:"os",typ:$funcType([EE],[$Int,$error],false)},{prop:"pwrite",name:"pwrite",pkg:"os",typ:$funcType([EE,$Int64],[$Int,$error],false)},{prop:"seek",name:"seek",pkg:"os",typ:$funcType([$Int64,$Int],[$Int64,$error],false)},{prop:"readdir",name:"readdir",pkg:"os",typ:$funcType([$Int],[EC,$error],false)},{prop:"Stat",name:"Stat",pkg:"",typ:$funcType([],[DU,$error],false)}];DV.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"IsDir",name:"IsDir",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsRegular",name:"IsRegular",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Perm",name:"Perm",pkg:"",typ:$funcType([],[DV],false)}];FH.methods=[{prop:"Name",name:"Name",pkg:"",typ:$funcType([],[$String],false)},{prop:"IsDir",name:"IsDir",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Size",name:"Size",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Mode",name:"Mode",pkg:"",typ:$funcType([],[DV],false)},{prop:"ModTime",name:"ModTime",pkg:"",typ:$funcType([],[J.Time],false)},{prop:"Sys",name:"Sys",pkg:"",typ:$funcType([],[$emptyInterface],false)}];P.init("os",[{prop:"buf",name:"buf",embedded:false,exported:false,typ:EE,tag:""},{prop:"nbuf",name:"nbuf",embedded:false,exported:false,typ:$Int,tag:""},{prop:"bufp",name:"bufp",embedded:false,exported:false,typ:$Int,tag:""}]);AC.init([{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)}]);AD.init("",[{prop:"Op",name:"Op",embedded:false,exported:true,typ:$String,tag:""},{prop:"Path",name:"Path",embedded:false,exported:true,typ:$String,tag:""},{prop:"Err",name:"Err",embedded:false,exported:true,typ:$error,tag:""}]);AE.init("",[{prop:"Syscall",name:"Syscall",embedded:false,exported:true,typ:$String,tag:""},{prop:"Err",name:"Err",embedded:false,exported:true,typ:$error,tag:""}]);BC.init("",[{prop:"Op",name:"Op",embedded:false,exported:true,typ:$String,tag:""},{prop:"Old",name:"Old",embedded:false,exported:true,typ:$String,tag:""},{prop:"New",name:"New",embedded:false,exported:true,typ:$String,tag:""},{prop:"Err",name:"Err",embedded:false,exported:true,typ:$error,tag:""}]);BZ.init("os",[{prop:"pfd",name:"pfd",embedded:false,exported:false,typ:G.FD,tag:""},{prop:"name",name:"name",embedded:false,exported:false,typ:$String,tag:""},{prop:"dirinfo",name:"dirinfo",embedded:false,exported:false,typ:ED,tag:""},{prop:"nonblock",name:"nonblock",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"stdoutOrErr",name:"stdoutOrErr",embedded:false,exported:false,typ:$Bool,tag:""}]);DC.init("os",[{prop:"file",name:"file",embedded:false,exported:false,typ:EB,tag:""}]);DT.init("os",[{prop:"file",name:"file",embedded:true,exported:false,typ:EW,tag:""}]);DU.init([{prop:"IsDir",name:"IsDir",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"ModTime",name:"ModTime",pkg:"",typ:$funcType([],[J.Time],false)},{prop:"Mode",name:"Mode",pkg:"",typ:$funcType([],[DV],false)},{prop:"Name",name:"Name",pkg:"",typ:$funcType([],[$String],false)},{prop:"Size",name:"Size",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Sys",name:"Sys",pkg:"",typ:$funcType([],[$emptyInterface],false)}]);DX.init("os",[{prop:"name",name:"name",embedded:false,exported:false,typ:$String,tag:""},{prop:"size",name:"size",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"mode",name:"mode",embedded:false,exported:false,typ:DV,tag:""},{prop:"modTime",name:"modTime",embedded:false,exported:false,typ:J.Time,tag:""},{prop:"sys",name:"sys",embedded:false,exported:false,typ:E.Stat_t,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=K.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=I.$init();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=J.$init();$s=11;case 11:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$pkg.Args=EA.nil;$pkg.ErrInvalid=A.New("invalid argument");$pkg.ErrPermission=A.New("permission denied");$pkg.ErrExist=A.New("file already exists");$pkg.ErrNotExist=A.New("file does not exist");$pkg.ErrClosed=A.New("file already closed");AZ=A.New("os: process already finished");$pkg.Stdin=CA(((E.Stdin>>>0)),"/dev/stdin");$pkg.Stdout=CA(((E.Stdout>>>0)),"/dev/stdout");$pkg.Stderr=CA(((E.Stderr>>>0)),"/dev/stderr");BJ=DI;M();CV();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["fmt"]=(function(){var $pkg={},$init,C,D,E,I,F,G,A,H,B,J,K,L,M,N,O,P,Q,AU,AV,AW,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BT,CO,CP,R,AX,BB,BD,BE,S,V,W,Z,AA,AB,AC,AD,AE,AF,AG,AH,AY,AZ,BF;C=$packages["errors"];D=$packages["internal/fmtsort"];E=$packages["io"];I=$packages["math"];F=$packages["os"];G=$packages["reflect"];A=$packages["strconv"];H=$packages["sync"];B=$packages["unicode/utf8"];J=$pkg.fmtFlags=$newType(0,$kindStruct,"fmt.fmtFlags",true,"fmt",false,function(widPresent_,precPresent_,minus_,plus_,sharp_,space_,zero_,plusV_,sharpV_){this.$val=this;if(arguments.length===0){this.widPresent=false;this.precPresent=false;this.minus=false;this.plus=false;this.sharp=false;this.space=false;this.zero=false;this.plusV=false;this.sharpV=false;return;}this.widPresent=widPresent_;this.precPresent=precPresent_;this.minus=minus_;this.plus=plus_;this.sharp=sharp_;this.space=space_;this.zero=zero_;this.plusV=plusV_;this.sharpV=sharpV_;});K=$pkg.fmt=$newType(0,$kindStruct,"fmt.fmt",true,"fmt",false,function(buf_,fmtFlags_,wid_,prec_,intbuf_){this.$val=this;if(arguments.length===0){this.buf=BK.nil;this.fmtFlags=new J.ptr(false,false,false,false,false,false,false,false,false);this.wid=0;this.prec=0;this.intbuf=BL.zero();return;}this.buf=buf_;this.fmtFlags=fmtFlags_;this.wid=wid_;this.prec=prec_;this.intbuf=intbuf_;});L=$pkg.State=$newType(8,$kindInterface,"fmt.State",true,"fmt",true,null);M=$pkg.Formatter=$newType(8,$kindInterface,"fmt.Formatter",true,"fmt",true,null);N=$pkg.Stringer=$newType(8,$kindInterface,"fmt.Stringer",true,"fmt",true,null);O=$pkg.GoStringer=$newType(8,$kindInterface,"fmt.GoStringer",true,"fmt",true,null);P=$pkg.buffer=$newType(12,$kindSlice,"fmt.buffer",true,"fmt",false,null);Q=$pkg.pp=$newType(0,$kindStruct,"fmt.pp",true,"fmt",false,function(buf_,arg_,value_,fmt_,reordered_,goodArgNum_,panicking_,erroring_){this.$val=this;if(arguments.length===0){this.buf=P.nil;this.arg=$ifaceNil;this.value=new G.Value.ptr(BJ.nil,0,0);this.fmt=new K.ptr(BK.nil,new J.ptr(false,false,false,false,false,false,false,false,false),0,0,BL.zero());this.reordered=false;this.goodArgNum=false;this.panicking=false;this.erroring=false;return;}this.buf=buf_;this.arg=arg_;this.value=value_;this.fmt=fmt_;this.reordered=reordered_;this.goodArgNum=goodArgNum_;this.panicking=panicking_;this.erroring=erroring_;});AU=$pkg.scanError=$newType(0,$kindStruct,"fmt.scanError",true,"fmt",false,function(err_){this.$val=this;if(arguments.length===0){this.err=$ifaceNil;return;}this.err=err_;});AV=$pkg.ss=$newType(0,$kindStruct,"fmt.ss",true,"fmt",false,function(rs_,buf_,count_,atEOF_,ssave_){this.$val=this;if(arguments.length===0){this.rs=$ifaceNil;this.buf=P.nil;this.count=0;this.atEOF=false;this.ssave=new AW.ptr(false,false,false,0,0,0);return;}this.rs=rs_;this.buf=buf_;this.count=count_;this.atEOF=atEOF_;this.ssave=ssave_;});AW=$pkg.ssave=$newType(0,$kindStruct,"fmt.ssave",true,"fmt",false,function(validSave_,nlIsEnd_,nlIsSpace_,argLimit_,limit_,maxWid_){this.$val=this;if(arguments.length===0){this.validSave=false;this.nlIsEnd=false;this.nlIsSpace=false;this.argLimit=0;this.limit=0;this.maxWid=0;return;}this.validSave=validSave_;this.nlIsEnd=nlIsEnd_;this.nlIsSpace=nlIsSpace_;this.argLimit=argLimit_;this.limit=limit_;this.maxWid=maxWid_;});BI=$sliceType($emptyInterface);BJ=$ptrType(G.rtype);BK=$ptrType(P);BL=$arrayType($Uint8,68);BM=$arrayType($Uint16,2);BN=$sliceType(BM);BO=$sliceType($Uint8);BP=$arrayType($Uint8,5);BQ=$ptrType(Q);BT=$ptrType(AV);CO=$ptrType(K);CP=$funcType([$Int32],[$Bool],false);K.ptr.prototype.clearflags=function(){var a;a=this;J.copy(a.fmtFlags,new J.ptr(false,false,false,false,false,false,false,false,false));};K.prototype.clearflags=function(){return this.$val.clearflags();};K.ptr.prototype.init=function(a){var a,b;b=this;b.buf=a;b.clearflags();};K.prototype.init=function(a){return this.$val.init(a);};K.ptr.prototype.writePadding=function(a){var a,b,c,d,e,f,g,h,i,j;b=this;if(a<=0){return;}c=b.buf.$get();d=c.$length;e=d+a>>0;if(e>c.$capacity){c=$makeSlice(P,(($imul(c.$capacity,2))+a>>0));$copySlice(c,b.buf.$get());}f=32;if(b.fmtFlags.zero){f=48;}g=$subslice(c,d,e);h=g;i=0;while(true){if(!(i=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+j]=f);i++;}b.buf.$set($subslice(c,0,e));};K.prototype.writePadding=function(a){return this.$val.writePadding(a);};K.ptr.prototype.pad=function(a){var a,b,c;b=this;if(!b.fmtFlags.widPresent||(b.wid===0)){b.buf.Write(a);return;}c=b.wid-B.RuneCount(a)>>0;if(!b.fmtFlags.minus){b.writePadding(c);b.buf.Write(a);}else{b.buf.Write(a);b.writePadding(c);}};K.prototype.pad=function(a){return this.$val.pad(a);};K.ptr.prototype.padString=function(a){var a,b,c;b=this;if(!b.fmtFlags.widPresent||(b.wid===0)){b.buf.WriteString(a);return;}c=b.wid-B.RuneCountInString(a)>>0;if(!b.fmtFlags.minus){b.writePadding(c);b.buf.WriteString(a);}else{b.buf.WriteString(a);b.writePadding(c);}};K.prototype.padString=function(a){return this.$val.padString(a);};K.ptr.prototype.fmtBoolean=function(a){var a,b;b=this;if(a){b.padString("true");}else{b.padString("false");}};K.prototype.fmtBoolean=function(a){return this.$val.fmtBoolean(a);};K.ptr.prototype.fmtUnicode=function(a){var a,b,c,d,e,f,g;b=this;c=$subslice(new BO(b.intbuf),0);d=4;if(b.fmtFlags.precPresent&&b.prec>4){d=b.prec;e=(((2+d>>0)+2>>0)+4>>0)+1>>0;if(e>c.$length){c=$makeSlice(BO,e);}}f=c.$length;if(b.fmtFlags.sharp&&(a.$high<0||(a.$high===0&&a.$low<=1114111))&&A.IsPrint(((a.$low>>0)))){f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=39);f=f-(B.RuneLen(((a.$low>>0))))>>0;B.EncodeRune($subslice(c,f),((a.$low>>0)));f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=39);f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=32);}while(true){if(!((a.$high>0||(a.$high===0&&a.$low>=16)))){break;}f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]="0123456789ABCDEFX".charCodeAt($flatten64(new $Uint64(a.$high&0,(a.$low&15)>>>0))));d=d-(1)>>0;a=$shiftRightUint64(a,(4));}f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]="0123456789ABCDEFX".charCodeAt($flatten64(a)));d=d-(1)>>0;while(true){if(!(d>0)){break;}f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=48);d=d-(1)>>0;}f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=43);f=f-(1)>>0;((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=85);g=b.fmtFlags.zero;b.fmtFlags.zero=false;b.pad($subslice(c,f));b.fmtFlags.zero=g;};K.prototype.fmtUnicode=function(a){return this.$val.fmtUnicode(a);};K.ptr.prototype.fmtInteger=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;e=this;g=c&&(f=(new $Int64(a.$high,a.$low)),(f.$high<0||(f.$high===0&&f.$low<0)));if(g){a=new $Uint64(-a.$high,-a.$low);}h=$subslice(new BO(e.intbuf),0);if(e.fmtFlags.widPresent||e.fmtFlags.precPresent){i=(3+e.wid>>0)+e.prec>>0;if(i>h.$length){h=$makeSlice(BO,i);}}j=0;if(e.fmtFlags.precPresent){j=e.prec;if((j===0)&&(a.$high===0&&a.$low===0)){k=e.fmtFlags.zero;e.fmtFlags.zero=false;e.writePadding(e.wid);e.fmtFlags.zero=k;return;}}else if(e.fmtFlags.zero&&e.fmtFlags.widPresent){j=e.wid;if(g||e.fmtFlags.plus||e.fmtFlags.space){j=j-(1)>>0;}}l=h.$length;m=b;if(m===(10)){while(true){if(!((a.$high>0||(a.$high===0&&a.$low>=10)))){break;}l=l-(1)>>0;n=$div64(a,new $Uint64(0,10),false);((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=(((o=new $Uint64(0+a.$high,48+a.$low),p=$mul64(n,new $Uint64(0,10)),new $Uint64(o.$high-p.$high,o.$low-p.$low)).$low<<24>>>24)));a=n;}}else if(m===(16)){while(true){if(!((a.$high>0||(a.$high===0&&a.$low>=16)))){break;}l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=d.charCodeAt($flatten64(new $Uint64(a.$high&0,(a.$low&15)>>>0))));a=$shiftRightUint64(a,(4));}}else if(m===(8)){while(true){if(!((a.$high>0||(a.$high===0&&a.$low>=8)))){break;}l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=(((q=new $Uint64(a.$high&0,(a.$low&7)>>>0),new $Uint64(0+q.$high,48+q.$low)).$low<<24>>>24)));a=$shiftRightUint64(a,(3));}}else if(m===(2)){while(true){if(!((a.$high>0||(a.$high===0&&a.$low>=2)))){break;}l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=(((r=new $Uint64(a.$high&0,(a.$low&1)>>>0),new $Uint64(0+r.$high,48+r.$low)).$low<<24>>>24)));a=$shiftRightUint64(a,(1));}}else{$panic(new $String("fmt: unknown base; can't happen"));}l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=d.charCodeAt($flatten64(a)));while(true){if(!(l>0&&j>(h.$length-l>>0))){break;}l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=48);}if(e.fmtFlags.sharp){s=b;if(s===(8)){if(!((((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l])===48))){l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=48);}}else if(s===(16)){l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=d.charCodeAt(16));l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=48);}}if(g){l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=45);}else if(e.fmtFlags.plus){l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=43);}else if(e.fmtFlags.space){l=l-(1)>>0;((l<0||l>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+l]=32);}t=e.fmtFlags.zero;e.fmtFlags.zero=false;e.pad($subslice(h,l));e.fmtFlags.zero=t;};K.prototype.fmtInteger=function(a,b,c,d){return this.$val.fmtInteger(a,b,c,d);};K.ptr.prototype.truncateString=function(a){var a,b,c,d,e,f,g;b=this;if(b.fmtFlags.precPresent){c=b.prec;d=a;e=0;while(true){if(!(e>0;if(c<0){return $substring(a,0,g);}e+=f[1];}}return a;};K.prototype.truncateString=function(a){return this.$val.truncateString(a);};K.ptr.prototype.truncate=function(a){var a,b,c,d,e,f;b=this;if(b.fmtFlags.precPresent){c=b.prec;d=0;while(true){if(!(d>0;if(c<0){return $subslice(a,0,d);}e=1;if(((d<0||d>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+d])>=128){f=B.DecodeRune($subslice(a,d));e=f[1];}d=d+(e)>>0;}}return a;};K.prototype.truncate=function(a){return this.$val.truncate(a);};K.ptr.prototype.fmtS=function(a){var a,b;b=this;a=b.truncateString(a);b.padString(a);};K.prototype.fmtS=function(a){return this.$val.fmtS(a);};K.ptr.prototype.fmtBs=function(a){var a,b;b=this;a=b.truncate(a);b.pad(a);};K.prototype.fmtBs=function(a){return this.$val.fmtBs(a);};K.ptr.prototype.fmtSbx=function(a,b,c){var a,b,c,d,e,f,g,h,i;d=this;e=b.$length;if(b===BO.nil){e=a.length;}if(d.fmtFlags.precPresent&&d.prec0){if(d.fmtFlags.space){if(d.fmtFlags.sharp){f=$imul(f,(2));}f=f+((e-1>>0))>>0;}else if(d.fmtFlags.sharp){f=f+(2)>>0;}}else{if(d.fmtFlags.widPresent){d.writePadding(d.wid);}return;}if(d.fmtFlags.widPresent&&d.wid>f&&!d.fmtFlags.minus){d.writePadding(d.wid-f>>0);}g=d.buf.$get();if(d.fmtFlags.sharp){g=$append(g,48,c.charCodeAt(16));}h=0;i=0;while(true){if(!(i0){g=$append(g,32);if(d.fmtFlags.sharp){g=$append(g,48,c.charCodeAt(16));}}if(!(b===BO.nil)){h=((i<0||i>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+i]);}else{h=a.charCodeAt(i);}g=$append(g,c.charCodeAt((h>>>4<<24>>>24)),c.charCodeAt(((h&15)>>>0)));i=i+(1)>>0;}d.buf.$set(g);if(d.fmtFlags.widPresent&&d.wid>f&&d.fmtFlags.minus){d.writePadding(d.wid-f>>0);}};K.prototype.fmtSbx=function(a,b,c){return this.$val.fmtSbx(a,b,c);};K.ptr.prototype.fmtSx=function(a,b){var a,b,c;c=this;c.fmtSbx(a,BO.nil,b);};K.prototype.fmtSx=function(a,b){return this.$val.fmtSx(a,b);};K.ptr.prototype.fmtBx=function(a,b){var a,b,c;c=this;c.fmtSbx("",a,b);};K.prototype.fmtBx=function(a,b){return this.$val.fmtBx(a,b);};K.ptr.prototype.fmtQ=function(a){var a,b,c;b=this;a=b.truncateString(a);if(b.fmtFlags.sharp&&A.CanBackquote(a)){b.padString("`"+a+"`");return;}c=$subslice(new BO(b.intbuf),0,0);if(b.fmtFlags.plus){b.pad(A.AppendQuoteToASCII(c,a));}else{b.pad(A.AppendQuote(c,a));}};K.prototype.fmtQ=function(a){return this.$val.fmtQ(a);};K.ptr.prototype.fmtC=function(a){var a,b,c,d,e;b=this;c=((a.$low>>0));if((a.$high>0||(a.$high===0&&a.$low>1114111))){c=65533;}d=$subslice(new BO(b.intbuf),0,0);e=B.EncodeRune($subslice(d,0,4),c);b.pad($subslice(d,0,e));};K.prototype.fmtC=function(a){return this.$val.fmtC(a);};K.ptr.prototype.fmtQc=function(a){var a,b,c,d;b=this;c=((a.$low>>0));if((a.$high>0||(a.$high===0&&a.$low>1114111))){c=65533;}d=$subslice(new BO(b.intbuf),0,0);if(b.fmtFlags.plus){b.pad(A.AppendQuoteRuneToASCII(d,c));}else{b.pad(A.AppendQuoteRune(d,c));}};K.prototype.fmtQc=function(a){return this.$val.fmtQc(a);};K.ptr.prototype.fmtFloat=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n;e=this;if(e.fmtFlags.precPresent){d=e.prec;}f=A.AppendFloat($subslice(new BO(e.intbuf),0,1),a,((c<<24>>>24)),d,b);if(((1>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+1])===45)||((1>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+1])===43)){f=$subslice(f,1);}else{(0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0]=43);}if(e.fmtFlags.space&&((0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0])===43)&&!e.fmtFlags.plus){(0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0]=32);}if(((1>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+1])===73)||((1>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+1])===78)){g=e.fmtFlags.zero;e.fmtFlags.zero=false;if(((1>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+1])===78)&&!e.fmtFlags.space&&!e.fmtFlags.plus){f=$subslice(f,1);}e.pad(f);e.fmtFlags.zero=g;return;}if(e.fmtFlags.sharp&&!((c===98))){h=0;i=c;if((i===(118))||(i===(103))||(i===(71))){h=d;if(h===-1){h=6;}}j=BP.zero();k=$subslice(new BO(j),0,0);l=false;m=1;while(true){if(!(m=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+m]);if(n===(46)){l=true;}else if((n===(101))||(n===(69))){k=$appendSlice(k,$subslice(f,m));f=$subslice(f,0,m);}else{h=h-(1)>>0;}m=m+(1)>>0;}if(!l){f=$append(f,46);}while(true){if(!(h>0)){break;}f=$append(f,48);h=h-(1)>>0;}f=$appendSlice(f,k);}if(e.fmtFlags.plus||!(((0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0])===43))){if(e.fmtFlags.zero&&e.fmtFlags.widPresent&&e.wid>f.$length){e.buf.WriteByte((0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0]));e.writePadding(e.wid-f.$length>>0);e.buf.Write($subslice(f,1));return;}e.pad(f);return;}e.pad($subslice(f,1));};K.prototype.fmtFloat=function(a,b,c,d){return this.$val.fmtFloat(a,b,c,d);};$ptrType(P).prototype.Write=function(a){var a,b;b=this;b.$set($appendSlice(b.$get(),a));};$ptrType(P).prototype.WriteString=function(a){var a,b;b=this;b.$set($appendSlice(b.$get(),a));};$ptrType(P).prototype.WriteByte=function(a){var a,b;b=this;b.$set($append(b.$get(),a));};$ptrType(P).prototype.WriteRune=function(a){var a,b,c,d,e,f;b=this;if(a<128){b.$set($append(b.$get(),((a<<24>>>24))));return;}c=b.$get();d=c.$length;while(true){if(!((d+4>>0)>c.$capacity)){break;}c=$append(c,0);}f=B.EncodeRune((e=$subslice(c,d,(d+4>>0)),$subslice(new BO(e.$array),e.$offset,e.$offset+e.$length)),a);b.$set($subslice(c,0,(d+f>>0)));};S=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=R.Get();$s=1;case 1:if($c){$c=false;a=a.$blk();}if(a&&a.$blk!==undefined){break s;}b=$assertType(a,BQ);b.panicking=false;b.erroring=false;b.fmt.init((b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))));$s=-1;return b;}return;}if($f===undefined){$f={$blk:S};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};Q.ptr.prototype.free=function(){var a;a=this;if(a.buf.$capacity>65536){return;}a.buf=$subslice(a.buf,0,0);a.arg=$ifaceNil;a.value=new G.Value.ptr(BJ.nil,0,0);R.Put(a);};Q.prototype.free=function(){return this.$val.free();};Q.ptr.prototype.Width=function(){var a,b,c,d,e;a=0;b=false;c=this;d=c.fmt.wid;e=c.fmt.fmtFlags.widPresent;a=d;b=e;return[a,b];};Q.prototype.Width=function(){return this.$val.Width();};Q.ptr.prototype.Precision=function(){var a,b,c,d,e;a=0;b=false;c=this;d=c.fmt.prec;e=c.fmt.fmtFlags.precPresent;a=d;b=e;return[a,b];};Q.prototype.Precision=function(){return this.$val.Precision();};Q.ptr.prototype.Flag=function(a){var a,b,c;b=this;c=a;if(c===(45)){return b.fmt.fmtFlags.minus;}else if(c===(43)){return b.fmt.fmtFlags.plus||b.fmt.fmtFlags.plusV;}else if(c===(35)){return b.fmt.fmtFlags.sharp||b.fmt.fmtFlags.sharpV;}else if(c===(32)){return b.fmt.fmtFlags.space;}else if(c===(48)){return b.fmt.fmtFlags.zero;}return false;};Q.prototype.Flag=function(a){return this.$val.Flag(a);};Q.ptr.prototype.Write=function(a){var a,b,c,d,e,f;b=0;c=$ifaceNil;d=this;(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).Write(a);e=a.$length;f=$ifaceNil;b=e;c=f;return[b,c];};Q.prototype.Write=function(a){return this.$val.Write(a);};Q.ptr.prototype.WriteString=function(a){var a,b,c,d,e,f;b=0;c=$ifaceNil;d=this;(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(a);e=a.length;f=$ifaceNil;b=e;c=f;return[b,c];};Q.prototype.WriteString=function(a){return this.$val.WriteString(a);};V=function(a,b){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=S();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;$r=d.doPrintf(a,b);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=($bytesToString(d.buf));d.free();$s=-1;return e;}return;}if($f===undefined){$f={$blk:V};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Sprintf=V;W=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=V(a,b);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=C.New(c);$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:W};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Errorf=W;Z=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=S();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$r=c.doPrint(a);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=($bytesToString(c.buf));c.free();$s=-1;return d;}return;}if($f===undefined){$f={$blk:Z};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Sprint=Z;AA=function(a,b){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=0;d=$ifaceNil;e=S();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;$r=f.doPrintln(b);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=a.Write((h=f.buf,$subslice(new BO(h.$array),h.$offset,h.$offset+h.$length)));$s=3;case 3:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}g=i;c=g[0];d=g[1];f.free();$s=-1;return[c,d];}return;}if($f===undefined){$f={$blk:AA};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Fprintln=AA;AB=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;e=AA(F.Stdout,a);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;b=d[0];c=d[1];$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AB};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Println=AB;AC=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=S();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$r=c.doPrintln(a);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=($bytesToString(c.buf));c.free();$s=-1;return d;}return;}if($f===undefined){$f={$blk:AC};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Sprintln=AC;AD=function(a,b){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=$clone(a,G.Value).Field(b);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;if(($clone(d,G.Value).Kind()===20)&&!$clone(d,G.Value).IsNil()){$s=2;continue;}$s=3;continue;case 2:e=$clone(d,G.Value).Elem();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;case 3:$s=-1;return d;}return;}if($f===undefined){$f={$blk:AD};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AE=function(a){var a;return a>1000000||a<-1000000;};AF=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,k,l;d=0;e=false;f=0;if(b>=c){g=0;h=false;i=c;d=g;e=h;f=i;return[d,e,f];}f=b;while(true){if(!(f>>24)>>0))>>0;e=true;f=f+(1)>>0;}return[d,e,f];};Q.ptr.prototype.unknownType=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(!$clone(a,G.Value).IsValid()){(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("");$s=-1;return;}(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(63);c=$clone(a,G.Value).Type().String();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$r=(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString(c);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(63);$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.unknownType};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.unknownType=function(a){return this.$val.unknownType(a);};Q.ptr.prototype.badVerb=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;b.erroring=true;(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("%!");(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteRune(a);(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(40);if(!($interfaceIsEqual(b.arg,$ifaceNil))){$s=2;continue;}if($clone(b.value,G.Value).IsValid()){$s=3;continue;}$s=4;continue;case 2:c=G.TypeOf(b.arg).String();$s=6;case 6:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$r=(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString(c);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(61);$r=b.printArg(b.arg,118);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=5;continue;case 3:d=$clone(b.value,G.Value).Type().String();$s=9;case 9:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$r=(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString(d);$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(61);$r=b.printValue($clone(b.value,G.Value),118,0);$s=11;case 11:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=5;continue;case 4:(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("");case 5:case 1:(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(41);b.erroring=false;$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.badVerb};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.badVerb=function(a){return this.$val.badVerb(a);};Q.ptr.prototype.fmtBool=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=b;if((d===(116))||(d===(118))){$s=2;continue;}$s=3;continue;case 2:c.fmt.fmtBoolean(a);$s=4;continue;case 3:$r=c.badVerb(b);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 4:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtBool};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtBool=function(a,b){return this.$val.fmtBool(a,b);};Q.ptr.prototype.fmt0x64=function(a,b){var a,b,c,d;c=this;d=c.fmt.fmtFlags.sharp;c.fmt.fmtFlags.sharp=b;c.fmt.fmtInteger(a,16,false,"0123456789abcdefx");c.fmt.fmtFlags.sharp=d;};Q.prototype.fmt0x64=function(a,b){return this.$val.fmt0x64(a,b);};Q.ptr.prototype.fmtInteger=function(a,b,c){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=c;if(e===(118)){$s=2;continue;}if(e===(100)){$s=3;continue;}if(e===(98)){$s=4;continue;}if(e===(111)){$s=5;continue;}if(e===(120)){$s=6;continue;}if(e===(88)){$s=7;continue;}if(e===(99)){$s=8;continue;}if(e===(113)){$s=9;continue;}if(e===(85)){$s=10;continue;}$s=11;continue;case 2:if(d.fmt.fmtFlags.sharpV&&!b){d.fmt0x64(a,true);}else{d.fmt.fmtInteger(a,10,b,"0123456789abcdefx");}$s=12;continue;case 3:d.fmt.fmtInteger(a,10,b,"0123456789abcdefx");$s=12;continue;case 4:d.fmt.fmtInteger(a,2,b,"0123456789abcdefx");$s=12;continue;case 5:d.fmt.fmtInteger(a,8,b,"0123456789abcdefx");$s=12;continue;case 6:d.fmt.fmtInteger(a,16,b,"0123456789abcdefx");$s=12;continue;case 7:d.fmt.fmtInteger(a,16,b,"0123456789ABCDEFX");$s=12;continue;case 8:d.fmt.fmtC(a);$s=12;continue;case 9:if((a.$high<0||(a.$high===0&&a.$low<=1114111))){$s=13;continue;}$s=14;continue;case 13:d.fmt.fmtQc(a);$s=15;continue;case 14:$r=d.badVerb(c);$s=16;case 16:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 15:$s=12;continue;case 10:d.fmt.fmtUnicode(a);$s=12;continue;case 11:$r=d.badVerb(c);$s=17;case 17:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 12:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtInteger};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtInteger=function(a,b,c){return this.$val.fmtInteger(a,b,c);};Q.ptr.prototype.fmtFloat=function(a,b,c){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=c;if(e===(118)){$s=2;continue;}if((e===(98))||(e===(103))||(e===(71))){$s=3;continue;}if((e===(102))||(e===(101))||(e===(69))){$s=4;continue;}if(e===(70)){$s=5;continue;}$s=6;continue;case 2:d.fmt.fmtFloat(a,b,103,-1);$s=7;continue;case 3:d.fmt.fmtFloat(a,b,c,-1);$s=7;continue;case 4:d.fmt.fmtFloat(a,b,c,6);$s=7;continue;case 5:d.fmt.fmtFloat(a,b,102,6);$s=7;continue;case 6:$r=d.badVerb(c);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 7:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtFloat};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtFloat=function(a,b,c){return this.$val.fmtFloat(a,b,c);};Q.ptr.prototype.fmtComplex=function(a,b,c){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=c;if((e===(118))||(e===(98))||(e===(103))||(e===(71))||(e===(102))||(e===(70))||(e===(101))||(e===(69))){$s=2;continue;}$s=3;continue;case 2:f=d.fmt.fmtFlags.plus;(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(40);$r=d.fmtFloat(a.$real,(g=b/2,(g===g&&g!==1/0&&g!==-1/0)?g>>0:$throwRuntimeError("integer divide by zero")),c);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d.fmt.fmtFlags.plus=true;$r=d.fmtFloat(a.$imag,(h=b/2,(h===h&&h!==1/0&&h!==-1/0)?h>>0:$throwRuntimeError("integer divide by zero")),c);$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("i)");d.fmt.fmtFlags.plus=f;$s=4;continue;case 3:$r=d.badVerb(c);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 4:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtComplex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtComplex=function(a,b,c){return this.$val.fmtComplex(a,b,c);};Q.ptr.prototype.fmtString=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=b;if(d===(118)){$s=2;continue;}if(d===(115)){$s=3;continue;}if(d===(120)){$s=4;continue;}if(d===(88)){$s=5;continue;}if(d===(113)){$s=6;continue;}$s=7;continue;case 2:if(c.fmt.fmtFlags.sharpV){c.fmt.fmtQ(a);}else{c.fmt.fmtS(a);}$s=8;continue;case 3:c.fmt.fmtS(a);$s=8;continue;case 4:c.fmt.fmtSx(a,"0123456789abcdefx");$s=8;continue;case 5:c.fmt.fmtSx(a,"0123456789ABCDEFX");$s=8;continue;case 6:c.fmt.fmtQ(a);$s=8;continue;case 7:$r=c.badVerb(b);$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 8:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtString};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtString=function(a,b){return this.$val.fmtString(a,b);};Q.ptr.prototype.fmtBytes=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=b;if((e===(118))||(e===(100))){$s=2;continue;}if(e===(115)){$s=3;continue;}if(e===(120)){$s=4;continue;}if(e===(88)){$s=5;continue;}if(e===(113)){$s=6;continue;}$s=7;continue;case 2:if(d.fmt.fmtFlags.sharpV){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(c);if(a===BO.nil){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("(nil)");$s=-1;return;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(123);f=a;g=0;while(true){if(!(g=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]);if(h>0){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(", ");}d.fmt0x64((new $Uint64(0,i)),true);g++;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(125);}else{(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(91);j=a;k=0;while(true){if(!(k=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+k]);if(l>0){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(32);}d.fmt.fmtInteger((new $Uint64(0,m)),10,false,"0123456789abcdefx");k++;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(93);}$s=8;continue;case 3:d.fmt.fmtBs(a);$s=8;continue;case 4:d.fmt.fmtBx(a,"0123456789abcdefx");$s=8;continue;case 5:d.fmt.fmtBx(a,"0123456789ABCDEFX");$s=8;continue;case 6:d.fmt.fmtQ(($bytesToString(a)));$s=8;continue;case 7:n=G.ValueOf(a);$s=9;case 9:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}$r=d.printValue($clone(n,G.Value),b,0);$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 8:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtBytes};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtBytes=function(a,b,c){return this.$val.fmtBytes(a,b,c);};Q.ptr.prototype.fmtPointer=function(a,b){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=0;e=$clone(a,G.Value).Kind();if((e===(18))||(e===(19))||(e===(21))||(e===(22))||(e===(23))||(e===(26))){$s=2;continue;}$s=3;continue;case 2:d=$clone(a,G.Value).Pointer();$s=4;continue;case 3:$r=c.badVerb(b);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 4:case 1:f=b;if(f===(118)){$s=7;continue;}if(f===(112)){$s=8;continue;}if((f===(98))||(f===(111))||(f===(100))||(f===(120))||(f===(88))){$s=9;continue;}$s=10;continue;case 7:if(c.fmt.fmtFlags.sharpV){$s=12;continue;}$s=13;continue;case 12:(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteByte(40);g=$clone(a,G.Value).Type().String();$s=15;case 15:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$r=(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString(g);$s=16;case 16:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString(")(");if(d===0){(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString("nil");}else{c.fmt0x64((new $Uint64(0,d.constructor===Number?d:1)),true);}(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteByte(41);$s=14;continue;case 13:if(d===0){c.fmt.padString("");}else{c.fmt0x64((new $Uint64(0,d.constructor===Number?d:1)),!c.fmt.fmtFlags.sharp);}case 14:$s=11;continue;case 8:c.fmt0x64((new $Uint64(0,d.constructor===Number?d:1)),!c.fmt.fmtFlags.sharp);$s=11;continue;case 9:$r=c.fmtInteger((new $Uint64(0,d.constructor===Number?d:1)),false,b);$s=17;case 17:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=11;continue;case 10:$r=c.badVerb(b);$s=18;case 18:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 11:case 6:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.fmtPointer};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.fmtPointer=function(a,b){return this.$val.fmtPointer(a,b);};Q.ptr.prototype.catchPanic=function(a,b,c){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=$recover();if(!($interfaceIsEqual(e,$ifaceNil))){$s=1;continue;}$s=2;continue;case 1:f=G.ValueOf(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if(($clone(g,G.Value).Kind()===22)&&$clone(g,G.Value).IsNil()){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("");$s=-1;return;}if(d.panicking){$panic(e);}h=$clone(d.fmt.fmtFlags,J);d.fmt.clearflags();(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("%!");(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteRune(b);(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("(PANIC=");(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(c);(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(" method: ");d.panicking=true;$r=d.printArg(e,118);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d.panicking=false;(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(41);J.copy(d.fmt.fmtFlags,h);case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.catchPanic};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.catchPanic=function(a,b,c){return this.$val.catchPanic(a,b,c);};Q.ptr.prototype.handleMethods=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=false;c=this;if(c.erroring){$s=-1;return b;}d=$assertType(c.arg,M,true);e=d[0];f=d[1];if(f){$s=1;continue;}$s=2;continue;case 1:b=true;$deferred.push([$methodVal(c,"catchPanic"),[c.arg,a,"Format"]]);$r=e.Format(c,a);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return b;case 2:if(c.fmt.fmtFlags.sharpV){$s=4;continue;}$s=5;continue;case 4:g=$assertType(c.arg,O,true);h=g[0];i=g[1];if(i){$s=7;continue;}$s=8;continue;case 7:b=true;$deferred.push([$methodVal(c,"catchPanic"),[c.arg,a,"GoString"]]);j=h.GoString();$s=9;case 9:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}$r=c.fmt.fmtS(j);$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return b;case 8:$s=6;continue;case 5:k=a;if((k===(118))||(k===(115))||(k===(120))||(k===(88))||(k===(113))){$s=12;continue;}$s=13;continue;case 12:l=c.arg;if($assertType(l,$error,true)[1]){$s=14;continue;}if($assertType(l,N,true)[1]){$s=15;continue;}$s=16;continue;case 14:m=l;b=true;$deferred.push([$methodVal(c,"catchPanic"),[c.arg,a,"Error"]]);o=m.Error();$s=17;case 17:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}$r=c.fmtString(o,a);$s=18;case 18:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return b;case 15:n=l;b=true;$deferred.push([$methodVal(c,"catchPanic"),[c.arg,a,"String"]]);p=n.String();$s=19;case 19:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}$r=c.fmtString(p,a);$s=20;case 20:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return b;case 16:case 13:case 11:case 6:b=false;$s=-1;return b;}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return b;}if($curGoroutine.asleep){if($f===undefined){$f={$blk:Q.ptr.prototype.handleMethods};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};Q.prototype.handleMethods=function(a){return this.$val.handleMethods(a);};Q.ptr.prototype.printArg=function(a,b){var a,aa,ab,ac,ad,ae,af,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;c.arg=a;c.value=new G.Value.ptr(BJ.nil,0,0);if($interfaceIsEqual(a,$ifaceNil)){$s=1;continue;}$s=2;continue;case 1:d=b;if((d===(84))||(d===(118))){$s=4;continue;}$s=5;continue;case 4:c.fmt.padString("");$s=6;continue;case 5:$r=c.badVerb(b);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 6:case 3:$s=-1;return;case 2:e=b;if(e===(84)){$s=9;continue;}if(e===(112)){$s=10;continue;}$s=11;continue;case 9:f=G.TypeOf(a).String();$s=12;case 12:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$r=c.fmt.fmtS(f);$s=13;case 13:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 10:g=G.ValueOf(a);$s=14;case 14:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$r=c.fmtPointer($clone(g,G.Value),112);$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 11:case 8:h=a;if($assertType(h,$Bool,true)[1]){$s=16;continue;}if($assertType(h,$Float32,true)[1]){$s=17;continue;}if($assertType(h,$Float64,true)[1]){$s=18;continue;}if($assertType(h,$Complex64,true)[1]){$s=19;continue;}if($assertType(h,$Complex128,true)[1]){$s=20;continue;}if($assertType(h,$Int,true)[1]){$s=21;continue;}if($assertType(h,$Int8,true)[1]){$s=22;continue;}if($assertType(h,$Int16,true)[1]){$s=23;continue;}if($assertType(h,$Int32,true)[1]){$s=24;continue;}if($assertType(h,$Int64,true)[1]){$s=25;continue;}if($assertType(h,$Uint,true)[1]){$s=26;continue;}if($assertType(h,$Uint8,true)[1]){$s=27;continue;}if($assertType(h,$Uint16,true)[1]){$s=28;continue;}if($assertType(h,$Uint32,true)[1]){$s=29;continue;}if($assertType(h,$Uint64,true)[1]){$s=30;continue;}if($assertType(h,$Uintptr,true)[1]){$s=31;continue;}if($assertType(h,$String,true)[1]){$s=32;continue;}if($assertType(h,BO,true)[1]){$s=33;continue;}if($assertType(h,G.Value,true)[1]){$s=34;continue;}$s=35;continue;case 16:i=h.$val;$r=c.fmtBool(i,b);$s=37;case 37:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 17:j=h.$val;$r=c.fmtFloat((j),32,b);$s=38;case 38:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 18:k=h.$val;$r=c.fmtFloat(k,64,b);$s=39;case 39:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 19:l=h.$val;$r=c.fmtComplex((new $Complex128(l.$real,l.$imag)),64,b);$s=40;case 40:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 20:m=h.$val;$r=c.fmtComplex(m,128,b);$s=41;case 41:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 21:n=h.$val;$r=c.fmtInteger((new $Uint64(0,n)),true,b);$s=42;case 42:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 22:o=h.$val;$r=c.fmtInteger((new $Uint64(0,o)),true,b);$s=43;case 43:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 23:p=h.$val;$r=c.fmtInteger((new $Uint64(0,p)),true,b);$s=44;case 44:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 24:q=h.$val;$r=c.fmtInteger((new $Uint64(0,q)),true,b);$s=45;case 45:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 25:r=h.$val;$r=c.fmtInteger((new $Uint64(r.$high,r.$low)),true,b);$s=46;case 46:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 26:s=h.$val;$r=c.fmtInteger((new $Uint64(0,s)),false,b);$s=47;case 47:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 27:t=h.$val;$r=c.fmtInteger((new $Uint64(0,t)),false,b);$s=48;case 48:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 28:u=h.$val;$r=c.fmtInteger((new $Uint64(0,u)),false,b);$s=49;case 49:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 29:v=h.$val;$r=c.fmtInteger((new $Uint64(0,v)),false,b);$s=50;case 50:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 30:w=h.$val;$r=c.fmtInteger(w,false,b);$s=51;case 51:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 31:x=h.$val;$r=c.fmtInteger((new $Uint64(0,x.constructor===Number?x:1)),false,b);$s=52;case 52:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 32:y=h.$val;$r=c.fmtString(y,b);$s=53;case 53:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 33:z=h.$val;$r=c.fmtBytes(z,b,"[]byte");$s=54;case 54:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 34:aa=h.$val;if($clone(aa,G.Value).IsValid()&&$clone(aa,G.Value).CanInterface()){$s=55;continue;}$s=56;continue;case 55:ac=$clone(aa,G.Value).Interface();$s=57;case 57:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}c.arg=ac;ad=c.handleMethods(b);$s=60;case 60:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}if(ad){$s=58;continue;}$s=59;continue;case 58:$s=-1;return;case 59:case 56:$r=c.printValue($clone(aa,G.Value),b,0);$s=61;case 61:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=36;continue;case 35:ab=h;ae=c.handleMethods(b);$s=64;case 64:if($c){$c=false;ae=ae.$blk();}if(ae&&ae.$blk!==undefined){break s;}if(!ae){$s=62;continue;}$s=63;continue;case 62:af=G.ValueOf(ab);$s=65;case 65:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}$r=c.printValue($clone(af,G.Value),b,0);$s=66;case 66:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 63:case 36:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.printArg};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.printArg=function(a,b){return this.$val.printArg(a,b);};Q.ptr.prototype.printValue=function(a,b,c){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;if(c>0&&$clone(a,G.Value).IsValid()&&$clone(a,G.Value).CanInterface()){$s=1;continue;}$s=2;continue;case 1:e=$clone(a,G.Value).Interface();$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d.arg=e;f=d.handleMethods(b);$s=6;case 6:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}if(f){$s=4;continue;}$s=5;continue;case 4:$s=-1;return;case 5:case 2:d.arg=$ifaceNil;d.value=a;g=a;h=$clone(a,G.Value).Kind();if(h===(0)){$s=8;continue;}if(h===(1)){$s=9;continue;}if((h===(2))||(h===(3))||(h===(4))||(h===(5))||(h===(6))){$s=10;continue;}if((h===(7))||(h===(8))||(h===(9))||(h===(10))||(h===(11))||(h===(12))){$s=11;continue;}if(h===(13)){$s=12;continue;}if(h===(14)){$s=13;continue;}if(h===(15)){$s=14;continue;}if(h===(16)){$s=15;continue;}if(h===(24)){$s=16;continue;}if(h===(21)){$s=17;continue;}if(h===(25)){$s=18;continue;}if(h===(20)){$s=19;continue;}if((h===(17))||(h===(23))){$s=20;continue;}if(h===(22)){$s=21;continue;}if((h===(18))||(h===(19))||(h===(26))){$s=22;continue;}$s=23;continue;case 8:if(c===0){$s=25;continue;}$s=26;continue;case 25:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("");$s=27;continue;case 26:i=b;if(i===(118)){$s=29;continue;}$s=30;continue;case 29:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("");$s=31;continue;case 30:$r=d.badVerb(b);$s=32;case 32:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 31:case 28:case 27:$s=24;continue;case 9:$r=d.fmtBool($clone(g,G.Value).Bool(),b);$s=33;case 33:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 10:$r=d.fmtInteger(((j=$clone(g,G.Value).Int(),new $Uint64(j.$high,j.$low))),true,b);$s=34;case 34:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 11:$r=d.fmtInteger($clone(g,G.Value).Uint(),false,b);$s=35;case 35:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 12:$r=d.fmtFloat($clone(g,G.Value).Float(),32,b);$s=36;case 36:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 13:$r=d.fmtFloat($clone(g,G.Value).Float(),64,b);$s=37;case 37:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 14:$r=d.fmtComplex($clone(g,G.Value).Complex(),64,b);$s=38;case 38:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 15:$r=d.fmtComplex($clone(g,G.Value).Complex(),128,b);$s=39;case 39:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 16:k=$clone(g,G.Value).String();$s=40;case 40:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}$r=d.fmtString(k,b);$s=41;case 41:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 17:if(d.fmt.fmtFlags.sharpV){$s=42;continue;}$s=43;continue;case 42:l=$clone(g,G.Value).Type().String();$s=45;case 45:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}$r=(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(l);$s=46;case 46:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if($clone(g,G.Value).IsNil()){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("(nil)");$s=-1;return;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(123);$s=44;continue;case 43:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("map[");case 44:m=D.Sort($clone(g,G.Value));$s=47;case 47:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}n=m;o=n.Key;p=0;case 48:if(!(p=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]);if(q>0){if(d.fmt.fmtFlags.sharpV){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(", ");}else{(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(32);}}$r=d.printValue($clone(r,G.Value),b,c+1>>0);$s=50;case 50:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(58);$r=d.printValue($clone((s=n.Value,((q<0||q>=s.$length)?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+q])),G.Value),b,c+1>>0);$s=51;case 51:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}p++;$s=48;continue;case 49:if(d.fmt.fmtFlags.sharpV){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(125);}else{(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(93);}$s=24;continue;case 18:if(d.fmt.fmtFlags.sharpV){$s=52;continue;}$s=53;continue;case 52:t=$clone(g,G.Value).Type().String();$s=54;case 54:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}$r=(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(t);$s=55;case 55:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 53:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(123);u=0;case 56:if(!(u<$clone(g,G.Value).NumField())){$s=57;continue;}if(u>0){if(d.fmt.fmtFlags.sharpV){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(", ");}else{(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(32);}}if(d.fmt.fmtFlags.plusV||d.fmt.fmtFlags.sharpV){$s=58;continue;}$s=59;continue;case 58:v=$clone(g,G.Value).Type().Field(u);$s=60;case 60:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}w=v.Name;if(!(w==="")){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(w);(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(58);}case 59:x=AD($clone(g,G.Value),u);$s=61;case 61:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}$r=d.printValue($clone(x,G.Value),b,c+1>>0);$s=62;case 62:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}u=u+(1)>>0;$s=56;continue;case 57:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(125);$s=24;continue;case 19:y=$clone(g,G.Value).Elem();$s=63;case 63:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}z=y;if(!$clone(z,G.Value).IsValid()){$s=64;continue;}$s=65;continue;case 64:if(d.fmt.fmtFlags.sharpV){$s=67;continue;}$s=68;continue;case 67:aa=$clone(g,G.Value).Type().String();$s=70;case 70:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}$r=(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(aa);$s=71;case 71:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("(nil)");$s=69;continue;case 68:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("");case 69:$s=66;continue;case 65:$r=d.printValue($clone(z,G.Value),b,c+1>>0);$s=72;case 72:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 66:$s=24;continue;case 20:ab=b;if((ab===(115))||(ab===(113))||(ab===(120))||(ab===(88))){$s=74;continue;}$s=75;continue;case 74:ac=$clone(g,G.Value).Type();ad=ac.Elem();$s=78;case 78:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ae=ad.Kind();$s=79;case 79:if($c){$c=false;ae=ae.$blk();}if(ae&&ae.$blk!==undefined){break s;}if(ae===8){$s=76;continue;}$s=77;continue;case 76:af=BO.nil;if($clone(g,G.Value).Kind()===23){$s=80;continue;}if($clone(g,G.Value).CanAddr()){$s=81;continue;}$s=82;continue;case 80:ag=$clone(g,G.Value).Bytes();$s=84;case 84:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}af=ag;$s=83;continue;case 81:ah=$clone(g,G.Value).Slice(0,$clone(g,G.Value).Len());$s=85;case 85:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ai=$clone(ah,G.Value).Bytes();$s=86;case 86:if($c){$c=false;ai=ai.$blk();}if(ai&&ai.$blk!==undefined){break s;}af=ai;$s=83;continue;case 82:af=$makeSlice(BO,$clone(g,G.Value).Len());aj=af;ak=0;case 87:if(!(ak=af.$length)?($throwRuntimeError("index out of range"),undefined):af.$array[af.$offset+al]=((an.$low<<24>>>24)));ak++;$s=87;continue;case 88:case 83:ao=af;ap=b;aq=ac.String();$s=91;case 91:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;$r=d.fmtBytes(ao,ap,ar);$s=92;case 92:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 77:case 75:case 73:if(d.fmt.fmtFlags.sharpV){$s=93;continue;}$s=94;continue;case 93:as=$clone(g,G.Value).Type().String();$s=96;case 96:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}$r=(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(as);$s=97;case 97:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(($clone(g,G.Value).Kind()===23)&&$clone(g,G.Value).IsNil()){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString("(nil)");$s=-1;return;}(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(123);at=0;case 98:if(!(at<$clone(g,G.Value).Len())){$s=99;continue;}if(at>0){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteString(", ");}au=$clone(g,G.Value).Index(at);$s=100;case 100:if($c){$c=false;au=au.$blk();}if(au&&au.$blk!==undefined){break s;}$r=d.printValue($clone(au,G.Value),b,c+1>>0);$s=101;case 101:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}at=at+(1)>>0;$s=98;continue;case 99:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(125);$s=95;continue;case 94:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(91);av=0;case 102:if(!(av<$clone(g,G.Value).Len())){$s=103;continue;}if(av>0){(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(32);}aw=$clone(g,G.Value).Index(av);$s=104;case 104:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}$r=d.printValue($clone(aw,G.Value),b,c+1>>0);$s=105;case 105:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}av=av+(1)>>0;$s=102;continue;case 103:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(93);case 95:$s=24;continue;case 21:if((c===0)&&!(($clone(g,G.Value).Pointer()===0))){$s=106;continue;}$s=107;continue;case 106:ax=$clone(g,G.Value).Elem();$s=109;case 109:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ay=ax;az=$clone(ay,G.Value).Kind();if((az===(17))||(az===(23))||(az===(25))||(az===(21))){$s=110;continue;}$s=111;continue;case 110:(d.$ptr_buf||(d.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},d))).WriteByte(38);$r=d.printValue($clone(ay,G.Value),b,c+1>>0);$s=112;case 112:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 111:case 108:case 107:$r=d.fmtPointer($clone(g,G.Value),b);$s=113;case 113:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 22:$r=d.fmtPointer($clone(g,G.Value),b);$s=114;case 114:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=24;continue;case 23:$r=d.unknownType($clone(g,G.Value));$s=115;case 115:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 24:case 7:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.printValue};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.printValue=function(a,b,c){return this.$val.printValue(a,b,c);};AG=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=0;d=false;e=0;e=b;if(b=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+b]),$Int,true);c=f[0];d=f[1];if(!d){$s=3;continue;}$s=4;continue;case 3:g=G.ValueOf(((b<0||b>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+b]));$s=6;case 6:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;i=$clone(h,G.Value).Kind();if((i===(2))||(i===(3))||(i===(4))||(i===(5))||(i===(6))){j=$clone(h,G.Value).Int();if((k=(new $Int64(0,(((j.$low+((j.$high>>31)*4294967296))>>0)))),(k.$high===j.$high&&k.$low===j.$low))){c=(((j.$low+((j.$high>>31)*4294967296))>>0));d=true;}}else if((i===(7))||(i===(8))||(i===(9))||(i===(10))||(i===(11))||(i===(12))){l=$clone(h,G.Value).Uint();if((m=(new $Int64(l.$high,l.$low)),(m.$high>0||(m.$high===0&&m.$low>=0)))&&(n=(new $Uint64(0,((l.$low>>0)))),(n.$high===l.$high&&n.$low===l.$low))){c=((l.$low>>0));d=true;}}case 5:case 4:e=b+1>>0;if(AE(c)){c=0;d=false;}case 2:$s=-1;return[c,d,e];}return;}if($f===undefined){$f={$blk:AG};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};AH=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;b=0;c=0;d=false;if(a.length<3){e=0;f=1;g=false;b=e;c=f;d=g;return[b,c,d];}h=1;while(true){if(!(h>0;o=false;b=m;c=n;d=o;return[b,c,d];}p=j-1>>0;q=h+1>>0;r=true;b=p;c=q;d=r;return[b,c,d];}h=h+(1)>>0;}s=0;t=1;u=false;b=s;c=t;d=u;return[b,c,d];};Q.ptr.prototype.argNumber=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;e=0;f=0;g=false;h=this;if(b.length<=c||!((b.charCodeAt(c)===91))){i=a;j=c;k=false;e=i;f=j;g=k;return[e,f,g];}h.reordered=true;l=AH($substring(b,c));m=l[0];n=l[1];o=l[2];if(o&&0<=m&&m>0;r=true;e=p;f=q;g=r;return[e,f,g];}h.goodArgNum=false;s=a;t=c+n>>0;u=o;e=s;f=t;g=u;return[e,f,g];};Q.prototype.argNumber=function(a,b,c,d){return this.$val.argNumber(a,b,c,d);};Q.ptr.prototype.badArgNum=function(a){var a,b;b=this;(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("%!");(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteRune(a);(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("(BADINDEX)");};Q.prototype.badArgNum=function(a){return this.$val.badArgNum(a);};Q.ptr.prototype.missingArg=function(a){var a,b;b=this;(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("%!");(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteRune(a);(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteString("(MISSING)");};Q.prototype.missingArg=function(a){return this.$val.missingArg(a);};Q.ptr.prototype.doPrintf=function(a,b){var a,aa,ab,ac,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=a.length;e=0;f=false;c.reordered=false;g=0;case 1:if(!(g>0;}if(g>h){(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString($substring(a,h,g));}if(g>=d){$s=2;continue;}g=g+(1)>>0;c.fmt.clearflags();case 3:if(!(g=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+e]),((i>>0)));$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=e+(1)>>0;g=g+(1)>>0;$s=1;continue s;case 14:$s=4;continue s;case 12:case 5:g=g+(1)>>0;$s=3;continue;case 4:k=c.argNumber(e,a,g,b.$length);e=k[0];g=k[1];f=k[2];if(g>0;m=AG(b,e);$s=19;case 19:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;c.fmt.wid=l[0];c.fmt.fmtFlags.widPresent=l[1];e=l[2];if(!c.fmt.fmtFlags.widPresent){(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString("%!(BADWIDTH)");}if(c.fmt.wid<0){c.fmt.wid=-c.fmt.wid;c.fmt.fmtFlags.minus=true;c.fmt.fmtFlags.zero=false;}f=false;$s=18;continue;case 17:n=AF(a,g,d);c.fmt.wid=n[0];c.fmt.fmtFlags.widPresent=n[1];g=n[2];if(f&&c.fmt.fmtFlags.widPresent){c.goodArgNum=false;}case 18:if((g+1>>0)>0;if(f){c.goodArgNum=false;}o=c.argNumber(e,a,g,b.$length);e=o[0];g=o[1];f=o[2];if(g>0;q=AG(b,e);$s=25;case 25:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;c.fmt.prec=p[0];c.fmt.fmtFlags.precPresent=p[1];e=p[2];if(c.fmt.prec<0){c.fmt.prec=0;c.fmt.fmtFlags.precPresent=false;}if(!c.fmt.fmtFlags.precPresent){(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString("%!(BADPREC)");}f=false;$s=24;continue;case 23:r=AF(a,g,d);c.fmt.prec=r[0];c.fmt.fmtFlags.precPresent=r[1];g=r[2];if(!c.fmt.fmtFlags.precPresent){c.fmt.prec=0;c.fmt.fmtFlags.precPresent=true;}case 24:case 21:if(!f){s=c.argNumber(e,a,g,b.$length);e=s[0];g=s[1];f=s[2];}if(g>=d){(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString("%!(NOVERB)");$s=2;continue;}t=((a.charCodeAt(g)>>0));u=1;v=t;w=u;if(v>=128){x=B.DecodeRuneInString($substring(a,g));v=x[0];w=x[1];}g=g+(w)>>0;if((v===37)){$s=27;continue;}if(!c.goodArgNum){$s=28;continue;}if(e>=b.$length){$s=29;continue;}if((v===118)){$s=30;continue;}$s=31;continue;case 27:(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteByte(37);$s=32;continue;case 28:c.badArgNum(v);$s=32;continue;case 29:c.missingArg(v);$s=32;continue;case 30:c.fmt.fmtFlags.sharpV=c.fmt.fmtFlags.sharp;c.fmt.fmtFlags.sharp=false;c.fmt.fmtFlags.plusV=c.fmt.fmtFlags.plus;c.fmt.fmtFlags.plus=false;$r=c.printArg(((e<0||e>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+e]),v);$s=33;case 33:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=e+(1)>>0;$s=32;continue;case 31:$r=c.printArg(((e<0||e>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+e]),v);$s=34;case 34:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}e=e+(1)>>0;case 32:case 26:$s=1;continue;case 2:if(!c.reordered&&e=y.$length)?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+z]);if(aa>0){(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString(", ");}if($interfaceIsEqual(ab,$ifaceNil)){$s=39;continue;}$s=40;continue;case 39:(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString("");$s=41;continue;case 40:ac=G.TypeOf(ab).String();$s=42;case 42:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}$r=(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteString(ac);$s=43;case 43:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteByte(61);$r=c.printArg(ab,118);$s=44;case 44:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 41:z++;$s=37;continue;case 38:(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteByte(41);case 36:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.doPrintf};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.doPrintf=function(a,b){return this.$val.doPrintf(a,b);};Q.ptr.prototype.doPrint=function(a){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=false;d=a;e=0;case 1:if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(!(!($interfaceIsEqual(g,$ifaceNil)))){h=false;$s=3;continue s;}i=G.TypeOf(g).Kind();$s=4;case 4:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i===24;case 3:j=h;if(f>0&&!j&&!c){(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(32);}$r=b.printArg(g,118);$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=j;e++;$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.doPrint};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.doPrint=function(a){return this.$val.doPrint(a);};Q.ptr.prototype.doPrintln=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=a;d=0;case 1:if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]);if(e>0){(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(32);}$r=b.printArg(f,118);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d++;$s=1;continue;case 2:(b.$ptr_buf||(b.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},b))).WriteByte(10);$s=-1;return;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.doPrintln};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.doPrintln=function(a){return this.$val.doPrintln(a);};AV.ptr.prototype.Read=function(a){var a,b,c,d,e,f;b=0;c=$ifaceNil;d=this;e=0;f=C.New("ScanState's Read should not be called. Use ReadRune");b=e;c=f;return[b,c];};AV.prototype.Read=function(a){return this.$val.Read(a);};AV.ptr.prototype.ReadRune=function(){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=0;b=0;c=$ifaceNil;d=this;if(d.atEOF||d.count>=d.ssave.argLimit){c=E.EOF;$s=-1;return[a,b,c];}f=d.rs.ReadRune();$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;a=e[0];b=e[1];c=e[2];if($interfaceIsEqual(c,$ifaceNil)){d.count=d.count+(1)>>0;if(d.ssave.nlIsEnd&&(a===10)){d.atEOF=true;}}else if($interfaceIsEqual(c,E.EOF)){d.atEOF=true;}$s=-1;return[a,b,c];}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.ReadRune};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.ReadRune=function(){return this.$val.ReadRune();};AV.ptr.prototype.Width=function(){var a,b,c,d,e,f,g;a=0;b=false;c=this;if(c.ssave.maxWid===1073741824){d=0;e=false;a=d;b=e;return[a,b];}f=c.ssave.maxWid;g=true;a=f;b=g;return[a,b];};AV.prototype.Width=function(){return this.$val.Width();};AV.ptr.prototype.getRune=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=0;b=this;d=b.ReadRune();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;a=c[0];e=c[2];if(!($interfaceIsEqual(e,$ifaceNil))){if($interfaceIsEqual(e,E.EOF)){a=-1;$s=-1;return a;}b.error(e);}$s=-1;return a;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.getRune};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.getRune=function(){return this.$val.getRune();};AV.ptr.prototype.UnreadRune=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.rs.UnreadRune();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}b;a.atEOF=false;a.count=a.count-(1)>>0;$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.UnreadRune};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.UnreadRune=function(){return this.$val.UnreadRune();};AV.ptr.prototype.error=function(a){var a,b,c;b=this;$panic((c=new AU.ptr(a),new c.constructor.elem(c)));};AV.prototype.error=function(a){return this.$val.error(a);};AV.ptr.prototype.errorString=function(a){var a,b,c;b=this;$panic((c=new AU.ptr(C.New(a)),new c.constructor.elem(c)));};AV.prototype.errorString=function(a){return this.$val.errorString(a);};AV.ptr.prototype.Token=function(a,b){var a,b,c,d,e,f,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=[c];d=BO.nil;c[0]=$ifaceNil;e=this;$deferred.push([(function(c){return function(){var f,g,h,i;f=$recover();if(!($interfaceIsEqual(f,$ifaceNil))){g=$assertType(f,AU,true);h=$clone(g[0],AU);i=g[1];if(i){c[0]=h.err;}else{$panic(f);}}};})(c),[]]);if(b===$throwNilPointerError){b=AZ;}e.buf=$subslice(e.buf,0,0);f=e.token(a,b);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}d=f;$s=-1;return[d,c[0]];}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return[d,c[0]];}if($curGoroutine.asleep){if($f===undefined){$f={$blk:AV.ptr.prototype.Token};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AV.prototype.Token=function(a,b){return this.$val.Token(a,b);};AY=function(a){var a,b,c,d,e;if(a>=65536){return false;}b=((a<<16>>>16));c=AX;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]),BM);if(b1024){return;}b.buf=$subslice(b.buf,0,0);b.rs=$ifaceNil;BB.Put(b);};AV.prototype.free=function(a){return this.$val.free(a);};AV.ptr.prototype.SkipSpace=function(){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;case 1:b=a.getRune();$s=3;case 3:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;if(c===-1){$s=-1;return;}if(!(c===13)){d=false;$s=6;continue s;}e=a.peek("\n");$s=7;case 7:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;case 6:if(d){$s=4;continue;}$s=5;continue;case 4:$s=1;continue;case 5:if(c===10){$s=8;continue;}$s=9;continue;case 8:if(a.ssave.nlIsSpace){$s=1;continue;}a.errorString("unexpected newline");$s=-1;return;case 9:if(!AY(c)){$s=10;continue;}$s=11;continue;case 10:f=a.UnreadRune();$s=12;case 12:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;$s=2;continue;case 11:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.SkipSpace};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.SkipSpace=function(){return this.$val.SkipSpace();};AV.ptr.prototype.token=function(a,b){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(a){$s=1;continue;}$s=2;continue;case 1:$r=c.SkipSpace();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:case 4:d=c.getRune();$s=6;case 6:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===-1){$s=5;continue;}f=b(e);$s=9;case 9:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}if(!f){$s=7;continue;}$s=8;continue;case 7:g=c.UnreadRune();$s=10;case 10:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g;$s=5;continue;case 8:(c.$ptr_buf||(c.$ptr_buf=new BK(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))).WriteRune(e);$s=4;continue;case 5:$s=-1;return(h=c.buf,$subslice(new BO(h.$array),h.$offset,h.$offset+h.$length));}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.token};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.token=function(a,b){return this.$val.token(a,b);};BF=function(a,b){var a,b,c,d,e,f,g;c=a;d=0;while(true){if(!(d=0;}return;}if($f===undefined){$f={$blk:AV.ptr.prototype.peek};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AV.prototype.peek=function(a){return this.$val.peek(a);};CO.methods=[{prop:"clearflags",name:"clearflags",pkg:"fmt",typ:$funcType([],[],false)},{prop:"init",name:"init",pkg:"fmt",typ:$funcType([BK],[],false)},{prop:"writePadding",name:"writePadding",pkg:"fmt",typ:$funcType([$Int],[],false)},{prop:"pad",name:"pad",pkg:"fmt",typ:$funcType([BO],[],false)},{prop:"padString",name:"padString",pkg:"fmt",typ:$funcType([$String],[],false)},{prop:"fmtBoolean",name:"fmtBoolean",pkg:"fmt",typ:$funcType([$Bool],[],false)},{prop:"fmtUnicode",name:"fmtUnicode",pkg:"fmt",typ:$funcType([$Uint64],[],false)},{prop:"fmtInteger",name:"fmtInteger",pkg:"fmt",typ:$funcType([$Uint64,$Int,$Bool,$String],[],false)},{prop:"truncateString",name:"truncateString",pkg:"fmt",typ:$funcType([$String],[$String],false)},{prop:"truncate",name:"truncate",pkg:"fmt",typ:$funcType([BO],[BO],false)},{prop:"fmtS",name:"fmtS",pkg:"fmt",typ:$funcType([$String],[],false)},{prop:"fmtBs",name:"fmtBs",pkg:"fmt",typ:$funcType([BO],[],false)},{prop:"fmtSbx",name:"fmtSbx",pkg:"fmt",typ:$funcType([$String,BO,$String],[],false)},{prop:"fmtSx",name:"fmtSx",pkg:"fmt",typ:$funcType([$String,$String],[],false)},{prop:"fmtBx",name:"fmtBx",pkg:"fmt",typ:$funcType([BO,$String],[],false)},{prop:"fmtQ",name:"fmtQ",pkg:"fmt",typ:$funcType([$String],[],false)},{prop:"fmtC",name:"fmtC",pkg:"fmt",typ:$funcType([$Uint64],[],false)},{prop:"fmtQc",name:"fmtQc",pkg:"fmt",typ:$funcType([$Uint64],[],false)},{prop:"fmtFloat",name:"fmtFloat",pkg:"fmt",typ:$funcType([$Float64,$Int,$Int32,$Int],[],false)}];BK.methods=[{prop:"Write",name:"Write",pkg:"",typ:$funcType([BO],[],false)},{prop:"WriteString",name:"WriteString",pkg:"",typ:$funcType([$String],[],false)},{prop:"WriteByte",name:"WriteByte",pkg:"",typ:$funcType([$Uint8],[],false)},{prop:"WriteRune",name:"WriteRune",pkg:"",typ:$funcType([$Int32],[],false)}];BQ.methods=[{prop:"free",name:"free",pkg:"fmt",typ:$funcType([],[],false)},{prop:"Width",name:"Width",pkg:"",typ:$funcType([],[$Int,$Bool],false)},{prop:"Precision",name:"Precision",pkg:"",typ:$funcType([],[$Int,$Bool],false)},{prop:"Flag",name:"Flag",pkg:"",typ:$funcType([$Int],[$Bool],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([BO],[$Int,$error],false)},{prop:"WriteString",name:"WriteString",pkg:"",typ:$funcType([$String],[$Int,$error],false)},{prop:"unknownType",name:"unknownType",pkg:"fmt",typ:$funcType([G.Value],[],false)},{prop:"badVerb",name:"badVerb",pkg:"fmt",typ:$funcType([$Int32],[],false)},{prop:"fmtBool",name:"fmtBool",pkg:"fmt",typ:$funcType([$Bool,$Int32],[],false)},{prop:"fmt0x64",name:"fmt0x64",pkg:"fmt",typ:$funcType([$Uint64,$Bool],[],false)},{prop:"fmtInteger",name:"fmtInteger",pkg:"fmt",typ:$funcType([$Uint64,$Bool,$Int32],[],false)},{prop:"fmtFloat",name:"fmtFloat",pkg:"fmt",typ:$funcType([$Float64,$Int,$Int32],[],false)},{prop:"fmtComplex",name:"fmtComplex",pkg:"fmt",typ:$funcType([$Complex128,$Int,$Int32],[],false)},{prop:"fmtString",name:"fmtString",pkg:"fmt",typ:$funcType([$String,$Int32],[],false)},{prop:"fmtBytes",name:"fmtBytes",pkg:"fmt",typ:$funcType([BO,$Int32,$String],[],false)},{prop:"fmtPointer",name:"fmtPointer",pkg:"fmt",typ:$funcType([G.Value,$Int32],[],false)},{prop:"catchPanic",name:"catchPanic",pkg:"fmt",typ:$funcType([$emptyInterface,$Int32,$String],[],false)},{prop:"handleMethods",name:"handleMethods",pkg:"fmt",typ:$funcType([$Int32],[$Bool],false)},{prop:"printArg",name:"printArg",pkg:"fmt",typ:$funcType([$emptyInterface,$Int32],[],false)},{prop:"printValue",name:"printValue",pkg:"fmt",typ:$funcType([G.Value,$Int32,$Int],[],false)},{prop:"argNumber",name:"argNumber",pkg:"fmt",typ:$funcType([$Int,$String,$Int,$Int],[$Int,$Int,$Bool],false)},{prop:"badArgNum",name:"badArgNum",pkg:"fmt",typ:$funcType([$Int32],[],false)},{prop:"missingArg",name:"missingArg",pkg:"fmt",typ:$funcType([$Int32],[],false)},{prop:"doPrintf",name:"doPrintf",pkg:"fmt",typ:$funcType([$String,BI],[],false)},{prop:"doPrint",name:"doPrint",pkg:"fmt",typ:$funcType([BI],[],false)},{prop:"doPrintln",name:"doPrintln",pkg:"fmt",typ:$funcType([BI],[],false)}];BT.methods=[{prop:"Read",name:"Read",pkg:"",typ:$funcType([BO],[$Int,$error],false)},{prop:"ReadRune",name:"ReadRune",pkg:"",typ:$funcType([],[$Int32,$Int,$error],false)},{prop:"Width",name:"Width",pkg:"",typ:$funcType([],[$Int,$Bool],false)},{prop:"getRune",name:"getRune",pkg:"fmt",typ:$funcType([],[$Int32],false)},{prop:"mustReadRune",name:"mustReadRune",pkg:"fmt",typ:$funcType([],[$Int32],false)},{prop:"UnreadRune",name:"UnreadRune",pkg:"",typ:$funcType([],[$error],false)},{prop:"error",name:"error",pkg:"fmt",typ:$funcType([$error],[],false)},{prop:"errorString",name:"errorString",pkg:"fmt",typ:$funcType([$String],[],false)},{prop:"Token",name:"Token",pkg:"",typ:$funcType([$Bool,CP],[BO,$error],false)},{prop:"free",name:"free",pkg:"fmt",typ:$funcType([AW],[],false)},{prop:"SkipSpace",name:"SkipSpace",pkg:"",typ:$funcType([],[],false)},{prop:"token",name:"token",pkg:"fmt",typ:$funcType([$Bool,CP],[BO],false)},{prop:"consume",name:"consume",pkg:"fmt",typ:$funcType([$String,$Bool],[$Bool],false)},{prop:"peek",name:"peek",pkg:"fmt",typ:$funcType([$String],[$Bool],false)},{prop:"notEOF",name:"notEOF",pkg:"fmt",typ:$funcType([],[],false)},{prop:"accept",name:"accept",pkg:"fmt",typ:$funcType([$String],[$Bool],false)},{prop:"okVerb",name:"okVerb",pkg:"fmt",typ:$funcType([$Int32,$String,$String],[$Bool],false)},{prop:"scanBool",name:"scanBool",pkg:"fmt",typ:$funcType([$Int32],[$Bool],false)},{prop:"getBase",name:"getBase",pkg:"fmt",typ:$funcType([$Int32],[$Int,$String],false)},{prop:"scanNumber",name:"scanNumber",pkg:"fmt",typ:$funcType([$String,$Bool],[$String],false)},{prop:"scanRune",name:"scanRune",pkg:"fmt",typ:$funcType([$Int],[$Int64],false)},{prop:"scanBasePrefix",name:"scanBasePrefix",pkg:"fmt",typ:$funcType([],[$Int,$String,$Bool],false)},{prop:"scanInt",name:"scanInt",pkg:"fmt",typ:$funcType([$Int32,$Int],[$Int64],false)},{prop:"scanUint",name:"scanUint",pkg:"fmt",typ:$funcType([$Int32,$Int],[$Uint64],false)},{prop:"floatToken",name:"floatToken",pkg:"fmt",typ:$funcType([],[$String],false)},{prop:"complexTokens",name:"complexTokens",pkg:"fmt",typ:$funcType([],[$String,$String],false)},{prop:"convertFloat",name:"convertFloat",pkg:"fmt",typ:$funcType([$String,$Int],[$Float64],false)},{prop:"scanComplex",name:"scanComplex",pkg:"fmt",typ:$funcType([$Int32,$Int],[$Complex128],false)},{prop:"convertString",name:"convertString",pkg:"fmt",typ:$funcType([$Int32],[$String],false)},{prop:"quotedString",name:"quotedString",pkg:"fmt",typ:$funcType([],[$String],false)},{prop:"hexByte",name:"hexByte",pkg:"fmt",typ:$funcType([],[$Uint8,$Bool],false)},{prop:"hexString",name:"hexString",pkg:"fmt",typ:$funcType([],[$String],false)},{prop:"scanOne",name:"scanOne",pkg:"fmt",typ:$funcType([$Int32,$emptyInterface],[],false)},{prop:"doScan",name:"doScan",pkg:"fmt",typ:$funcType([BI],[$Int,$error],false)},{prop:"advance",name:"advance",pkg:"fmt",typ:$funcType([$String],[$Int],false)},{prop:"doScanf",name:"doScanf",pkg:"fmt",typ:$funcType([$String,BI],[$Int,$error],false)}];J.init("fmt",[{prop:"widPresent",name:"widPresent",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"precPresent",name:"precPresent",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"minus",name:"minus",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"plus",name:"plus",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"sharp",name:"sharp",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"space",name:"space",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"zero",name:"zero",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"plusV",name:"plusV",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"sharpV",name:"sharpV",embedded:false,exported:false,typ:$Bool,tag:""}]);K.init("fmt",[{prop:"buf",name:"buf",embedded:false,exported:false,typ:BK,tag:""},{prop:"fmtFlags",name:"fmtFlags",embedded:true,exported:false,typ:J,tag:""},{prop:"wid",name:"wid",embedded:false,exported:false,typ:$Int,tag:""},{prop:"prec",name:"prec",embedded:false,exported:false,typ:$Int,tag:""},{prop:"intbuf",name:"intbuf",embedded:false,exported:false,typ:BL,tag:""}]);L.init([{prop:"Flag",name:"Flag",pkg:"",typ:$funcType([$Int],[$Bool],false)},{prop:"Precision",name:"Precision",pkg:"",typ:$funcType([],[$Int,$Bool],false)},{prop:"Width",name:"Width",pkg:"",typ:$funcType([],[$Int,$Bool],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([BO],[$Int,$error],false)}]);M.init([{prop:"Format",name:"Format",pkg:"",typ:$funcType([L,$Int32],[],false)}]);N.init([{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}]);O.init([{prop:"GoString",name:"GoString",pkg:"",typ:$funcType([],[$String],false)}]);P.init($Uint8);Q.init("fmt",[{prop:"buf",name:"buf",embedded:false,exported:false,typ:P,tag:""},{prop:"arg",name:"arg",embedded:false,exported:false,typ:$emptyInterface,tag:""},{prop:"value",name:"value",embedded:false,exported:false,typ:G.Value,tag:""},{prop:"fmt",name:"fmt",embedded:false,exported:false,typ:K,tag:""},{prop:"reordered",name:"reordered",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"goodArgNum",name:"goodArgNum",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"panicking",name:"panicking",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"erroring",name:"erroring",embedded:false,exported:false,typ:$Bool,tag:""}]);AU.init("fmt",[{prop:"err",name:"err",embedded:false,exported:false,typ:$error,tag:""}]);AV.init("fmt",[{prop:"rs",name:"rs",embedded:false,exported:false,typ:E.RuneScanner,tag:""},{prop:"buf",name:"buf",embedded:false,exported:false,typ:P,tag:""},{prop:"count",name:"count",embedded:false,exported:false,typ:$Int,tag:""},{prop:"atEOF",name:"atEOF",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"ssave",name:"ssave",embedded:true,exported:false,typ:AW,tag:""}]);AW.init("fmt",[{prop:"validSave",name:"validSave",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"nlIsEnd",name:"nlIsEnd",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"nlIsSpace",name:"nlIsSpace",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"argLimit",name:"argLimit",embedded:false,exported:false,typ:$Int,tag:""},{prop:"limit",name:"limit",embedded:false,exported:false,typ:$Int,tag:""},{prop:"maxWid",name:"maxWid",embedded:false,exported:false,typ:$Int,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=C.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=I.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}R=new H.Pool.ptr(0,0,BI.nil,(function(){return new Q.ptr(P.nil,$ifaceNil,new G.Value.ptr(BJ.nil,0,0),new K.ptr(BK.nil,new J.ptr(false,false,false,false,false,false,false,false,false),0,0,BL.zero()),false,false,false,false);}));AX=new BN([$toNativeArray($kindUint16,[9,13]),$toNativeArray($kindUint16,[32,32]),$toNativeArray($kindUint16,[133,133]),$toNativeArray($kindUint16,[160,160]),$toNativeArray($kindUint16,[5760,5760]),$toNativeArray($kindUint16,[8192,8202]),$toNativeArray($kindUint16,[8232,8233]),$toNativeArray($kindUint16,[8239,8239]),$toNativeArray($kindUint16,[8287,8287]),$toNativeArray($kindUint16,[12288,12288])]);BB=new H.Pool.ptr(0,0,BI.nil,(function(){return new AV.ptr($ifaceNil,P.nil,0,false,new AW.ptr(false,false,false,0,0,0));}));BD=C.New("syntax error scanning complex number");BE=C.New("syntax error scanning boolean");}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["bytes"]=(function(){var $pkg={},$init,A,D,B,E,C,BS,BV,CD,K,F,G,AJ,AM,BP,BQ,BR,BT;A=$packages["errors"];D=$packages["internal/bytealg"];B=$packages["io"];E=$packages["unicode"];C=$packages["unicode/utf8"];BS=$pkg.Reader=$newType(0,$kindStruct,"bytes.Reader",true,"bytes",true,function(s_,i_,prevRune_){this.$val=this;if(arguments.length===0){this.s=BV.nil;this.i=new $Int64(0,0);this.prevRune=0;return;}this.s=s_;this.i=i_;this.prevRune=prevRune_;});BV=$sliceType($Uint8);CD=$ptrType(BS);F=function(d,e){var d,e,f,g,h,i;f=d;g=0;while(true){if(!(g=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]);if(i===e){return h;}g++;}return-1;};$pkg.IndexByte=F;G=function(d,e){var d,e,f,g,h,i;if(!((d.$length===e.$length))){return false;}f=d;g=0;while(true){if(!(g=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]);if(!((i===((h<0||h>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+h])))){return false;}g++;}return true;};$pkg.Equal=G;AJ=function(d,e){var d,e;return d.$length>=e.$length&&G($subslice(d,0,e.$length),e);};$pkg.HasPrefix=AJ;AM=function(d,e){var d,e,f,g,h;if(e<0){$panic(new $String("bytes: negative Repeat count"));}else if(e>0&&!(((f=($imul(d.$length,e))/e,(f===f&&f!==1/0&&f!==-1/0)?f>>0:$throwRuntimeError("integer divide by zero"))===d.$length))){$panic(new $String("bytes: Repeat count causes overflow"));}g=$makeSlice(BV,($imul(d.$length,e)));h=$copySlice(g,d);while(true){if(!(h=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]));}else if((f===d.$length)){if(G(e,d)){return 0;}return-1;}else if(f>d.$length){return-1;}else if(f<=D.MaxLen){if(d.$length<=0){return D.Index(d,e);}g=(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]);h=(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]);i=0;j=(d.$length-f>>0)+1>>0;k=0;while(true){if(!(i=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+i])===g))){l=F($subslice(d,i,j),g);if(l<0){return-1;}i=i+(l)>>0;}if(((m=i+1>>0,((m<0||m>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+m]))===h)&&G($subslice(d,i,(i+f>>0)),e)){return i;}k=k+(1)>>0;i=i+(1)>>0;if(k>D.Cutover(i)){n=D.Index($subslice(d,i),e);if(n>=0){return n+i>>0;}return-1;}}return-1;}o=(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]);p=(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]);q=0;r=0;s=(d.$length-f>>0)+1>>0;while(true){if(!(q=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+q])===o))){t=F($subslice(d,q,s),o);if(t<0){break;}q=q+(t)>>0;}if(((u=q+1>>0,((u<0||u>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+u]))===p)&&G($subslice(d,q,(q+f>>0)),e)){return q;}q=q+(1)>>0;r=r+(1)>>0;if(r>=(4+(q>>4>>0)>>0)&&q>0;}}return-1;};$pkg.Index=BP;BQ=function(d,e){var d,e,f,g,h,i,j,k,l,m;f=BR(e);g=f[0];h=f[1];i=e.$length;j=0;k=0;while(true){if(!(k>>0)+((((k<0||k>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+k])>>>0))>>>0;k=k+(1)>>0;}if((j===g)&&G($subslice(d,0,i),e)){return 0;}l=i;while(true){if(!(l>>0;j=j+(((((l<0||l>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+l])>>>0)))>>>0;j=j-(($imul(h,(((m=l-i>>0,((m<0||m>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+m]))>>>0)))>>>0))>>>0;l=l+(1)>>0;if((j===g)&&G($subslice(d,(l-i>>0),l),e)){return l-i>>0;}}return-1;};BR=function(d){var d,e,f,g,h,i,j,k;e=0;f=0;while(true){if(!(f>>0)+((((f<0||f>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+f])>>>0))>>>0;f=f+(1)>>0;}g=1;h=16777619;i=g;j=h;k=d.$length;while(true){if(!(k>0)){break;}if(!(((k&1)===0))){i=$imul(i,(j))>>>0;}j=$imul(j,(j))>>>0;k=(k>>$min((1),31))>>0;}return[e,i];};BS.ptr.prototype.Len=function(){var d,e,f,g,h,i;d=this;if((e=d.i,f=(new $Int64(0,d.s.$length)),(e.$high>f.$high||(e.$high===f.$high&&e.$low>=f.$low)))){return 0;}return(((g=(h=(new $Int64(0,d.s.$length)),i=d.i,new $Int64(h.$high-i.$high,h.$low-i.$low)),g.$low+((g.$high>>31)*4294967296))>>0));};BS.prototype.Len=function(){return this.$val.Len();};BS.ptr.prototype.Size=function(){var d;d=this;return(new $Int64(0,d.s.$length));};BS.prototype.Size=function(){return this.$val.Size();};BS.ptr.prototype.Read=function(d){var d,e,f,g,h,i,j,k,l,m;e=0;f=$ifaceNil;g=this;if((h=g.i,i=(new $Int64(0,g.s.$length)),(h.$high>i.$high||(h.$high===i.$high&&h.$low>=i.$low)))){j=0;k=B.EOF;e=j;f=k;return[e,f];}g.prevRune=-1;e=$copySlice(d,$subslice(g.s,$flatten64(g.i)));g.i=(l=g.i,m=(new $Int64(0,e)),new $Int64(l.$high+m.$high,l.$low+m.$low));return[e,f];};BS.prototype.Read=function(d){return this.$val.Read(d);};BS.ptr.prototype.ReadAt=function(d,e){var d,e,f,g,h,i,j,k,l,m;f=0;g=$ifaceNil;h=this;if((e.$high<0||(e.$high===0&&e.$low<0))){i=0;j=A.New("bytes.Reader.ReadAt: negative offset");f=i;g=j;return[f,g];}if((k=(new $Int64(0,h.s.$length)),(e.$high>k.$high||(e.$high===k.$high&&e.$low>=k.$low)))){l=0;m=B.EOF;f=l;g=m;return[f,g];}f=$copySlice(d,$subslice(h.s,$flatten64(e)));if(ff.$high||(e.$high===f.$high&&e.$low>=f.$low)))){return[0,B.EOF];}i=(g=d.s,h=d.i,(($flatten64(h)<0||$flatten64(h)>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+$flatten64(h)]));d.i=(j=d.i,k=new $Int64(0,1),new $Int64(j.$high+k.$high,j.$low+k.$low));return[i,$ifaceNil];};BS.prototype.ReadByte=function(){return this.$val.ReadByte();};BS.ptr.prototype.UnreadByte=function(){var d,e,f,g;d=this;if((e=d.i,(e.$high<0||(e.$high===0&&e.$low<=0)))){return A.New("bytes.Reader.UnreadByte: at beginning of slice");}d.prevRune=-1;d.i=(f=d.i,g=new $Int64(0,1),new $Int64(f.$high-g.$high,f.$low-g.$low));return $ifaceNil;};BS.prototype.UnreadByte=function(){return this.$val.UnreadByte();};BS.ptr.prototype.ReadRune=function(){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;d=0;e=0;f=$ifaceNil;g=this;if((h=g.i,i=(new $Int64(0,g.s.$length)),(h.$high>i.$high||(h.$high===i.$high&&h.$low>=i.$low)))){g.prevRune=-1;j=0;k=0;l=B.EOF;d=j;e=k;f=l;return[d,e,f];}g.prevRune=(((m=g.i,m.$low+((m.$high>>31)*4294967296))>>0));p=(n=g.s,o=g.i,(($flatten64(o)<0||$flatten64(o)>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+$flatten64(o)]));if(p<128){g.i=(q=g.i,r=new $Int64(0,1),new $Int64(q.$high+r.$high,q.$low+r.$low));s=((p>>0));t=1;u=$ifaceNil;d=s;e=t;f=u;return[d,e,f];}v=C.DecodeRune($subslice(g.s,$flatten64(g.i)));d=v[0];e=v[1];g.i=(w=g.i,x=(new $Int64(0,e)),new $Int64(w.$high+x.$high,w.$low+x.$low));return[d,e,f];};BS.prototype.ReadRune=function(){return this.$val.ReadRune();};BS.ptr.prototype.UnreadRune=function(){var d,e;d=this;if((e=d.i,(e.$high<0||(e.$high===0&&e.$low<=0)))){return A.New("bytes.Reader.UnreadRune: at beginning of slice");}if(d.prevRune<0){return A.New("bytes.Reader.UnreadRune: previous operation was not ReadRune");}d.i=(new $Int64(0,d.prevRune));d.prevRune=-1;return $ifaceNil;};BS.prototype.UnreadRune=function(){return this.$val.UnreadRune();};BS.ptr.prototype.Seek=function(d,e){var d,e,f,g,h,i,j;f=this;f.prevRune=-1;g=new $Int64(0,0);h=e;if(h===(0)){g=d;}else if(h===(1)){g=(i=f.i,new $Int64(i.$high+d.$high,i.$low+d.$low));}else if(h===(2)){g=(j=(new $Int64(0,f.s.$length)),new $Int64(j.$high+d.$high,j.$low+d.$low));}else{return[new $Int64(0,0),A.New("bytes.Reader.Seek: invalid whence")];}if((g.$high<0||(g.$high===0&&g.$low<0))){return[new $Int64(0,0),A.New("bytes.Reader.Seek: negative position")];}f.i=g;return[g,$ifaceNil];};BS.prototype.Seek=function(d,e){return this.$val.Seek(d,e);};BS.ptr.prototype.WriteTo=function(d){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=new $Int64(0,0);f=$ifaceNil;g=this;g.prevRune=-1;if((h=g.i,i=(new $Int64(0,g.s.$length)),(h.$high>i.$high||(h.$high===i.$high&&h.$low>=i.$low)))){j=new $Int64(0,0);k=$ifaceNil;e=j;f=k;$s=-1;return[e,f];}l=$subslice(g.s,$flatten64(g.i));n=d.Write(l);$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];f=m[1];if(o>l.$length){$panic(new $String("bytes.Reader.WriteTo: invalid Write count"));}g.i=(p=g.i,q=(new $Int64(0,o)),new $Int64(p.$high+q.$high,p.$low+q.$low));e=(new $Int64(0,o));if(!((o===l.$length))&&$interfaceIsEqual(f,$ifaceNil)){f=B.ErrShortWrite;}$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:BS.ptr.prototype.WriteTo};}$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};BS.prototype.WriteTo=function(d){return this.$val.WriteTo(d);};BS.ptr.prototype.Reset=function(d){var d,e;e=this;BS.copy(e,new BS.ptr(d,new $Int64(0,0),-1));};BS.prototype.Reset=function(d){return this.$val.Reset(d);};BT=function(d){var d;return new BS.ptr(d,new $Int64(0,0),-1);};$pkg.NewReader=BT;CD.methods=[{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Size",name:"Size",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([BV],[$Int,$error],false)},{prop:"ReadAt",name:"ReadAt",pkg:"",typ:$funcType([BV,$Int64],[$Int,$error],false)},{prop:"ReadByte",name:"ReadByte",pkg:"",typ:$funcType([],[$Uint8,$error],false)},{prop:"UnreadByte",name:"UnreadByte",pkg:"",typ:$funcType([],[$error],false)},{prop:"ReadRune",name:"ReadRune",pkg:"",typ:$funcType([],[$Int32,$Int,$error],false)},{prop:"UnreadRune",name:"UnreadRune",pkg:"",typ:$funcType([],[$error],false)},{prop:"Seek",name:"Seek",pkg:"",typ:$funcType([$Int64,$Int],[$Int64,$error],false)},{prop:"WriteTo",name:"WriteTo",pkg:"",typ:$funcType([B.Writer],[$Int64,$error],false)},{prop:"Reset",name:"Reset",pkg:"",typ:$funcType([BV],[],false)}];BS.init("bytes",[{prop:"s",name:"s",embedded:false,exported:false,typ:BV,tag:""},{prop:"i",name:"i",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"prevRune",name:"prevRune",embedded:false,exported:false,typ:$Int,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$pkg.ErrTooLarge=A.New("bytes.Buffer: too large");K=A.New("bytes.Buffer: reader returned negative count from Read");}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["encoding/binary"]=(function(){var $pkg={},$init,A,B,C,D,E,F,G,N,O,X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,U,H,I,J,K,L,P;A=$packages["errors"];B=$packages["io"];C=$packages["math"];D=$packages["reflect"];E=$pkg.ByteOrder=$newType(8,$kindInterface,"binary.ByteOrder",true,"encoding/binary",true,null);F=$pkg.littleEndian=$newType(0,$kindStruct,"binary.littleEndian",true,"encoding/binary",false,function(){this.$val=this;if(arguments.length===0){return;}});G=$pkg.bigEndian=$newType(0,$kindStruct,"binary.bigEndian",true,"encoding/binary",false,function(){this.$val=this;if(arguments.length===0){return;}});N=$pkg.decoder=$newType(0,$kindStruct,"binary.decoder",true,"encoding/binary",false,function(order_,buf_,offset_){this.$val=this;if(arguments.length===0){this.order=$ifaceNil;this.buf=X.nil;this.offset=0;return;}this.order=order_;this.buf=buf_;this.offset=offset_;});O=$pkg.encoder=$newType(0,$kindStruct,"binary.encoder",true,"encoding/binary",false,function(order_,buf_,offset_){this.$val=this;if(arguments.length===0){this.order=$ifaceNil;this.buf=X.nil;this.offset=0;return;}this.order=order_;this.buf=buf_;this.offset=offset_;});X=$sliceType($Uint8);Y=$ptrType($Bool);Z=$ptrType($Int8);AA=$ptrType($Uint8);AB=$ptrType($Int16);AC=$ptrType($Uint16);AD=$ptrType($Int32);AE=$ptrType($Uint32);AF=$ptrType($Int64);AG=$ptrType($Uint64);AH=$sliceType($Bool);AI=$sliceType($Int8);AJ=$sliceType($Int16);AK=$sliceType($Uint16);AL=$sliceType($Int32);AM=$sliceType($Uint32);AN=$sliceType($Int64);AO=$sliceType($Uint64);AP=$ptrType(N);AQ=$ptrType(O);F.ptr.prototype.Uint16=function(a){var a;$unused((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]));return((((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])<<16>>>16))|((((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])<<16>>>16))<<8<<16>>>16))>>>0;};F.prototype.Uint16=function(a){return this.$val.Uint16(a);};F.ptr.prototype.PutUint16=function(a,b){var a,b;$unused((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((b<<24>>>24)));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=(((b>>>8<<16>>>16)<<24>>>24)));};F.prototype.PutUint16=function(a,b){return this.$val.PutUint16(a,b);};F.ptr.prototype.Uint32=function(a){var a;$unused((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]));return((((((((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])>>>0))|((((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])>>>0))<<8>>>0))>>>0)|((((2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2])>>>0))<<16>>>0))>>>0)|((((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3])>>>0))<<24>>>0))>>>0;};F.prototype.Uint32=function(a){return this.$val.Uint32(a);};F.ptr.prototype.PutUint32=function(a,b){var a,b;$unused((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((b<<24>>>24)));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=(((b>>>8>>>0)<<24>>>24)));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=(((b>>>16>>>0)<<24>>>24)));(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]=(((b>>>24>>>0)<<24>>>24)));};F.prototype.PutUint32=function(a,b){return this.$val.PutUint32(a,b);};F.ptr.prototype.Uint64=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;$unused((7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]));return(b=(c=(d=(e=(f=(g=(h=(new $Uint64(0,(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]))),i=$shiftLeft64((new $Uint64(0,(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]))),8),new $Uint64(h.$high|i.$high,(h.$low|i.$low)>>>0)),j=$shiftLeft64((new $Uint64(0,(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]))),16),new $Uint64(g.$high|j.$high,(g.$low|j.$low)>>>0)),k=$shiftLeft64((new $Uint64(0,(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]))),24),new $Uint64(f.$high|k.$high,(f.$low|k.$low)>>>0)),l=$shiftLeft64((new $Uint64(0,(4>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+4]))),32),new $Uint64(e.$high|l.$high,(e.$low|l.$low)>>>0)),m=$shiftLeft64((new $Uint64(0,(5>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+5]))),40),new $Uint64(d.$high|m.$high,(d.$low|m.$low)>>>0)),n=$shiftLeft64((new $Uint64(0,(6>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+6]))),48),new $Uint64(c.$high|n.$high,(c.$low|n.$low)>>>0)),o=$shiftLeft64((new $Uint64(0,(7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]))),56),new $Uint64(b.$high|o.$high,(b.$low|o.$low)>>>0));};F.prototype.Uint64=function(a){return this.$val.Uint64(a);};F.ptr.prototype.PutUint64=function(a,b){var a,b;$unused((7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=((b.$low<<24>>>24)));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=(($shiftRightUint64(b,8).$low<<24>>>24)));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=(($shiftRightUint64(b,16).$low<<24>>>24)));(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]=(($shiftRightUint64(b,24).$low<<24>>>24)));(4>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+4]=(($shiftRightUint64(b,32).$low<<24>>>24)));(5>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+5]=(($shiftRightUint64(b,40).$low<<24>>>24)));(6>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+6]=(($shiftRightUint64(b,48).$low<<24>>>24)));(7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]=(($shiftRightUint64(b,56).$low<<24>>>24)));};F.prototype.PutUint64=function(a,b){return this.$val.PutUint64(a,b);};F.ptr.prototype.String=function(){return"LittleEndian";};F.prototype.String=function(){return this.$val.String();};F.ptr.prototype.GoString=function(){return"binary.LittleEndian";};F.prototype.GoString=function(){return this.$val.GoString();};G.ptr.prototype.Uint16=function(a){var a;$unused((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]));return((((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])<<16>>>16))|((((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])<<16>>>16))<<8<<16>>>16))>>>0;};G.prototype.Uint16=function(a){return this.$val.Uint16(a);};G.ptr.prototype.PutUint16=function(a,b){var a,b;$unused((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=(((b>>>8<<16>>>16)<<24>>>24)));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=((b<<24>>>24)));};G.prototype.PutUint16=function(a,b){return this.$val.PutUint16(a,b);};G.ptr.prototype.Uint32=function(a){var a;$unused((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]));return((((((((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3])>>>0))|((((2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2])>>>0))<<8>>>0))>>>0)|((((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])>>>0))<<16>>>0))>>>0)|((((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])>>>0))<<24>>>0))>>>0;};G.prototype.Uint32=function(a){return this.$val.Uint32(a);};G.ptr.prototype.PutUint32=function(a,b){var a,b;$unused((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=(((b>>>24>>>0)<<24>>>24)));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=(((b>>>16>>>0)<<24>>>24)));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=(((b>>>8>>>0)<<24>>>24)));(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]=((b<<24>>>24)));};G.prototype.PutUint32=function(a,b){return this.$val.PutUint32(a,b);};G.ptr.prototype.Uint64=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;$unused((7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]));return(b=(c=(d=(e=(f=(g=(h=(new $Uint64(0,(7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]))),i=$shiftLeft64((new $Uint64(0,(6>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+6]))),8),new $Uint64(h.$high|i.$high,(h.$low|i.$low)>>>0)),j=$shiftLeft64((new $Uint64(0,(5>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+5]))),16),new $Uint64(g.$high|j.$high,(g.$low|j.$low)>>>0)),k=$shiftLeft64((new $Uint64(0,(4>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+4]))),24),new $Uint64(f.$high|k.$high,(f.$low|k.$low)>>>0)),l=$shiftLeft64((new $Uint64(0,(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]))),32),new $Uint64(e.$high|l.$high,(e.$low|l.$low)>>>0)),m=$shiftLeft64((new $Uint64(0,(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]))),40),new $Uint64(d.$high|m.$high,(d.$low|m.$low)>>>0)),n=$shiftLeft64((new $Uint64(0,(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]))),48),new $Uint64(c.$high|n.$high,(c.$low|n.$low)>>>0)),o=$shiftLeft64((new $Uint64(0,(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]))),56),new $Uint64(b.$high|o.$high,(b.$low|o.$low)>>>0));};G.prototype.Uint64=function(a){return this.$val.Uint64(a);};G.ptr.prototype.PutUint64=function(a,b){var a,b;$unused((7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]));(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]=(($shiftRightUint64(b,56).$low<<24>>>24)));(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1]=(($shiftRightUint64(b,48).$low<<24>>>24)));(2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2]=(($shiftRightUint64(b,40).$low<<24>>>24)));(3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3]=(($shiftRightUint64(b,32).$low<<24>>>24)));(4>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+4]=(($shiftRightUint64(b,24).$low<<24>>>24)));(5>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+5]=(($shiftRightUint64(b,16).$low<<24>>>24)));(6>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+6]=(($shiftRightUint64(b,8).$low<<24>>>24)));(7>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+7]=((b.$low<<24>>>24)));};G.prototype.PutUint64=function(a,b){return this.$val.PutUint64(a,b);};G.ptr.prototype.String=function(){return"BigEndian";};G.prototype.String=function(){return this.$val.String();};G.ptr.prototype.GoString=function(){return"binary.BigEndian";};G.prototype.GoString=function(){return this.$val.GoString();};H=function(a,b,c){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,c,ca,cb,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;bu=$f.bu;bv=$f.bv;bw=$f.bw;bx=$f.bx;by=$f.by;bz=$f.bz;c=$f.c;ca=$f.ca;cb=$f.cb;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=P(c);if(!((d===0))){$s=1;continue;}$s=2;continue;case 1:e=$makeSlice(X,d);g=B.ReadFull(a,e);$s=3;case 3:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[1];if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return h;}i=c;if($assertType(i,Y,true)[1]){$s=4;continue;}if($assertType(i,Z,true)[1]){$s=5;continue;}if($assertType(i,AA,true)[1]){$s=6;continue;}if($assertType(i,AB,true)[1]){$s=7;continue;}if($assertType(i,AC,true)[1]){$s=8;continue;}if($assertType(i,AD,true)[1]){$s=9;continue;}if($assertType(i,AE,true)[1]){$s=10;continue;}if($assertType(i,AF,true)[1]){$s=11;continue;}if($assertType(i,AG,true)[1]){$s=12;continue;}if($assertType(i,AH,true)[1]){$s=13;continue;}if($assertType(i,AI,true)[1]){$s=14;continue;}if($assertType(i,X,true)[1]){$s=15;continue;}if($assertType(i,AJ,true)[1]){$s=16;continue;}if($assertType(i,AK,true)[1]){$s=17;continue;}if($assertType(i,AL,true)[1]){$s=18;continue;}if($assertType(i,AM,true)[1]){$s=19;continue;}if($assertType(i,AN,true)[1]){$s=20;continue;}if($assertType(i,AO,true)[1]){$s=21;continue;}$s=22;continue;case 4:j=i.$val;j.$set(!(((0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0])===0)));$s=22;continue;case 5:k=i.$val;k.$set((((0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0])<<24>>24)));$s=22;continue;case 6:l=i.$val;l.$set((0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]));$s=22;continue;case 7:m=i.$val;ab=b.Uint16(e);$s=23;case 23:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}m.$set(((ab<<16>>16)));$s=22;continue;case 8:n=i.$val;ac=b.Uint16(e);$s=24;case 24:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}n.$set(ac);$s=22;continue;case 9:o=i.$val;ad=b.Uint32(e);$s=25;case 25:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}o.$set(((ad>>0)));$s=22;continue;case 10:p=i.$val;ae=b.Uint32(e);$s=26;case 26:if($c){$c=false;ae=ae.$blk();}if(ae&&ae.$blk!==undefined){break s;}p.$set(ae);$s=22;continue;case 11:q=i.$val;ag=b.Uint64(e);$s=27;case 27:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}q.$set(((af=ag,new $Int64(af.$high,af.$low))));$s=22;continue;case 12:r=i.$val;ah=b.Uint64(e);$s=28;case 28:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}r.$set(ah);$s=22;continue;case 13:s=i.$val;ai=e;aj=0;while(true){if(!(aj=ai.$length)?($throwRuntimeError("index out of range"),undefined):ai.$array[ai.$offset+aj]);((ak<0||ak>=s.$length)?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+ak]=!((al===0)));aj++;}$s=22;continue;case 14:t=i.$val;am=e;an=0;while(true){if(!(an=am.$length)?($throwRuntimeError("index out of range"),undefined):am.$array[am.$offset+an]);((ao<0||ao>=t.$length)?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+ao]=((ap<<24>>24)));an++;}$s=22;continue;case 15:u=i.$val;$copySlice(u,e);$s=22;continue;case 16:v=i.$val;aq=v;ar=0;case 29:if(!(ar=v.$length)?($throwRuntimeError("index out of range"),undefined):v.$array[v.$offset+as]=((at<<16>>16)));ar++;$s=29;continue;case 30:$s=22;continue;case 17:w=i.$val;au=w;av=0;case 32:if(!(av=w.$length)?($throwRuntimeError("index out of range"),undefined):w.$array[w.$offset+aw]=ax);av++;$s=32;continue;case 33:$s=22;continue;case 18:x=i.$val;ay=x;az=0;case 35:if(!(az=x.$length)?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+ba]=((bb>>0)));az++;$s=35;continue;case 36:$s=22;continue;case 19:y=i.$val;bc=y;bd=0;case 38:if(!(bd=y.$length)?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+be]=bf);bd++;$s=38;continue;case 39:$s=22;continue;case 20:z=i.$val;bg=z;bh=0;case 41:if(!(bh=z.$length)?($throwRuntimeError("index out of range"),undefined):z.$array[z.$offset+bi]=((bj=bk,new $Int64(bj.$high,bj.$low))));bh++;$s=41;continue;case 42:$s=22;continue;case 21:aa=i.$val;bl=aa;bm=0;case 44:if(!(bm=aa.$length)?($throwRuntimeError("index out of range"),undefined):aa.$array[aa.$offset+bn]=bo);bm++;$s=44;continue;case 45:case 22:$s=-1;return $ifaceNil;case 2:bp=D.ValueOf(c);$s=47;case 47:if($c){$c=false;bp=bp.$blk();}if(bp&&bp.$blk!==undefined){break s;}bq=bp;br=-1;bs=$clone(bq,D.Value).Kind();if(bs===(22)){$s=49;continue;}if(bs===(23)){$s=50;continue;}$s=51;continue;case 49:bt=$clone(bq,D.Value).Elem();$s=52;case 52:if($c){$c=false;bt=bt.$blk();}if(bt&&bt.$blk!==undefined){break s;}bq=bt;bu=K($clone(bq,D.Value));$s=53;case 53:if($c){$c=false;bu=bu.$blk();}if(bu&&bu.$blk!==undefined){break s;}br=bu;$s=51;continue;case 50:bv=K($clone(bq,D.Value));$s=54;case 54:if($c){$c=false;bv=bv.$blk();}if(bv&&bv.$blk!==undefined){break s;}br=bv;case 51:case 48:if(br<0){$s=55;continue;}$s=56;continue;case 55:bw=D.TypeOf(c).String();$s=57;case 57:if($c){$c=false;bw=bw.$blk();}if(bw&&bw.$blk!==undefined){break s;}bx=A.New("binary.Read: invalid type "+bw);$s=58;case 58:if($c){$c=false;bx=bx.$blk();}if(bx&&bx.$blk!==undefined){break s;}$s=-1;return bx;case 56:by=new N.ptr(b,$makeSlice(X,br),0);ca=B.ReadFull(a,by.buf);$s=59;case 59:if($c){$c=false;ca=ca.$blk();}if(ca&&ca.$blk!==undefined){break s;}bz=ca;cb=bz[1];if(!($interfaceIsEqual(cb,$ifaceNil))){$s=-1;return cb;}$r=by.value($clone(bq,D.Value));$s=60;case 60:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.bu=bu;$f.bv=bv;$f.bw=bw;$f.bx=bx;$f.by=by;$f.bz=bz;$f.c=c;$f.ca=ca;$f.cb=cb;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Read=H;I=function(a,b,c){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,c,ca,cb,cc,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;bo=$f.bo;bp=$f.bp;bq=$f.bq;br=$f.br;bs=$f.bs;bt=$f.bt;bu=$f.bu;bv=$f.bv;bw=$f.bw;bx=$f.bx;by=$f.by;bz=$f.bz;c=$f.c;ca=$f.ca;cb=$f.cb;cc=$f.cc;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=P(c);if(!((d===0))){$s=1;continue;}$s=2;continue;case 1:e=$makeSlice(X,d);f=c;if($assertType(f,Y,true)[1]){$s=3;continue;}if($assertType(f,$Bool,true)[1]){$s=4;continue;}if($assertType(f,AH,true)[1]){$s=5;continue;}if($assertType(f,Z,true)[1]){$s=6;continue;}if($assertType(f,$Int8,true)[1]){$s=7;continue;}if($assertType(f,AI,true)[1]){$s=8;continue;}if($assertType(f,AA,true)[1]){$s=9;continue;}if($assertType(f,$Uint8,true)[1]){$s=10;continue;}if($assertType(f,X,true)[1]){$s=11;continue;}if($assertType(f,AB,true)[1]){$s=12;continue;}if($assertType(f,$Int16,true)[1]){$s=13;continue;}if($assertType(f,AJ,true)[1]){$s=14;continue;}if($assertType(f,AC,true)[1]){$s=15;continue;}if($assertType(f,$Uint16,true)[1]){$s=16;continue;}if($assertType(f,AK,true)[1]){$s=17;continue;}if($assertType(f,AD,true)[1]){$s=18;continue;}if($assertType(f,$Int32,true)[1]){$s=19;continue;}if($assertType(f,AL,true)[1]){$s=20;continue;}if($assertType(f,AE,true)[1]){$s=21;continue;}if($assertType(f,$Uint32,true)[1]){$s=22;continue;}if($assertType(f,AM,true)[1]){$s=23;continue;}if($assertType(f,AF,true)[1]){$s=24;continue;}if($assertType(f,$Int64,true)[1]){$s=25;continue;}if($assertType(f,AN,true)[1]){$s=26;continue;}if($assertType(f,AG,true)[1]){$s=27;continue;}if($assertType(f,$Uint64,true)[1]){$s=28;continue;}if($assertType(f,AO,true)[1]){$s=29;continue;}$s=30;continue;case 3:g=f.$val;if(g.$get()){(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=1);}else{(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=0);}$s=30;continue;case 4:h=f.$val;if(h){(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=1);}else{(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=0);}$s=30;continue;case 5:i=f.$val;ah=i;ai=0;while(true){if(!(ai=ah.$length)?($throwRuntimeError("index out of range"),undefined):ah.$array[ah.$offset+ai]);if(ak){((aj<0||aj>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+aj]=1);}else{((aj<0||aj>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+aj]=0);}ai++;}$s=30;continue;case 6:j=f.$val;(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=((j.$get()<<24>>>24)));$s=30;continue;case 7:k=f.$val;(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=((k<<24>>>24)));$s=30;continue;case 8:l=f.$val;al=l;am=0;while(true){if(!(am=al.$length)?($throwRuntimeError("index out of range"),undefined):al.$array[al.$offset+am]);((an<0||an>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+an]=((ao<<24>>>24)));am++;}$s=30;continue;case 9:m=f.$val;(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=m.$get());$s=30;continue;case 10:n=f.$val;(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=n);$s=30;continue;case 11:o=f.$val;e=o;$s=30;continue;case 12:p=f.$val;$r=b.PutUint16(e,((p.$get()<<16>>>16)));$s=31;case 31:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 13:q=f.$val;$r=b.PutUint16(e,((q<<16>>>16)));$s=32;case 32:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 14:r=f.$val;ap=r;aq=0;case 33:if(!(aq=ap.$length)?($throwRuntimeError("index out of range"),undefined):ap.$array[ap.$offset+aq]);$r=b.PutUint16($subslice(e,($imul(2,ar))),((as<<16>>>16)));$s=35;case 35:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}aq++;$s=33;continue;case 34:$s=30;continue;case 15:s=f.$val;$r=b.PutUint16(e,s.$get());$s=36;case 36:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 16:t=f.$val;$r=b.PutUint16(e,t);$s=37;case 37:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 17:u=f.$val;at=u;au=0;case 38:if(!(au=at.$length)?($throwRuntimeError("index out of range"),undefined):at.$array[at.$offset+au]);$r=b.PutUint16($subslice(e,($imul(2,av))),aw);$s=40;case 40:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}au++;$s=38;continue;case 39:$s=30;continue;case 18:v=f.$val;$r=b.PutUint32(e,((v.$get()>>>0)));$s=41;case 41:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 19:w=f.$val;$r=b.PutUint32(e,((w>>>0)));$s=42;case 42:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 20:x=f.$val;ax=x;ay=0;case 43:if(!(ay=ax.$length)?($throwRuntimeError("index out of range"),undefined):ax.$array[ax.$offset+ay]);$r=b.PutUint32($subslice(e,($imul(4,az))),((ba>>>0)));$s=45;case 45:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}ay++;$s=43;continue;case 44:$s=30;continue;case 21:y=f.$val;$r=b.PutUint32(e,y.$get());$s=46;case 46:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 22:z=f.$val;$r=b.PutUint32(e,z);$s=47;case 47:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 23:aa=f.$val;bb=aa;bc=0;case 48:if(!(bc=bb.$length)?($throwRuntimeError("index out of range"),undefined):bb.$array[bb.$offset+bc]);$r=b.PutUint32($subslice(e,($imul(4,bd))),be);$s=50;case 50:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}bc++;$s=48;continue;case 49:$s=30;continue;case 24:ab=f.$val;$r=b.PutUint64(e,((bf=ab.$get(),new $Uint64(bf.$high,bf.$low))));$s=51;case 51:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 25:ac=f.$val;$r=b.PutUint64(e,(new $Uint64(ac.$high,ac.$low)));$s=52;case 52:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 26:ad=f.$val;bg=ad;bh=0;case 53:if(!(bh=bg.$length)?($throwRuntimeError("index out of range"),undefined):bg.$array[bg.$offset+bh]);$r=b.PutUint64($subslice(e,($imul(8,bi))),(new $Uint64(bj.$high,bj.$low)));$s=55;case 55:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}bh++;$s=53;continue;case 54:$s=30;continue;case 27:ae=f.$val;$r=b.PutUint64(e,ae.$get());$s=56;case 56:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 28:af=f.$val;$r=b.PutUint64(e,af);$s=57;case 57:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=30;continue;case 29:ag=f.$val;bk=ag;bl=0;case 58:if(!(bl=bk.$length)?($throwRuntimeError("index out of range"),undefined):bk.$array[bk.$offset+bl]);$r=b.PutUint64($subslice(e,($imul(8,bm))),bn);$s=60;case 60:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}bl++;$s=58;continue;case 59:case 30:bp=a.Write(e);$s=61;case 61:if($c){$c=false;bp=bp.$blk();}if(bp&&bp.$blk!==undefined){break s;}bo=bp;bq=bo[1];$s=-1;return bq;case 2:br=D.ValueOf(c);$s=62;case 62:if($c){$c=false;br=br.$blk();}if(br&&br.$blk!==undefined){break s;}bs=D.Indirect($clone(br,D.Value));$s=63;case 63:if($c){$c=false;bs=bs.$blk();}if(bs&&bs.$blk!==undefined){break s;}bt=bs;bu=K($clone(bt,D.Value));$s=64;case 64:if($c){$c=false;bu=bu.$blk();}if(bu&&bu.$blk!==undefined){break s;}bv=bu;if(bv<0){$s=65;continue;}$s=66;continue;case 65:bw=D.TypeOf(c).String();$s=67;case 67:if($c){$c=false;bw=bw.$blk();}if(bw&&bw.$blk!==undefined){break s;}bx=A.New("binary.Write: invalid type "+bw);$s=68;case 68:if($c){$c=false;bx=bx.$blk();}if(bx&&bx.$blk!==undefined){break s;}$s=-1;return bx;case 66:by=$makeSlice(X,bv);bz=new O.ptr(b,by,0);$r=bz.value($clone(bt,D.Value));$s=69;case 69:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}cb=a.Write(by);$s=70;case 70:if($c){$c=false;cb=cb.$blk();}if(cb&&cb.$blk!==undefined){break s;}ca=cb;cc=ca[1];$s=-1;return cc;}return;}if($f===undefined){$f={$blk:I};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.bo=bo;$f.bp=bp;$f.bq=bq;$f.br=br;$f.bs=bs;$f.bt=bt;$f.bu=bu;$f.bv=bv;$f.bw=bw;$f.bx=bx;$f.by=by;$f.bz=bz;$f.c=c;$f.ca=ca;$f.cb=cb;$f.cc=cc;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Write=I;J=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=D.ValueOf(a);$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=D.Indirect($clone(b,D.Value));$s=2;case 2:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=K($clone(c,D.Value));$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:J};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Size=J;K=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if($clone(a,D.Value).Kind()===23){$s=1;continue;}$s=2;continue;case 1:b=$clone(a,D.Value).Type().Elem();$s=3;case 3:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=L(b);$s=4;case 4:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;if(d>=0){$s=-1;return $imul(d,$clone(a,D.Value).Len());}$s=-1;return-1;case 2:e=L($clone(a,D.Value).Type());$s=5;case 5:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:K};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};L=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=a.Kind();$s=2;case 2:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;if(c===(17)){$s=3;continue;}if(c===(25)){$s=4;continue;}if((c===(1))||(c===(8))||(c===(9))||(c===(10))||(c===(11))||(c===(3))||(c===(4))||(c===(5))||(c===(6))||(c===(13))||(c===(14))||(c===(15))||(c===(16))){$s=5;continue;}$s=6;continue;case 3:d=a.Elem();$s=7;case 7:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=L(d);$s=8;case 8:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(f>=0){$s=9;continue;}$s=10;continue;case 9:g=a.Len();$s=11;case 11:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$s=-1;return $imul(f,g);case 10:$s=6;continue;case 4:h=0;i=0;k=a.NumField();$s=12;case 12:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;l=i;m=j;case 13:if(!(l>0;l=l+(1)>>0;$s=13;continue;case 14:$s=-1;return h;case 5:q=a.Size();$s=17;case 17:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}$s=-1;return((q>>0));case 6:case 1:$s=-1;return-1;}return;}if($f===undefined){$f={$blk:L};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};N.ptr.prototype.bool=function(){var a,b,c,d;a=this;d=(b=a.buf,c=a.offset,((c<0||c>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+c]));a.offset=a.offset+(1)>>0;return!((d===0));};N.prototype.bool=function(){return this.$val.bool();};O.ptr.prototype.bool=function(a){var a,b,c,d,e,f;b=this;if(a){(c=b.buf,d=b.offset,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=1));}else{(e=b.buf,f=b.offset,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]=0));}b.offset=b.offset+(1)>>0;};O.prototype.bool=function(a){return this.$val.bool(a);};N.ptr.prototype.uint8=function(){var a,b,c,d;a=this;d=(b=a.buf,c=a.offset,((c<0||c>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+c]));a.offset=a.offset+(1)>>0;return d;};N.prototype.uint8=function(){return this.$val.uint8();};O.ptr.prototype.uint8=function(a){var a,b,c,d;b=this;(c=b.buf,d=b.offset,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=a));b.offset=b.offset+(1)>>0;};O.prototype.uint8=function(a){return this.$val.uint8(a);};N.ptr.prototype.uint16=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.order.Uint16($subslice(a.buf,a.offset,(a.offset+2>>0)));$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;a.offset=a.offset+(2)>>0;$s=-1;return c;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.uint16};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.uint16=function(){return this.$val.uint16();};O.ptr.prototype.uint16=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;$r=b.order.PutUint16($subslice(b.buf,b.offset,(b.offset+2>>0)),a);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b.offset=b.offset+(2)>>0;$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.uint16};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.uint16=function(a){return this.$val.uint16(a);};N.ptr.prototype.uint32=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.order.Uint32($subslice(a.buf,a.offset,(a.offset+4>>0)));$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;a.offset=a.offset+(4)>>0;$s=-1;return c;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.uint32};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.uint32=function(){return this.$val.uint32();};O.ptr.prototype.uint32=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;$r=b.order.PutUint32($subslice(b.buf,b.offset,(b.offset+4>>0)),a);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b.offset=b.offset+(4)>>0;$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.uint32};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.uint32=function(a){return this.$val.uint32(a);};N.ptr.prototype.uint64=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.order.Uint64($subslice(a.buf,a.offset,(a.offset+8>>0)));$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;a.offset=a.offset+(8)>>0;$s=-1;return c;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.uint64};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.uint64=function(){return this.$val.uint64();};O.ptr.prototype.uint64=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;$r=b.order.PutUint64($subslice(b.buf,b.offset,(b.offset+8>>0)),a);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b.offset=b.offset+(8)>>0;$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.uint64};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.uint64=function(a){return this.$val.uint64(a);};N.ptr.prototype.int8=function(){var a;a=this;return((a.uint8()<<24>>24));};N.prototype.int8=function(){return this.$val.int8();};O.ptr.prototype.int8=function(a){var a,b;b=this;b.uint8(((a<<24>>>24)));};O.prototype.int8=function(a){return this.$val.int8(a);};N.ptr.prototype.int16=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.uint16();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return((b<<16>>16));}return;}if($f===undefined){$f={$blk:N.ptr.prototype.int16};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.int16=function(){return this.$val.int16();};O.ptr.prototype.int16=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;$r=b.uint16(((a<<16>>>16)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.int16};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.int16=function(a){return this.$val.int16(a);};N.ptr.prototype.int32=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.uint32();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return((b>>0));}return;}if($f===undefined){$f={$blk:N.ptr.prototype.int32};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.int32=function(){return this.$val.int32();};O.ptr.prototype.int32=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;$r=b.uint32(((a>>>0)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.int32};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.int32=function(a){return this.$val.int32(a);};N.ptr.prototype.int64=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;c=a.uint64();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return((b=c,new $Int64(b.$high,b.$low)));}return;}if($f===undefined){$f={$blk:N.ptr.prototype.int64};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.int64=function(){return this.$val.int64();};O.ptr.prototype.int64=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;$r=b.uint64((new $Uint64(a.$high,a.$low)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.int64};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.int64=function(a){return this.$val.int64(a);};N.ptr.prototype.value=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=$clone(a,D.Value).Kind();if(c===(17)){$s=2;continue;}if(c===(25)){$s=3;continue;}if(c===(23)){$s=4;continue;}if(c===(1)){$s=5;continue;}if(c===(3)){$s=6;continue;}if(c===(4)){$s=7;continue;}if(c===(5)){$s=8;continue;}if(c===(6)){$s=9;continue;}if(c===(8)){$s=10;continue;}if(c===(9)){$s=11;continue;}if(c===(10)){$s=12;continue;}if(c===(11)){$s=13;continue;}if(c===(13)){$s=14;continue;}if(c===(14)){$s=15;continue;}if(c===(15)){$s=16;continue;}if(c===(16)){$s=17;continue;}$s=18;continue;case 2:d=$clone(a,D.Value).Len();e=0;case 19:if(!(e>0;$s=19;continue;case 20:$s=18;continue;case 3:g=$clone(a,D.Value).Type();h=$clone(a,D.Value).NumField();i=0;case 23:if(!(i>0;$s=23;continue;case 24:$s=18;continue;case 4:n=$clone(a,D.Value).Len();o=0;case 33:if(!(o>0;$s=33;continue;case 34:$s=18;continue;case 5:$clone(a,D.Value).SetBool(b.bool());$s=18;continue;case 6:$clone(a,D.Value).SetInt((new $Int64(0,b.int8())));$s=18;continue;case 7:q=b.int16();$s=37;case 37:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetInt((new $Int64(0,q)));$s=38;case 38:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 8:r=b.int32();$s=39;case 39:if($c){$c=false;r=r.$blk();}if(r&&r.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetInt((new $Int64(0,r)));$s=40;case 40:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 9:s=b.int64();$s=41;case 41:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetInt(s);$s=42;case 42:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 10:$clone(a,D.Value).SetUint((new $Uint64(0,b.uint8())));$s=18;continue;case 11:t=b.uint16();$s=43;case 43:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetUint((new $Uint64(0,t)));$s=44;case 44:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 12:u=b.uint32();$s=45;case 45:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetUint((new $Uint64(0,u)));$s=46;case 46:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 13:v=b.uint64();$s=47;case 47:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetUint(v);$s=48;case 48:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 14:w=b.uint32();$s=49;case 49:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}x=C.Float32frombits(w);$s=50;case 50:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetFloat((x));$s=51;case 51:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 15:y=b.uint64();$s=52;case 52:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}z=C.Float64frombits(y);$s=53;case 53:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}$r=$clone(a,D.Value).SetFloat(z);$s=54;case 54:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 16:aa=b.uint32();$s=55;case 55:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}ab=C.Float32frombits(aa);$s=56;case 56:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}ac=(ab);ad=b.uint32();$s=57;case 57:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ae=C.Float32frombits(ad);$s=58;case 58:if($c){$c=false;ae=ae.$blk();}if(ae&&ae.$blk!==undefined){break s;}af=(ae);$r=$clone(a,D.Value).SetComplex(new $Complex128(ac,af));$s=59;case 59:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=18;continue;case 17:ag=b.uint64();$s=60;case 60:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}ah=C.Float64frombits(ag);$s=61;case 61:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ai=ah;aj=b.uint64();$s=62;case 62:if($c){$c=false;aj=aj.$blk();}if(aj&&aj.$blk!==undefined){break s;}ak=C.Float64frombits(aj);$s=63;case 63:if($c){$c=false;ak=ak.$blk();}if(ak&&ak.$blk!==undefined){break s;}al=ak;$r=$clone(a,D.Value).SetComplex(new $Complex128(ai,al));$s=64;case 64:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 18:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.value};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.value=function(a){return this.$val.value(a);};O.ptr.prototype.value=function(a){var a,aa,ab,ac,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=$clone(a,D.Value).Kind();if(c===(17)){$s=2;continue;}if(c===(25)){$s=3;continue;}if(c===(23)){$s=4;continue;}if(c===(1)){$s=5;continue;}if((c===(2))||(c===(3))||(c===(4))||(c===(5))||(c===(6))){$s=6;continue;}if((c===(7))||(c===(8))||(c===(9))||(c===(10))||(c===(11))||(c===(12))){$s=7;continue;}if((c===(13))||(c===(14))){$s=8;continue;}if((c===(15))||(c===(16))){$s=9;continue;}$s=10;continue;case 2:d=$clone(a,D.Value).Len();e=0;case 11:if(!(e>0;$s=11;continue;case 12:$s=10;continue;case 3:g=$clone(a,D.Value).Type();h=$clone(a,D.Value).NumField();i=0;case 15:if(!(i>0;$s=15;continue;case 16:$s=10;continue;case 4:n=$clone(a,D.Value).Len();o=0;case 25:if(!(o>0;$s=25;continue;case 26:$s=10;continue;case 5:b.bool($clone(a,D.Value).Bool());$s=10;continue;case 6:q=$clone(a,D.Value).Type().Kind();$s=30;case 30:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}r=q;if(r===(3)){$s=31;continue;}if(r===(4)){$s=32;continue;}if(r===(5)){$s=33;continue;}if(r===(6)){$s=34;continue;}$s=35;continue;case 31:b.int8((((s=$clone(a,D.Value).Int(),s.$low+((s.$high>>31)*4294967296))<<24>>24)));$s=35;continue;case 32:$r=b.int16((((t=$clone(a,D.Value).Int(),t.$low+((t.$high>>31)*4294967296))<<16>>16)));$s=36;case 36:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=35;continue;case 33:$r=b.int32((((u=$clone(a,D.Value).Int(),u.$low+((u.$high>>31)*4294967296))>>0)));$s=37;case 37:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=35;continue;case 34:$r=b.int64($clone(a,D.Value).Int());$s=38;case 38:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 35:case 29:$s=10;continue;case 7:v=$clone(a,D.Value).Type().Kind();$s=40;case 40:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}w=v;if(w===(8)){$s=41;continue;}if(w===(9)){$s=42;continue;}if(w===(10)){$s=43;continue;}if(w===(11)){$s=44;continue;}$s=45;continue;case 41:b.uint8((($clone(a,D.Value).Uint().$low<<24>>>24)));$s=45;continue;case 42:$r=b.uint16((($clone(a,D.Value).Uint().$low<<16>>>16)));$s=46;case 46:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=45;continue;case 43:$r=b.uint32((($clone(a,D.Value).Uint().$low>>>0)));$s=47;case 47:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=45;continue;case 44:$r=b.uint64($clone(a,D.Value).Uint());$s=48;case 48:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 45:case 39:$s=10;continue;case 8:x=$clone(a,D.Value).Type().Kind();$s=50;case 50:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}y=x;if(y===(13)){$s=51;continue;}if(y===(14)){$s=52;continue;}$s=53;continue;case 51:$r=b.uint32(C.Float32bits(($fround($clone(a,D.Value).Float()))));$s=54;case 54:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=53;continue;case 52:$r=b.uint64(C.Float64bits($clone(a,D.Value).Float()));$s=55;case 55:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 53:case 49:$s=10;continue;case 9:z=$clone(a,D.Value).Type().Kind();$s=57;case 57:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}aa=z;if(aa===(15)){$s=58;continue;}if(aa===(16)){$s=59;continue;}$s=60;continue;case 58:ab=$clone(a,D.Value).Complex();$r=b.uint32(C.Float32bits(($fround(ab.$real))));$s=61;case 61:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=b.uint32(C.Float32bits(($fround(ab.$imag))));$s=62;case 62:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=60;continue;case 59:ac=$clone(a,D.Value).Complex();$r=b.uint64(C.Float64bits(ac.$real));$s=63;case 63:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=b.uint64(C.Float64bits(ac.$imag));$s=64;case 64:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 60:case 56:case 10:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.value};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.value=function(a){return this.$val.value(a);};N.ptr.prototype.skip=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=K($clone(a,D.Value));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}b.offset=b.offset+(c)>>0;$s=-1;return;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.skip};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.skip=function(a){return this.$val.skip(a);};O.ptr.prototype.skip=function(a){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=K($clone(a,D.Value));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=$subslice(b.buf,b.offset,(b.offset+d>>0));f=e;g=0;while(true){if(!(g=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+h]=0);g++;}b.offset=b.offset+(d)>>0;$s=-1;return;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.skip};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.skip=function(a){return this.$val.skip(a);};P=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;b=a;if($assertType(b,$Bool,true)[1]||$assertType(b,$Int8,true)[1]||$assertType(b,$Uint8,true)[1]||$assertType(b,Y,true)[1]||$assertType(b,Z,true)[1]||$assertType(b,AA,true)[1]){c=b;return 1;}else if($assertType(b,AH,true)[1]){d=b.$val;return d.$length;}else if($assertType(b,AI,true)[1]){e=b.$val;return e.$length;}else if($assertType(b,X,true)[1]){f=b.$val;return f.$length;}else if($assertType(b,$Int16,true)[1]||$assertType(b,$Uint16,true)[1]||$assertType(b,AB,true)[1]||$assertType(b,AC,true)[1]){g=b;return 2;}else if($assertType(b,AJ,true)[1]){h=b.$val;return $imul(2,h.$length);}else if($assertType(b,AK,true)[1]){i=b.$val;return $imul(2,i.$length);}else if($assertType(b,$Int32,true)[1]||$assertType(b,$Uint32,true)[1]||$assertType(b,AD,true)[1]||$assertType(b,AE,true)[1]){j=b;return 4;}else if($assertType(b,AL,true)[1]){k=b.$val;return $imul(4,k.$length);}else if($assertType(b,AM,true)[1]){l=b.$val;return $imul(4,l.$length);}else if($assertType(b,$Int64,true)[1]||$assertType(b,$Uint64,true)[1]||$assertType(b,AF,true)[1]||$assertType(b,AG,true)[1]){m=b;return 8;}else if($assertType(b,AN,true)[1]){n=b.$val;return $imul(8,n.$length);}else if($assertType(b,AO,true)[1]){o=b.$val;return $imul(8,o.$length);}return 0;};F.methods=[{prop:"Uint16",name:"Uint16",pkg:"",typ:$funcType([X],[$Uint16],false)},{prop:"PutUint16",name:"PutUint16",pkg:"",typ:$funcType([X,$Uint16],[],false)},{prop:"Uint32",name:"Uint32",pkg:"",typ:$funcType([X],[$Uint32],false)},{prop:"PutUint32",name:"PutUint32",pkg:"",typ:$funcType([X,$Uint32],[],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([X],[$Uint64],false)},{prop:"PutUint64",name:"PutUint64",pkg:"",typ:$funcType([X,$Uint64],[],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"GoString",name:"GoString",pkg:"",typ:$funcType([],[$String],false)}];G.methods=[{prop:"Uint16",name:"Uint16",pkg:"",typ:$funcType([X],[$Uint16],false)},{prop:"PutUint16",name:"PutUint16",pkg:"",typ:$funcType([X,$Uint16],[],false)},{prop:"Uint32",name:"Uint32",pkg:"",typ:$funcType([X],[$Uint32],false)},{prop:"PutUint32",name:"PutUint32",pkg:"",typ:$funcType([X,$Uint32],[],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([X],[$Uint64],false)},{prop:"PutUint64",name:"PutUint64",pkg:"",typ:$funcType([X,$Uint64],[],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"GoString",name:"GoString",pkg:"",typ:$funcType([],[$String],false)}];AP.methods=[{prop:"bool",name:"bool",pkg:"encoding/binary",typ:$funcType([],[$Bool],false)},{prop:"uint8",name:"uint8",pkg:"encoding/binary",typ:$funcType([],[$Uint8],false)},{prop:"uint16",name:"uint16",pkg:"encoding/binary",typ:$funcType([],[$Uint16],false)},{prop:"uint32",name:"uint32",pkg:"encoding/binary",typ:$funcType([],[$Uint32],false)},{prop:"uint64",name:"uint64",pkg:"encoding/binary",typ:$funcType([],[$Uint64],false)},{prop:"int8",name:"int8",pkg:"encoding/binary",typ:$funcType([],[$Int8],false)},{prop:"int16",name:"int16",pkg:"encoding/binary",typ:$funcType([],[$Int16],false)},{prop:"int32",name:"int32",pkg:"encoding/binary",typ:$funcType([],[$Int32],false)},{prop:"int64",name:"int64",pkg:"encoding/binary",typ:$funcType([],[$Int64],false)},{prop:"value",name:"value",pkg:"encoding/binary",typ:$funcType([D.Value],[],false)},{prop:"skip",name:"skip",pkg:"encoding/binary",typ:$funcType([D.Value],[],false)}];AQ.methods=[{prop:"bool",name:"bool",pkg:"encoding/binary",typ:$funcType([$Bool],[],false)},{prop:"uint8",name:"uint8",pkg:"encoding/binary",typ:$funcType([$Uint8],[],false)},{prop:"uint16",name:"uint16",pkg:"encoding/binary",typ:$funcType([$Uint16],[],false)},{prop:"uint32",name:"uint32",pkg:"encoding/binary",typ:$funcType([$Uint32],[],false)},{prop:"uint64",name:"uint64",pkg:"encoding/binary",typ:$funcType([$Uint64],[],false)},{prop:"int8",name:"int8",pkg:"encoding/binary",typ:$funcType([$Int8],[],false)},{prop:"int16",name:"int16",pkg:"encoding/binary",typ:$funcType([$Int16],[],false)},{prop:"int32",name:"int32",pkg:"encoding/binary",typ:$funcType([$Int32],[],false)},{prop:"int64",name:"int64",pkg:"encoding/binary",typ:$funcType([$Int64],[],false)},{prop:"value",name:"value",pkg:"encoding/binary",typ:$funcType([D.Value],[],false)},{prop:"skip",name:"skip",pkg:"encoding/binary",typ:$funcType([D.Value],[],false)}];E.init([{prop:"PutUint16",name:"PutUint16",pkg:"",typ:$funcType([X,$Uint16],[],false)},{prop:"PutUint32",name:"PutUint32",pkg:"",typ:$funcType([X,$Uint32],[],false)},{prop:"PutUint64",name:"PutUint64",pkg:"",typ:$funcType([X,$Uint64],[],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Uint16",name:"Uint16",pkg:"",typ:$funcType([X],[$Uint16],false)},{prop:"Uint32",name:"Uint32",pkg:"",typ:$funcType([X],[$Uint32],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([X],[$Uint64],false)}]);F.init("",[]);G.init("",[]);N.init("encoding/binary",[{prop:"order",name:"order",embedded:false,exported:false,typ:E,tag:""},{prop:"buf",name:"buf",embedded:false,exported:false,typ:X,tag:""},{prop:"offset",name:"offset",embedded:false,exported:false,typ:$Int,tag:""}]);O.init("encoding/binary",[{prop:"order",name:"order",embedded:false,exported:false,typ:E,tag:""},{prop:"buf",name:"buf",embedded:false,exported:false,typ:X,tag:""},{prop:"offset",name:"offset",embedded:false,exported:false,typ:$Int,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$pkg.LittleEndian=new F.ptr();$pkg.BigEndian=new G.ptr();U=A.New("binary: varint overflows a 64-bit integer");}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["strings"]=(function(){var $pkg={},$init,C,B,F,D,E,G,A,L,BT,CG,CH,CI,CS,CV,H,I,J,K,AH,AK,AM,AN,AO,AQ,AR,AS,AU,AZ,BA,BB,BC,BF,BU,CA;C=$packages["errors"];B=$packages["github.com/gopherjs/gopherjs/js"];F=$packages["internal/bytealg"];D=$packages["io"];E=$packages["sync"];G=$packages["unicode"];A=$packages["unicode/utf8"];L=$pkg.Builder=$newType(0,$kindStruct,"strings.Builder",true,"strings",true,function(addr_,buf_){this.$val=this;if(arguments.length===0){this.addr=CG.nil;this.buf=CH.nil;return;}this.addr=addr_;this.buf=buf_;});BT=$pkg.asciiSet=$newType(32,$kindArray,"strings.asciiSet",true,"strings",false,null);CG=$ptrType(L);CH=$sliceType($Uint8);CI=$sliceType($String);CS=$ptrType(BT);CV=$arrayType($Uint32,8);H=function(e,f){var e,f;return $parseInt(e.indexOf($global.String.fromCharCode(f)))>>0;};$pkg.IndexByte=H;I=function(e,f){var e,f;return $parseInt(e.indexOf(f))>>0;};$pkg.Index=I;J=function(e,f){var e,f;return $parseInt(e.lastIndexOf(f))>>0;};$pkg.LastIndex=J;K=function(e,f){var e,f,g,h;g=0;if((f.length===0)){return A.RuneCountInString(e)+1>>0;}else if(f.length>e.length){return 0;}else if((f.length===e.length)){if(f===e){return 1;}return 0;}while(true){h=I(e,f);if(h===-1){break;}g=g+(1)>>0;e=$substring(e,(h+f.length>>0));}return g;};$pkg.Count=K;L.ptr.prototype.String=function(){var e;e=this;return($bytesToString(e.buf));};L.prototype.String=function(){return this.$val.String();};L.ptr.prototype.copyCheck=function(){var e;e=this;if(e.addr===CG.nil){e.addr=e;}else if(!(e.addr===e)){$panic(new $String("strings: illegal use of non-zero Builder copied by value"));}};L.prototype.copyCheck=function(){return this.$val.copyCheck();};L.ptr.prototype.Len=function(){var e;e=this;return e.buf.$length;};L.prototype.Len=function(){return this.$val.Len();};L.ptr.prototype.Cap=function(){var e;e=this;return e.buf.$capacity;};L.prototype.Cap=function(){return this.$val.Cap();};L.ptr.prototype.Reset=function(){var e;e=this;e.addr=CG.nil;e.buf=CH.nil;};L.prototype.Reset=function(){return this.$val.Reset();};L.ptr.prototype.grow=function(e){var e,f,g;f=this;g=$makeSlice(CH,f.buf.$length,(($imul(2,f.buf.$capacity))+e>>0));$copySlice(g,f.buf);f.buf=g;};L.prototype.grow=function(e){return this.$val.grow(e);};L.ptr.prototype.Grow=function(e){var e,f;f=this;f.copyCheck();if(e<0){$panic(new $String("strings.Builder.Grow: negative count"));}if((f.buf.$capacity-f.buf.$length>>0)>>24)));return[1,$ifaceNil];}g=f.buf.$length;if((f.buf.$capacity-g>>0)<4){f.grow(4);}h=A.EncodeRune($subslice(f.buf,g,(g+4>>0)),e);f.buf=$subslice(f.buf,0,(g+h>>0));return[h,$ifaceNil];};L.prototype.WriteRune=function(e){return this.$val.WriteRune(e);};L.ptr.prototype.WriteString=function(e){var e,f;f=this;f.copyCheck();f.buf=$appendSlice(f.buf,e);return[e.length,$ifaceNil];};L.prototype.WriteString=function(e){return this.$val.WriteString(e);};AH=function(e,f){var e,f,g,h,i,j,k,l,m;g=A.RuneCountInString(e);if(f<0||f>g){f=g;}h=$makeSlice(CI,f);i=0;while(true){if(!(i<(f-1>>0))){break;}j=A.DecodeRuneInString(e);k=j[0];l=j[1];((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]=$substring(e,0,l));e=$substring(e,l);if(k===65533){((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]="\xEF\xBF\xBD");}i=i+(1)>>0;}if(f>0){(m=f-1>>0,((m<0||m>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+m]=e));}return h;};AK=function(e,f){var e,f;return I(e,f)>=0;};$pkg.Contains=AK;AM=function(e,f){var e,f;return AN(e,f)>=0;};$pkg.ContainsRune=AM;AN=function(e,f){var e,f,g,h,i,j,k;if(0<=f&&f<128){return H(e,((f<<24>>>24)));}else if((f===65533)){g=e;h=0;while(true){if(!(h8){g=BU(f);h=$clone(g[0],BT);i=g[1];if(i){j=0;while(true){if(!(j>0;}return-1;}}k=e;l=0;while(true){if(!(l>0;while(true){if(!(g>=0)){break;}if(e.charCodeAt(g)===f){return g;}g=g-(1)>>0;}return-1;};$pkg.LastIndexByte=AQ;AR=function(e,f,g,h){var e,f,g,h,i,j,k;if(h===0){return CI.nil;}if(f===""){return AH(e,h);}if(h<0){h=K(e,f)+1>>0;}i=$makeSlice(CI,h);h=h-(1)>>0;j=0;while(true){if(!(j=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]=$substring(e,0,(k+g>>0)));e=$substring(e,(k+f.length>>0));j=j+(1)>>0;}((j<0||j>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]=e);return $subslice(i,0,(j+1>>0));};AS=function(e,f,g){var e,f,g;return AR(e,f,0,g);};$pkg.SplitN=AS;AU=function(e,f){var e,f;return AR(e,f,0,-1);};$pkg.Split=AU;AZ=function(e,f){var e,f,g,h,i,j,k,l,m;g=e.$length;if(g===(0)){return"";}else if(g===(1)){return(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]);}h=$imul(f.length,((e.$length-1>>0)));i=0;while(true){if(!(i=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+i]).length)>>0;i=i+(1)>>0;}j=new L.ptr(CG.nil,CH.nil);j.Grow(h);j.WriteString((0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]));k=$subslice(e,1);l=0;while(true){if(!(l=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+l]);j.WriteString(f);j.WriteString(m);l++;}return j.String();};$pkg.Join=AZ;BA=function(e,f){var e,f;return e.length>=f.length&&$substring(e,0,f.length)===f;};$pkg.HasPrefix=BA;BB=function(e,f){var e,f;return e.length>=f.length&&$substring(e,(e.length-f.length>>0))===f;};$pkg.HasSuffix=BB;BC=function(e,f){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:g=new L.ptr(CG.nil,CH.nil);h=f;i=0;case 1:if(!(i>0);g.WriteString($substring(f,0,k));if(n>=0){g.WriteRune(n);}f=$substring(f,(k+o>>0));$s=2;continue;$s=1;continue;case 2:if(g.Cap()===0){$s=-1;return f;}q=f;r=0;case 4:if(!(r=0){if(v<128){g.WriteByte(((v<<24>>>24)));}else{g.WriteRune(v);}}r+=s[1];$s=4;continue;case 5:$s=-1;return g.String();}return;}if($f===undefined){$f={$blk:BC};}$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Map=BC;BF=function(e){var e,f,g,h,i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=true;g=false;h=f;i=g;j=0;while(true){if(!(j=128){h=false;break;}i=i||(k>=65&&k<=90);j=j+(1)>>0;}if(h){if(!i){$s=-1;return e;}l=new L.ptr(CG.nil,CH.nil);l.Grow(e.length);m=0;while(true){if(!(m=65&&n<=90){n=n+(32)<<24>>>24;}l.WriteByte(n);m=m+(1)>>0;}$s=-1;return l.String();}o=BC(G.ToLower,e);$s=1;case 1:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}$s=-1;return o;}return;}if($f===undefined){$f={$blk:BF};}$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.$s=$s;$f.$r=$r;return $f;};$pkg.ToLower=BF;BU=function(e){var e,f,g,h,i,j,k,l,m,n,o;f=CV.zero();g=false;h=0;while(true){if(!(h=128){j=$clone(f,BT);k=false;BT.copy(f,j);g=k;return[f,g];}l=i>>>5<<24>>>24;((l<0||l>=f.length)?($throwRuntimeError("index out of range"),undefined):f[l]=((((l<0||l>=f.length)?($throwRuntimeError("index out of range"),undefined):f[l])|(((m=((((i&31)>>>0)>>>0)),m<32?(1<>>0)))>>>0));h=h+(1)>>0;}n=$clone(f,BT);o=true;BT.copy(f,n);g=o;return[f,g];};BT.prototype.contains=function(e){var e,f,g,h;f=this.$val;return!((((((g=e>>>5<<24>>>24,(f.nilCheck,((g<0||g>=f.length)?($throwRuntimeError("index out of range"),undefined):f[g])))&(((h=((((e&31)>>>0)>>>0)),h<32?(1<>>0)))>>>0))===0));};$ptrType(BT).prototype.contains=function(e){return(new BT(this.$get())).contains(e);};CA=function(e,f){var e,f;if(BA(e,f)){return $substring(e,f.length);}return e;};$pkg.TrimPrefix=CA;CG.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"copyCheck",name:"copyCheck",pkg:"strings",typ:$funcType([],[],false)},{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Cap",name:"Cap",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Reset",name:"Reset",pkg:"",typ:$funcType([],[],false)},{prop:"grow",name:"grow",pkg:"strings",typ:$funcType([$Int],[],false)},{prop:"Grow",name:"Grow",pkg:"",typ:$funcType([$Int],[],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([CH],[$Int,$error],false)},{prop:"WriteByte",name:"WriteByte",pkg:"",typ:$funcType([$Uint8],[$error],false)},{prop:"WriteRune",name:"WriteRune",pkg:"",typ:$funcType([$Int32],[$Int,$error],false)},{prop:"WriteString",name:"WriteString",pkg:"",typ:$funcType([$String],[$Int,$error],false)}];CS.methods=[{prop:"contains",name:"contains",pkg:"strings",typ:$funcType([$Uint8],[$Bool],false)}];L.init("strings",[{prop:"addr",name:"addr",embedded:false,exported:false,typ:CG,tag:""},{prop:"buf",name:"buf",embedded:false,exported:false,typ:CH,tag:""}]);BT.init($Uint32,8);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=C.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["regexp/syntax"]=(function(){var $pkg={},$init,C,B,D,A,E,F,G,H,M,N,O,P,Z,AM,BK,BL,BN,BQ,BV,BW,CA,CB,CC,CD,CE,CF,CG,CH,CI,CJ,CK,CL,CM,CN,CO,CP,CQ,CR,J,K,L,AA,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BM,I,Q,R,S,T,U,V,W,X,Y,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AN,AO,AP,AQ,BP,BR,BS,BT,BU,BX,BY,BZ;C=$packages["sort"];B=$packages["strconv"];D=$packages["strings"];A=$packages["unicode"];E=$packages["unicode/utf8"];F=$pkg.patchList=$newType(4,$kindUint32,"syntax.patchList",true,"regexp/syntax",false,null);G=$pkg.frag=$newType(0,$kindStruct,"syntax.frag",true,"regexp/syntax",false,function(i_,out_){this.$val=this;if(arguments.length===0){this.i=0;this.out=0;return;}this.i=i_;this.out=out_;});H=$pkg.compiler=$newType(0,$kindStruct,"syntax.compiler",true,"regexp/syntax",false,function(p_){this.$val=this;if(arguments.length===0){this.p=CE.nil;return;}this.p=p_;});M=$pkg.Error=$newType(0,$kindStruct,"syntax.Error",true,"regexp/syntax",true,function(Code_,Expr_){this.$val=this;if(arguments.length===0){this.Code="";this.Expr="";return;}this.Code=Code_;this.Expr=Expr_;});N=$pkg.ErrorCode=$newType(8,$kindString,"syntax.ErrorCode",true,"regexp/syntax",true,null);O=$pkg.Flags=$newType(2,$kindUint16,"syntax.Flags",true,"regexp/syntax",true,null);P=$pkg.parser=$newType(0,$kindStruct,"syntax.parser",true,"regexp/syntax",false,function(flags_,stack_,free_,numCap_,wholeRegexp_,tmpClass_){this.$val=this;if(arguments.length===0){this.flags=0;this.stack=CH.nil;this.free=CG.nil;this.numCap=0;this.wholeRegexp="";this.tmpClass=CA.nil;return;}this.flags=flags_;this.stack=stack_;this.free=free_;this.numCap=numCap_;this.wholeRegexp=wholeRegexp_;this.tmpClass=tmpClass_;});Z=$pkg.charGroup=$newType(0,$kindStruct,"syntax.charGroup",true,"regexp/syntax",false,function(sign_,class$1_){this.$val=this;if(arguments.length===0){this.sign=0;this.class$1=CA.nil;return;}this.sign=sign_;this.class$1=class$1_;});AM=$pkg.ranges=$newType(0,$kindStruct,"syntax.ranges",true,"regexp/syntax",false,function(p_){this.$val=this;if(arguments.length===0){this.p=CK.nil;return;}this.p=p_;});BK=$pkg.Prog=$newType(0,$kindStruct,"syntax.Prog",true,"regexp/syntax",true,function(Inst_,Start_,NumCap_){this.$val=this;if(arguments.length===0){this.Inst=CF.nil;this.Start=0;this.NumCap=0;return;}this.Inst=Inst_;this.Start=Start_;this.NumCap=NumCap_;});BL=$pkg.InstOp=$newType(1,$kindUint8,"syntax.InstOp",true,"regexp/syntax",true,null);BN=$pkg.EmptyOp=$newType(1,$kindUint8,"syntax.EmptyOp",true,"regexp/syntax",true,null);BQ=$pkg.Inst=$newType(0,$kindStruct,"syntax.Inst",true,"regexp/syntax",true,function(Op_,Out_,Arg_,Rune_){this.$val=this;if(arguments.length===0){this.Op=0;this.Out=0;this.Arg=0;this.Rune=CA.nil;return;}this.Op=Op_;this.Out=Out_;this.Arg=Arg_;this.Rune=Rune_;});BV=$pkg.Regexp=$newType(0,$kindStruct,"syntax.Regexp",true,"regexp/syntax",true,function(Op_,Flags_,Sub_,Sub0_,Rune_,Rune0_,Min_,Max_,Cap_,Name_){this.$val=this;if(arguments.length===0){this.Op=0;this.Flags=0;this.Sub=CH.nil;this.Sub0=CI.zero();this.Rune=CA.nil;this.Rune0=CJ.zero();this.Min=0;this.Max=0;this.Cap=0;this.Name="";return;}this.Op=Op_;this.Flags=Flags_;this.Sub=Sub_;this.Sub0=Sub0_;this.Rune=Rune_;this.Rune0=Rune0_;this.Min=Min_;this.Max=Max_;this.Cap=Cap_;this.Name=Name_;});BW=$pkg.Op=$newType(1,$kindUint8,"syntax.Op",true,"regexp/syntax",true,null);CA=$sliceType($Int32);CB=$sliceType(A.Range16);CC=$sliceType(A.Range32);CD=$sliceType($String);CE=$ptrType(BK);CF=$sliceType(BQ);CG=$ptrType(BV);CH=$sliceType(CG);CI=$arrayType(CG,1);CJ=$arrayType($Int32,2);CK=$ptrType(CA);CL=$ptrType(A.RangeTable);CM=$ptrType(D.Builder);CN=$sliceType($Uint8);CO=$ptrType(H);CP=$ptrType(M);CQ=$ptrType(P);CR=$ptrType(BQ);F.prototype.next=function(a){var a,b,c,d,e;b=this.$val;e=(c=a.Inst,d=b>>>1>>>0,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]));if(((b&1)>>>0)===0){return((e.Out>>>0));}return((e.Arg>>>0));};$ptrType(F).prototype.next=function(a){return new F(this.$get()).next(a);};F.prototype.patch=function(a,b){var a,b,c,d,e,f;c=this.$val;while(true){if(!(!((c===0)))){break;}f=(d=a.Inst,e=c>>>1>>>0,((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]));if(((c&1)>>>0)===0){c=((f.Out>>>0));f.Out=b;}else{c=((f.Arg>>>0));f.Arg=b;}}};$ptrType(F).prototype.patch=function(a,b){return new F(this.$get()).patch(a,b);};F.prototype.append=function(a,b){var a,b,c,d,e,f,g,h;c=this.$val;if(c===0){return b;}if(b===0){return c;}d=c;while(true){e=new F(d).next(a);if(e===0){break;}d=e;}h=(f=a.Inst,g=d>>>1>>>0,((g<0||g>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]));if(((d&1)>>>0)===0){h.Out=((b>>>0));}else{h.Arg=((b>>>0));}return c;};$ptrType(F).prototype.append=function(a,b){return new F(this.$get()).append(a,b);};I=function(a){var a,b,c;b=new H.ptr(CE.nil);b.init();c=$clone(b.compile(a),G);new F(c.out).patch(b.p,b.inst(4).i);b.p.Start=((c.i>>0));return[b.p,$ifaceNil];};$pkg.Compile=I;H.ptr.prototype.init=function(){var a;a=this;a.p=new BK.ptr(CF.nil,0,0);a.p.NumCap=2;a.inst(5);};H.prototype.init=function(){return this.$val.init();};H.ptr.prototype.compile=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;b=this;c=a.Op;if(c===(1)){return b.fail();}else if(c===(2)){return b.nop();}else if(c===(3)){if(a.Rune.$length===0){return b.nop();}d=new G.ptr(0,0);e=a.Rune;f=0;while(true){if(!(f>0)),a.Flags),G);if(g===0){G.copy(d,h);}else{G.copy(d,b.cat($clone(d,G),$clone(h,G)));}f++;}return d;}else if(c===(4)){return b.rune(a.Rune,a.Flags);}else if(c===(5)){return b.rune(J,0);}else if(c===(6)){return b.rune(K,0);}else if(c===(7)){return b.empty(1);}else if(c===(8)){return b.empty(2);}else if(c===(9)){return b.empty(4);}else if(c===(10)){return b.empty(8);}else if(c===(11)){return b.empty(16);}else if(c===(12)){return b.empty(32);}else if(c===(13)){i=$clone(b.cap((((a.Cap<<1>>0)>>>0))),G);k=$clone(b.compile((j=a.Sub,(0>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+0]))),G);l=$clone(b.cap(((((a.Cap<<1>>0)|1)>>>0))),G);return b.cat($clone(b.cat($clone(i,G),$clone(k,G)),G),$clone(l,G));}else if(c===(14)){return b.star($clone(b.compile((m=a.Sub,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0]))),G),!((((a.Flags&32)>>>0)===0)));}else if(c===(15)){return b.plus($clone(b.compile((n=a.Sub,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0]))),G),!((((a.Flags&32)>>>0)===0)));}else if(c===(16)){return b.quest($clone(b.compile((o=a.Sub,(0>=o.$length?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+0]))),G),!((((a.Flags&32)>>>0)===0)));}else if(c===(18)){if(a.Sub.$length===0){return b.nop();}p=new G.ptr(0,0);q=a.Sub;r=0;while(true){if(!(r=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+r]);if(s===0){G.copy(p,b.compile(t));}else{G.copy(p,b.cat($clone(p,G),$clone(b.compile(t),G)));}r++;}return p;}else if(c===(19)){u=new G.ptr(0,0);v=a.Sub;w=0;while(true){if(!(w=v.$length)?($throwRuntimeError("index out of range"),undefined):v.$array[v.$offset+w]);G.copy(u,b.alt($clone(u,G),$clone(b.compile(x),G)));w++;}return u;}$panic(new $String("regexp: unhandled case in compile"));};H.prototype.compile=function(a){return this.$val.compile(a);};H.ptr.prototype.inst=function(a){var a,b,c;b=this;c=new G.ptr(((b.p.Inst.$length>>>0)),0);b.p.Inst=$append(b.p.Inst,new BQ.ptr(a,0,0,CA.nil));return c;};H.prototype.inst=function(a){return this.$val.inst(a);};H.ptr.prototype.nop=function(){var a,b;a=this;b=$clone(a.inst(6),G);b.out=(((b.i<<1>>>0)>>>0));return b;};H.prototype.nop=function(){return this.$val.nop();};H.ptr.prototype.fail=function(){var a;a=this;return new G.ptr(0,0);};H.prototype.fail=function(){return this.$val.fail();};H.ptr.prototype.cap=function(a){var a,b,c,d,e;b=this;c=$clone(b.inst(2),G);c.out=(((c.i<<1>>>0)>>>0));(d=b.p.Inst,e=c.i,((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e])).Arg=a;if(b.p.NumCap<(((a>>0))+1>>0)){b.p.NumCap=((a>>0))+1>>0;}return c;};H.prototype.cap=function(a){return this.$val.cap(a);};H.ptr.prototype.cat=function(a,b){var a,b,c;c=this;if((a.i===0)||(b.i===0)){return new G.ptr(0,0);}new F(a.out).patch(c.p,b.i);return new G.ptr(a.i,b.out);};H.prototype.cat=function(a,b){return this.$val.cat(a,b);};H.ptr.prototype.alt=function(a,b){var a,b,c,d,e,f,g;c=this;if(a.i===0){return b;}if(b.i===0){return a;}d=$clone(c.inst(0),G);g=(e=c.p.Inst,f=d.i,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));g.Out=a.i;g.Arg=b.i;d.out=new F(a.out).append(c.p,b.out);return d;};H.prototype.alt=function(a,b){return this.$val.alt(a,b);};H.ptr.prototype.quest=function(a,b){var a,b,c,d,e,f,g;c=this;d=$clone(c.inst(0),G);g=(e=c.p.Inst,f=d.i,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));if(b){g.Arg=a.i;d.out=(((d.i<<1>>>0)>>>0));}else{g.Out=a.i;d.out=(((((d.i<<1>>>0)|1)>>>0)>>>0));}d.out=new F(d.out).append(c.p,a.out);return d;};H.prototype.quest=function(a,b){return this.$val.quest(a,b);};H.ptr.prototype.star=function(a,b){var a,b,c,d,e,f,g;c=this;d=$clone(c.inst(0),G);g=(e=c.p.Inst,f=d.i,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));if(b){g.Arg=a.i;d.out=(((d.i<<1>>>0)>>>0));}else{g.Out=a.i;d.out=(((((d.i<<1>>>0)|1)>>>0)>>>0));}new F(a.out).patch(c.p,d.i);return d;};H.prototype.star=function(a,b){return this.$val.star(a,b);};H.ptr.prototype.plus=function(a,b){var a,b,c;c=this;return new G.ptr(a.i,c.star($clone(a,G),b).out);};H.prototype.plus=function(a,b){return this.$val.plus(a,b);};H.ptr.prototype.empty=function(a){var a,b,c,d,e;b=this;c=$clone(b.inst(3),G);(d=b.p.Inst,e=c.i,((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e])).Arg=((a>>>0));c.out=(((c.i<<1>>>0)>>>0));return c;};H.prototype.empty=function(a){return this.$val.empty(a);};H.ptr.prototype.rune=function(a,b){var a,b,c,d,e,f,g;c=this;d=$clone(c.inst(7),G);g=(e=c.p.Inst,f=d.i,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));g.Rune=a;b=(b&(1))>>>0;if(!((a.$length===1))||(A.SimpleFold((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]))===(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]))){b=(b&~(1))<<16>>>16;}g.Arg=((b>>>0));d.out=(((d.i<<1>>>0)>>>0));if((((b&1)>>>0)===0)&&((a.$length===1)||(a.$length===2)&&((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])===(1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])))){g.Op=8;}else if((a.$length===2)&&((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])===0)&&((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])===1114111)){g.Op=9;}else if((a.$length===4)&&((0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0])===0)&&((1>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+1])===9)&&((2>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+2])===11)&&((3>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+3])===1114111)){g.Op=10;}return d;};H.prototype.rune=function(a,b){return this.$val.rune(a,b);};BW.prototype.String=function(){var a,b;a=this.$val;if(1<=a&&a<=19){a=a-(1)<<24>>>24;return $substring("NoMatchEmptyMatchLiteralCharClassAnyCharNotNLAnyCharBeginLineEndLineBeginTextEndTextWordBoundaryNoWordBoundaryCaptureStarPlusQuestRepeatConcatAlternate",((a<0||a>=L.length)?($throwRuntimeError("index out of range"),undefined):L[a]),(b=a+1<<24>>>24,((b<0||b>=L.length)?($throwRuntimeError("index out of range"),undefined):L[b])));}else if((a===128)){return"opPseudo";}else{return"Op("+B.FormatInt((new $Int64(0,a)),10)+")";}};$ptrType(BW).prototype.String=function(){return new BW(this.$get()).String();};M.ptr.prototype.Error=function(){var a;a=this;return"error parsing regexp: "+new N(a.Code).String()+": `"+a.Expr+"`";};M.prototype.Error=function(){return this.$val.Error();};N.prototype.String=function(){var a;a=this.$val;return(a);};$ptrType(N).prototype.String=function(){return new N(this.$get()).String();};P.ptr.prototype.newRegexp=function(a){var a,b,c;b=this;c=b.free;if(!(c===CG.nil)){b.free=c.Sub0[0];BV.copy(c,new BV.ptr(0,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,""));}else{c=new BV.ptr(0,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");}c.Op=a;return c;};P.prototype.newRegexp=function(a){return this.$val.newRegexp(a);};P.ptr.prototype.reuse=function(a){var a,b;b=this;a.Sub0[0]=b.free;b.free=a;};P.prototype.reuse=function(a){return this.$val.reuse(a);};P.ptr.prototype.push=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;b=this;if((a.Op===4)&&(a.Rune.$length===2)&&((c=a.Rune,(0>=c.$length?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+0]))===(d=a.Rune,(1>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+1])))){if(b.maybeConcat((s=a.Rune,(0>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+0])),(b.flags&~1)<<16>>>16)){return CG.nil;}a.Op=3;a.Rune=$subslice(a.Rune,0,1);a.Flags=(b.flags&~1)<<16>>>16;}else if((a.Op===4)&&(a.Rune.$length===4)&&((e=a.Rune,(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]))===(f=a.Rune,(1>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+1])))&&((g=a.Rune,(2>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+2]))===(h=a.Rune,(3>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+3])))&&(A.SimpleFold((i=a.Rune,(0>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+0])))===(j=a.Rune,(2>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+2])))&&(A.SimpleFold((k=a.Rune,(2>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+2])))===(l=a.Rune,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])))||(a.Op===4)&&(a.Rune.$length===2)&&(((m=a.Rune,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0]))+1>>0)===(n=a.Rune,(1>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+1])))&&(A.SimpleFold((o=a.Rune,(0>=o.$length?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+0])))===(p=a.Rune,(1>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+1])))&&(A.SimpleFold((q=a.Rune,(1>=q.$length?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+1])))===(r=a.Rune,(0>=r.$length?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+0])))){if(b.maybeConcat((t=a.Rune,(0>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+0])),(b.flags|1)>>>0)){return CG.nil;}a.Op=3;a.Rune=$subslice(a.Rune,0,1);a.Flags=(b.flags|1)>>>0;}else{b.maybeConcat(-1,0);}b.stack=$append(b.stack,a);return a;};P.prototype.push=function(a){return this.$val.push(a);};P.ptr.prototype.maybeConcat=function(a,b){var a,b,c,d,e,f,g,h,i,j,k;c=this;d=c.stack.$length;if(d<2){return false;}g=(e=c.stack,f=d-1>>0,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));j=(h=c.stack,i=d-2>>0,((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]));if(!((g.Op===3))||!((j.Op===3))||!((((g.Flags&1)>>>0)===((j.Flags&1)>>>0)))){return false;}j.Rune=$appendSlice(j.Rune,g.Rune);if(a>=0){g.Rune=$subslice(new CA(g.Rune0),0,1);(k=g.Rune,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]=a));g.Flags=b;return true;}c.stack=$subslice(c.stack,0,(d-1>>0));c.reuse(g);return false;};P.prototype.maybeConcat=function(a,b){return this.$val.maybeConcat(a,b);};P.ptr.prototype.newLiteral=function(a,b){var a,b,c,d;c=this;d=c.newRegexp(3);d.Flags=b;if(!((((b&1)>>>0)===0))){a=Q(a);}d.Rune0[0]=a;d.Rune=$subslice(new CA(d.Rune0),0,1);return d;};P.prototype.newLiteral=function(a,b){return this.$val.newLiteral(a,b);};Q=function(a){var a,b,c;if(a<65||a>125251){return a;}b=a;c=a;a=A.SimpleFold(a);while(true){if(!(!((a===c)))){break;}if(b>a){b=a;}a=A.SimpleFold(a);}return b;};P.ptr.prototype.literal=function(a){var a,b;b=this;b.push(b.newLiteral(a,b.flags));};P.prototype.literal=function(a){return this.$val.literal(a);};P.ptr.prototype.op=function(a){var a,b,c;b=this;c=b.newRegexp(a);c.Flags=b.flags;return b.push(c);};P.prototype.op=function(a){return this.$val.op(a);};P.ptr.prototype.repeat=function(a,b,c,d,e,f){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;g=this;h=g.flags;if(!((((g.flags&64)>>>0)===0))){if(e.length>0&&(e.charCodeAt(0)===63)){e=$substring(e,1);h=(h^(32))<<16>>>16;}if(!(f==="")){return["",new M.ptr("invalid nested repetition operator",$substring(f,0,(f.length-e.length>>0)))];}}i=g.stack.$length;if(i===0){return["",new M.ptr("missing argument to repetition operator",$substring(d,0,(d.length-e.length>>0)))];}l=(j=g.stack,k=i-1>>0,((k<0||k>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+k]));if(l.Op>=128){return["",new M.ptr("missing argument to repetition operator",$substring(d,0,(d.length-e.length>>0)))];}m=g.newRegexp(a);m.Min=b;m.Max=c;m.Flags=h;m.Sub=$subslice(new CH(m.Sub0),0,1);(n=m.Sub,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0]=l));(o=g.stack,p=i-1>>0,((p<0||p>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]=m));if((a===17)&&(b>=2||c>=2)&&!R(m,1000)){return["",new M.ptr("invalid repeat count",$substring(d,0,(d.length-e.length>>0)))];}return[e,$ifaceNil];};P.prototype.repeat=function(a,b,c,d,e,f){return this.$val.repeat(a,b,c,d,e,f);};R=function(a,b){var a,b,c,d,e,f,g;if(a.Op===17){c=a.Max;if(c===0){return true;}if(c<0){c=a.Min;}if(c>b){return false;}if(c>0){b=(d=b/(c),(d===d&&d!==1/0&&d!==-1/0)?d>>0:$throwRuntimeError("integer divide by zero"));}}e=a.Sub;f=0;while(true){if(!(f=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]);if(!R(g,b)){return false;}f++;}return true;};P.ptr.prototype.concat=function(){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;a.maybeConcat(-1,0);b=a.stack.$length;while(true){if(!(b>0&&(c=a.stack,d=b-1>>0,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d])).Op<128)){break;}b=b-(1)>>0;}e=$subslice(a.stack,b);a.stack=$subslice(a.stack,0,b);if(e.$length===0){$s=-1;return a.push(a.newRegexp(2));}f=a.collapse(e,18);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=a.push(f);$s=2;case 2:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$s=-1;return g;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.concat};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.concat=function(){return this.$val.concat();};P.ptr.prototype.alternate=function(){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.stack.$length;while(true){if(!(b>0&&(c=a.stack,d=b-1>>0,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d])).Op<128)){break;}b=b-(1)>>0;}e=$subslice(a.stack,b);a.stack=$subslice(a.stack,0,b);if(e.$length>0){$s=1;continue;}$s=2;continue;case 1:$r=S((f=e.$length-1>>0,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f])));$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 2:if(e.$length===0){$s=-1;return a.push(a.newRegexp(1));}g=a.collapse(e,19);$s=4;case 4:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=a.push(g);$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$s=-1;return h;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.alternate};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.alternate=function(){return this.$val.alternate();};S=function(a){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=a.Op;if(b===(4)){$s=2;continue;}$s=3;continue;case 2:c=AC((a.$ptr_Rune||(a.$ptr_Rune=new CK(function(){return this.$target.Rune;},function($v){this.$target.Rune=$v;},a))));$s=4;case 4:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}a.Rune=c;if((a.Rune.$length===2)&&((d=a.Rune,(0>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+0]))===0)&&((e=a.Rune,(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]))===1114111)){a.Rune=CA.nil;a.Op=6;$s=-1;return;}if((a.Rune.$length===4)&&((f=a.Rune,(0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0]))===0)&&((g=a.Rune,(1>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+1]))===9)&&((h=a.Rune,(2>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+2]))===11)&&((i=a.Rune,(3>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+3]))===1114111)){a.Rune=CA.nil;a.Op=5;$s=-1;return;}if((a.Rune.$capacity-a.Rune.$length>>0)>100){a.Rune=$appendSlice($subslice(new CA(a.Rune0),0,0),a.Rune);}case 3:case 1:$s=-1;return;}return;}if($f===undefined){$f={$blk:S};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};P.ptr.prototype.collapse=function(a,b){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(a.$length===1){$s=-1;return(0>=a.$length?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+0]);}d=c.newRegexp(b);d.Sub=$subslice(new CH(d.Sub0),0,0);e=a;f=0;while(true){if(!(f=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]);if(g.Op===b){d.Sub=$appendSlice(d.Sub,g.Sub);c.reuse(g);}else{d.Sub=$append(d.Sub,g);}f++;}if(b===19){$s=1;continue;}$s=2;continue;case 1:h=c.factor(d.Sub);$s=3;case 3:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}d.Sub=h;if(d.Sub.$length===1){i=d;d=(j=d.Sub,(0>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+0]));c.reuse(i);}case 2:$s=-1;return d;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.collapse};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.collapse=function(a,b){return this.$val.collapse(a,b);};P.ptr.prototype.factor=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(a.$length<2){$s=-1;return a;}c=CA.nil;d=0;e=0;f=$subslice(a,0,0);g=0;case 1:if(!(g<=a.$length)){$s=2;continue;}h=CA.nil;i=0;if(g=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+g]));h=j[0];i=j[1];if(i===d){k=0;while(true){if(!(k=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+k])===((k<0||k>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+k])))){break;}k=k+(1)>>0;}if(k>0){c=$subslice(c,0,k);g=g+(1)>>0;$s=1;continue;}}case 4:if(g===e){$s=5;continue;}if(g===(e+1>>0)){$s=6;continue;}$s=7;continue;case 5:$s=8;continue;case 6:f=$append(f,((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]));$s=8;continue;case 7:l=b.newRegexp(3);l.Flags=d;l.Rune=$appendSlice($subslice(l.Rune,0,0),c);m=e;while(true){if(!(m=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+m]=b.removeLeadingString(((m<0||m>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+m]),c.$length));m=m+(1)>>0;}n=b.collapse($subslice(a,e,g),19);$s=9;case 9:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}o=n;p=b.newRegexp(18);p.Sub=$append($subslice(p.Sub,0,0),l,o);f=$append(f,p);case 8:e=g;c=h;d=i;g=g+(1)>>0;$s=1;continue;case 2:a=f;e=0;f=$subslice(a,0,0);q=CG.nil;r=0;case 10:if(!(r<=a.$length)){$s=11;continue;}s=CG.nil;if(r=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+r]));if(!(q===CG.nil)&&q.Equal(s)&&(W(q)||((q.Op===17)&&(q.Min===q.Max)&&W((t=q.Sub,(0>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+0])))))){r=r+(1)>>0;$s=10;continue;}case 13:if(r===e){$s=14;continue;}if(r===(e+1>>0)){$s=15;continue;}$s=16;continue;case 14:$s=17;continue;case 15:f=$append(f,((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]));$s=17;continue;case 16:u=q;v=e;while(true){if(!(v=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+v]=b.removeLeadingRegexp(((v<0||v>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+v]),w));v=v+(1)>>0;}x=b.collapse($subslice(a,e,r),19);$s=18;case 18:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}y=x;z=b.newRegexp(18);z.Sub=$append($subslice(z.Sub,0,0),u,y);f=$append(f,z);case 17:e=r;q=s;r=r+(1)>>0;$s=10;continue;case 11:a=f;e=0;f=$subslice(a,0,0);aa=0;case 19:if(!(aa<=a.$length)){$s=20;continue;}if(aa=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+aa]))){$s=21;continue;}$s=22;continue;case 21:aa=aa+(1)>>0;$s=19;continue;case 22:if(aa===e){$s=23;continue;}if(aa===(e+1>>0)){$s=24;continue;}$s=25;continue;case 23:$s=26;continue;case 24:f=$append(f,((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]));$s=26;continue;case 25:ab=e;ac=e+1>>0;while(true){if(!(ac=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ab]).Op<((ac<0||ac>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ac]).Op||(((ab<0||ab>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ab]).Op===((ac<0||ac>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ac]).Op)&&((ab<0||ab>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ab]).Rune.$length<((ac<0||ac>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ac]).Rune.$length){ab=ac;}ac=ac+(1)>>0;}ad=((ab<0||ab>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ab]);ae=((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]);((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]=ad);((ab<0||ab>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ab]=ae);af=e+1>>0;while(true){if(!(af=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]),((af<0||af>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+af]));b.reuse(((af<0||af>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+af]));af=af+(1)>>0;}$r=S(((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]));$s=27;case 27:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}f=$append(f,((e<0||e>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]));case 26:if(aa=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+aa]));}e=aa+1>>0;aa=aa+(1)>>0;$s=19;continue;case 20:a=f;e=0;f=$subslice(a,0,0);ag=a;ah=0;while(true){if(!(ah>0)=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ai]).Op===2)&&((aj=ai+1>>0,((aj<0||aj>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+aj])).Op===2)){ah++;continue;}f=$append(f,((ai<0||ai>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+ai]));ah++;}a=f;$s=-1;return a;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.factor};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.factor=function(a){return this.$val.factor(a);};P.ptr.prototype.leadingString=function(a){var a,b,c;b=this;if((a.Op===18)&&a.Sub.$length>0){a=(c=a.Sub,(0>=c.$length?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+0]));}if(!((a.Op===3))){return[CA.nil,0];}return[a.Rune,(a.Flags&1)>>>0];};P.prototype.leadingString=function(a){return this.$val.leadingString(a);};P.ptr.prototype.removeLeadingString=function(a,b){var a,b,c,d,e,f,g,h,i;c=this;if((a.Op===18)&&a.Sub.$length>0){e=(d=a.Sub,(0>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+0]));e=c.removeLeadingString(e,b);(f=a.Sub,(0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0]=e));if(e.Op===2){c.reuse(e);g=a.Sub.$length;if((g===(0))||(g===(1))){a.Op=2;a.Sub=CH.nil;}else if(g===(2)){h=a;a=(i=a.Sub,(1>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+1]));c.reuse(h);}else{$copySlice(a.Sub,$subslice(a.Sub,1));a.Sub=$subslice(a.Sub,0,(a.Sub.$length-1>>0));}}return a;}if(a.Op===3){a.Rune=$subslice(a.Rune,0,$copySlice(a.Rune,$subslice(a.Rune,b)));if(a.Rune.$length===0){a.Op=2;}}return a;};P.prototype.removeLeadingString=function(a,b){return this.$val.removeLeadingString(a,b);};P.ptr.prototype.leadingRegexp=function(a){var a,b,c,d;b=this;if(a.Op===2){return CG.nil;}if((a.Op===18)&&a.Sub.$length>0){d=(c=a.Sub,(0>=c.$length?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+0]));if(d.Op===2){return CG.nil;}return d;}return a;};P.prototype.leadingRegexp=function(a){return this.$val.leadingRegexp(a);};P.ptr.prototype.removeLeadingRegexp=function(a,b){var a,b,c,d,e,f,g;c=this;if((a.Op===18)&&a.Sub.$length>0){if(b){c.reuse((d=a.Sub,(0>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+0])));}a.Sub=$subslice(a.Sub,0,$copySlice(a.Sub,$subslice(a.Sub,1)));e=a.Sub.$length;if(e===(0)){a.Op=2;a.Sub=CH.nil;}else if(e===(1)){f=a;a=(g=a.Sub,(0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0]));c.reuse(f);}return a;}if(b){c.reuse(a);}return c.newRegexp(2);};P.prototype.removeLeadingRegexp=function(a,b){return this.$val.removeLeadingRegexp(a,b);};T=function(a,b){var a,b,c,d,e,f,g;c=new BV.ptr(3,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");c.Flags=b;c.Rune=$subslice(new CA(c.Rune0),0,0);d=a;e=0;while(true){if(!(e=c.Rune.$capacity){c.Rune=(new CA($stringToRunes(a)));break;}c.Rune=$append(c.Rune,g);e+=f[1];}return c;};U=function(a,b){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(!((((b&2)>>>0)===0))){c=AN(a);if(!($interfaceIsEqual(c,$ifaceNil))){$s=-1;return[CG.nil,c];}$s=-1;return[T(a,b),$ifaceNil];}d=new P.ptr(0,CH.nil,CG.nil,0,"",CA.nil);e=$ifaceNil;f=0;g=0;h="";d.flags=b;d.wholeRegexp=a;i=a;case 1:if(!(!(i===""))){$s=2;continue;}j="";k=i.charCodeAt(0);if(k===(40)){$s=4;continue;}if(k===(124)){$s=5;continue;}if(k===(41)){$s=6;continue;}if(k===(94)){$s=7;continue;}if(k===(36)){$s=8;continue;}if(k===(46)){$s=9;continue;}if(k===(91)){$s=10;continue;}if((k===(42))||(k===(43))||(k===(63))){$s=11;continue;}if(k===(123)){$s=12;continue;}if(k===(92)){$s=13;continue;}$s=14;continue;case 4:if(!((((d.flags&64)>>>0)===0))&&i.length>=2&&(i.charCodeAt(1)===63)){l=d.parsePerlFlags(i);i=l[0];e=l[1];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}$s=3;continue;}d.numCap=d.numCap+(1)>>0;d.op(128).Cap=d.numCap;i=$substring(i,1);$s=15;continue;case 5:m=d.parseVerticalBar();$s=16;case 16:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}e=m;if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}i=$substring(i,1);$s=15;continue;case 6:n=d.parseRightParen();$s=17;case 17:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}e=n;if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}i=$substring(i,1);$s=15;continue;case 7:if(!((((d.flags&16)>>>0)===0))){d.op(9);}else{d.op(7);}i=$substring(i,1);$s=15;continue;case 8:if(!((((d.flags&16)>>>0)===0))){o=d.op(10);o.Flags=(o.Flags|(256))>>>0;}else{d.op(8);}i=$substring(i,1);$s=15;continue;case 9:if(!((((d.flags&8)>>>0)===0))){d.op(6);}else{d.op(5);}i=$substring(i,1);$s=15;continue;case 10:q=d.parseClass(i);$s=18;case 18:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;i=p[0];e=p[1];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}$s=15;continue;case 11:r=i;s=i.charCodeAt(0);if(s===(42)){g=14;}else if(s===(43)){g=15;}else if(s===(63)){g=16;}t=$substring(i,1);u=d.repeat(g,0,0,r,t,h);t=u[0];e=u[1];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}j=r;i=t;$s=15;continue;case 12:g=17;v=i;w=d.parseRepeat(i);x=w[0];y=w[1];z=w[2];aa=w[3];if(!aa){d.literal(123);i=$substring(i,1);$s=3;continue;}if(x<0||x>1000||y>1000||y>=0&&x>y){$s=-1;return[CG.nil,new M.ptr("invalid repeat count",$substring(v,0,(v.length-z.length>>0)))];}ab=d.repeat(g,x,y,v,z,h);z=ab[0];e=ab[1];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}j=v;i=z;$s=15;continue;case 13:if(!((((d.flags&64)>>>0)===0))&&i.length>=2){ac=i.charCodeAt(1);if(ac===(65)){d.op(9);i=$substring(i,2);$s=3;continue s;}else if(ac===(98)){d.op(11);i=$substring(i,2);$s=3;continue s;}else if(ac===(66)){d.op(12);i=$substring(i,2);$s=3;continue s;}else if(ac===(67)){$s=-1;return[CG.nil,new M.ptr("invalid escape sequence",$substring(i,0,2))];}else if(ac===(81)){ad="";ae=D.Index(i,"\\E");if(ae<0){ad=$substring(i,2);i="";}else{ad=$substring(i,2,ae);i=$substring(i,(ae+2>>0));}while(true){if(!(!(ad===""))){break;}af=AO(ad);ag=af[0];ah=af[1];ai=af[2];if(!($interfaceIsEqual(ai,$ifaceNil))){$s=-1;return[CG.nil,ai];}d.literal(ag);ad=ah;}$s=3;continue s;}else if(ac===(122)){d.op(10);i=$substring(i,2);$s=3;continue s;}}aj=d.newRegexp(4);aj.Flags=d.flags;if(i.length>=2&&((i.charCodeAt(1)===112)||(i.charCodeAt(1)===80))){$s=19;continue;}$s=20;continue;case 19:al=d.parseUnicodeClass(i,$subslice(new CA(aj.Rune0),0,0));$s=21;case 21:if($c){$c=false;al=al.$blk();}if(al&&al.$blk!==undefined){break s;}ak=al;am=ak[0];an=ak[1];ao=ak[2];if(!($interfaceIsEqual(ao,$ifaceNil))){$s=-1;return[CG.nil,ao];}if(!(am===CA.nil)){aj.Rune=am;i=an;d.push(aj);$s=3;continue s;}case 20:aq=d.parsePerlClassEscape(i,$subslice(new CA(aj.Rune0),0,0));$s=22;case 22:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ap=aq;ar=ap[0];as=ap[1];if(!(ar===CA.nil)){aj.Rune=ar;i=as;d.push(aj);$s=3;continue s;}d.reuse(aj);at=d.parseEscape(i);f=at[0];i=at[1];e=at[2];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}d.literal(f);$s=15;continue;case 14:au=AO(i);f=au[0];i=au[1];e=au[2];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[CG.nil,e];}d.literal(f);case 15:case 3:h=j;$s=1;continue;case 2:av=d.concat();$s=23;case 23:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}av;aw=d.swapVerticalBar();$s=26;case 26:if($c){$c=false;aw=aw.$blk();}if(aw&&aw.$blk!==undefined){break s;}if(aw){$s=24;continue;}$s=25;continue;case 24:d.stack=$subslice(d.stack,0,(d.stack.$length-1>>0));case 25:ax=d.alternate();$s=27;case 27:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ax;ay=d.stack.$length;if(!((ay===1))){$s=-1;return[CG.nil,new M.ptr("missing closing )",a)];}$s=-1;return[(az=d.stack,(0>=az.$length?($throwRuntimeError("index out of range"),undefined):az.$array[az.$offset+0])),$ifaceNil];}return;}if($f===undefined){$f={$blk:U};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Parse=U;P.ptr.prototype.parseRepeat=function(a){var a,b,c,d,e,f,g,h,i;b=0;c=0;d="";e=false;f=this;if(a===""||!((a.charCodeAt(0)===123))){return[b,c,d,e];}a=$substring(a,1);g=false;h=f.parseInt(a);b=h[0];a=h[1];g=h[2];if(!g){return[b,c,d,e];}if(a===""){return[b,c,d,e];}if(!((a.charCodeAt(0)===44))){c=b;}else{a=$substring(a,1);if(a===""){return[b,c,d,e];}if(a.charCodeAt(0)===125){c=-1;}else{i=f.parseInt(a);c=i[0];a=i[1];g=i[2];if(!g){return[b,c,d,e];}else if(c<0){b=-1;}}}if(a===""||!((a.charCodeAt(0)===125))){return[b,c,d,e];}d=$substring(a,1);e=true;return[b,c,d,e];};P.prototype.parseRepeat=function(a){return this.$val.parseRepeat(a);};P.ptr.prototype.parsePerlFlags=function(a){var a,aa,ab,ac,ad,ae,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;b="";c=$ifaceNil;d=this;e=a;if(e.length>4&&(e.charCodeAt(2)===80)&&(e.charCodeAt(3)===60)){f=D.IndexRune(e,62);if(f<0){c=AN(e);if(!($interfaceIsEqual(c,$ifaceNil))){g="";h=c;b=g;c=h;return[b,c];}i="";j=new M.ptr("invalid named capture",a);b=i;c=j;return[b,c];}k=$substring(e,0,(f+1>>0));l=$substring(e,4,f);c=AN(l);if(!($interfaceIsEqual(c,$ifaceNil))){m="";n=c;b=m;c=n;return[b,c];}if(!V(l)){o="";p=new M.ptr("invalid named capture",k);b=o;c=p;return[b,c];}d.numCap=d.numCap+(1)>>0;q=d.op(128);q.Cap=d.numCap;q.Name=l;r=$substring(e,(f+1>>0));s=$ifaceNil;b=r;c=s;return[b,c];}t=0;e=$substring(e,2);u=d.flags;v=1;w=false;Loop:while(true){if(!(!(e===""))){break;}x=AO(e);t=x[0];e=x[1];c=x[2];if(!($interfaceIsEqual(c,$ifaceNil))){y="";z=c;b=y;c=z;return[b,c];}aa=t;if(aa===(105)){u=(u|(1))>>>0;w=true;}else if(aa===(109)){u=(u&~(16))<<16>>>16;w=true;}else if(aa===(115)){u=(u|(8))>>>0;w=true;}else if(aa===(85)){u=(u|(32))>>>0;w=true;}else if(aa===(45)){if(v<0){break Loop;}v=-1;u=~u<<16>>>16;w=false;}else if((aa===(58))||(aa===(41))){if(v<0){if(!w){break Loop;}u=~u<<16>>>16;}if(t===58){d.op(128);}d.flags=u;ab=e;ac=$ifaceNil;b=ab;c=ac;return[b,c];}else{break Loop;}}ad="";ae=new M.ptr("invalid or unsupported Perl syntax",$substring(a,0,(a.length-e.length>>0)));b=ad;c=ae;return[b,c];};P.prototype.parsePerlFlags=function(a){return this.$val.parsePerlFlags(a);};V=function(a){var a,b,c,d,e;if(a===""){return false;}b=a;c=0;while(true){if(!(c=2&&(a.charCodeAt(0)===48)&&48<=a.charCodeAt(1)&&a.charCodeAt(1)<=57){return[b,c,d];}f=a;while(true){if(!(!(a==="")&&48<=a.charCodeAt(0)&&a.charCodeAt(0)<=57)){break;}a=$substring(a,1);}c=a;d=true;f=$substring(f,0,(f.length-a.length>>0));g=0;while(true){if(!(g=100000000){b=-1;break;}b=(($imul(b,10))+((f.charCodeAt(g)>>0))>>0)-48>>0;g=g+(1)>>0;}return[b,c,d];};P.prototype.parseInt=function(a){return this.$val.parseInt(a);};W=function(a){var a;return(a.Op===3)&&(a.Rune.$length===1)||(a.Op===4)||(a.Op===5)||(a.Op===6);};X=function(a,b){var a,b,c,d,e,f,g,h;c=a.Op;if(c===(3)){return(a.Rune.$length===1)&&((d=a.Rune,(0>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+0]))===b);}else if(c===(4)){e=0;while(true){if(!(e=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+e]))<=b&&b<=(g=a.Rune,h=e+1>>0,((h<0||h>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h]))){return true;}e=e+(2)>>0;}return false;}else if(c===(5)){return!((b===10));}else if(c===(6)){return true;}return false;};P.ptr.prototype.parseVerticalBar=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.concat();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}b;c=a.swapVerticalBar();$s=4;case 4:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}if(!c){$s=2;continue;}$s=3;continue;case 2:a.op(129);case 3:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.parseVerticalBar};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.parseVerticalBar=function(){return this.$val.parseVerticalBar();};Y=function(a,b){var a,b,c,d,e,f,g,h;switch(0){default:c=a.Op;if(c===(6)){}else if(c===(5)){if(X(b,10)){a.Op=6;}}else if(c===(4)){if(b.Op===3){a.Rune=AD(a.Rune,(d=b.Rune,(0>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+0])),b.Flags);}else{a.Rune=AG(a.Rune,b.Rune);}}else if(c===(3)){if(((e=b.Rune,(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]))===(f=a.Rune,(0>=f.$length?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+0])))&&(b.Flags===a.Flags)){break;}a.Op=4;a.Rune=AD($subslice(a.Rune,0,0),(g=a.Rune,(0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0])),a.Flags);a.Rune=AD(a.Rune,(h=b.Rune,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0])),b.Flags);}}};P.ptr.prototype.swapVerticalBar=function(){var a,aa,ab,ac,ad,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.stack.$length;if(b>=3&&((c=a.stack,d=b-2>>0,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d])).Op===129)&&W((e=a.stack,f=b-1>>0,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f])))&&W((g=a.stack,h=b-3>>0,((h<0||h>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h])))){k=(i=a.stack,j=b-1>>0,((j<0||j>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]));n=(l=a.stack,m=b-3>>0,((m<0||m>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m]));if(k.Op>n.Op){o=n;p=k;k=o;n=p;(q=a.stack,r=b-3>>0,((r<0||r>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+r]=n));}Y(n,k);a.reuse(k);a.stack=$subslice(a.stack,0,(b-1>>0));$s=-1;return true;}if(b>=2){$s=1;continue;}$s=2;continue;case 1:u=(s=a.stack,t=b-1>>0,((t<0||t>=s.$length)?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+t]));x=(v=a.stack,w=b-2>>0,((w<0||w>=v.$length)?($throwRuntimeError("index out of range"),undefined):v.$array[v.$offset+w]));if(x.Op===129){$s=3;continue;}$s=4;continue;case 3:if(b>=3){$s=5;continue;}$s=6;continue;case 5:$r=S((y=a.stack,z=b-3>>0,((z<0||z>=y.$length)?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+z])));$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 6:(aa=a.stack,ab=b-2>>0,((ab<0||ab>=aa.$length)?($throwRuntimeError("index out of range"),undefined):aa.$array[aa.$offset+ab]=u));(ac=a.stack,ad=b-1>>0,((ad<0||ad>=ac.$length)?($throwRuntimeError("index out of range"),undefined):ac.$array[ac.$offset+ad]=x));$s=-1;return true;case 4:case 2:$s=-1;return false;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.swapVerticalBar};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.swapVerticalBar=function(){return this.$val.swapVerticalBar();};P.ptr.prototype.parseRightParen=function(){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.concat();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}b;c=a.swapVerticalBar();$s=4;case 4:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}if(c){$s=2;continue;}$s=3;continue;case 2:a.stack=$subslice(a.stack,0,(a.stack.$length-1>>0));case 3:d=a.alternate();$s=5;case 5:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d;e=a.stack.$length;if(e<2){$s=-1;return new M.ptr("unexpected )",a.wholeRegexp);}h=(f=a.stack,g=e-1>>0,((g<0||g>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]));k=(i=a.stack,j=e-2>>0,((j<0||j>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]));a.stack=$subslice(a.stack,0,(e-2>>0));if(!((k.Op===128))){$s=-1;return new M.ptr("unexpected )",a.wholeRegexp);}a.flags=k.Flags;if(k.Cap===0){a.push(h);}else{k.Op=13;k.Sub=$subslice(new CH(k.Sub0),0,1);(l=k.Sub,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0]=h));a.push(k);}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.parseRightParen};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.parseRightParen=function(){return this.$val.parseRightParen();};P.ptr.prototype.parseEscape=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;b=0;c="";d=$ifaceNil;e=this;f=$substring(a,1);if(f===""){g=0;h="";i=new M.ptr("trailing backslash at end of expression","");b=g;c=h;d=i;return[b,c,d];}j=AO(f);k=j[0];f=j[1];d=j[2];if(!($interfaceIsEqual(d,$ifaceNil))){l=0;m="";n=d;b=l;c=m;d=n;return[b,c,d];}Switch:switch(0){default:o=k;if((o===(49))||(o===(50))||(o===(51))||(o===(52))||(o===(53))||(o===(54))||(o===(55))){if(f===""||f.charCodeAt(0)<48||f.charCodeAt(0)>55){break;}b=k-48>>0;p=1;while(true){if(!(p<3)){break;}if(f===""||f.charCodeAt(0)<48||f.charCodeAt(0)>55){break;}b=(($imul(b,8))+((f.charCodeAt(0)>>0))>>0)-48>>0;f=$substring(f,1);p=p+(1)>>0;}q=b;r=f;s=$ifaceNil;b=q;c=r;d=s;return[b,c,d];}else if(o===(48)){b=k-48>>0;p=1;while(true){if(!(p<3)){break;}if(f===""||f.charCodeAt(0)<48||f.charCodeAt(0)>55){break;}b=(($imul(b,8))+((f.charCodeAt(0)>>0))>>0)-48>>0;f=$substring(f,1);p=p+(1)>>0;}t=b;u=f;v=$ifaceNil;b=t;c=u;d=v;return[b,c,d];}else if(o===(120)){if(f===""){break;}w=AO(f);k=w[0];f=w[1];d=w[2];if(!($interfaceIsEqual(d,$ifaceNil))){x=0;y="";z=d;b=x;c=y;d=z;return[b,c,d];}if(k===123){aa=0;b=0;while(true){if(f===""){break Switch;}ab=AO(f);k=ab[0];f=ab[1];d=ab[2];if(!($interfaceIsEqual(d,$ifaceNil))){ac=0;ad="";ae=d;b=ac;c=ad;d=ae;return[b,c,d];}if(k===125){break;}af=AQ(k);if(af<0){break Switch;}b=($imul(b,16))+af>>0;if(b>1114111){break Switch;}aa=aa+(1)>>0;}if(aa===0){break Switch;}ag=b;ah=f;ai=$ifaceNil;b=ag;c=ah;d=ai;return[b,c,d];}aj=AQ(k);ak=AO(f);k=ak[0];f=ak[1];d=ak[2];if(!($interfaceIsEqual(d,$ifaceNil))){al=0;am="";an=d;b=al;c=am;d=an;return[b,c,d];}ao=AQ(k);if(aj<0||ao<0){break;}ap=($imul(aj,16))+ao>>0;aq=f;ar=$ifaceNil;b=ap;c=aq;d=ar;return[b,c,d];}else if(o===(97)){as=7;at=f;au=d;b=as;c=at;d=au;return[b,c,d];}else if(o===(102)){av=12;aw=f;ax=d;b=av;c=aw;d=ax;return[b,c,d];}else if(o===(110)){ay=10;az=f;ba=d;b=ay;c=az;d=ba;return[b,c,d];}else if(o===(114)){bb=13;bc=f;bd=d;b=bb;c=bc;d=bd;return[b,c,d];}else if(o===(116)){be=9;bf=f;bg=d;b=be;c=bf;d=bg;return[b,c,d];}else if(o===(118)){bh=11;bi=f;bj=d;b=bh;c=bi;d=bj;return[b,c,d];}else if(k<128&&!AP(k)){bk=k;bl=f;bm=$ifaceNil;b=bk;c=bl;d=bm;return[b,c,d];}}bn=0;bo="";bp=new M.ptr("invalid escape sequence",$substring(a,0,(a.length-f.length>>0)));b=bn;c=bo;d=bp;return[b,c,d];};P.prototype.parseEscape=function(a){return this.$val.parseEscape(a);};P.ptr.prototype.parseClassChar=function(a,b){var a,b,c,d,e,f,g,h,i,j,k;c=0;d="";e=$ifaceNil;f=this;if(a===""){g=0;h="";i=new M.ptr("missing closing ]",b);c=g;d=h;e=i;return[c,d,e];}if(a.charCodeAt(0)===92){j=f.parseEscape(a);c=j[0];d=j[1];e=j[2];return[c,d,e];}k=AO(a);c=k[0];d=k[1];e=k[2];return[c,d,e];};P.prototype.parseClassChar=function(a,b){return this.$val.parseClassChar(a,b);};P.ptr.prototype.parsePerlClassEscape=function(a,b){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=CA.nil;d="";e=this;if((((e.flags&64)>>>0)===0)||a.length<2||!((a.charCodeAt(0)===92))){$s=-1;return[c,d];}g=$clone((f=AU[$String.keyFor($substring(a,0,2))],f!==undefined?f.v:new Z.ptr(0,CA.nil)),Z);if(g.sign===0){$s=-1;return[c,d];}i=e.appendGroup(b,$clone(g,Z));$s=1;case 1:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;j=$substring(a,2);c=h;d=j;$s=-1;return[c,d];}return;}if($f===undefined){$f={$blk:P.ptr.prototype.parsePerlClassEscape};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.parsePerlClassEscape=function(a,b){return this.$val.parsePerlClassEscape(a,b);};P.ptr.prototype.parseNamedClass=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=CA.nil;d="";e=$ifaceNil;f=this;if(a.length<2||!((a.charCodeAt(0)===91))||!((a.charCodeAt(1)===58))){$s=-1;return[c,d,e];}g=D.Index($substring(a,2),":]");if(g<0){$s=-1;return[c,d,e];}g=g+(2)>>0;h=$substring(a,0,(g+2>>0));i=$substring(a,(g+2>>0));j=h;a=i;l=$clone((k=BJ[$String.keyFor(j)],k!==undefined?k.v:new Z.ptr(0,CA.nil)),Z);if(l.sign===0){m=CA.nil;n="";o=new M.ptr("invalid character class range",j);c=m;d=n;e=o;$s=-1;return[c,d,e];}q=f.appendGroup(b,$clone(l,Z));$s=1;case 1:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;r=a;s=$ifaceNil;c=p;d=r;e=s;$s=-1;return[c,d,e];}return;}if($f===undefined){$f={$blk:P.ptr.prototype.parseNamedClass};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.parseNamedClass=function(a,b){return this.$val.parseNamedClass(a,b);};P.ptr.prototype.appendGroup=function(a,b){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(((c.flags&1)>>>0)===0){$s=1;continue;}$s=2;continue;case 1:if(b.sign<0){a=AI(a,b.class$1);}else{a=AG(a,b.class$1);}$s=3;continue;case 2:d=$subslice(c.tmpClass,0,0);d=AH(d,b.class$1);c.tmpClass=d;e=AC((c.$ptr_tmpClass||(c.$ptr_tmpClass=new CK(function(){return this.$target.tmpClass;},function($v){this.$target.tmpClass=$v;},c))));$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;if(b.sign<0){a=AI(a,d);}else{a=AG(a,d);}case 3:$s=-1;return a;}return;}if($f===undefined){$f={$blk:P.ptr.prototype.appendGroup};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.appendGroup=function(a,b){return this.$val.appendGroup(a,b);};AB=function(a){var a,b,c,d,e,f,g;if(a==="Any"){return[AA,AA];}c=(b=A.Categories[$String.keyFor(a)],b!==undefined?b.v:CL.nil);if(!(c===CL.nil)){return[c,(d=A.FoldCategory[$String.keyFor(a)],d!==undefined?d.v:CL.nil)];}f=(e=A.Scripts[$String.keyFor(a)],e!==undefined?e.v:CL.nil);if(!(f===CL.nil)){return[f,(g=A.FoldScript[$String.keyFor(a)],g!==undefined?g.v:CL.nil)];}return[CL.nil,CL.nil];};P.ptr.prototype.parseUnicodeClass=function(a,b){var a,aa,ab,ac,ad,ae,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=CA.nil;d="";e=$ifaceNil;f=this;if((((f.flags&128)>>>0)===0)||a.length<2||!((a.charCodeAt(0)===92))||!((a.charCodeAt(1)===112))&&!((a.charCodeAt(1)===80))){$s=-1;return[c,d,e];}g=1;if(a.charCodeAt(1)===80){g=-1;}h=$substring(a,2);i=AO(h);j=i[0];h=i[1];e=i[2];if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[c,d,e];}k="";l="";m=k;n=l;if(!((j===123))){m=$substring(a,0,(a.length-h.length>>0));n=$substring(m,2);}else{o=D.IndexRune(a,125);if(o<0){e=AN(a);if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[c,d,e];}p=CA.nil;q="";r=new M.ptr("invalid character class range",a);c=p;d=q;e=r;$s=-1;return[c,d,e];}s=$substring(a,0,(o+1>>0));t=$substring(a,(o+1>>0));m=s;h=t;n=$substring(a,3,o);e=AN(n);if(!($interfaceIsEqual(e,$ifaceNil))){$s=-1;return[c,d,e];}}if(!(n==="")&&(n.charCodeAt(0)===94)){g=-g;n=$substring(n,1);}u=AB(n);v=u[0];w=u[1];if(v===CL.nil){x=CA.nil;y="";z=new M.ptr("invalid character class range",m);c=x;d=y;e=z;$s=-1;return[c,d,e];}if((((f.flags&1)>>>0)===0)||w===CL.nil){$s=1;continue;}$s=2;continue;case 1:if(g>0){b=AJ(b,v);}else{b=AK(b,v);}$s=3;continue;case 2:aa=$subslice(f.tmpClass,0,0);aa=AJ(aa,v);aa=AJ(aa,w);f.tmpClass=aa;ab=AC((f.$ptr_tmpClass||(f.$ptr_tmpClass=new CK(function(){return this.$target.tmpClass;},function($v){this.$target.tmpClass=$v;},f))));$s=4;case 4:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}aa=ab;if(g>0){b=AG(b,aa);}else{b=AI(b,aa);}case 3:ac=b;ad=h;ae=$ifaceNil;c=ac;d=ad;e=ae;$s=-1;return[c,d,e];}return;}if($f===undefined){$f={$blk:P.ptr.prototype.parseUnicodeClass};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.parseUnicodeClass=function(a,b){return this.$val.parseUnicodeClass(a,b);};P.ptr.prototype.parseClass=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;ba=$f.ba;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b="";c=$ifaceNil;d=this;e=$substring(a,1);f=d.newRegexp(4);f.Flags=d.flags;f.Rune=$subslice(new CA(f.Rune0),0,0);g=1;if(!(e==="")&&(e.charCodeAt(0)===94)){g=-1;e=$substring(e,1);if(((d.flags&4)>>>0)===0){f.Rune=$append(f.Rune,10,10);}}h=f.Rune;i=true;case 1:if(!(e===""||!((e.charCodeAt(0)===93))||i)){$s=2;continue;}if(!(e==="")&&(e.charCodeAt(0)===45)&&(((d.flags&64)>>>0)===0)&&!i&&((e.length===1)||!((e.charCodeAt(1)===93)))){j=E.DecodeRuneInString($substring(e,1));k=j[1];l="";m=new M.ptr("invalid character class range",$substring(e,0,(1+k>>0)));b=l;c=m;$s=-1;return[b,c];}i=false;if(e.length>2&&(e.charCodeAt(0)===91)&&(e.charCodeAt(1)===58)){$s=3;continue;}$s=4;continue;case 3:o=d.parseNamedClass(e,h);$s=5;case 5:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;p=n[0];q=n[1];r=n[2];if(!($interfaceIsEqual(r,$ifaceNil))){s="";t=r;b=s;c=t;$s=-1;return[b,c];}if(!(p===CA.nil)){u=p;v=q;h=u;e=v;$s=1;continue;}case 4:x=d.parseUnicodeClass(e,h);$s=6;case 6:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}w=x;y=w[0];z=w[1];aa=w[2];if(!($interfaceIsEqual(aa,$ifaceNil))){ab="";ac=aa;b=ab;c=ac;$s=-1;return[b,c];}if(!(y===CA.nil)){$s=7;continue;}$s=8;continue;case 7:ad=y;ae=z;h=ad;e=ae;$s=1;continue;case 8:ag=d.parsePerlClassEscape(e,h);$s=9;case 9:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}af=ag;ah=af[0];ai=af[1];if(!(ah===CA.nil)){aj=ah;ak=ai;h=aj;e=ak;$s=1;continue;}al=e;am=0;an=0;ao=am;ap=an;aq=d.parseClassChar(e,a);ao=aq[0];e=aq[1];aa=aq[2];if(!($interfaceIsEqual(aa,$ifaceNil))){ar="";as=aa;b=ar;c=as;$s=-1;return[b,c];}ap=ao;if(e.length>=2&&(e.charCodeAt(0)===45)&&!((e.charCodeAt(1)===93))){e=$substring(e,1);at=d.parseClassChar(e,a);ap=at[0];e=at[1];aa=at[2];if(!($interfaceIsEqual(aa,$ifaceNil))){au="";av=aa;b=au;c=av;$s=-1;return[b,c];}if(ap>0));aw="";ax=new M.ptr("invalid character class range",al);b=aw;c=ax;$s=-1;return[b,c];}}if(((d.flags&1)>>>0)===0){h=AE(h,ao,ap);}else{h=AF(h,ao,ap);}$s=1;continue;case 2:e=$substring(e,1);f.Rune=h;ay=AC((f.$ptr_Rune||(f.$ptr_Rune=new CK(function(){return this.$target.Rune;},function($v){this.$target.Rune=$v;},f))));$s=10;case 10:if($c){$c=false;ay=ay.$blk();}if(ay&&ay.$blk!==undefined){break s;}h=ay;if(g<0){h=AL(h);}f.Rune=h;d.push(f);az=e;ba=$ifaceNil;b=az;c=ba;$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:P.ptr.prototype.parseClass};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.ba=ba;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.parseClass=function(a){return this.$val.parseClass(a);};AC=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=C.Sort((b=new AM.ptr(a),new b.constructor.elem(b)));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=a.$get();if(c.$length<2){$s=-1;return c;}d=2;e=2;while(true){if(!(e=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+e]);g=(h=e+1>>0,((h<0||h>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+h]));i=f;j=g;if(i<=((k=d-1>>0,((k<0||k>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+k]))+1>>0)){if(j>(l=d-1>>0,((l<0||l>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+l]))){(m=d-1>>0,((m<0||m>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+m]=j));}e=e+(2)>>0;continue;}((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=i);(n=d+1>>0,((n<0||n>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+n]=j));d=d+(2)>>0;e=e+(2)>>0;}$s=-1;return $subslice(c,0,d);}return;}if($f===undefined){$f={$blk:AC};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};AD=function(a,b,c){var a,b,c;if(!((((c&1)>>>0)===0))){return AF(a,b,b);}return AE(a,b,b);};AE=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,k,l,m;d=a.$length;e=2;while(true){if(!(e<=4)){break;}if(d>=e){f=(g=d-e>>0,((g<0||g>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+g]));h=(i=(d-e>>0)+1>>0,((i<0||i>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+i]));j=f;k=h;if(b<=(k+1>>0)&&j<=(c+1>>0)){if(b>0,((l<0||l>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+l]=b));}if(c>k){(m=(d-e>>0)+1>>0,((m<0||m>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+m]=c));}return a;}}e=e+(2)>>0;}return $append(a,b,c);};AF=function(a,b,c){var a,b,c,d,e;if(b<=65&&c>=125251){return AE(a,b,c);}if(c<65||b>125251){return AE(a,b,c);}if(b<65){a=AE(a,b,64);b=65;}if(c>125251){a=AE(a,125252,c);c=125251;}d=b;while(true){if(!(d<=c)){break;}a=AE(a,d,d);e=A.SimpleFold(d);while(true){if(!(!((e===d)))){break;}a=AE(a,e,e);e=A.SimpleFold(e);}d=d+(1)>>0;}return a;};AG=function(a,b){var a,b,c,d;c=0;while(true){if(!(c=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+c]),(d=c+1>>0,((d<0||d>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+d])));c=c+(2)>>0;}return a;};AH=function(a,b){var a,b,c,d;c=0;while(true){if(!(c=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+c]),(d=c+1>>0,((d<0||d>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+d])));c=c+(2)>>0;}return a;};AI=function(a,b){var a,b,c,d,e,f,g,h,i;c=0;d=0;while(true){if(!(d=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+d]);f=(g=d+1>>0,((g<0||g>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+g]));h=e;i=f;if(c<=(h-1>>0)){a=AE(a,c,h-1>>0);}c=i+1>>0;d=d+(2)>>0;}if(c<=1114111){a=AE(a,c,1114111);}return a;};AJ=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;c=b.R16;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]),A.Range16);f=((e.Lo>>0));g=((e.Hi>>0));h=((e.Stride>>0));i=f;j=g;k=h;if(k===1){a=AE(a,i,j);d++;continue;}l=i;while(true){if(!(l<=j)){break;}a=AE(a,l,l);l=l+(k)>>0;}d++;}m=b.R32;n=0;while(true){if(!(n=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+n]),A.Range32);p=((o.Lo>>0));q=((o.Hi>>0));r=((o.Stride>>0));s=p;t=q;u=r;if(u===1){a=AE(a,s,t);n++;continue;}v=s;while(true){if(!(v<=t)){break;}a=AE(a,v,v);v=v+(u)>>0;}n++;}return a;};AK=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;c=0;d=b.R16;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]),A.Range16);g=((f.Lo>>0));h=((f.Hi>>0));i=((f.Stride>>0));j=g;k=h;l=i;if(l===1){if(c<=(j-1>>0)){a=AE(a,c,j-1>>0);}c=k+1>>0;e++;continue;}m=j;while(true){if(!(m<=k)){break;}if(c<=(m-1>>0)){a=AE(a,c,m-1>>0);}c=m+1>>0;m=m+(l)>>0;}e++;}n=b.R32;o=0;while(true){if(!(o=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]),A.Range32);q=((p.Lo>>0));r=((p.Hi>>0));s=((p.Stride>>0));t=q;u=r;v=s;if(v===1){if(c<=(t-1>>0)){a=AE(a,c,t-1>>0);}c=u+1>>0;o++;continue;}w=t;while(true){if(!(w<=u)){break;}if(c<=(w-1>>0)){a=AE(a,c,w-1>>0);}c=w+1>>0;w=w+(v)>>0;}o++;}if(c<=1114111){a=AE(a,c,1114111);}return a;};AL=function(a){var a,b,c,d,e,f,g,h,i,j;b=0;c=0;d=0;while(true){if(!(d=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+d]);f=(g=d+1>>0,((g<0||g>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+g]));h=e;i=f;if(b<=(h-1>>0)){((c<0||c>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+c]=b);(j=c+1>>0,((j<0||j>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+j]=(h-1>>0)));c=c+(2)>>0;}b=i+1>>0;d=d+(2)>>0;}a=$subslice(a,0,c);if(b<=1114111){a=$append(a,b,1114111);}return a;};AM.ptr.prototype.Less=function(a,b){var a,b,c,d,e,f;c=this;d=c.p.$get();a=$imul(a,(2));b=$imul(b,(2));return((a<0||a>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+a])<((b<0||b>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+b])||(((a<0||a>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+a])===((b<0||b>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+b]))&&(e=a+1>>0,((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]))>(f=b+1>>0,((f<0||f>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+f]));};AM.prototype.Less=function(a,b){return this.$val.Less(a,b);};AM.ptr.prototype.Len=function(){var a,b;a=this;return(b=a.p.$get().$length/2,(b===b&&b!==1/0&&b!==-1/0)?b>>0:$throwRuntimeError("integer divide by zero"));};AM.prototype.Len=function(){return this.$val.Len();};AM.ptr.prototype.Swap=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l;c=this;d=c.p.$get();a=$imul(a,(2));b=$imul(b,(2));e=((b<0||b>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+b]);f=(g=b+1>>0,((g<0||g>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+g]));h=((a<0||a>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+a]);i=(j=a+1>>0,((j<0||j>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+j]));((a<0||a>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+a]=e);(k=a+1>>0,((k<0||k>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+k]=f));((b<0||b>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+b]=h);(l=b+1>>0,((l<0||l>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+l]=i));};AM.prototype.Swap=function(a,b){return this.$val.Swap(a,b);};AN=function(a){var a,b,c,d;while(true){if(!(!(a===""))){break;}b=E.DecodeRuneInString(a);c=b[0];d=b[1];if((c===65533)&&(d===1)){return new M.ptr("invalid UTF-8",a);}a=$substring(a,d);}return $ifaceNil;};AO=function(a){var a,b,c,d,e,f,g,h,i,j,k,l;b=0;c="";d=$ifaceNil;e=E.DecodeRuneInString(a);b=e[0];f=e[1];if((b===65533)&&(f===1)){g=0;h="";i=new M.ptr("invalid UTF-8",a);b=g;c=h;d=i;return[b,c,d];}j=b;k=$substring(a,f);l=$ifaceNil;b=j;c=k;d=l;return[b,c,d];};AP=function(a){var a;return 48<=a&&a<=57||65<=a&&a<=90||97<=a&&a<=122;};AQ=function(a){var a;if(48<=a&&a<=57){return a-48>>0;}if(97<=a&&a<=102){return(a-97>>0)+10>>0;}if(65<=a&&a<=70){return(a-65>>0)+10>>0;}return-1;};BL.prototype.String=function(){var a;a=this.$val;if(((a>>>0))>=((BM.$length>>>0))){return"";}return((a<0||a>=BM.$length)?($throwRuntimeError("index out of range"),undefined):BM.$array[BM.$offset+a]);};$ptrType(BL).prototype.String=function(){return new BL(this.$get()).String();};BP=function(a){var a;return 65<=a&&a<=90||97<=a&&a<=122||48<=a&&a<=57||(a===95);};$pkg.IsWordChar=BP;BK.ptr.prototype.String=function(){var a,b;a=this;b=new D.Builder.ptr(CM.nil,CN.nil);BS(b,a);return b.String();};BK.prototype.String=function(){return this.$val.String();};BK.ptr.prototype.skipNop=function(a){var a,b,c,d,e,f;b=this;d=(c=b.Inst,((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]));while(true){if(!((d.Op===6)||(d.Op===2))){break;}d=(e=b.Inst,f=d.Out,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));}return d;};BK.prototype.skipNop=function(a){return this.$val.skipNop(a);};BQ.ptr.prototype.op=function(){var a,b,c;a=this;b=a.Op;c=b;if((c===(8))||(c===(9))||(c===(10))){b=7;}return b;};BQ.prototype.op=function(){return this.$val.op();};BK.ptr.prototype.Prefix=function(){var a,b,c,d,e,f,g,h,i,j;a="";b=false;c=this;d=c.skipNop(((c.Start>>>0)));if(!((d.op()===7))||!((d.Rune.$length===1))){e="";f=d.Op===4;a=e;b=f;return[a,b];}g=new D.Builder.ptr(CM.nil,CN.nil);while(true){if(!((d.op()===7)&&(d.Rune.$length===1)&&(((((d.Arg<<16>>>16))&1)>>>0)===0))){break;}g.WriteRune((h=d.Rune,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0])));d=c.skipNop(d.Out);}i=g.String();j=d.Op===4;a=i;b=j;return[a,b];};BK.prototype.Prefix=function(){return this.$val.Prefix();};BK.ptr.prototype.StartCond=function(){var a,b,c,d,e,f,g;a=this;b=0;c=((a.Start>>>0));e=(d=a.Inst,((c<0||c>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+c]));Loop:while(true){f=e.Op;if(f===(3)){b=(b|(((e.Arg<<24>>>24))))>>>0;}else if(f===(5)){return 255;}else if((f===(2))||(f===(6))){}else{break Loop;}c=e.Out;e=(g=a.Inst,((c<0||c>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+c]));}return b;};BK.prototype.StartCond=function(){return this.$val.StartCond();};BQ.ptr.prototype.MatchRune=function(a){var a,b;b=this;return!((b.MatchRunePos(a)===-1));};BQ.prototype.MatchRune=function(a){return this.$val.MatchRune(a);};BQ.ptr.prototype.MatchRunePos=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;b=this;c=b.Rune;d=c.$length;if(d===(0)){return-1;}else if(d===(1)){e=(0>=c.$length?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+0]);if(a===e){return 0;}if(!((((((b.Arg<<16>>>16))&1)>>>0)===0))){f=A.SimpleFold(e);while(true){if(!(!((f===e)))){break;}if(a===f){return 0;}f=A.SimpleFold(f);}}return-1;}else if(d===(2)){if(a>=(0>=c.$length?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+0])&&a<=(1>=c.$length?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+1])){return 0;}return-1;}else if((d===(4))||(d===(6))||(d===(8))){g=0;while(true){if(!(g=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+g])){return-1;}if(a<=(h=g+1>>0,((h<0||h>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+h]))){return(i=g/2,(i===i&&i!==1/0&&i!==-1/0)?i>>0:$throwRuntimeError("integer divide by zero"));}g=g+(2)>>0;}return-1;}j=0;l=(k=c.$length/2,(k===k&&k!==1/0&&k!==-1/0)?k>>0:$throwRuntimeError("integer divide by zero"));while(true){if(!(j>0))/2,(m===m&&m!==1/0&&m!==-1/0)?m>>0:$throwRuntimeError("integer divide by zero"))>>0;p=(o=$imul(2,n),((o<0||o>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+o]));if(p<=a){if(a<=(q=($imul(2,n))+1>>0,((q<0||q>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+q]))){return n;}j=n+1>>0;}else{l=n;}}return-1;};BQ.prototype.MatchRunePos=function(a){return this.$val.MatchRunePos(a);};BQ.ptr.prototype.MatchEmptyWidth=function(a,b){var a,b,c,d;c=this;d=((c.Arg<<24>>>24));if(d===(1)){return(a===10)||(a===-1);}else if(d===(2)){return(b===10)||(b===-1);}else if(d===(4)){return a===-1;}else if(d===(8)){return b===-1;}else if(d===(16)){return!(BP(a)===BP(b));}else if(d===(32)){return BP(a)===BP(b);}$panic(new $String("unknown empty width arg"));};BQ.prototype.MatchEmptyWidth=function(a,b){return this.$val.MatchEmptyWidth(a,b);};BQ.ptr.prototype.String=function(){var a,b;a=this;b=new D.Builder.ptr(CM.nil,CN.nil);BU(b,a);return b.String();};BQ.prototype.String=function(){return this.$val.String();};BR=function(a,b){var a,b,c,d,e;c=b;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]);a.WriteString(e);d++;}};BS=function(a,b){var a,b,c,d,e,f,g,h;c=b.Inst;d=0;while(true){if(!(d=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+e]));h=B.Itoa(e);if(h.length<3){a.WriteString($substring(" ",h.length));}if(e===b.Start){h=h+("*");}BR(a,new CD([h,"\t"]));BU(a,g);BR(a,new CD(["\n"]));d++;}};BT=function(a){var a;return B.FormatUint((new $Uint64(0,a)),10);};BU=function(a,b){var a,b,c;c=b.Op;if(c===(0)){BR(a,new CD(["alt -> ",BT(b.Out),", ",BT(b.Arg)]));}else if(c===(1)){BR(a,new CD(["altmatch -> ",BT(b.Out),", ",BT(b.Arg)]));}else if(c===(2)){BR(a,new CD(["cap ",BT(b.Arg)," -> ",BT(b.Out)]));}else if(c===(3)){BR(a,new CD(["empty ",BT(b.Arg)," -> ",BT(b.Out)]));}else if(c===(4)){BR(a,new CD(["match"]));}else if(c===(5)){BR(a,new CD(["fail"]));}else if(c===(6)){BR(a,new CD(["nop -> ",BT(b.Out)]));}else if(c===(7)){if(b.Rune===CA.nil){BR(a,new CD(["rune "]));}BR(a,new CD(["rune ",B.QuoteToASCII(($runesToString(b.Rune)))]));if(!((((((b.Arg<<16>>>16))&1)>>>0)===0))){BR(a,new CD(["/i"]));}BR(a,new CD([" -> ",BT(b.Out)]));}else if(c===(8)){BR(a,new CD(["rune1 ",B.QuoteToASCII(($runesToString(b.Rune)))," -> ",BT(b.Out)]));}else if(c===(9)){BR(a,new CD(["any -> ",BT(b.Out)]));}else if(c===(10)){BR(a,new CD(["anynotnl -> ",BT(b.Out)]));}};BV.ptr.prototype.Equal=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;b=this;if(b===CG.nil||a===CG.nil){return b===a;}if(!((b.Op===a.Op))){return false;}c=b.Op;if(c===(10)){if(!((((b.Flags&256)>>>0)===((a.Flags&256)>>>0)))){return false;}}else if((c===(3))||(c===(4))){if(!((b.Rune.$length===a.Rune.$length))){return false;}d=b.Rune;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(!((g===(h=a.Rune,((f<0||f>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+f]))))){return false;}e++;}}else if((c===(19))||(c===(18))){if(!((b.Sub.$length===a.Sub.$length))){return false;}i=b.Sub;j=0;while(true){if(!(j=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]);if(!l.Equal((m=a.Sub,((k<0||k>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+k])))){return false;}j++;}}else if((c===(14))||(c===(15))||(c===(16))){if(!((((b.Flags&32)>>>0)===((a.Flags&32)>>>0)))||!(n=b.Sub,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0])).Equal((o=a.Sub,(0>=o.$length?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+0])))){return false;}}else if(c===(17)){if(!((((b.Flags&32)>>>0)===((a.Flags&32)>>>0)))||!((b.Min===a.Min))||!((b.Max===a.Max))||!(p=b.Sub,(0>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+0])).Equal((q=a.Sub,(0>=q.$length?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+0])))){return false;}}else if(c===(13)){if(!((b.Cap===a.Cap))||!(b.Name===a.Name)||!(r=b.Sub,(0>=r.$length?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+0])).Equal((s=a.Sub,(0>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+0])))){return false;}}return true;};BV.prototype.Equal=function(a){return this.$val.Equal(a);};BX=function(a,b){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;switch(0){default:c=b.Op;if(c===(1)){a.WriteString("[^\\x00-\\x{10FFFF}]");}else if(c===(2)){a.WriteString("(?:)");}else if(c===(3)){if(!((((b.Flags&1)>>>0)===0))){a.WriteString("(?i:");}d=b.Rune;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);BY(a,f,false);e++;}if(!((((b.Flags&1)>>>0)===0))){a.WriteString(")");}}else if(c===(4)){if(!(((g=b.Rune.$length%2,g===g?g:$throwRuntimeError("integer divide by zero"))===0))){a.WriteString("[invalid char class]");break;}a.WriteRune(91);if(b.Rune.$length===0){a.WriteString("^\\x00-\\x{10FFFF}");}else if(((h=b.Rune,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0]))===0)&&((i=b.Rune,j=b.Rune.$length-1>>0,((j<0||j>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]))===1114111)){a.WriteRune(94);k=1;while(true){if(!(k<(b.Rune.$length-1>>0))){break;}l=(m=b.Rune,((k<0||k>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+k]))+1>>0;n=(o=b.Rune,p=k+1>>0,((p<0||p>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]))-1>>0;q=l;r=n;BY(a,q,q===45);if(!((q===r))){a.WriteRune(45);BY(a,r,r===45);}k=k+(2)>>0;}}else{s=0;while(true){if(!(s=u.$length)?($throwRuntimeError("index out of range"),undefined):u.$array[u.$offset+s]));v=(w=b.Rune,x=s+1>>0,((x<0||x>=w.$length)?($throwRuntimeError("index out of range"),undefined):w.$array[w.$offset+x]));y=t;z=v;BY(a,y,y===45);if(!((y===z))){a.WriteRune(45);BY(a,z,z===45);}s=s+(2)>>0;}}a.WriteRune(93);}else if(c===(5)){a.WriteString("(?-s:.)");}else if(c===(6)){a.WriteString("(?s:.)");}else if(c===(7)){a.WriteString("(?m:^)");}else if(c===(8)){a.WriteString("(?m:$)");}else if(c===(9)){a.WriteString("\\A");}else if(c===(10)){if(!((((b.Flags&256)>>>0)===0))){a.WriteString("(?-m:$)");}else{a.WriteString("\\z");}}else if(c===(11)){a.WriteString("\\b");}else if(c===(12)){a.WriteString("\\B");}else if(c===(13)){if(!(b.Name==="")){a.WriteString("(?P<");a.WriteString(b.Name);a.WriteRune(62);}else{a.WriteRune(40);}if(!(((aa=b.Sub,(0>=aa.$length?($throwRuntimeError("index out of range"),undefined):aa.$array[aa.$offset+0])).Op===2))){BX(a,(ab=b.Sub,(0>=ab.$length?($throwRuntimeError("index out of range"),undefined):ab.$array[ab.$offset+0])));}a.WriteRune(41);}else if((c===(14))||(c===(15))||(c===(16))||(c===(17))){ad=(ac=b.Sub,(0>=ac.$length?($throwRuntimeError("index out of range"),undefined):ac.$array[ac.$offset+0]));if(ad.Op>13||(ad.Op===3)&&ad.Rune.$length>1){a.WriteString("(?:");BX(a,ad);a.WriteString(")");}else{BX(a,ad);}ae=b.Op;if(ae===(14)){a.WriteRune(42);}else if(ae===(15)){a.WriteRune(43);}else if(ae===(16)){a.WriteRune(63);}else if(ae===(17)){a.WriteRune(123);a.WriteString(B.Itoa(b.Min));if(!((b.Max===b.Min))){a.WriteRune(44);if(b.Max>=0){a.WriteString(B.Itoa(b.Max));}}a.WriteRune(125);}if(!((((b.Flags&32)>>>0)===0))){a.WriteRune(63);}}else if(c===(18)){af=b.Sub;ag=0;while(true){if(!(ag=af.$length)?($throwRuntimeError("index out of range"),undefined):af.$array[af.$offset+ag]);if(ah.Op===19){a.WriteString("(?:");BX(a,ah);a.WriteString(")");}else{BX(a,ah);}ag++;}}else if(c===(19)){ai=b.Sub;aj=0;while(true){if(!(aj=ai.$length)?($throwRuntimeError("index out of range"),undefined):ai.$array[ai.$offset+aj]);if(ak>0){a.WriteRune(124);}BX(a,al);aj++;}}else{a.WriteString(">0)))+">");}}};BV.ptr.prototype.String=function(){var a,b;a=this;b=new D.Builder.ptr(CM.nil,CN.nil);BX(b,a);return b.String();};BV.prototype.String=function(){return this.$val.String();};BY=function(a,b,c){var a,b,c,d,e;if(A.IsPrint(b)){if(D.ContainsRune("\\.+*?()|[]{}^$",b)||c){a.WriteRune(92);}a.WriteRune(b);return;}switch(0){default:d=b;if(d===(7)){a.WriteString("\\a");}else if(d===(12)){a.WriteString("\\f");}else if(d===(10)){a.WriteString("\\n");}else if(d===(13)){a.WriteString("\\r");}else if(d===(9)){a.WriteString("\\t");}else if(d===(11)){a.WriteString("\\v");}else{if(b<256){a.WriteString("\\x");e=B.FormatInt((new $Int64(0,b)),16);if(e.length===1){a.WriteRune(48);}a.WriteString(e);break;}a.WriteString("\\x{");a.WriteString(B.FormatInt((new $Int64(0,b)),16));a.WriteString("}");}}};BV.ptr.prototype.MaxCap=function(){var a,b,c,d,e,f;a=this;b=0;if(a.Op===13){b=a.Cap;}c=a.Sub;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]);f=e.MaxCap();if(b>0));a.capNames(b);return b;};BV.prototype.CapNames=function(){return this.$val.CapNames();};BV.ptr.prototype.capNames=function(a){var a,b,c,d,e,f;b=this;if(b.Op===13){(c=b.Cap,((c<0||c>=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+c]=b.Name));}d=b.Sub;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);f.capNames(a);e++;}};BV.prototype.capNames=function(a){return this.$val.capNames(a);};BV.ptr.prototype.Simplify=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;a=this;if(a===CG.nil){return CG.nil;}b=a.Op;if((b===(13))||(b===(18))||(b===(19))){c=a;d=a.Sub;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);h=g.Simplify();if(c===a&&!(h===g)){c=new BV.ptr(0,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");BV.copy(c,a);c.Rune=CA.nil;c.Sub=$appendSlice($subslice(new CH(c.Sub0),0,0),$subslice(a.Sub,0,f));}if(!(c===a)){c.Sub=$append(c.Sub,h);}e++;}return c;}else if((b===(14))||(b===(15))||(b===(16))){j=(i=a.Sub,(0>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+0])).Simplify();return BZ(a.Op,a.Flags,j,a);}else if(b===(17)){if((a.Min===0)&&(a.Max===0)){return new BV.ptr(2,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");}l=(k=a.Sub,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])).Simplify();if(a.Max===-1){if(a.Min===0){return BZ(14,a.Flags,l,CG.nil);}if(a.Min===1){return BZ(15,a.Flags,l,CG.nil);}m=new BV.ptr(18,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");m.Sub=$subslice(new CH(m.Sub0),0,0);n=0;while(true){if(!(n<(a.Min-1>>0))){break;}m.Sub=$append(m.Sub,l);n=n+(1)>>0;}m.Sub=$append(m.Sub,BZ(15,a.Flags,l,CG.nil));return m;}if((a.Min===1)&&(a.Max===1)){return l;}o=CG.nil;if(a.Min>0){o=new BV.ptr(18,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");o.Sub=$subslice(new CH(o.Sub0),0,0);p=0;while(true){if(!(p>0;}}if(a.Max>a.Min){q=BZ(16,a.Flags,l,CG.nil);r=a.Min+1>>0;while(true){if(!(r>0;}if(o===CG.nil){return q;}o.Sub=$append(o.Sub,q);}if(!(o===CG.nil)){return o;}return new BV.ptr(1,0,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");}return a;};BV.prototype.Simplify=function(){return this.$val.Simplify();};BZ=function(a,b,c,d){var a,b,c,d,e;if(c.Op===2){return c;}if((a===c.Op)&&(((b&32)>>>0)===((c.Flags&32)>>>0))){return c;}if(!(d===CG.nil)&&(d.Op===a)&&(((d.Flags&32)>>>0)===((b&32)>>>0))&&c===(e=d.Sub,(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]))){return d;}d=new BV.ptr(a,b,CH.nil,CI.zero(),CA.nil,CJ.zero(),0,0,0,"");d.Sub=$append($subslice(new CH(d.Sub0),0,0),c);return d;};F.methods=[{prop:"next",name:"next",pkg:"regexp/syntax",typ:$funcType([CE],[F],false)},{prop:"patch",name:"patch",pkg:"regexp/syntax",typ:$funcType([CE,$Uint32],[],false)},{prop:"append",name:"append",pkg:"regexp/syntax",typ:$funcType([CE,F],[F],false)}];CO.methods=[{prop:"init",name:"init",pkg:"regexp/syntax",typ:$funcType([],[],false)},{prop:"compile",name:"compile",pkg:"regexp/syntax",typ:$funcType([CG],[G],false)},{prop:"inst",name:"inst",pkg:"regexp/syntax",typ:$funcType([BL],[G],false)},{prop:"nop",name:"nop",pkg:"regexp/syntax",typ:$funcType([],[G],false)},{prop:"fail",name:"fail",pkg:"regexp/syntax",typ:$funcType([],[G],false)},{prop:"cap",name:"cap",pkg:"regexp/syntax",typ:$funcType([$Uint32],[G],false)},{prop:"cat",name:"cat",pkg:"regexp/syntax",typ:$funcType([G,G],[G],false)},{prop:"alt",name:"alt",pkg:"regexp/syntax",typ:$funcType([G,G],[G],false)},{prop:"quest",name:"quest",pkg:"regexp/syntax",typ:$funcType([G,$Bool],[G],false)},{prop:"star",name:"star",pkg:"regexp/syntax",typ:$funcType([G,$Bool],[G],false)},{prop:"plus",name:"plus",pkg:"regexp/syntax",typ:$funcType([G,$Bool],[G],false)},{prop:"empty",name:"empty",pkg:"regexp/syntax",typ:$funcType([BN],[G],false)},{prop:"rune",name:"rune",pkg:"regexp/syntax",typ:$funcType([CA,O],[G],false)}];CP.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];N.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];CQ.methods=[{prop:"newRegexp",name:"newRegexp",pkg:"regexp/syntax",typ:$funcType([BW],[CG],false)},{prop:"reuse",name:"reuse",pkg:"regexp/syntax",typ:$funcType([CG],[],false)},{prop:"push",name:"push",pkg:"regexp/syntax",typ:$funcType([CG],[CG],false)},{prop:"maybeConcat",name:"maybeConcat",pkg:"regexp/syntax",typ:$funcType([$Int32,O],[$Bool],false)},{prop:"newLiteral",name:"newLiteral",pkg:"regexp/syntax",typ:$funcType([$Int32,O],[CG],false)},{prop:"literal",name:"literal",pkg:"regexp/syntax",typ:$funcType([$Int32],[],false)},{prop:"op",name:"op",pkg:"regexp/syntax",typ:$funcType([BW],[CG],false)},{prop:"repeat",name:"repeat",pkg:"regexp/syntax",typ:$funcType([BW,$Int,$Int,$String,$String,$String],[$String,$error],false)},{prop:"concat",name:"concat",pkg:"regexp/syntax",typ:$funcType([],[CG],false)},{prop:"alternate",name:"alternate",pkg:"regexp/syntax",typ:$funcType([],[CG],false)},{prop:"collapse",name:"collapse",pkg:"regexp/syntax",typ:$funcType([CH,BW],[CG],false)},{prop:"factor",name:"factor",pkg:"regexp/syntax",typ:$funcType([CH],[CH],false)},{prop:"leadingString",name:"leadingString",pkg:"regexp/syntax",typ:$funcType([CG],[CA,O],false)},{prop:"removeLeadingString",name:"removeLeadingString",pkg:"regexp/syntax",typ:$funcType([CG,$Int],[CG],false)},{prop:"leadingRegexp",name:"leadingRegexp",pkg:"regexp/syntax",typ:$funcType([CG],[CG],false)},{prop:"removeLeadingRegexp",name:"removeLeadingRegexp",pkg:"regexp/syntax",typ:$funcType([CG,$Bool],[CG],false)},{prop:"parseRepeat",name:"parseRepeat",pkg:"regexp/syntax",typ:$funcType([$String],[$Int,$Int,$String,$Bool],false)},{prop:"parsePerlFlags",name:"parsePerlFlags",pkg:"regexp/syntax",typ:$funcType([$String],[$String,$error],false)},{prop:"parseInt",name:"parseInt",pkg:"regexp/syntax",typ:$funcType([$String],[$Int,$String,$Bool],false)},{prop:"parseVerticalBar",name:"parseVerticalBar",pkg:"regexp/syntax",typ:$funcType([],[$error],false)},{prop:"swapVerticalBar",name:"swapVerticalBar",pkg:"regexp/syntax",typ:$funcType([],[$Bool],false)},{prop:"parseRightParen",name:"parseRightParen",pkg:"regexp/syntax",typ:$funcType([],[$error],false)},{prop:"parseEscape",name:"parseEscape",pkg:"regexp/syntax",typ:$funcType([$String],[$Int32,$String,$error],false)},{prop:"parseClassChar",name:"parseClassChar",pkg:"regexp/syntax",typ:$funcType([$String,$String],[$Int32,$String,$error],false)},{prop:"parsePerlClassEscape",name:"parsePerlClassEscape",pkg:"regexp/syntax",typ:$funcType([$String,CA],[CA,$String],false)},{prop:"parseNamedClass",name:"parseNamedClass",pkg:"regexp/syntax",typ:$funcType([$String,CA],[CA,$String,$error],false)},{prop:"appendGroup",name:"appendGroup",pkg:"regexp/syntax",typ:$funcType([CA,Z],[CA],false)},{prop:"parseUnicodeClass",name:"parseUnicodeClass",pkg:"regexp/syntax",typ:$funcType([$String,CA],[CA,$String,$error],false)},{prop:"parseClass",name:"parseClass",pkg:"regexp/syntax",typ:$funcType([$String],[$String,$error],false)}];AM.methods=[{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)}];CE.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"skipNop",name:"skipNop",pkg:"regexp/syntax",typ:$funcType([$Uint32],[CR],false)},{prop:"Prefix",name:"Prefix",pkg:"",typ:$funcType([],[$String,$Bool],false)},{prop:"StartCond",name:"StartCond",pkg:"",typ:$funcType([],[BN],false)}];BL.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];CR.methods=[{prop:"op",name:"op",pkg:"regexp/syntax",typ:$funcType([],[BL],false)},{prop:"MatchRune",name:"MatchRune",pkg:"",typ:$funcType([$Int32],[$Bool],false)},{prop:"MatchRunePos",name:"MatchRunePos",pkg:"",typ:$funcType([$Int32],[$Int],false)},{prop:"MatchEmptyWidth",name:"MatchEmptyWidth",pkg:"",typ:$funcType([$Int32,$Int32],[$Bool],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];CG.methods=[{prop:"Equal",name:"Equal",pkg:"",typ:$funcType([CG],[$Bool],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"MaxCap",name:"MaxCap",pkg:"",typ:$funcType([],[$Int],false)},{prop:"CapNames",name:"CapNames",pkg:"",typ:$funcType([],[CD],false)},{prop:"capNames",name:"capNames",pkg:"regexp/syntax",typ:$funcType([CD],[],false)},{prop:"Simplify",name:"Simplify",pkg:"",typ:$funcType([],[CG],false)}];BW.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];G.init("regexp/syntax",[{prop:"i",name:"i",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"out",name:"out",embedded:false,exported:false,typ:F,tag:""}]);H.init("regexp/syntax",[{prop:"p",name:"p",embedded:false,exported:false,typ:CE,tag:""}]);M.init("",[{prop:"Code",name:"Code",embedded:false,exported:true,typ:N,tag:""},{prop:"Expr",name:"Expr",embedded:false,exported:true,typ:$String,tag:""}]);P.init("regexp/syntax",[{prop:"flags",name:"flags",embedded:false,exported:false,typ:O,tag:""},{prop:"stack",name:"stack",embedded:false,exported:false,typ:CH,tag:""},{prop:"free",name:"free",embedded:false,exported:false,typ:CG,tag:""},{prop:"numCap",name:"numCap",embedded:false,exported:false,typ:$Int,tag:""},{prop:"wholeRegexp",name:"wholeRegexp",embedded:false,exported:false,typ:$String,tag:""},{prop:"tmpClass",name:"tmpClass",embedded:false,exported:false,typ:CA,tag:""}]);Z.init("regexp/syntax",[{prop:"sign",name:"sign",embedded:false,exported:false,typ:$Int,tag:""},{prop:"class$1",name:"class",embedded:false,exported:false,typ:CA,tag:""}]);AM.init("regexp/syntax",[{prop:"p",name:"p",embedded:false,exported:false,typ:CK,tag:""}]);BK.init("",[{prop:"Inst",name:"Inst",embedded:false,exported:true,typ:CF,tag:""},{prop:"Start",name:"Start",embedded:false,exported:true,typ:$Int,tag:""},{prop:"NumCap",name:"NumCap",embedded:false,exported:true,typ:$Int,tag:""}]);BQ.init("",[{prop:"Op",name:"Op",embedded:false,exported:true,typ:BL,tag:""},{prop:"Out",name:"Out",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Arg",name:"Arg",embedded:false,exported:true,typ:$Uint32,tag:""},{prop:"Rune",name:"Rune",embedded:false,exported:true,typ:CA,tag:""}]);BV.init("",[{prop:"Op",name:"Op",embedded:false,exported:true,typ:BW,tag:""},{prop:"Flags",name:"Flags",embedded:false,exported:true,typ:O,tag:""},{prop:"Sub",name:"Sub",embedded:false,exported:true,typ:CH,tag:""},{prop:"Sub0",name:"Sub0",embedded:false,exported:true,typ:CI,tag:""},{prop:"Rune",name:"Rune",embedded:false,exported:true,typ:CA,tag:""},{prop:"Rune0",name:"Rune0",embedded:false,exported:true,typ:CJ,tag:""},{prop:"Min",name:"Min",embedded:false,exported:true,typ:$Int,tag:""},{prop:"Max",name:"Max",embedded:false,exported:true,typ:$Int,tag:""},{prop:"Cap",name:"Cap",embedded:false,exported:true,typ:$Int,tag:""},{prop:"Name",name:"Name",embedded:false,exported:true,typ:$String,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=C.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}J=new CA([0,9,11,1114111]);K=new CA([0,1114111]);L=$toNativeArray($kindUint8,[0,7,17,24,33,45,52,61,68,77,84,96,110,117,121,125,130,136,142,151]);AA=new A.RangeTable.ptr(new CB([new A.Range16.ptr(0,65535,1)]),new CC([new A.Range32.ptr(65536,1114111,1)]),0);AR=new CA([48,57]);AS=new CA([9,10,12,13,32,32]);AT=new CA([48,57,65,90,95,95,97,122]);AU=$makeMap($String.keyFor,[{k:"\\d",v:new Z.ptr(1,AR)},{k:"\\D",v:new Z.ptr(-1,AR)},{k:"\\s",v:new Z.ptr(1,AS)},{k:"\\S",v:new Z.ptr(-1,AS)},{k:"\\w",v:new Z.ptr(1,AT)},{k:"\\W",v:new Z.ptr(-1,AT)}]);AV=new CA([48,57,65,90,97,122]);AW=new CA([65,90,97,122]);AX=new CA([0,127]);AY=new CA([9,9,32,32]);AZ=new CA([0,31,127,127]);BA=new CA([48,57]);BB=new CA([33,126]);BC=new CA([97,122]);BD=new CA([32,126]);BE=new CA([33,47,58,64,91,96,123,126]);BF=new CA([9,13,32,32]);BG=new CA([65,90]);BH=new CA([48,57,65,90,95,95,97,122]);BI=new CA([48,57,65,70,97,102]);BJ=$makeMap($String.keyFor,[{k:"[:alnum:]",v:new Z.ptr(1,AV)},{k:"[:^alnum:]",v:new Z.ptr(-1,AV)},{k:"[:alpha:]",v:new Z.ptr(1,AW)},{k:"[:^alpha:]",v:new Z.ptr(-1,AW)},{k:"[:ascii:]",v:new Z.ptr(1,AX)},{k:"[:^ascii:]",v:new Z.ptr(-1,AX)},{k:"[:blank:]",v:new Z.ptr(1,AY)},{k:"[:^blank:]",v:new Z.ptr(-1,AY)},{k:"[:cntrl:]",v:new Z.ptr(1,AZ)},{k:"[:^cntrl:]",v:new Z.ptr(-1,AZ)},{k:"[:digit:]",v:new Z.ptr(1,BA)},{k:"[:^digit:]",v:new Z.ptr(-1,BA)},{k:"[:graph:]",v:new Z.ptr(1,BB)},{k:"[:^graph:]",v:new Z.ptr(-1,BB)},{k:"[:lower:]",v:new Z.ptr(1,BC)},{k:"[:^lower:]",v:new Z.ptr(-1,BC)},{k:"[:print:]",v:new Z.ptr(1,BD)},{k:"[:^print:]",v:new Z.ptr(-1,BD)},{k:"[:punct:]",v:new Z.ptr(1,BE)},{k:"[:^punct:]",v:new Z.ptr(-1,BE)},{k:"[:space:]",v:new Z.ptr(1,BF)},{k:"[:^space:]",v:new Z.ptr(-1,BF)},{k:"[:upper:]",v:new Z.ptr(1,BG)},{k:"[:^upper:]",v:new Z.ptr(-1,BG)},{k:"[:word:]",v:new Z.ptr(1,BH)},{k:"[:^word:]",v:new Z.ptr(-1,BH)},{k:"[:xdigit:]",v:new Z.ptr(1,BI)},{k:"[:^xdigit:]",v:new Z.ptr(-1,BI)}]);BM=new CD(["InstAlt","InstAltMatch","InstCapture","InstEmptyWidth","InstMatch","InstFail","InstNop","InstRune","InstRune1","InstRuneAny","InstRuneAnyNotNL"]);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["regexp"]=(function(){var $pkg={},$init,G,B,C,A,D,H,E,F,I,J,K,Q,R,S,T,U,V,X,AC,AD,AH,AO,AT,BC,BD,BE,BF,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ,CA,CB,CC,CD,CE,CF,CG,CH,CI,CJ,CK,CL,CM,CN,CO,CP,CQ,CR,CS,CT,CU,CV,CW,CX,CY,CZ,DA,DB,DC,DD,DE,DF,L,Y,AB,AJ,AK,AP,AQ,AX,AY,BJ,M,N,O,P,W,Z,AA,AE,AF,AG,AI,AL,AM,AN,AR,AS,AU,AW,AZ,BB,BL,BN;G=$packages["bytes"];B=$packages["github.com/gopherjs/gopherjs/nosync"];C=$packages["io"];A=$packages["regexp/syntax"];D=$packages["sort"];H=$packages["strconv"];E=$packages["strings"];F=$packages["unicode"];I=$packages["unicode/utf8"];J=$pkg.job=$newType(0,$kindStruct,"regexp.job",true,"regexp",false,function(pc_,arg_,pos_){this.$val=this;if(arguments.length===0){this.pc=0;this.arg=false;this.pos=0;return;}this.pc=pc_;this.arg=arg_;this.pos=pos_;});K=$pkg.bitState=$newType(0,$kindStruct,"regexp.bitState",true,"regexp",false,function(end_,cap_,matchcap_,jobs_,visited_,inputs_){this.$val=this;if(arguments.length===0){this.end=0;this.cap=BV.nil;this.matchcap=BV.nil;this.jobs=BW.nil;this.visited=BT.nil;this.inputs=new U.ptr(new BE.ptr(BX.nil),new BD.ptr(""),new BF.ptr($ifaceNil,false,0));return;}this.end=end_;this.cap=cap_;this.matchcap=matchcap_;this.jobs=jobs_;this.visited=visited_;this.inputs=inputs_;});Q=$pkg.queue=$newType(0,$kindStruct,"regexp.queue",true,"regexp",false,function(sparse_,dense_){this.$val=this;if(arguments.length===0){this.sparse=BT.nil;this.dense=CP.nil;return;}this.sparse=sparse_;this.dense=dense_;});R=$pkg.entry=$newType(0,$kindStruct,"regexp.entry",true,"regexp",false,function(pc_,t_){this.$val=this;if(arguments.length===0){this.pc=0;this.t=BY.nil;return;}this.pc=pc_;this.t=t_;});S=$pkg.thread=$newType(0,$kindStruct,"regexp.thread",true,"regexp",false,function(inst_,cap_){this.$val=this;if(arguments.length===0){this.inst=BZ.nil;this.cap=BV.nil;return;}this.inst=inst_;this.cap=cap_;});T=$pkg.machine=$newType(0,$kindStruct,"regexp.machine",true,"regexp",false,function(re_,p_,q0_,q1_,pool_,matched_,matchcap_,inputs_){this.$val=this;if(arguments.length===0){this.re=CL.nil;this.p=CM.nil;this.q0=new Q.ptr(BT.nil,CP.nil);this.q1=new Q.ptr(BT.nil,CP.nil);this.pool=CQ.nil;this.matched=false;this.matchcap=BV.nil;this.inputs=new U.ptr(new BE.ptr(BX.nil),new BD.ptr(""),new BF.ptr($ifaceNil,false,0));return;}this.re=re_;this.p=p_;this.q0=q0_;this.q1=q1_;this.pool=pool_;this.matched=matched_;this.matchcap=matchcap_;this.inputs=inputs_;});U=$pkg.inputs=$newType(0,$kindStruct,"regexp.inputs",true,"regexp",false,function(bytes_,string_,reader_){this.$val=this;if(arguments.length===0){this.bytes=new BE.ptr(BX.nil);this.string=new BD.ptr("");this.reader=new BF.ptr($ifaceNil,false,0);return;}this.bytes=bytes_;this.string=string_;this.reader=reader_;});V=$pkg.lazyFlag=$newType(8,$kindUint64,"regexp.lazyFlag",true,"regexp",false,null);X=$pkg.onePassMachine=$newType(0,$kindStruct,"regexp.onePassMachine",true,"regexp",false,function(inputs_,matchcap_){this.$val=this;if(arguments.length===0){this.inputs=new U.ptr(new BE.ptr(BX.nil),new BD.ptr(""),new BF.ptr($ifaceNil,false,0));this.matchcap=BV.nil;return;}this.inputs=inputs_;this.matchcap=matchcap_;});AC=$pkg.onePassProg=$newType(0,$kindStruct,"regexp.onePassProg",true,"regexp",false,function(Inst_,Start_,NumCap_){this.$val=this;if(arguments.length===0){this.Inst=CG.nil;this.Start=0;this.NumCap=0;return;}this.Inst=Inst_;this.Start=Start_;this.NumCap=NumCap_;});AD=$pkg.onePassInst=$newType(0,$kindStruct,"regexp.onePassInst",true,"regexp",false,function(Inst_,Next_){this.$val=this;if(arguments.length===0){this.Inst=new A.Inst.ptr(0,0,0,BS.nil);this.Next=BT.nil;return;}this.Inst=Inst_;this.Next=Next_;});AH=$pkg.queueOnePass=$newType(0,$kindStruct,"regexp.queueOnePass",true,"regexp",false,function(sparse_,dense_,size_,nextIndex_){this.$val=this;if(arguments.length===0){this.sparse=BT.nil;this.dense=BT.nil;this.size=0;this.nextIndex=0;return;}this.sparse=sparse_;this.dense=dense_;this.size=size_;this.nextIndex=nextIndex_;});AO=$pkg.runeSlice=$newType(12,$kindSlice,"regexp.runeSlice",true,"regexp",false,null);AT=$pkg.Regexp=$newType(0,$kindStruct,"regexp.Regexp",true,"regexp",true,function(expr_,prog_,onepass_,numSubexp_,maxBitStateLen_,subexpNames_,prefix_,prefixBytes_,prefixRune_,prefixEnd_,mpool_,matchcap_,prefixComplete_,cond_,longest_){this.$val=this;if(arguments.length===0){this.expr="";this.prog=CM.nil;this.onepass=CD.nil;this.numSubexp=0;this.maxBitStateLen=0;this.subexpNames=CN.nil;this.prefix="";this.prefixBytes=BX.nil;this.prefixRune=0;this.prefixEnd=0;this.mpool=0;this.matchcap=0;this.prefixComplete=false;this.cond=0;this.longest=false;return;}this.expr=expr_;this.prog=prog_;this.onepass=onepass_;this.numSubexp=numSubexp_;this.maxBitStateLen=maxBitStateLen_;this.subexpNames=subexpNames_;this.prefix=prefix_;this.prefixBytes=prefixBytes_;this.prefixRune=prefixRune_;this.prefixEnd=prefixEnd_;this.mpool=mpool_;this.matchcap=matchcap_;this.prefixComplete=prefixComplete_;this.cond=cond_;this.longest=longest_;});BC=$pkg.input=$newType(8,$kindInterface,"regexp.input",true,"regexp",false,null);BD=$pkg.inputString=$newType(0,$kindStruct,"regexp.inputString",true,"regexp",false,function(str_){this.$val=this;if(arguments.length===0){this.str="";return;}this.str=str_;});BE=$pkg.inputBytes=$newType(0,$kindStruct,"regexp.inputBytes",true,"regexp",false,function(str_){this.$val=this;if(arguments.length===0){this.str=BX.nil;return;}this.str=str_;});BF=$pkg.inputReader=$newType(0,$kindStruct,"regexp.inputReader",true,"regexp",false,function(r_,atEOT_,pos_){this.$val=this;if(arguments.length===0){this.r=$ifaceNil;this.atEOT=false;this.pos=0;return;}this.r=r_;this.atEOT=atEOT_;this.pos=pos_;});BO=$sliceType($emptyInterface);BP=$arrayType($Int,0);BQ=$arrayType(B.Pool,5);BR=$arrayType($Uint8,16);BS=$sliceType($Int32);BT=$sliceType($Uint32);BU=$ptrType(K);BV=$sliceType($Int);BW=$sliceType(J);BX=$sliceType($Uint8);BY=$ptrType(S);BZ=$ptrType(A.Inst);CA=$ptrType(V);CB=$ptrType($Int);CC=$ptrType(X);CD=$ptrType(AC);CE=$ptrType(E.Builder);CF=$ptrType(AH);CG=$sliceType(AD);CH=$ptrType($Uint32);CI=$sliceType(BS);CJ=$ptrType(BS);CK=$sliceType($Bool);CL=$ptrType(AT);CM=$ptrType(A.Prog);CN=$sliceType($String);CO=$ptrType(T);CP=$sliceType(R);CQ=$sliceType(BY);CR=$arrayType($Int,2);CS=$arrayType($Int,4);CT=$sliceType(BX);CU=$sliceType(BV);CV=$sliceType(CT);CW=$sliceType(CN);CX=$ptrType(Q);CY=$ptrType(U);CZ=$funcType([$String],[$String],false);DA=$funcType([BX,BV],[BX],false);DB=$funcType([BX],[BX],false);DC=$funcType([BV],[],false);DD=$ptrType(BD);DE=$ptrType(BE);DF=$ptrType(BF);M=function(){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=L.Get();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}a=$assertType(b,BU,true);c=a[0];d=a[1];if(!d){c=new K.ptr(0,BV.nil,BV.nil,BW.nil,BT.nil,new U.ptr(new BE.ptr(BX.nil),new BD.ptr(""),new BF.ptr($ifaceNil,false,0)));}$s=-1;return c;}return;}if($f===undefined){$f={$blk:M};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};N=function(a){var a;a.inputs.clear();L.Put(a);};O=function(a){var a,b;if(!P(a)){return 0;}return(b=262144/a.Inst.$length,(b===b&&b!==1/0&&b!==-1/0)?b>>0:$throwRuntimeError("integer divide by zero"));};P=function(a){var a;return a.Inst.$length<=500;};K.ptr.prototype.reset=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=this;d.end=b;if(d.jobs.$capacity===0){d.jobs=$makeSlice(BW,0,256);}else{d.jobs=$subslice(d.jobs,0,0);}f=(e=(((($imul(a.Inst.$length,((b+1>>0))))+32>>0)-1>>0))/32,(e===e&&e!==1/0&&e!==-1/0)?e>>0:$throwRuntimeError("integer divide by zero"));if(d.visited.$capacity=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+i]=0));h++;}}if(d.cap.$capacity=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+m]=-1));l++;}if(d.matchcap.$capacity=r.$length)?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+q]=-1));p++;}};K.prototype.reset=function(a,b,c){return this.$val.reset(a,b,c);};K.ptr.prototype.shouldVisit=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m;c=this;d=(((($imul(((a>>0)),((c.end+1>>0))))+b>>0)>>>0));if(!(((((e=c.visited,f=(g=d/32,(g===g&&g!==1/0&&g!==-1/0)?g>>>0:$throwRuntimeError("integer divide by zero")),((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]))&(((h=(((d&31)>>>0)),h<32?(1<>>0)))>>>0)===0))){return false;}j=(i=d/32,(i===i&&i!==1/0&&i!==-1/0)?i>>>0:$throwRuntimeError("integer divide by zero"));(m=c.visited,((j<0||j>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+j]=(((k=c.visited,((j<0||j>=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+j]))|(((l=(((d&31)>>>0)),l<32?(1<>>0)))>>>0)));return true;};K.prototype.shouldVisit=function(a,b){return this.$val.shouldVisit(a,b);};K.ptr.prototype.push=function(a,b,c,d){var a,b,c,d,e,f;e=this;if(!(((f=a.prog.Inst,((b<0||b>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+b])).Op===5))&&(d||e.shouldVisit(b,c))){e.jobs=$append(e.jobs,new J.ptr(b,d,c));}};K.prototype.push=function(a,b,c,d){return this.$val.push(a,b,c,d);};AT.ptr.prototype.tryBacktrack=function(a,b,c,d){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=e.longest;a.push(e,c,d,false);case 1:if(!(a.jobs.$length>0)){$s=2;continue;}g=a.jobs.$length-1>>0;i=(h=a.jobs,((g<0||g>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+g])).pc;k=(j=a.jobs,((g<0||g>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+g])).pos;m=(l=a.jobs,((g<0||g>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+g])).arg;a.jobs=$subslice(a.jobs,0,g);$s=3;continue;case 4:if(!a.shouldVisit(i,k)){$s=1;continue;}case 3:o=$clone((n=e.prog.Inst,((i<0||i>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+i])),A.Inst);p=o.Op;if(p===(5)){$s=6;continue;}if(p===(0)){$s=7;continue;}if(p===(1)){$s=8;continue;}if(p===(7)){$s=9;continue;}if(p===(8)){$s=10;continue;}if(p===(10)){$s=11;continue;}if(p===(9)){$s=12;continue;}if(p===(2)){$s=13;continue;}if(p===(3)){$s=14;continue;}if(p===(6)){$s=15;continue;}if(p===(4)){$s=16;continue;}$s=17;continue;case 6:$panic(new $String("unexpected InstFail"));$s=18;continue;case 7:if(m){$s=19;continue;}$s=20;continue;case 19:m=false;i=o.Arg;$s=4;continue;$s=21;continue;case 20:a.push(e,i,k,true);i=o.Out;$s=4;continue;case 21:$s=18;continue;case 8:s=(q=e.prog.Inst,r=o.Out,((r<0||r>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+r])).Op;if((s===(7))||(s===(8))||(s===(9))||(s===(10))){$s=23;continue;}$s=24;continue;case 23:a.push(e,o.Arg,k,false);i=o.Arg;k=a.end;$s=4;continue;case 24:case 22:a.push(e,o.Out,a.end,false);i=o.Out;$s=4;continue;$s=18;continue;case 9:u=b.step(k);$s=25;case 25:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}t=u;v=t[0];w=t[1];if(!o.MatchRune(v)){$s=26;continue;}$s=27;continue;case 26:$s=1;continue;case 27:k=k+(w)>>0;i=o.Out;$s=4;continue;$s=18;continue;case 10:y=b.step(k);$s=28;case 28:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;z=x[0];aa=x[1];if(!((z===(ab=o.Rune,(0>=ab.$length?($throwRuntimeError("index out of range"),undefined):ab.$array[ab.$offset+0]))))){$s=29;continue;}$s=30;continue;case 29:$s=1;continue;case 30:k=k+(aa)>>0;i=o.Out;$s=4;continue;$s=18;continue;case 11:ad=b.step(k);$s=31;case 31:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ac=ad;ae=ac[0];af=ac[1];if((ae===10)||(ae===-1)){$s=32;continue;}$s=33;continue;case 32:$s=1;continue;case 33:k=k+(af)>>0;i=o.Out;$s=4;continue;$s=18;continue;case 12:ah=b.step(k);$s=34;case 34:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ag=ah;ai=ag[0];aj=ag[1];if(ai===-1){$s=35;continue;}$s=36;continue;case 35:$s=1;continue;case 36:k=k+(aj)>>0;i=o.Out;$s=4;continue;$s=18;continue;case 13:if(m){$s=37;continue;}$s=38;continue;case 37:(ak=a.cap,al=o.Arg,((al<0||al>=ak.$length)?($throwRuntimeError("index out of range"),undefined):ak.$array[ak.$offset+al]=k));$s=1;continue;$s=39;continue;case 38:if(0<=o.Arg&&o.Arg<((a.cap.$length>>>0))){a.push(e,i,(am=a.cap,an=o.Arg,((an<0||an>=am.$length)?($throwRuntimeError("index out of range"),undefined):am.$array[am.$offset+an])),true);(ao=a.cap,ap=o.Arg,((ap<0||ap>=ao.$length)?($throwRuntimeError("index out of range"),undefined):ao.$array[ao.$offset+ap]=k));}i=o.Out;$s=4;continue;case 39:$s=18;continue;case 14:aq=b.context(k);$s=40;case 40:if($c){$c=false;aq=aq.$blk();}if(aq&&aq.$blk!==undefined){break s;}ar=aq;if(!ar.match(((o.Arg<<24>>>24)))){$s=41;continue;}$s=42;continue;case 41:$s=1;continue;case 42:i=o.Out;$s=4;continue;$s=18;continue;case 15:i=o.Out;$s=4;continue;$s=18;continue;case 16:if(a.cap.$length===0){$s=-1;return true;}if(a.cap.$length>1){(as=a.cap,(1>=as.$length?($throwRuntimeError("index out of range"),undefined):as.$array[as.$offset+1]=k));}au=(at=a.matchcap,(1>=at.$length?($throwRuntimeError("index out of range"),undefined):at.$array[at.$offset+1]));if((au===-1)||(f&&k>0&&k>au)){$copySlice(a.matchcap,a.cap);}if(!f){$s=-1;return true;}if(k===a.end){$s=-1;return true;}$s=1;continue;$s=18;continue;case 17:$panic(new $String("bad inst"));case 18:case 5:$s=1;continue;case 2:$s=-1;return f&&a.matchcap.$length>1&&(av=a.matchcap,(1>=av.$length?($throwRuntimeError("index out of range"),undefined):av.$array[av.$offset+1]))>=0;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.tryBacktrack};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.tryBacktrack=function(a,b,c,d){return this.$val.tryBacktrack(a,b,c,d);};AT.ptr.prototype.backtrack=function(a,b,c,d,e){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=this;g=f.cond;if(g===255){$s=-1;return BV.nil;}if(!((((g&4)>>>0)===0))&&!((c===0))){$s=-1;return BV.nil;}h=M();$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}i=h;j=i.inputs.init($ifaceNil,a,b);k=j[0];l=j[1];i.reset(f.prog,l,d);if(!((((g&4)>>>0)===0))){$s=2;continue;}$s=3;continue;case 2:if(i.cap.$length>0){(m=i.cap,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0]=c));}n=f.tryBacktrack(i,k,((f.prog.Start>>>0)),c);$s=7;case 7:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}if(!n){$s=5;continue;}$s=6;continue;case 5:N(i);$s=-1;return BV.nil;case 6:$s=4;continue;case 3:o=-1;case 8:if(!(c<=l&&!((o===0)))){$s=9;continue;}if(f.prefix.length>0){$s=10;continue;}$s=11;continue;case 10:p=k.index(f,c);$s=12;case 12:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=p;if(q<0){N(i);$s=-1;return BV.nil;}c=c+(q)>>0;case 11:if(i.cap.$length>0){(r=i.cap,(0>=r.$length?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+0]=c));}s=f.tryBacktrack(i,k,((f.prog.Start>>>0)),c);$s=15;case 15:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}if(s){$s=13;continue;}$s=14;continue;case 13:$s=16;continue;case 14:u=k.step(c);$s=17;case 17:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}t=u;o=t[1];c=c+(o)>>0;$s=8;continue;case 9:N(i);$s=-1;return BV.nil;case 4:case 16:e=$appendSlice(e,i.matchcap);N(i);$s=-1;return e;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.backtrack};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.backtrack=function(a,b,c,d,e){return this.$val.backtrack(a,b,c,d,e);};U.ptr.prototype.newBytes=function(a){var a,b;b=this;b.bytes.str=a;return b.bytes;};U.prototype.newBytes=function(a){return this.$val.newBytes(a);};U.ptr.prototype.newString=function(a){var a,b;b=this;b.string.str=a;return b.string;};U.prototype.newString=function(a){return this.$val.newString(a);};U.ptr.prototype.newReader=function(a){var a,b;b=this;b.reader.r=a;b.reader.atEOT=false;b.reader.pos=0;return b.reader;};U.prototype.newReader=function(a){return this.$val.newReader(a);};U.ptr.prototype.clear=function(){var a;a=this;if(!(a.bytes.str===BX.nil)){a.bytes.str=BX.nil;}else if(!($interfaceIsEqual(a.reader.r,$ifaceNil))){a.reader.r=$ifaceNil;}else{a.string.str="";}};U.prototype.clear=function(){return this.$val.clear();};U.ptr.prototype.init=function(a,b,c){var a,b,c,d;d=this;if(!($interfaceIsEqual(a,$ifaceNil))){return[d.newReader(a),0];}if(!(b===BX.nil)){return[d.newBytes(b),b.$length];}return[d.newString(c),c.length];};U.prototype.init=function(a,b,c){return this.$val.init(a,b,c);};T.ptr.prototype.init=function(a){var a,b,c,d,e;b=this;c=b.pool;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]);e.cap=$subslice(e.cap,0,a);d++;}b.matchcap=$subslice(b.matchcap,0,a);};T.prototype.init=function(a){return this.$val.init(a);};T.ptr.prototype.alloc=function(a){var a,b,c,d,e,f;b=this;c=BY.nil;d=b.pool.$length;if(d>0){c=(e=b.pool,f=d-1>>0,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));b.pool=$subslice(b.pool,0,(d-1>>0));}else{c=new S.ptr(BZ.nil,BV.nil);c.cap=$makeSlice(BV,b.matchcap.$length,b.matchcap.$capacity);}c.inst=a;return c;};T.prototype.alloc=function(a){return this.$val.alloc(a);};W=function(a,b){var a,b,c,d,e;return((c=(d=$shiftLeft64((new $Uint64(0,a)),32),e=(new $Uint64(0,((b>>>0)))),new $Uint64(d.$high|e.$high,(d.$low|e.$low)>>>0)),new V(c.$high,c.$low)));};V.prototype.match=function(a){var a,b,c,d;b=this;if(a===0){return true;}c=(($shiftRightUint64(b,32).$low>>0));if(!((((a&1)>>>0)===0))){if(!((c===10))&&c>=0){return false;}a=(a&~(1))<<24>>>24;}if(!((((a&4)>>>0)===0))){if(c>=0){return false;}a=(a&~(4))<<24>>>24;}if(a===0){return true;}d=((b.$low>>0));if(!((((a&2)>>>0)===0))){if(!((d===10))&&d>=0){return false;}a=(a&~(2))<<24>>>24;}if(!((((a&8)>>>0)===0))){if(d>=0){return false;}a=(a&~(8))<<24>>>24;}if(a===0){return true;}if(!(A.IsWordChar(c)===A.IsWordChar(d))){a=(a&~(16))<<24>>>24;}else{a=(a&~(32))<<24>>>24;}return a===0;};$ptrType(V).prototype.match=function(a){return this.$get().match(a);};T.ptr.prototype.match=function(a,b){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];d=this;e=d.re.cond;if(e===255){$s=-1;return false;}d.matched=false;f=d.matchcap;g=0;while(true){if(!(g=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+h]=-1));g++;}j=d.q0;k=d.q1;l=j;m=k;n=-1;o=-1;p=n;q=o;r=0;s=0;t=r;u=s;w=a.step(b);$s=1;case 1:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}v=w;p=v[0];t=v[1];if(!((p===-1))){$s=2;continue;}$s=3;continue;case 2:y=a.step(b+t>>0);$s=4;case 4:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;q=x[0];u=x[1];case 3:c[0]=new V(0,0);if(b===0){$s=5;continue;}$s=6;continue;case 5:c[0]=W(-1,p);$s=7;continue;case 6:z=a.context(b);$s=8;case 8:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}c[0]=z;case 7:case 9:if(l.dense.$length===0){$s=11;continue;}$s=12;continue;case 11:if(!((((e&4)>>>0)===0))&&!((b===0))){$s=10;continue;}if(d.matched){$s=10;continue;}if(!(d.re.prefix.length>0&&!((q===d.re.prefixRune)))){aa=false;$s=15;continue s;}ab=a.canCheckPrefix();$s=16;case 16:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}aa=ab;case 15:if(aa){$s=13;continue;}$s=14;continue;case 13:ac=a.index(d.re,b);$s=17;case 17:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}ad=ac;if(ad<0){$s=10;continue;}b=b+(ad)>>0;af=a.step(b);$s=18;case 18:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}ae=af;p=ae[0];t=ae[1];ah=a.step(b+t>>0);$s=19;case 19:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ag=ah;q=ag[0];u=ag[1];case 14:case 12:if(!d.matched){if(d.matchcap.$length>0){(ai=d.matchcap,(0>=ai.$length?($throwRuntimeError("index out of range"),undefined):ai.$array[ai.$offset+0]=b));}d.add(l,((d.p.Start>>>0)),b,d.matchcap,(c.$ptr||(c.$ptr=new CA(function(){return this.$target[0];},function($v){this.$target[0]=$v;},c))),BY.nil);}c[0]=W(p,q);d.step(l,m,b,b+t>>0,p,(c.$ptr||(c.$ptr=new CA(function(){return this.$target[0];},function($v){this.$target[0]=$v;},c))));if(t===0){$s=10;continue;}if((d.matchcap.$length===0)&&d.matched){$s=10;continue;}b=b+(t)>>0;aj=q;ak=u;p=aj;t=ak;if(!((p===-1))){$s=20;continue;}$s=21;continue;case 20:am=a.step(b+t>>0);$s=22;case 22:if($c){$c=false;am=am.$blk();}if(am&&am.$blk!==undefined){break s;}al=am;q=al[0];u=al[1];case 21:an=m;ao=l;l=an;m=ao;$s=9;continue;case 10:d.clear(m);$s=-1;return d.matched;}return;}if($f===undefined){$f={$blk:T.ptr.prototype.match};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};T.prototype.match=function(a,b){return this.$val.match(a,b);};T.ptr.prototype.clear=function(a){var a,b,c,d,e;b=this;c=a.dense;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]),R);if(!(e.t===BY.nil)){b.pool=$append(b.pool,e.t);}d++;}a.dense=$subslice(a.dense,0,0);};T.prototype.clear=function(a){return this.$val.clear(a);};T.ptr.prototype.step=function(a,b,c,d,e,f){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;g=this;h=g.re.longest;i=0;while(true){if(!(i=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+i]));l=k.t;if(l===BY.nil){i=i+(1)>>0;continue;}if(h&&g.matched&&l.cap.$length>0&&(m=g.matchcap,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0]))<(n=l.cap,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0]))){g.pool=$append(g.pool,l);i=i+(1)>>0;continue;}o=l.inst;p=false;q=o.Op;if(q===(4)){if(l.cap.$length>0&&(!h||!g.matched||(r=g.matchcap,(1>=r.$length?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+1]))=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+1]=c));$copySlice(g.matchcap,l.cap);}if(!h){t=$subslice(a.dense,(i+1>>0));u=0;while(true){if(!(u=t.$length)?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+u]),R);if(!(v.t===BY.nil)){g.pool=$append(g.pool,v.t);}u++;}a.dense=$subslice(a.dense,0,0);}g.matched=true;}else if(q===(7)){p=o.MatchRune(e);}else if(q===(8)){p=e===(w=o.Rune,(0>=w.$length?($throwRuntimeError("index out of range"),undefined):w.$array[w.$offset+0]));}else if(q===(9)){p=true;}else if(q===(10)){p=!((e===10));}else{$panic(new $String("bad inst"));}if(p){l=g.add(b,o.Out,d,l.cap,f,l);}if(!(l===BY.nil)){g.pool=$append(g.pool,l);}i=i+(1)>>0;}a.dense=$subslice(a.dense,0,0);};T.prototype.step=function(a,b,c,d,e,f){return this.$val.step(a,b,c,d,e,f);};T.ptr.prototype.add=function(a,b,c,d,e,f){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,$s;$s=0;s:while(true){switch($s){case 0:g=this;case 1:if(b===0){$s=-1;return f;}i=(h=a.sparse,((b<0||b>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+b]));if(i<((a.dense.$length>>>0))&&((j=a.dense,((i<0||i>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+i])).pc===b)){$s=-1;return f;}k=a.dense.$length;a.dense=$subslice(a.dense,0,(k+1>>0));m=(l=a.dense,((k<0||k>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+k]));m.t=BY.nil;m.pc=b;(n=a.sparse,((b<0||b>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+b]=((k>>>0))));p=(o=g.p.Inst,((b<0||b>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+b]));q=p.Op;if(q===(5)){$s=3;continue;}if((q===(0))||(q===(1))){$s=4;continue;}if(q===(3)){$s=5;continue;}if(q===(6)){$s=6;continue;}if(q===(2)){$s=7;continue;}if((q===(4))||(q===(7))||(q===(8))||(q===(9))||(q===(10))){$s=8;continue;}$s=9;continue;case 3:$s=10;continue;case 4:f=g.add(a,p.Out,c,d,e,f);b=p.Arg;$s=1;continue;$s=10;continue;case 5:if(e.match(((p.Arg<<24>>>24)))){$s=11;continue;}$s=12;continue;case 11:b=p.Out;$s=1;continue;case 12:$s=10;continue;case 6:b=p.Out;$s=1;continue;$s=10;continue;case 7:if(((p.Arg>>0))=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+r]));(t=p.Arg,((t<0||t>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+t]=c));g.add(a,p.Out,c,d,e,BY.nil);(u=p.Arg,((u<0||u>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+u]=s));$s=15;continue;case 14:b=p.Out;$s=1;continue;case 15:$s=10;continue;case 8:if(f===BY.nil){f=g.alloc(p);}else{f.inst=p;}if(d.$length>0&&!((v=f.cap,$indexPtr(v.$array,v.$offset+0,CB))===$indexPtr(d.$array,d.$offset+0,CB))){$copySlice(f.cap,d);}m.t=f;f=BY.nil;$s=10;continue;case 9:$panic(new $String("unhandled"));case 10:case 2:$s=-1;return f;}return;}};T.prototype.add=function(a,b,c,d,e,f){return this.$val.add(a,b,c,d,e,f);};Z=function(){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=Y.Get();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}a=$assertType(b,CC,true);c=a[0];d=a[1];if(!d){c=new X.ptr(new U.ptr(new BE.ptr(BX.nil),new BD.ptr(""),new BF.ptr($ifaceNil,false,0)),BV.nil);}$s=-1;return c;}return;}if($f===undefined){$f={$blk:Z};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AA=function(a){var a;a.inputs.clear();Y.Put(a);};AT.ptr.prototype.doOnePass=function(a,b,c,d,e,f){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,b,ba,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;b=$f.b;ba=$f.ba;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:g=[g];h=this;i=h.cond;if(i===255){$s=-1;return BV.nil;}j=Z();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j;if(k.matchcap.$capacity=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+o]=-1));n++;}q=k.inputs.init(a,b,c);r=q[0];s=-1;t=-1;u=s;v=t;w=0;x=0;y=w;z=x;ab=r.step(d);$s=2;case 2:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}aa=ab;u=aa[0];y=aa[1];if(!((u===-1))){$s=3;continue;}$s=4;continue;case 3:ad=r.step(d+y>>0);$s=5;case 5:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ac=ad;v=ac[0];z=ac[1];case 4:ae=new V(0,0);if(d===0){$s=6;continue;}$s=7;continue;case 6:ae=W(-1,u);$s=8;continue;case 7:af=r.context(d);$s=9;case 9:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}ae=af;case 8:ag=h.onepass.Start;g[0]=$clone((ah=h.onepass.Inst,((ag<0||ag>=ah.$length)?($throwRuntimeError("index out of range"),undefined):ah.$array[ah.$offset+ag])),AD);if(!((d===0)&&ae.match(((g[0].Inst.Arg<<24>>>24)))&&h.prefix.length>0)){ai=false;$s=12;continue s;}aj=r.canCheckPrefix();$s=13;case 13:if($c){$c=false;aj=aj.$blk();}if(aj&&aj.$blk!==undefined){break s;}ai=aj;case 12:if(ai){$s=10;continue;}$s=11;continue;case 10:ak=r.hasPrefix(h);$s=16;case 16:if($c){$c=false;ak=ak.$blk();}if(ak&&ak.$blk!==undefined){break s;}if(!ak){$s=14;continue;}$s=15;continue;case 14:$s=17;continue;case 15:d=d+(h.prefix.length)>>0;am=r.step(d);$s=18;case 18:if($c){$c=false;am=am.$blk();}if(am&&am.$blk!==undefined){break s;}al=am;u=al[0];y=al[1];ao=r.step(d+y>>0);$s=19;case 19:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}an=ao;v=an[0];z=an[1];ap=r.context(d);$s=20;case 20:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}ae=ap;ag=((h.prefixEnd>>0));case 11:case 21:AD.copy(g[0],(aq=h.onepass.Inst,((ag<0||ag>=aq.$length)?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+ag])));ag=((g[0].Inst.Out>>0));ar=g[0].Inst.Op;if(ar===(4)){$s=24;continue;}if(ar===(7)){$s=25;continue;}if(ar===(8)){$s=26;continue;}if(ar===(9)){$s=27;continue;}if(ar===(10)){$s=28;continue;}if((ar===(0))||(ar===(1))){$s=29;continue;}if(ar===(5)){$s=30;continue;}if(ar===(6)){$s=31;continue;}if(ar===(3)){$s=32;continue;}if(ar===(2)){$s=33;continue;}$s=34;continue;case 24:l=true;if(k.matchcap.$length>0){(as=k.matchcap,(0>=as.$length?($throwRuntimeError("index out of range"),undefined):as.$array[as.$offset+0]=0));(at=k.matchcap,(1>=at.$length?($throwRuntimeError("index out of range"),undefined):at.$array[at.$offset+1]=d));}$s=17;continue;$s=35;continue;case 25:if(!g[0].Inst.MatchRune(u)){$s=36;continue;}$s=37;continue;case 36:$s=17;continue;case 37:$s=35;continue;case 26:if(!((u===(au=g[0].Inst.Rune,(0>=au.$length?($throwRuntimeError("index out of range"),undefined):au.$array[au.$offset+0]))))){$s=38;continue;}$s=39;continue;case 38:$s=17;continue;case 39:$s=35;continue;case 27:$s=35;continue;case 28:if(u===10){$s=40;continue;}$s=41;continue;case 40:$s=17;continue;case 41:$s=35;continue;case 29:ag=((AF(g[0],u)>>0));$s=21;continue;$s=35;continue;case 30:$s=17;continue;$s=35;continue;case 31:$s=21;continue;$s=35;continue;case 32:if(!ae.match(((g[0].Inst.Arg<<24>>>24)))){$s=42;continue;}$s=43;continue;case 42:$s=17;continue;case 43:$s=21;continue;$s=35;continue;case 33:if(((g[0].Inst.Arg>>0))=av.$length)?($throwRuntimeError("index out of range"),undefined):av.$array[av.$offset+aw]=d));}$s=21;continue;$s=35;continue;case 34:$panic(new $String("bad inst"));case 35:case 23:if(y===0){$s=22;continue;}ae=W(u,v);d=d+(y)>>0;ax=v;ay=z;u=ax;y=ay;if(!((u===-1))){$s=44;continue;}$s=45;continue;case 44:ba=r.step(d+y>>0);$s=46;case 46:if($c){$c=false;ba=ba.$blk();}if(ba&&ba.$blk!==undefined){break s;}az=ba;v=az[0];z=az[1];case 45:$s=21;continue;case 22:case 17:if(!l){AA(k);$s=-1;return BV.nil;}f=$appendSlice(f,k.matchcap);AA(k);$s=-1;return f;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.doOnePass};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.b=b;$f.ba=ba;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.doOnePass=function(a,b,c,d,e,f){return this.$val.doOnePass(a,b,c,d,e,f);};AT.ptr.prototype.doMatch=function(a,b,c){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.doExecute(a,b,c,0,0,BV.nil);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return!(e===BV.nil);}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.doMatch};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.doMatch=function(a,b,c){return this.$val.doMatch(a,b,c);};AT.ptr.prototype.doExecute=function(a,b,c,d,e,f){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:g=this;if(f===BV.nil){f=$subslice(new BV(AB),0,0,0);}if(!(g.onepass===CD.nil)){$s=1;continue;}$s=2;continue;case 1:h=g.doOnePass(a,b,c,d,e,f);$s=3;case 3:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$s=-1;return h;case 2:if($interfaceIsEqual(a,$ifaceNil)&&(b.$length+c.length>>0)=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f]));if(!((g.Op===3))||((((((g.Arg<<24>>>24)))&4)>>>0)===0)){h="";i=g.Op===4;j=((a.Start>>>0));b=h;c=i;d=j;return[b,c,d];}d=g.Out;g=(k=a.Inst,((d<0||d>=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+d]));while(true){if(!(g.Op===6)){break;}d=g.Out;g=(l=a.Inst,((d<0||d>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+d]));}if(!((AG(g)===7))||!((g.Rune.$length===1))){m="";n=g.Op===4;o=((a.Start>>>0));b=m;c=n;d=o;return[b,c,d];}p=new E.Builder.ptr(CE.nil,BX.nil);while(true){if(!((AG(g)===7)&&(g.Rune.$length===1)&&(((((g.Arg<<16>>>16))&1)>>>0)===0))){break;}p.WriteRune((q=g.Rune,(0>=q.$length?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+0])));r=g.Out;s=(t=a.Inst,u=g.Out,((u<0||u>=t.$length)?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+u]));d=r;g=s;}if((g.Op===3)&&!((((((g.Arg<<24>>>24))&8)>>>0)===0))&&((v=a.Inst,w=g.Out,((w<0||w>=v.$length)?($throwRuntimeError("index out of range"),undefined):v.$array[v.$offset+w])).Op===4)){c=true;}x=p.String();y=c;z=d;b=x;c=y;d=z;return[b,c,d];};AF=function(a,b){var a,b,c,d;c=a.Inst.MatchRunePos(b);if(c>=0){return(d=a.Next,((c<0||c>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+c]));}if(a.Inst.Op===1){return a.Inst.Out;}return 0;};AG=function(a){var a,b,c;b=a.Op;c=b;if((c===(8))||(c===(9))||(c===(10))){b=7;}return b;};AH.ptr.prototype.empty=function(){var a;a=this;return a.nextIndex>=a.size;};AH.prototype.empty=function(){return this.$val.empty();};AH.ptr.prototype.next=function(){var a,b,c,d;a=0;b=this;a=(c=b.dense,d=b.nextIndex,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]));b.nextIndex=b.nextIndex+(1)>>>0;return a;};AH.prototype.next=function(){return this.$val.next();};AH.ptr.prototype.clear=function(){var a;a=this;a.size=0;a.nextIndex=0;};AH.prototype.clear=function(){return this.$val.clear();};AH.ptr.prototype.contains=function(a){var a,b,c,d,e,f;b=this;if(a>=((b.sparse.$length>>>0))){return false;}return(c=b.sparse,((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]))=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+a])),((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]))===a);};AH.prototype.contains=function(a){return this.$val.contains(a);};AH.ptr.prototype.insert=function(a){var a,b;b=this;if(!b.contains(a)){b.insertNew(a);}};AH.prototype.insert=function(a){return this.$val.insert(a);};AH.ptr.prototype.insertNew=function(a){var a,b,c,d,e;b=this;if(a>=((b.sparse.$length>>>0))){return;}(c=b.sparse,((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]=b.size));(d=b.dense,e=b.size,((e<0||e>=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]=a));b.size=b.size+(1)>>>0;};AH.prototype.insertNew=function(a){return this.$val.insertNew(a);};AI=function(a){var a,b;b=CF.nil;b=new AH.ptr($makeSlice(BT,a),$makeSlice(BT,a),0,0);return b;};AL=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);e=[e];f=[f];g=[g];h=[h];i=[i];j=[j];k=a.$get().$length;l=b.$get().$length;if(!(((k&1)===0))||!(((l&1)===0))){$panic(new $String("mergeRuneSets odd length []rune"));}m=0;n=0;f[0]=m;j[0]=n;g[0]=$makeSlice(BS,0);h[0]=$makeSlice(BT,0);i[0]=true;$deferred.push([(function(e,f,g,h,i,j){return function(){if(!i[0]){g[0]=BS.nil;h[0]=BT.nil;}};})(e,f,g,h,i,j),[]]);e[0]=-1;o=(function(e,f,g,h,i,j){return function(o,p,q){var o,p,q,r,s,t,u,v,w;if(e[0]>0&&(r=p.$get(),s=o.$get(),((s<0||s>=r.$length)?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+s]))<=((e[0]<0||e[0]>=g[0].$length)?($throwRuntimeError("index out of range"),undefined):g[0].$array[g[0].$offset+e[0]])){return false;}g[0]=$append(g[0],(t=p.$get(),u=o.$get(),((u<0||u>=t.$length)?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+u])),(v=p.$get(),w=o.$get()+1>>0,((w<0||w>=v.$length)?($throwRuntimeError("index out of range"),undefined):v.$array[v.$offset+w])));o.$set(o.$get()+(2)>>0);e[0]=e[0]+(2)>>0;h[0]=$append(h[0],q);return true;};})(e,f,g,h,i,j);case 1:if(!(f[0]=l){$s=4;continue;}if(f[0]>=k){$s=5;continue;}if((p=b.$get(),((j[0]<0||j[0]>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+j[0]]))<(q=a.$get(),((f[0]<0||f[0]>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+f[0]]))){$s=6;continue;}$s=7;continue;case 4:r=o((f.$ptr||(f.$ptr=new CB(function(){return this.$target[0];},function($v){this.$target[0]=$v;},f))),a,c);$s=9;case 9:if($c){$c=false;r=r.$blk();}if(r&&r.$blk!==undefined){break s;}i[0]=r;$s=8;continue;case 5:s=o((j.$ptr||(j.$ptr=new CB(function(){return this.$target[0];},function($v){this.$target[0]=$v;},j))),b,d);$s=10;case 10:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}i[0]=s;$s=8;continue;case 6:t=o((j.$ptr||(j.$ptr=new CB(function(){return this.$target[0];},function($v){this.$target[0]=$v;},j))),b,d);$s=11;case 11:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}i[0]=t;$s=8;continue;case 7:u=o((f.$ptr||(f.$ptr=new CB(function(){return this.$target[0];},function($v){this.$target[0]=$v;},f))),a,c);$s=12;case 12:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}i[0]=u;case 8:case 3:if(!i[0]){$s=-1;return[AJ,AK];}$s=1;continue;case 2:$s=-1;return[g[0],h[0]];}return;}}catch(err){$err=err;$s=-1;return[BS.nil,BT.nil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AL};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AM=function(a,b){var a,b,c,d,e,f,g,h,i,j;c=b.Inst;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]),A.Inst);g=f.Op;if((g===(0))||(g===(1))||(g===(7))){}else if((g===(2))||(g===(3))||(g===(6))||(g===(4))||(g===(5))){(h=a.Inst,((e<0||e>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+e])).Next=BT.nil;}else if((g===(8))||(g===(9))||(g===(10))){(i=a.Inst,((e<0||e>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+e])).Next=BT.nil;AD.copy((j=a.Inst,((e<0||e>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+e])),new AD.ptr($clone(f,A.Inst),BT.nil));}d++;}};AN=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;b=new AC.ptr($makeSlice(CG,a.Inst.$length),a.Start,a.NumCap);c=a.Inst;d=0;while(true){if(!(d=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]),A.Inst);AD.copy((g=b.Inst,((e<0||e>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+e])),new AD.ptr($clone(f,A.Inst),BT.nil));d++;}h=b.Inst;i=0;while(true){if(!(i=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+j])).Inst.Op;if((l===(0))||(l===(1))){o=(m=(n=b.Inst,((j<0||j>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+j])),(m.$ptr_Out||(m.$ptr_Out=new CH(function(){return this.$target.Inst.Out;},function($v){this.$target.Inst.Out=$v;},m))));r=(p=(q=b.Inst,((j<0||j>=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+j])),(p.$ptr_Arg||(p.$ptr_Arg=new CH(function(){return this.$target.Inst.Arg;},function($v){this.$target.Inst.Arg=$v;},p))));u=$clone((s=b.Inst,t=r.$get(),((t<0||t>=s.$length)?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+t])),AD);if(!((u.Inst.Op===0)||(u.Inst.Op===1))){v=o;w=r;r=v;o=w;AD.copy(u,(x=b.Inst,y=r.$get(),((y<0||y>=x.$length)?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+y])));if(!((u.Inst.Op===0)||(u.Inst.Op===1))){i++;continue;}}ab=$clone((z=b.Inst,aa=o.$get(),((aa<0||aa>=z.$length)?($throwRuntimeError("index out of range"),undefined):z.$array[z.$offset+aa])),AD);if((ab.Inst.Op===0)||(ab.Inst.Op===1)){i++;continue;}af=(ac=(ad=b.Inst,ae=r.$get(),((ae<0||ae>=ad.$length)?($throwRuntimeError("index out of range"),undefined):ad.$array[ad.$offset+ae])),(ac.$ptr_Out||(ac.$ptr_Out=new CH(function(){return this.$target.Inst.Out;},function($v){this.$target.Inst.Out=$v;},ac))));aj=(ag=(ah=b.Inst,ai=r.$get(),((ai<0||ai>=ah.$length)?($throwRuntimeError("index out of range"),undefined):ah.$array[ah.$offset+ai])),(ag.$ptr_Arg||(ag.$ptr_Arg=new CH(function(){return this.$target.Inst.Arg;},function($v){this.$target.Inst.Arg=$v;},ag))));ak=false;if(u.Inst.Out===((j>>>0))){ak=true;}else if(u.Inst.Arg===((j>>>0))){ak=true;al=aj;am=af;af=al;aj=am;}if(ak){af.$set(o.$get());}if(o.$get()===af.$get()){r.$set(aj.$get());}}else{i++;continue;}i++;}return b;};AO.prototype.Len=function(){var a;a=this;return a.$length;};$ptrType(AO).prototype.Len=function(){return this.$get().Len();};AO.prototype.Less=function(a,b){var a,b,c;c=this;return((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a])<((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]);};$ptrType(AO).prototype.Less=function(a,b){return this.$get().Less(a,b);};AO.prototype.Swap=function(a,b){var a,b,c,d,e;c=this;d=((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]);e=((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]);((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]=d);((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]=e);};$ptrType(AO).prototype.Swap=function(a,b){return this.$get().Swap(a,b);};AR=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];c=[c];d=[d];e=[e];if(a[0].Inst.$length>=1000){$s=-1;return CD.nil;}c[0]=AI(a[0].Inst.$length);e[0]=AI(a[0].Inst.$length);b[0]=$throwNilPointerError;d[0]=$makeSlice(CI,a[0].Inst.$length);b[0]=(function(a,b,c,d,e){return function $b(f,g){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;az=$f.az;ba=$f.ba;bb=$f.bb;bc=$f.bc;bd=$f.bd;be=$f.be;bf=$f.bf;bg=$f.bg;bh=$f.bh;bi=$f.bi;bj=$f.bj;bk=$f.bk;bl=$f.bl;bm=$f.bm;bn=$f.bn;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:h=false;h=true;j=(i=a[0].Inst,((f<0||f>=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+f]));if(e[0].contains(f)){$s=-1;return h;}e[0].insert(f);k=j.Inst.Op;if((k===(0))||(k===(1))){$s=2;continue;}if((k===(2))||(k===(6))){$s=3;continue;}if(k===(3)){$s=4;continue;}if((k===(4))||(k===(5))){$s=5;continue;}if(k===(7)){$s=6;continue;}if(k===(8)){$s=7;continue;}if(k===(9)){$s=8;continue;}if(k===(10)){$s=9;continue;}$s=10;continue;case 2:m=b[0](j.Inst.Out,g);$s=12;case 12:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}if(!(m)){l=false;$s=11;continue s;}n=b[0](j.Inst.Arg,g);$s=13;case 13:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}l=n;case 11:h=l;p=(o=j.Inst.Out,((o<0||o>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+o]));r=(q=j.Inst.Arg,((q<0||q>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+q]));if(p&&r){h=false;$s=1;continue;}if(r){s=j.Inst.Arg;t=j.Inst.Out;j.Inst.Out=s;j.Inst.Arg=t;u=r;v=p;p=u;r=v;}if(p){((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=true);j.Inst.Op=1;}x=AL($indexPtr(d[0].$array,d[0].$offset+j.Inst.Out,CJ),$indexPtr(d[0].$array,d[0].$offset+j.Inst.Arg,CJ),j.Inst.Out,j.Inst.Arg);$s=14;case 14:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}w=x;((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=w[0]);j.Next=w[1];if(j.Next.$length>0&&((y=j.Next,(0>=y.$length?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+0]))===4294967295)){h=false;$s=1;continue;}$s=10;continue;case 3:z=b[0](j.Inst.Out,g);$s=15;case 15:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}h=z;((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=(aa=j.Inst.Out,((aa<0||aa>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+aa])));((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=$appendSlice(new BS([]),(ab=j.Inst.Out,((ab<0||ab>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+ab]))));j.Next=$makeSlice(BT,((ac=((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]).$length/2,(ac===ac&&ac!==1/0&&ac!==-1/0)?ac>>0:$throwRuntimeError("integer divide by zero"))+1>>0));ad=j.Next;ae=0;while(true){if(!(ae=ag.$length)?($throwRuntimeError("index out of range"),undefined):ag.$array[ag.$offset+af]=j.Inst.Out));ae++;}$s=10;continue;case 4:ah=b[0](j.Inst.Out,g);$s=16;case 16:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}h=ah;((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=(ai=j.Inst.Out,((ai<0||ai>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+ai])));((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=$appendSlice(new BS([]),(aj=j.Inst.Out,((aj<0||aj>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+aj]))));j.Next=$makeSlice(BT,((ak=((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]).$length/2,(ak===ak&&ak!==1/0&&ak!==-1/0)?ak>>0:$throwRuntimeError("integer divide by zero"))+1>>0));al=j.Next;am=0;while(true){if(!(am=ao.$length)?($throwRuntimeError("index out of range"),undefined):ao.$array[ao.$offset+an]=j.Inst.Out));am++;}$s=10;continue;case 5:((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=(j.Inst.Op===4));$s=10;continue;case 6:((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=false);if(j.Next.$length>0){$s=1;continue;}c[0].insert(j.Inst.Out);if(j.Inst.Rune.$length===0){((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=new BS([]));j.Next=new BT([j.Inst.Out]);$s=1;continue;}ap=$makeSlice(BS,0);if((j.Inst.Rune.$length===1)&&!((((((j.Inst.Arg<<16>>>16))&1)>>>0)===0))){$s=17;continue;}$s=18;continue;case 17:ar=(aq=j.Inst.Rune,(0>=aq.$length?($throwRuntimeError("index out of range"),undefined):aq.$array[aq.$offset+0]));ap=$append(ap,ar,ar);as=F.SimpleFold(ar);while(true){if(!(!((as===ar)))){break;}ap=$append(ap,as,as);as=F.SimpleFold(as);}$r=D.Sort(($subslice(new AO(ap.$array),ap.$offset,ap.$offset+ap.$length)));$s=20;case 20:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=19;continue;case 18:ap=$appendSlice(ap,j.Inst.Rune);case 19:((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=ap);j.Next=$makeSlice(BT,((at=((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]).$length/2,(at===at&&at!==1/0&&at!==-1/0)?at>>0:$throwRuntimeError("integer divide by zero"))+1>>0));au=j.Next;av=0;while(true){if(!(av=ax.$length)?($throwRuntimeError("index out of range"),undefined):ax.$array[ax.$offset+aw]=j.Inst.Out));av++;}j.Inst.Op=7;$s=10;continue;case 7:((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=false);if(j.Next.$length>0){$s=1;continue;}c[0].insert(j.Inst.Out);ay=new BS([]);if(!((((((j.Inst.Arg<<16>>>16))&1)>>>0)===0))){$s=21;continue;}$s=22;continue;case 21:ba=(az=j.Inst.Rune,(0>=az.$length?($throwRuntimeError("index out of range"),undefined):az.$array[az.$offset+0]));ay=$append(ay,ba,ba);bb=F.SimpleFold(ba);while(true){if(!(!((bb===ba)))){break;}ay=$append(ay,bb,bb);bb=F.SimpleFold(bb);}$r=D.Sort(($subslice(new AO(ay.$array),ay.$offset,ay.$offset+ay.$length)));$s=24;case 24:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=23;continue;case 22:ay=$append(ay,(bc=j.Inst.Rune,(0>=bc.$length?($throwRuntimeError("index out of range"),undefined):bc.$array[bc.$offset+0])),(bd=j.Inst.Rune,(0>=bd.$length?($throwRuntimeError("index out of range"),undefined):bd.$array[bd.$offset+0])));case 23:((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=ay);j.Next=$makeSlice(BT,((be=((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]).$length/2,(be===be&&be!==1/0&&be!==-1/0)?be>>0:$throwRuntimeError("integer divide by zero"))+1>>0));bf=j.Next;bg=0;while(true){if(!(bg=bi.$length)?($throwRuntimeError("index out of range"),undefined):bi.$array[bi.$offset+bh]=j.Inst.Out));bg++;}j.Inst.Op=7;$s=10;continue;case 8:((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=false);if(j.Next.$length>0){$s=1;continue;}c[0].insert(j.Inst.Out);((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=$appendSlice(new BS([]),AQ));j.Next=new BT([j.Inst.Out]);$s=10;continue;case 9:((f<0||f>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+f]=false);if(j.Next.$length>0){$s=1;continue;}c[0].insert(j.Inst.Out);((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]=$appendSlice(new BS([]),AP));j.Next=$makeSlice(BT,((bj=((f<0||f>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+f]).$length/2,(bj===bj&&bj!==1/0&&bj!==-1/0)?bj>>0:$throwRuntimeError("integer divide by zero"))+1>>0));bk=j.Next;bl=0;while(true){if(!(bl=bn.$length)?($throwRuntimeError("index out of range"),undefined):bn.$array[bn.$offset+bm]=j.Inst.Out));bl++;}case 10:case 1:$s=-1;return h;}return;}if($f===undefined){$f={$blk:$b};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.az=az;$f.ba=ba;$f.bb=bb;$f.bc=bc;$f.bd=bd;$f.be=be;$f.bf=bf;$f.bg=bg;$f.bh=bh;$f.bi=bi;$f.bj=bj;$f.bk=bk;$f.bl=bl;$f.bm=bm;$f.bn=bn;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};})(a,b,c,d,e);c[0].clear();c[0].insert(((a[0].Start>>>0)));f=$makeSlice(CK,a[0].Inst.$length);case 1:if(!(!c[0].empty())){$s=2;continue;}e[0].clear();g=c[0].next();h=b[0](g,f);$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if(!h){$s=3;continue;}$s=4;continue;case 3:a[0]=CD.nil;$s=2;continue;case 4:$s=1;continue;case 2:if(!(a[0]===CD.nil)){i=a[0].Inst;j=0;while(true){if(!(j=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+k])).Inst.Rune=((k<0||k>=d[0].$length)?($throwRuntimeError("index out of range"),undefined):d[0].$array[d[0].$offset+k]);j++;}}$s=-1;return a[0];}return;}if($f===undefined){$f={$blk:AR};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AS=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=CD.nil;if(a.Start===0){b=CD.nil;$s=-1;return b;}if(!(((c=a.Inst,d=a.Start,((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d])).Op===3))||!(((((((e=a.Inst,f=a.Start,((f<0||f>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+f])).Arg<<24>>>24))&4)>>>0)===4))){b=CD.nil;$s=-1;return b;}g=a.Inst;h=0;case 1:if(!(h=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h]),A.Inst);l=(j=a.Inst,k=i.Out,((k<0||k>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+k])).Op;m=i.Op;if((m===(0))||(m===(1))){if((l===4)||((n=a.Inst,o=i.Arg,((o<0||o>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o])).Op===4)){b=CD.nil;$s=-1;return b;}}else if(m===(3)){if(l===4){if(((((i.Arg<<24>>>24))&8)>>>0)===8){h++;$s=1;continue;}b=CD.nil;$s=-1;return b;}}else if(l===4){b=CD.nil;$s=-1;return b;}h++;$s=1;continue;case 2:b=AN(a);p=AR(b);$s=3;case 3:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}b=p;if(!(b===CD.nil)){AM(b,a);}b=b;$s=-1;return b;}return;}if($f===undefined){$f={$blk:AS};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};AT.ptr.prototype.String=function(){var a;a=this;return a.expr;};AT.prototype.String=function(){return this.$val.String();};AT.ptr.prototype.Copy=function(){var a,b;a=this;b=$clone(a,AT);return b;};AT.prototype.Copy=function(){return this.$val.Copy();};AU=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=AW(a,212,false);$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return b;}return;}if($f===undefined){$f={$blk:AU};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Compile=AU;AT.ptr.prototype.Longest=function(){var a;a=this;a.longest=true;};AT.prototype.Longest=function(){return this.$val.Longest();};AW=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=A.Parse(a,b);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;f=d[0];g=d[1];if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[CL.nil,g];}h=f.MaxCap();i=f.CapNames();f=f.Simplify();j=A.Compile(f);k=j[0];g=j[1];if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[CL.nil,g];}l=k.NumCap;if(l<2){l=2;}m=AS(k);$s=2;case 2:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}n=new AT.ptr(a,k,m,h,0,i,"",BX.nil,0,0,0,l,false,k.StartCond(),c);if(n.onepass===CD.nil){o=k.Prefix();n.prefix=o[0];n.prefixComplete=o[1];n.maxBitStateLen=O(k);}else{p=AE(k);n.prefix=p[0];n.prefixComplete=p[1];n.prefixEnd=p[2];}if(!(n.prefix==="")){n.prefixBytes=(new BX($stringToBytes(n.prefix)));q=I.DecodeRuneInString(n.prefix);n.prefixRune=q[0];}r=k.Inst.$length;s=0;while(true){if(!(!((((s<0||s>=AX.length)?($throwRuntimeError("index out of range"),undefined):AX[s])===0))&&((s<0||s>=AX.length)?($throwRuntimeError("index out of range"),undefined):AX[s])>0;}n.mpool=s;$s=-1;return[n,$ifaceNil];}return;}if($f===undefined){$f={$blk:AW};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};AT.ptr.prototype.get=function(){var a,b,c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;d=(c=a.mpool,((c<0||c>=AY.length)?($throwRuntimeError("index out of range"),undefined):AY[c])).Get();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}b=$assertType(d,CO,true);e=b[0];f=b[1];if(!f){e=new T.ptr(CL.nil,CM.nil,new Q.ptr(BT.nil,CP.nil),new Q.ptr(BT.nil,CP.nil),CQ.nil,false,BV.nil,new U.ptr(new BE.ptr(BX.nil),new BD.ptr(""),new BF.ptr($ifaceNil,false,0)));}e.re=a;e.p=a.prog;if(e.matchcap.$capacity=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h]);i.cap=$makeSlice(BV,a.matchcap);h++;}}k=(j=a.mpool,((j<0||j>=AX.length)?($throwRuntimeError("index out of range"),undefined):AX[j]));if(k===0){k=a.prog.Inst.$length;}if(e.q0.sparse.$length=AY.length)?($throwRuntimeError("index out of range"),undefined):AY[c])).Put(a);};AT.prototype.put=function(a){return this.$val.put(a);};AZ=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=AU(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}b=c;d=b[0];e=b[1];if(!($interfaceIsEqual(e,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:f=e.Error();$s=4;case 4:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$panic(new $String("regexp: Compile("+BB(a)+"): "+f));case 3:$s=-1;return d;}return;}if($f===undefined){$f={$blk:AZ};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};$pkg.MustCompile=AZ;BB=function(a){var a;if(H.CanBackquote(a)){return"`"+a+"`";}return H.Quote(a);};AT.ptr.prototype.NumSubexp=function(){var a;a=this;return a.numSubexp;};AT.prototype.NumSubexp=function(){return this.$val.NumSubexp();};AT.ptr.prototype.SubexpNames=function(){var a;a=this;return a.subexpNames;};AT.prototype.SubexpNames=function(){return this.$val.SubexpNames();};BD.ptr.prototype.step=function(a){var a,b,c;b=this;if(a>0)),1];}return I.DecodeRuneInString($substring(b.str,a));}return[-1,0];};BD.prototype.step=function(a){return this.$val.step(a);};BD.ptr.prototype.canCheckPrefix=function(){var a;a=this;return true;};BD.prototype.canCheckPrefix=function(){return this.$val.canCheckPrefix();};BD.ptr.prototype.hasPrefix=function(a){var a,b;b=this;return E.HasPrefix(b.str,a.prefix);};BD.prototype.hasPrefix=function(a){return this.$val.hasPrefix(a);};BD.ptr.prototype.index=function(a,b){var a,b,c;c=this;return E.Index($substring(c.str,b),a.prefix);};BD.prototype.index=function(a,b){return this.$val.index(a,b);};BD.ptr.prototype.context=function(a){var a,b,c,d,e,f,g,h;b=this;c=-1;d=-1;e=c;f=d;if((((a-1>>0)>>>0))<((b.str.length>>>0))){e=((b.str.charCodeAt((a-1>>0))>>0));if(e>=128){g=I.DecodeLastRuneInString($substring(b.str,0,a));e=g[0];}}if(((a>>>0))<((b.str.length>>>0))){f=((b.str.charCodeAt(a)>>0));if(f>=128){h=I.DecodeRuneInString($substring(b.str,a));f=h[0];}}return W(e,f);};BD.prototype.context=function(a){return this.$val.context(a);};BE.ptr.prototype.step=function(a){var a,b,c,d;b=this;if(a=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]));if(d<128){return[((d>>0)),1];}return I.DecodeRune($subslice(b.str,a));}return[-1,0];};BE.prototype.step=function(a){return this.$val.step(a);};BE.ptr.prototype.canCheckPrefix=function(){var a;a=this;return true;};BE.prototype.canCheckPrefix=function(){return this.$val.canCheckPrefix();};BE.ptr.prototype.hasPrefix=function(a){var a,b;b=this;return G.HasPrefix(b.str,a.prefixBytes);};BE.prototype.hasPrefix=function(a){return this.$val.hasPrefix(a);};BE.ptr.prototype.index=function(a,b){var a,b,c;c=this;return G.Index($subslice(c.str,b),a.prefixBytes);};BE.prototype.index=function(a,b){return this.$val.index(a,b);};BE.ptr.prototype.context=function(a){var a,b,c,d,e,f,g,h,i,j,k;b=this;c=-1;d=-1;e=c;f=d;if((((a-1>>0)>>>0))<((b.str.$length>>>0))){e=(((g=b.str,h=a-1>>0,((h<0||h>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h]))>>0));if(e>=128){i=I.DecodeLastRune($subslice(b.str,0,a));e=i[0];}}if(((a>>>0))<((b.str.$length>>>0))){f=(((j=b.str,((a<0||a>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+a]))>>0));if(f>=128){k=I.DecodeRune($subslice(b.str,a));f=k[0];}}return W(e,f);};BE.prototype.context=function(a){return this.$val.context(a);};BF.ptr.prototype.step=function(a){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(!b.atEOT&&!((a===b.pos))){$s=-1;return[-1,0];}d=b.r.ReadRune();$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];g=c[2];if(!($interfaceIsEqual(g,$ifaceNil))){b.atEOT=true;$s=-1;return[-1,0];}b.pos=b.pos+(f)>>0;$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:BF.ptr.prototype.step};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};BF.prototype.step=function(a){return this.$val.step(a);};BF.ptr.prototype.canCheckPrefix=function(){var a;a=this;return false;};BF.prototype.canCheckPrefix=function(){return this.$val.canCheckPrefix();};BF.ptr.prototype.hasPrefix=function(a){var a,b;b=this;return false;};BF.prototype.hasPrefix=function(a){return this.$val.hasPrefix(a);};BF.ptr.prototype.index=function(a,b){var a,b,c;c=this;return-1;};BF.prototype.index=function(a,b){return this.$val.index(a,b);};BF.ptr.prototype.context=function(a){var a,b;b=this;return new V(0,0);};BF.prototype.context=function(a){return this.$val.context(a);};AT.ptr.prototype.LiteralPrefix=function(){var a,b,c,d,e;a="";b=false;c=this;d=c.prefix;e=c.prefixComplete;a=d;b=e;return[a,b];};AT.prototype.LiteralPrefix=function(){return this.$val.LiteralPrefix();};AT.ptr.prototype.MatchReader=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.doMatch(a,BX.nil,"");$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.MatchReader};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.MatchReader=function(a){return this.$val.MatchReader(a);};AT.ptr.prototype.MatchString=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.doMatch($ifaceNil,BX.nil,a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.MatchString};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.MatchString=function(a){return this.$val.MatchString(a);};AT.ptr.prototype.Match=function(a){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.doMatch($ifaceNil,a,"");$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.Match};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.Match=function(a){return this.$val.Match(a);};AT.ptr.prototype.ReplaceAllString=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];c=[c];c[0]=this;d=2;if(E.Contains(b[0],"$")){d=$imul(2,((c[0].numSubexp+1>>0)));}e=c[0].replaceAll(BX.nil,a[0],d,(function(a,b,c){return function(e,f){var e,f;return c[0].expand(e,b[0],BX.nil,a[0],f);};})(a,b,c));$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;$s=-1;return($bytesToString(f));}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.ReplaceAllString};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.ReplaceAllString=function(a,b){return this.$val.ReplaceAllString(a,b);};AT.ptr.prototype.ReplaceAllLiteralString=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=[b];c=this;d=c.replaceAll(BX.nil,a,2,(function(b){return function(d,e){var d,e;return $appendSlice(d,b[0]);};})(b));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return($bytesToString(d));}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.ReplaceAllLiteralString};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.ReplaceAllLiteralString=function(a,b){return this.$val.ReplaceAllLiteralString(a,b);};AT.ptr.prototype.ReplaceAllStringFunc=function(a,b){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];c=this;d=c.replaceAll(BX.nil,a[0],2,(function(a,b){return function $b(d,e){var d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=d;g=b[0]($substring(a[0],(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]),(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1])));$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;$s=-1;return $appendSlice(f,h);}return;}if($f===undefined){$f={$blk:$b};}$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};})(a,b));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;$s=-1;return($bytesToString(e));}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.ReplaceAllStringFunc};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.ReplaceAllStringFunc=function(a,b){return this.$val.ReplaceAllStringFunc(a,b);};AT.ptr.prototype.replaceAll=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=0;g=0;h=BX.nil;i=0;if(!(a===BX.nil)){i=a.$length;}else{i=b.length;}if(c>e.prog.NumCap){c=e.prog.NumCap;}j=CR.zero();case 1:if(!(g<=i)){$s=2;continue;}k=e.doExecute($ifaceNil,a,b,g,c,$subslice(new BV(j),0,0));$s=3;case 3:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}l=k;if(l.$length===0){$s=2;continue;}if(!(a===BX.nil)){h=$appendSlice(h,$subslice(a,f,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])));}else{h=$appendSlice(h,$substring(b,f,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])));}if((1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1])>f||((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])===0)){$s=4;continue;}$s=5;continue;case 4:m=d(h,l);$s=6;case 6:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}h=m;case 5:f=(1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1]);n=0;if(!(a===BX.nil)){o=I.DecodeRune($subslice(a,g));n=o[1];}else{p=I.DecodeRuneInString($substring(b,g));n=p[1];}if((g+n>>0)>(1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1])){g=g+(n)>>0;}else if((g+1>>0)>(1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1])){g=g+(1)>>0;}else{g=(1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1]);}$s=1;continue;case 2:if(!(a===BX.nil)){h=$appendSlice(h,$subslice(a,f));}else{h=$appendSlice(h,$substring(b,f));}$s=-1;return h;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.replaceAll};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.replaceAll=function(a,b,c,d){return this.$val.replaceAll(a,b,c,d);};AT.ptr.prototype.ReplaceAll=function(a,b){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];c=[c];d=[d];c[0]=this;e=2;if(G.IndexByte(b[0],36)>=0){e=$imul(2,((c[0].numSubexp+1>>0)));}d[0]="";f=c[0].replaceAll(a[0],"",e,(function(a,b,c,d){return function(f,g){var f,g;if(!((d[0].length===b[0].$length))){d[0]=($bytesToString(b[0]));}return c[0].expand(f,d[0],a[0],"",g);};})(a,b,c,d));$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;$s=-1;return g;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.ReplaceAll};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.ReplaceAll=function(a,b){return this.$val.ReplaceAll(a,b);};AT.ptr.prototype.ReplaceAllLiteral=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=[b];c=this;d=c.replaceAll(a,"",2,(function(b){return function(d,e){var d,e;return $appendSlice(d,b[0]);};})(b));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.ReplaceAllLiteral};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.ReplaceAllLiteral=function(a,b){return this.$val.ReplaceAllLiteral(a,b);};AT.ptr.prototype.ReplaceAllFunc=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];c=this;d=c.replaceAll(a[0],"",2,(function(a,b){return function $b(d,e){var d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=d;g=b[0]($subslice(a[0],(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]),(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1])));$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;$s=-1;return $appendSlice(f,h);}return;}if($f===undefined){$f={$blk:$b};}$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};})(a,b));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.ReplaceAllFunc};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.ReplaceAllFunc=function(a,b){return this.$val.ReplaceAllFunc(a,b);};BL=function(){var a,b,c,d,e,f,g;a=(new BX($stringToBytes("\\.+*?()|[]{}^$")));b=0;while(true){if(!(b=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+b]);e=(d=c%16,d===d?d:$throwRuntimeError("integer divide by zero"));((e<0||e>=BJ.length)?($throwRuntimeError("index out of range"),undefined):BJ[e]=((((e<0||e>=BJ.length)?($throwRuntimeError("index out of range"),undefined):BJ[e])|(((f=((g=c/16,(g===g&&g!==1/0&&g!==-1/0)?g>>>0:$throwRuntimeError("integer divide by zero"))),f<32?(1<>>24)))>>>0));b++;}};AT.ptr.prototype.pad=function(a){var a,b,c;b=this;if(a===BV.nil){return BV.nil;}c=$imul(((1+b.numSubexp>>0)),2);while(true){if(!(a.$length=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+1])===j){if((0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0])===l){o=false;}p=0;if(b===BX.nil){q=I.DecodeRuneInString($substring(a,j,f));p=q[1];}else{r=I.DecodeRune($subslice(b,j,f));p=r[1];}if(p>0){j=j+(p)>>0;}else{j=f+1>>0;}}else{j=(1>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+1]);}l=(1>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+1]);if(o){$s=4;continue;}$s=5;continue;case 4:$r=d(e.pad(n));$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}k=k+(1)>>0;case 5:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.allMatches};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.allMatches=function(a,b,c,d){return this.$val.allMatches(a,b,c,d);};AT.ptr.prototype.Find=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=CR.zero();d=b.doExecute($ifaceNil,a,"",0,2,$subslice(new BV(c),0,0));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){$s=-1;return BX.nil;}$s=-1;return $subslice(a,(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]),(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]));}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.Find};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.Find=function(a){return this.$val.Find(a);};AT.ptr.prototype.FindIndex=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=BV.nil;c=this;d=c.doExecute($ifaceNil,a,"",0,2,BV.nil);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){b=BV.nil;$s=-1;return b;}b=$subslice(e,0,2);$s=-1;return b;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindIndex=function(a){return this.$val.FindIndex(a);};AT.ptr.prototype.FindString=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=CR.zero();d=b.doExecute($ifaceNil,BX.nil,a,0,2,$subslice(new BV(c),0,0));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){$s=-1;return"";}$s=-1;return $substring(a,(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]),(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]));}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindString};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindString=function(a){return this.$val.FindString(a);};AT.ptr.prototype.FindStringIndex=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=BV.nil;c=this;d=c.doExecute($ifaceNil,BX.nil,a,0,2,BV.nil);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){b=BV.nil;$s=-1;return b;}b=$subslice(e,0,2);$s=-1;return b;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindStringIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindStringIndex=function(a){return this.$val.FindStringIndex(a);};AT.ptr.prototype.FindReaderIndex=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=BV.nil;c=this;d=c.doExecute(a,BX.nil,"",0,2,BV.nil);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){b=BV.nil;$s=-1;return b;}b=$subslice(e,0,2);$s=-1;return b;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindReaderIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindReaderIndex=function(a){return this.$val.FindReaderIndex(a);};AT.ptr.prototype.FindSubmatch=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=CS.zero();d=b.doExecute($ifaceNil,a,"",0,b.prog.NumCap,$subslice(new BV(c),0,0));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){$s=-1;return CT.nil;}f=$makeSlice(CT,(1+b.numSubexp>>0));g=f;h=0;while(true){if(!(h=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+j]))>=0){((i<0||i>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+i]=$subslice(a,(k=$imul(2,i),((k<0||k>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+k])),(l=($imul(2,i))+1>>0,((l<0||l>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+l]))));}h++;}$s=-1;return f;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindSubmatch};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindSubmatch=function(a){return this.$val.FindSubmatch(a);};AT.ptr.prototype.Expand=function(a,b,c,d){var a,b,c,d,e;e=this;return e.expand(a,($bytesToString(b)),c,"",d);};AT.prototype.Expand=function(a,b,c,d){return this.$val.Expand(a,b,c,d);};AT.ptr.prototype.ExpandString=function(a,b,c,d){var a,b,c,d,e;e=this;return e.expand(a,b,BX.nil,c,d);};AT.prototype.ExpandString=function(a,b,c,d){return this.$val.ExpandString(a,b,c,d);};AT.ptr.prototype.expand=function(a,b,c,d,e){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;f=this;while(true){if(!(b.length>0)){break;}g=E.Index(b,"$");if(g<0){break;}a=$appendSlice(a,$substring(b,0,g));b=$substring(b,g);if(b.length>1&&(b.charCodeAt(1)===36)){a=$append(a,36);b=$substring(b,2);continue;}h=BN(b);i=h[0];j=h[1];k=h[2];l=h[3];if(!l){a=$append(a,36);b=$substring(b,1);continue;}b=k;if(j>=0){if((($imul(2,j))+1>>0)=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+m]))>=0){if(!(c===BX.nil)){a=$appendSlice(a,$subslice(c,(n=$imul(2,j),((n<0||n>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+n])),(o=($imul(2,j))+1>>0,((o<0||o>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+o]))));}else{a=$appendSlice(a,$substring(d,(p=$imul(2,j),((p<0||p>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+p])),(q=($imul(2,j))+1>>0,((q<0||q>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+q]))));}}}else{r=f.subexpNames;s=0;while(true){if(!(s=r.$length)?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+s]);if(i===u&&(($imul(2,t))+1>>0)=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+v]))>=0){if(!(c===BX.nil)){a=$appendSlice(a,$subslice(c,(w=$imul(2,t),((w<0||w>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+w])),(x=($imul(2,t))+1>>0,((x<0||x>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+x]))));}else{a=$appendSlice(a,$substring(d,(y=$imul(2,t),((y<0||y>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+y])),(z=($imul(2,t))+1>>0,((z<0||z>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+z]))));}break;}s++;}}}a=$appendSlice(a,b);return a;};AT.prototype.expand=function(a,b,c,d,e){return this.$val.expand(a,b,c,d,e);};BN=function(a){var a,b,c,d,e,f,g,h,i,j,k;b="";c=0;d="";e=false;if(a.length<2||!((a.charCodeAt(0)===36))){return[b,c,d,e];}f=false;if(a.charCodeAt(1)===123){f=true;a=$substring(a,2);}else{a=$substring(a,1);}g=0;while(true){if(!(g>0;}if(g===0){return[b,c,d,e];}b=$substring(a,0,g);if(f){if(g>=a.length||!((a.charCodeAt(g)===125))){return[b,c,d,e];}g=g+(1)>>0;}c=0;k=0;while(true){if(!(k=100000000){c=-1;break;}c=(($imul(c,10))+((b.charCodeAt(k)>>0))>>0)-48>>0;k=k+(1)>>0;}if((b.charCodeAt(0)===48)&&b.length>1){c=-1;}d=$substring(a,g);e=true;return[b,c,d,e];};AT.ptr.prototype.FindSubmatchIndex=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.doExecute($ifaceNil,a,"",0,b.prog.NumCap,BV.nil);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=b.pad(c);$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindSubmatchIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindSubmatchIndex=function(a){return this.$val.FindSubmatchIndex(a);};AT.ptr.prototype.FindStringSubmatch=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=CS.zero();d=b.doExecute($ifaceNil,BX.nil,a,0,b.prog.NumCap,$subslice(new BV(c),0,0));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;if(e===BV.nil){$s=-1;return CN.nil;}f=$makeSlice(CN,(1+b.numSubexp>>0));g=f;h=0;while(true){if(!(h=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+j]))>=0){((i<0||i>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+i]=$substring(a,(k=$imul(2,i),((k<0||k>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+k])),(l=($imul(2,i))+1>>0,((l<0||l>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+l]))));}h++;}$s=-1;return f;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindStringSubmatch};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindStringSubmatch=function(a){return this.$val.FindStringSubmatch(a);};AT.ptr.prototype.FindStringSubmatchIndex=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.doExecute($ifaceNil,BX.nil,a,0,b.prog.NumCap,BV.nil);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=b.pad(c);$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindStringSubmatchIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindStringSubmatchIndex=function(a){return this.$val.FindStringSubmatchIndex(a);};AT.ptr.prototype.FindReaderSubmatchIndex=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.doExecute(a,BX.nil,"",0,b.prog.NumCap,BV.nil);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=b.pad(c);$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindReaderSubmatchIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindReaderSubmatchIndex=function(a){return this.$val.FindReaderSubmatchIndex(a);};AT.ptr.prototype.FindAll=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];c=[c];d=this;if(b<0){b=a[0].$length+1>>0;}c[0]=CT.nil;$r=d.allMatches("",a[0],b,(function(a,c){return function(e){var e;if(c[0]===CT.nil){c[0]=$makeSlice(CT,0,10);}c[0]=$append(c[0],$subslice(a[0],(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]),(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1])));};})(a,c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAll};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAll=function(a,b){return this.$val.FindAll(a,b);};AT.ptr.prototype.FindAllIndex=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];d=this;if(b<0){b=a.$length+1>>0;}c[0]=CU.nil;$r=d.allMatches("",a,b,(function(c){return function(e){var e;if(c[0]===CU.nil){c[0]=$makeSlice(CU,0,10);}c[0]=$append(c[0],$subslice(e,0,2));};})(c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllIndex=function(a,b){return this.$val.FindAllIndex(a,b);};AT.ptr.prototype.FindAllString=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];c=[c];d=this;if(b<0){b=a[0].length+1>>0;}c[0]=CN.nil;$r=d.allMatches(a[0],BX.nil,b,(function(a,c){return function(e){var e;if(c[0]===CN.nil){c[0]=$makeSlice(CN,0,10);}c[0]=$append(c[0],$substring(a[0],(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]),(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1])));};})(a,c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllString};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllString=function(a,b){return this.$val.FindAllString(a,b);};AT.ptr.prototype.FindAllStringIndex=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];d=this;if(b<0){b=a.length+1>>0;}c[0]=CU.nil;$r=d.allMatches(a,BX.nil,b,(function(c){return function(e){var e;if(c[0]===CU.nil){c[0]=$makeSlice(CU,0,10);}c[0]=$append(c[0],$subslice(e,0,2));};})(c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllStringIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllStringIndex=function(a,b){return this.$val.FindAllStringIndex(a,b);};AT.ptr.prototype.FindAllSubmatch=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];c=[c];d=this;if(b<0){b=a[0].$length+1>>0;}c[0]=CV.nil;$r=d.allMatches("",a[0],b,(function(a,c){return function(e){var e,f,g,h,i,j,k,l,m;if(c[0]===CV.nil){c[0]=$makeSlice(CV,0,10);}g=$makeSlice(CT,(f=e.$length/2,(f===f&&f!==1/0&&f!==-1/0)?f>>0:$throwRuntimeError("integer divide by zero")));h=g;i=0;while(true){if(!(i=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+k]))>=0){((j<0||j>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+j]=$subslice(a[0],(l=$imul(2,j),((l<0||l>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+l])),(m=($imul(2,j))+1>>0,((m<0||m>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+m]))));}i++;}c[0]=$append(c[0],g);};})(a,c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllSubmatch};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllSubmatch=function(a,b){return this.$val.FindAllSubmatch(a,b);};AT.ptr.prototype.FindAllSubmatchIndex=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];d=this;if(b<0){b=a.$length+1>>0;}c[0]=CU.nil;$r=d.allMatches("",a,b,(function(c){return function(e){var e;if(c[0]===CU.nil){c[0]=$makeSlice(CU,0,10);}c[0]=$append(c[0],e);};})(c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllSubmatchIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllSubmatchIndex=function(a,b){return this.$val.FindAllSubmatchIndex(a,b);};AT.ptr.prototype.FindAllStringSubmatch=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];c=[c];d=this;if(b<0){b=a[0].length+1>>0;}c[0]=CW.nil;$r=d.allMatches(a[0],BX.nil,b,(function(a,c){return function(e){var e,f,g,h,i,j,k,l,m;if(c[0]===CW.nil){c[0]=$makeSlice(CW,0,10);}g=$makeSlice(CN,(f=e.$length/2,(f===f&&f!==1/0&&f!==-1/0)?f>>0:$throwRuntimeError("integer divide by zero")));h=g;i=0;while(true){if(!(i=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+k]))>=0){((j<0||j>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+j]=$substring(a[0],(l=$imul(2,j),((l<0||l>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+l])),(m=($imul(2,j))+1>>0,((m<0||m>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+m]))));}i++;}c[0]=$append(c[0],g);};})(a,c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllStringSubmatch};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllStringSubmatch=function(a,b){return this.$val.FindAllStringSubmatch(a,b);};AT.ptr.prototype.FindAllStringSubmatchIndex=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];d=this;if(b<0){b=a.length+1>>0;}c[0]=CU.nil;$r=d.allMatches(a,BX.nil,b,(function(c){return function(e){var e;if(c[0]===CU.nil){c[0]=$makeSlice(CU,0,10);}c[0]=$append(c[0],e);};})(c));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c[0];}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.FindAllStringSubmatchIndex};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.FindAllStringSubmatchIndex=function(a,b){return this.$val.FindAllStringSubmatchIndex(a,b);};AT.ptr.prototype.Split=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(b===0){$s=-1;return CN.nil;}if(c.expr.length>0&&(a.length===0)){$s=-1;return new CN([""]);}d=c.FindAllStringIndex(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=$makeSlice(CN,0,e.$length);g=0;h=0;i=e;j=0;while(true){if(!(j=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]);if(b>0&&f.$length>=(b-1>>0)){break;}h=(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]);if(!(((1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1])===0))){f=$append(f,$substring(a,g,h));}g=(1>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+1]);j++;}if(!((h===a.length))){f=$append(f,$substring(a,g));}$s=-1;return f;}return;}if($f===undefined){$f={$blk:AT.ptr.prototype.Split};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};AT.prototype.Split=function(a,b){return this.$val.Split(a,b);};BU.methods=[{prop:"reset",name:"reset",pkg:"regexp",typ:$funcType([CM,$Int,$Int],[],false)},{prop:"shouldVisit",name:"shouldVisit",pkg:"regexp",typ:$funcType([$Uint32,$Int],[$Bool],false)},{prop:"push",name:"push",pkg:"regexp",typ:$funcType([CL,$Uint32,$Int,$Bool],[],false)}];CO.methods=[{prop:"init",name:"init",pkg:"regexp",typ:$funcType([$Int],[],false)},{prop:"alloc",name:"alloc",pkg:"regexp",typ:$funcType([BZ],[BY],false)},{prop:"match",name:"match",pkg:"regexp",typ:$funcType([BC,$Int],[$Bool],false)},{prop:"clear",name:"clear",pkg:"regexp",typ:$funcType([CX],[],false)},{prop:"step",name:"step",pkg:"regexp",typ:$funcType([CX,CX,$Int,$Int,$Int32,CA],[],false)},{prop:"add",name:"add",pkg:"regexp",typ:$funcType([CX,$Uint32,$Int,BV,CA,BY],[BY],false)}];CY.methods=[{prop:"newBytes",name:"newBytes",pkg:"regexp",typ:$funcType([BX],[BC],false)},{prop:"newString",name:"newString",pkg:"regexp",typ:$funcType([$String],[BC],false)},{prop:"newReader",name:"newReader",pkg:"regexp",typ:$funcType([C.RuneReader],[BC],false)},{prop:"clear",name:"clear",pkg:"regexp",typ:$funcType([],[],false)},{prop:"init",name:"init",pkg:"regexp",typ:$funcType([C.RuneReader,BX,$String],[BC,$Int],false)}];V.methods=[{prop:"match",name:"match",pkg:"regexp",typ:$funcType([A.EmptyOp],[$Bool],false)}];CF.methods=[{prop:"empty",name:"empty",pkg:"regexp",typ:$funcType([],[$Bool],false)},{prop:"next",name:"next",pkg:"regexp",typ:$funcType([],[$Uint32],false)},{prop:"clear",name:"clear",pkg:"regexp",typ:$funcType([],[],false)},{prop:"contains",name:"contains",pkg:"regexp",typ:$funcType([$Uint32],[$Bool],false)},{prop:"insert",name:"insert",pkg:"regexp",typ:$funcType([$Uint32],[],false)},{prop:"insertNew",name:"insertNew",pkg:"regexp",typ:$funcType([$Uint32],[],false)}];AO.methods=[{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)}];CL.methods=[{prop:"tryBacktrack",name:"tryBacktrack",pkg:"regexp",typ:$funcType([BU,BC,$Uint32,$Int],[$Bool],false)},{prop:"backtrack",name:"backtrack",pkg:"regexp",typ:$funcType([BX,$String,$Int,$Int,BV],[BV],false)},{prop:"doOnePass",name:"doOnePass",pkg:"regexp",typ:$funcType([C.RuneReader,BX,$String,$Int,$Int,BV],[BV],false)},{prop:"doMatch",name:"doMatch",pkg:"regexp",typ:$funcType([C.RuneReader,BX,$String],[$Bool],false)},{prop:"doExecute",name:"doExecute",pkg:"regexp",typ:$funcType([C.RuneReader,BX,$String,$Int,$Int,BV],[BV],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"Copy",name:"Copy",pkg:"",typ:$funcType([],[CL],false)},{prop:"Longest",name:"Longest",pkg:"",typ:$funcType([],[],false)},{prop:"get",name:"get",pkg:"regexp",typ:$funcType([],[CO],false)},{prop:"put",name:"put",pkg:"regexp",typ:$funcType([CO],[],false)},{prop:"NumSubexp",name:"NumSubexp",pkg:"",typ:$funcType([],[$Int],false)},{prop:"SubexpNames",name:"SubexpNames",pkg:"",typ:$funcType([],[CN],false)},{prop:"LiteralPrefix",name:"LiteralPrefix",pkg:"",typ:$funcType([],[$String,$Bool],false)},{prop:"MatchReader",name:"MatchReader",pkg:"",typ:$funcType([C.RuneReader],[$Bool],false)},{prop:"MatchString",name:"MatchString",pkg:"",typ:$funcType([$String],[$Bool],false)},{prop:"Match",name:"Match",pkg:"",typ:$funcType([BX],[$Bool],false)},{prop:"ReplaceAllString",name:"ReplaceAllString",pkg:"",typ:$funcType([$String,$String],[$String],false)},{prop:"ReplaceAllLiteralString",name:"ReplaceAllLiteralString",pkg:"",typ:$funcType([$String,$String],[$String],false)},{prop:"ReplaceAllStringFunc",name:"ReplaceAllStringFunc",pkg:"",typ:$funcType([$String,CZ],[$String],false)},{prop:"replaceAll",name:"replaceAll",pkg:"regexp",typ:$funcType([BX,$String,$Int,DA],[BX],false)},{prop:"ReplaceAll",name:"ReplaceAll",pkg:"",typ:$funcType([BX,BX],[BX],false)},{prop:"ReplaceAllLiteral",name:"ReplaceAllLiteral",pkg:"",typ:$funcType([BX,BX],[BX],false)},{prop:"ReplaceAllFunc",name:"ReplaceAllFunc",pkg:"",typ:$funcType([BX,DB],[BX],false)},{prop:"pad",name:"pad",pkg:"regexp",typ:$funcType([BV],[BV],false)},{prop:"allMatches",name:"allMatches",pkg:"regexp",typ:$funcType([$String,BX,$Int,DC],[],false)},{prop:"Find",name:"Find",pkg:"",typ:$funcType([BX],[BX],false)},{prop:"FindIndex",name:"FindIndex",pkg:"",typ:$funcType([BX],[BV],false)},{prop:"FindString",name:"FindString",pkg:"",typ:$funcType([$String],[$String],false)},{prop:"FindStringIndex",name:"FindStringIndex",pkg:"",typ:$funcType([$String],[BV],false)},{prop:"FindReaderIndex",name:"FindReaderIndex",pkg:"",typ:$funcType([C.RuneReader],[BV],false)},{prop:"FindSubmatch",name:"FindSubmatch",pkg:"",typ:$funcType([BX],[CT],false)},{prop:"Expand",name:"Expand",pkg:"",typ:$funcType([BX,BX,BX,BV],[BX],false)},{prop:"ExpandString",name:"ExpandString",pkg:"",typ:$funcType([BX,$String,$String,BV],[BX],false)},{prop:"expand",name:"expand",pkg:"regexp",typ:$funcType([BX,$String,BX,$String,BV],[BX],false)},{prop:"FindSubmatchIndex",name:"FindSubmatchIndex",pkg:"",typ:$funcType([BX],[BV],false)},{prop:"FindStringSubmatch",name:"FindStringSubmatch",pkg:"",typ:$funcType([$String],[CN],false)},{prop:"FindStringSubmatchIndex",name:"FindStringSubmatchIndex",pkg:"",typ:$funcType([$String],[BV],false)},{prop:"FindReaderSubmatchIndex",name:"FindReaderSubmatchIndex",pkg:"",typ:$funcType([C.RuneReader],[BV],false)},{prop:"FindAll",name:"FindAll",pkg:"",typ:$funcType([BX,$Int],[CT],false)},{prop:"FindAllIndex",name:"FindAllIndex",pkg:"",typ:$funcType([BX,$Int],[CU],false)},{prop:"FindAllString",name:"FindAllString",pkg:"",typ:$funcType([$String,$Int],[CN],false)},{prop:"FindAllStringIndex",name:"FindAllStringIndex",pkg:"",typ:$funcType([$String,$Int],[CU],false)},{prop:"FindAllSubmatch",name:"FindAllSubmatch",pkg:"",typ:$funcType([BX,$Int],[CV],false)},{prop:"FindAllSubmatchIndex",name:"FindAllSubmatchIndex",pkg:"",typ:$funcType([BX,$Int],[CU],false)},{prop:"FindAllStringSubmatch",name:"FindAllStringSubmatch",pkg:"",typ:$funcType([$String,$Int],[CW],false)},{prop:"FindAllStringSubmatchIndex",name:"FindAllStringSubmatchIndex",pkg:"",typ:$funcType([$String,$Int],[CU],false)},{prop:"Split",name:"Split",pkg:"",typ:$funcType([$String,$Int],[CN],false)}];DD.methods=[{prop:"step",name:"step",pkg:"regexp",typ:$funcType([$Int],[$Int32,$Int],false)},{prop:"canCheckPrefix",name:"canCheckPrefix",pkg:"regexp",typ:$funcType([],[$Bool],false)},{prop:"hasPrefix",name:"hasPrefix",pkg:"regexp",typ:$funcType([CL],[$Bool],false)},{prop:"index",name:"index",pkg:"regexp",typ:$funcType([CL,$Int],[$Int],false)},{prop:"context",name:"context",pkg:"regexp",typ:$funcType([$Int],[V],false)}];DE.methods=[{prop:"step",name:"step",pkg:"regexp",typ:$funcType([$Int],[$Int32,$Int],false)},{prop:"canCheckPrefix",name:"canCheckPrefix",pkg:"regexp",typ:$funcType([],[$Bool],false)},{prop:"hasPrefix",name:"hasPrefix",pkg:"regexp",typ:$funcType([CL],[$Bool],false)},{prop:"index",name:"index",pkg:"regexp",typ:$funcType([CL,$Int],[$Int],false)},{prop:"context",name:"context",pkg:"regexp",typ:$funcType([$Int],[V],false)}];DF.methods=[{prop:"step",name:"step",pkg:"regexp",typ:$funcType([$Int],[$Int32,$Int],false)},{prop:"canCheckPrefix",name:"canCheckPrefix",pkg:"regexp",typ:$funcType([],[$Bool],false)},{prop:"hasPrefix",name:"hasPrefix",pkg:"regexp",typ:$funcType([CL],[$Bool],false)},{prop:"index",name:"index",pkg:"regexp",typ:$funcType([CL,$Int],[$Int],false)},{prop:"context",name:"context",pkg:"regexp",typ:$funcType([$Int],[V],false)}];J.init("regexp",[{prop:"pc",name:"pc",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"arg",name:"arg",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"pos",name:"pos",embedded:false,exported:false,typ:$Int,tag:""}]);K.init("regexp",[{prop:"end",name:"end",embedded:false,exported:false,typ:$Int,tag:""},{prop:"cap",name:"cap",embedded:false,exported:false,typ:BV,tag:""},{prop:"matchcap",name:"matchcap",embedded:false,exported:false,typ:BV,tag:""},{prop:"jobs",name:"jobs",embedded:false,exported:false,typ:BW,tag:""},{prop:"visited",name:"visited",embedded:false,exported:false,typ:BT,tag:""},{prop:"inputs",name:"inputs",embedded:false,exported:false,typ:U,tag:""}]);Q.init("regexp",[{prop:"sparse",name:"sparse",embedded:false,exported:false,typ:BT,tag:""},{prop:"dense",name:"dense",embedded:false,exported:false,typ:CP,tag:""}]);R.init("regexp",[{prop:"pc",name:"pc",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"t",name:"t",embedded:false,exported:false,typ:BY,tag:""}]);S.init("regexp",[{prop:"inst",name:"inst",embedded:false,exported:false,typ:BZ,tag:""},{prop:"cap",name:"cap",embedded:false,exported:false,typ:BV,tag:""}]);T.init("regexp",[{prop:"re",name:"re",embedded:false,exported:false,typ:CL,tag:""},{prop:"p",name:"p",embedded:false,exported:false,typ:CM,tag:""},{prop:"q0",name:"q0",embedded:false,exported:false,typ:Q,tag:""},{prop:"q1",name:"q1",embedded:false,exported:false,typ:Q,tag:""},{prop:"pool",name:"pool",embedded:false,exported:false,typ:CQ,tag:""},{prop:"matched",name:"matched",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"matchcap",name:"matchcap",embedded:false,exported:false,typ:BV,tag:""},{prop:"inputs",name:"inputs",embedded:false,exported:false,typ:U,tag:""}]);U.init("regexp",[{prop:"bytes",name:"bytes",embedded:false,exported:false,typ:BE,tag:""},{prop:"string",name:"string",embedded:false,exported:false,typ:BD,tag:""},{prop:"reader",name:"reader",embedded:false,exported:false,typ:BF,tag:""}]);X.init("regexp",[{prop:"inputs",name:"inputs",embedded:false,exported:false,typ:U,tag:""},{prop:"matchcap",name:"matchcap",embedded:false,exported:false,typ:BV,tag:""}]);AC.init("",[{prop:"Inst",name:"Inst",embedded:false,exported:true,typ:CG,tag:""},{prop:"Start",name:"Start",embedded:false,exported:true,typ:$Int,tag:""},{prop:"NumCap",name:"NumCap",embedded:false,exported:true,typ:$Int,tag:""}]);AD.init("",[{prop:"Inst",name:"Inst",embedded:true,exported:true,typ:A.Inst,tag:""},{prop:"Next",name:"Next",embedded:false,exported:true,typ:BT,tag:""}]);AH.init("regexp",[{prop:"sparse",name:"sparse",embedded:false,exported:false,typ:BT,tag:""},{prop:"dense",name:"dense",embedded:false,exported:false,typ:BT,tag:""},{prop:"size",name:"size",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"nextIndex",name:"nextIndex",embedded:false,exported:false,typ:$Uint32,tag:""}]);AO.init($Int32);AT.init("regexp",[{prop:"expr",name:"expr",embedded:false,exported:false,typ:$String,tag:""},{prop:"prog",name:"prog",embedded:false,exported:false,typ:CM,tag:""},{prop:"onepass",name:"onepass",embedded:false,exported:false,typ:CD,tag:""},{prop:"numSubexp",name:"numSubexp",embedded:false,exported:false,typ:$Int,tag:""},{prop:"maxBitStateLen",name:"maxBitStateLen",embedded:false,exported:false,typ:$Int,tag:""},{prop:"subexpNames",name:"subexpNames",embedded:false,exported:false,typ:CN,tag:""},{prop:"prefix",name:"prefix",embedded:false,exported:false,typ:$String,tag:""},{prop:"prefixBytes",name:"prefixBytes",embedded:false,exported:false,typ:BX,tag:""},{prop:"prefixRune",name:"prefixRune",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"prefixEnd",name:"prefixEnd",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"mpool",name:"mpool",embedded:false,exported:false,typ:$Int,tag:""},{prop:"matchcap",name:"matchcap",embedded:false,exported:false,typ:$Int,tag:""},{prop:"prefixComplete",name:"prefixComplete",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"cond",name:"cond",embedded:false,exported:false,typ:A.EmptyOp,tag:""},{prop:"longest",name:"longest",embedded:false,exported:false,typ:$Bool,tag:""}]);BC.init([{prop:"canCheckPrefix",name:"canCheckPrefix",pkg:"regexp",typ:$funcType([],[$Bool],false)},{prop:"context",name:"context",pkg:"regexp",typ:$funcType([$Int],[V],false)},{prop:"hasPrefix",name:"hasPrefix",pkg:"regexp",typ:$funcType([CL],[$Bool],false)},{prop:"index",name:"index",pkg:"regexp",typ:$funcType([CL,$Int],[$Int],false)},{prop:"step",name:"step",pkg:"regexp",typ:$funcType([$Int],[$Int32,$Int],false)}]);BD.init("regexp",[{prop:"str",name:"str",embedded:false,exported:false,typ:$String,tag:""}]);BE.init("regexp",[{prop:"str",name:"str",embedded:false,exported:false,typ:BX,tag:""}]);BF.init("regexp",[{prop:"r",name:"r",embedded:false,exported:false,typ:C.RuneReader,tag:""},{prop:"atEOT",name:"atEOT",embedded:false,exported:false,typ:$Bool,tag:""},{prop:"pos",name:"pos",embedded:false,exported:false,typ:$Int,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=G.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=I.$init();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}L=new B.Pool.ptr(BO.nil,$throwNilPointerError);Y=new B.Pool.ptr(BO.nil,$throwNilPointerError);AB=BP.zero();AY=BQ.zero();BJ=BR.zero();AJ=new BS([]);AK=new BT([4294967295]);AP=new BS([0,9,11,1114111]);AQ=new BS([0,1114111]);AX=$toNativeArray($kindInt,[128,512,2048,16384,0]);BL();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc"]=(function(){var $pkg={},$init,F,A,I,G,B,D,C,J,E,H,K,L,M,N,O,Q,R,V,AF,AP,AT,AU,AW,AY,AZ,BA,BB,BC,BD,BE,BF,BG,X,AA,AB,AC,AG,AQ,AR,AV,a,W,Y,Z,AD,AE,AH,AI,AL,AM,AS;F=$packages["bytes"];A=$packages["encoding/binary"];I=$packages["errors"];G=$packages["fmt"];B=$packages["io"];D=$packages["math"];C=$packages["reflect"];J=$packages["regexp"];E=$packages["strconv"];H=$packages["strings"];K=$packages["sync"];L=$pkg.byteWriter=$newType(0,$kindStruct,"struc.byteWriter",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",false,function(buf_,pos_){this.$val=this;if(arguments.length===0){this.buf=AW.nil;this.pos=0;return;}this.buf=buf_;this.pos=pos_;});M=$pkg.binaryFallback=$newType(0,$kindStruct,"struc.binaryFallback",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",false,function(typ_,ptr_,flag_){this.$val=this;if(arguments.length===0){this.typ=BB.nil;this.ptr=0;this.flag=0;return;}this.typ=typ_;this.ptr=ptr_;this.flag=flag_;});N=$pkg.Custom=$newType(8,$kindInterface,"struc.Custom",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,null);O=$pkg.customFallback=$newType(0,$kindStruct,"struc.customFallback",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",false,function(custom_){this.$val=this;if(arguments.length===0){this.custom=$ifaceNil;return;}this.custom=custom_;});Q=$pkg.Field=$newType(0,$kindStruct,"struc.Field",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,function(Name_,Ptr_,Index_,Type_,defType_,Array_,Slice_,Len_,Order_,Sizeof_,Sizefrom_,Fields_,kind_){this.$val=this;if(arguments.length===0){this.Name="";this.Ptr=false;this.Index=0;this.Type=0;this.defType=0;this.Array=false;this.Slice=false;this.Len=0;this.Order=$ifaceNil;this.Sizeof=AZ.nil;this.Sizefrom=AZ.nil;this.Fields=R.nil;this.kind=0;return;}this.Name=Name_;this.Ptr=Ptr_;this.Index=Index_;this.Type=Type_;this.defType=defType_;this.Array=Array_;this.Slice=Slice_;this.Len=Len_;this.Order=Order_;this.Sizeof=Sizeof_;this.Sizefrom=Sizefrom_;this.Fields=Fields_;this.kind=kind_;});R=$pkg.Fields=$newType(12,$kindSlice,"struc.Fields",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,null);V=$pkg.strucTag=$newType(0,$kindStruct,"struc.strucTag",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",false,function(Type_,Order_,Sizeof_,Skip_,Sizefrom_){this.$val=this;if(arguments.length===0){this.Type="";this.Order=$ifaceNil;this.Sizeof="";this.Skip=false;this.Sizefrom="";return;}this.Type=Type_;this.Order=Order_;this.Sizeof=Sizeof_;this.Skip=Skip_;this.Sizefrom=Sizefrom_;});AF=$pkg.Options=$newType(0,$kindStruct,"struc.Options",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,function(ByteAlign_,PtrSize_,Order_){this.$val=this;if(arguments.length===0){this.ByteAlign=0;this.PtrSize=0;this.Order=$ifaceNil;return;}this.ByteAlign=ByteAlign_;this.PtrSize=PtrSize_;this.Order=Order_;});AP=$pkg.Type=$newType(4,$kindInt,"struc.Type",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,null);AT=$pkg.Size_t=$newType(8,$kindUint64,"struc.Size_t",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,null);AU=$pkg.Off_t=$newType(8,$kindInt64,"struc.Off_t",true,"github.com/v2fly/BrowserBridge/vendor/github.com/lunixbochs/struc",true,null);AW=$sliceType($Uint8);AY=$sliceType($emptyInterface);AZ=$sliceType($Int);BA=$sliceType(C.Value);BB=$ptrType(C.rtype);BC=$ptrType(Q);BD=$sliceType($String);BE=$arrayType($Uint8,8);BF=$ptrType(V);BG=$ptrType(AF);L.ptr.prototype.Write=function(b){var b,c,d;c=this;d=c.buf.$length-c.pos>>0;if(d0){$copySlice($subslice(c.buf,c.pos),b);c.pos=c.pos+(b.$length)>>0;}return[b.$length,$ifaceNil];};L.prototype.Write=function(b){return this.$val.Write(b);};M.ptr.prototype.String=function(){var b;b=this;return $clone(b,M).String();};M.prototype.String=function(){return this.$val.String();};M.ptr.prototype.Sizeof=function(b,c){var b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=$clone(b,C.Value).Interface();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=A.Size(e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return f;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Sizeof};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Sizeof=function(b,c){return this.$val.Sizeof(b,c);};M.ptr.prototype.Pack=function(b,c,d){var b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=new L.ptr(b,0);h=(g=A.BigEndian,new g.constructor.elem(g));if(!($interfaceIsEqual(d.Order,$ifaceNil))){h=d.Order;}i=new f.constructor.elem(f);j=h;k=$clone(c,C.Value).Interface();$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}l=k;m=A.Write(i,j,l);$s=2;case 2:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}n=m;$s=-1;return[f.pos,n];}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Pack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Pack=function(b,c,d){return this.$val.Pack(b,c,d);};M.ptr.prototype.Unpack=function(b,c,d){var b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;g=(f=A.BigEndian,new f.constructor.elem(f));if(!($interfaceIsEqual(d.Order,$ifaceNil))){g=d.Order;}h=b;i=g;j=$clone(c,C.Value).Interface();$s=1;case 1:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j;l=A.Read(h,i,k);$s=2;case 2:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}$s=-1;return l;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Unpack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Unpack=function(b,c,d){return this.$val.Unpack(b,c,d);};O.ptr.prototype.Pack=function(b,c,d){var b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=e.custom.Pack(b,d);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return f;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.Pack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.Pack=function(b,c,d){return this.$val.Pack(b,c,d);};O.ptr.prototype.Unpack=function(b,c,d){var b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;f=e.custom.Unpack(b,1,d);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return f;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.Unpack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.Unpack=function(b,c,d){return this.$val.Unpack(b,c,d);};O.ptr.prototype.Sizeof=function(b,c){var b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=d.custom.Size(c);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.Sizeof};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.Sizeof=function(b,c){return this.$val.Sizeof(b,c);};O.ptr.prototype.String=function(){var b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.custom.String();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:O.ptr.prototype.String};}$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};O.prototype.String=function(){return this.$val.String();};Q.ptr.prototype.String=function(){var b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c="";if(b.Type===1){$s=1;continue;}$s=2;continue;case 1:d=G.Sprintf("{type: Pad, len: %d}",new AY([new $Int(b.Len)]));$s=4;case 4:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;case 2:e=G.Sprintf("type: %s, order: %v",new AY([new $String(new AP(b.Type).String()),b.Order]));$s=5;case 5:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}c=e;case 3:if(!(b.Sizefrom===AZ.nil)){$s=6;continue;}if(b.Len>0){$s=7;continue;}$s=8;continue;case 6:f=G.Sprintf(", sizefrom: %v",new AY([b.Sizefrom]));$s=9;case 9:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}c=c+(f);$s=8;continue;case 7:g=G.Sprintf(", len: %d",new AY([new $Int(b.Len)]));$s=10;case 10:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}c=c+(g);case 8:if(!(b.Sizeof===AZ.nil)){$s=11;continue;}$s=12;continue;case 11:h=G.Sprintf(", sizeof: %v",new AY([b.Sizeof]));$s=13;case 13:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}c=c+(h);case 12:$s=-1;return"{"+c+"}";}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.String};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.String=function(){return this.$val.String();};Q.ptr.prototype.Size=function(b,c){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=new AP(d.Type).Resolve(c);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;g=0;if(f===15){$s=2;continue;}if(f===1){$s=3;continue;}if(d.Slice||(d.kind===24)){$s=4;continue;}if(f===19){$s=5;continue;}$s=6;continue;case 2:h=new BA([$clone(b,C.Value)]);if(d.Slice){$s=8;continue;}$s=9;continue;case 8:h=$makeSlice(BA,$clone(b,C.Value).Len());i=0;case 10:if(!(i<$clone(b,C.Value).Len())){$s=11;continue;}j=$clone(b,C.Value).Index(i);$s=12;case 12:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]=j);i=i+(1)>>0;$s=10;continue;case 11:case 9:k=h;l=0;case 13:if(!(l=k.$length)?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+l]);n=d.Fields.Sizeof($clone(m,C.Value),c);$s=15;case 15:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}g=g+(n)>>0;l++;$s=13;continue;case 14:$s=7;continue;case 3:g=d.Len;$s=7;continue;case 4:o=$clone(b,C.Value).Len();if(d.Len>1){o=d.Len;}g=$imul(o,new AP(f).Size());$s=7;continue;case 5:p=$clone($clone(b,C.Value).Addr(),C.Value).Interface();$s=16;case 16:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=$assertType(p,N).Size(c);$s=17;case 17:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}$s=-1;return q;case 6:g=new AP(f).Size();case 7:r=c.ByteAlign;if(r>0&&g=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0]=1);}else{(0>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0]=0);}$s=20;continue;case 16:(0>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0]=((p.$low<<24>>>24)));$s=20;continue;case 17:$r=i.PutUint16(b,((p.$low<<16>>>16)));$s=21;case 21:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=20;continue;case 18:$r=i.PutUint32(b,((p.$low>>>0)));$s=22;case 22:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=20;continue;case 19:$r=i.PutUint64(b,(p));$s=23;case 23:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 20:case 14:$s=12;continue;case 8:f=new AP(l).Size();t=$clone(c,C.Value).Float();u=l;if(u===(12)){$s=25;continue;}if(u===(13)){$s=26;continue;}$s=27;continue;case 25:$r=i.PutUint32(b,D.Float32bits(($fround(t))));$s=28;case 28:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=27;continue;case 26:$r=i.PutUint64(b,D.Float64bits(t));$s=29;case 29:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 27:case 24:$s=12;continue;case 9:v=h.kind;if(v===(24)){$s=31;continue;}$s=32;continue;case 31:f=$clone(c,C.Value).Len();w=$clone(c,C.Value).String();$s=34;case 34:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}$copySlice(b,(new AW($stringToBytes(w))));$s=33;continue;case 32:f=$clone(c,C.Value).Len();x=$clone(c,C.Value).Bytes();$s=35;case 35:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}$copySlice(b,x);case 33:case 30:$s=12;continue;case 10:z=$clone($clone(c,C.Value).Addr(),C.Value).Interface();$s=36;case 36:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}aa=$assertType(z,N).Pack(b,e);$s=37;case 37:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}y=aa;f=y[0];g=y[1];$s=-1;return[f,g];case 11:ab=G.Sprintf("no pack handler for type: %s",new AY([new AP(l)]));$s=38;case 38:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}$panic(new $String(ab));case 12:case 5:$s=-1;return[f,g];}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.packVal};}$f.aa=aa;$f.ab=ab;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.packVal=function(b,c,d,e){return this.$val.packVal(b,c,d,e);};Q.ptr.prototype.Pack=function(b,c,d,e){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=this;g=new AP(f.Type).Resolve(e);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if(h===1){i=0;while(true){if(!(i=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+i]=0);i=i+(1)>>0;}$s=-1;return[d,$ifaceNil];}if(f.Slice){$s=2;continue;}$s=3;continue;case 2:j=$clone(c,C.Value).Len();if(!f.Array&&(h===5)&&((f.defType===5)||(f.kind===24))){$s=5;continue;}$s=6;continue;case 5:k=AW.nil;if(f.kind===24){$s=7;continue;}$s=8;continue;case 7:l=$clone(c,C.Value).String();$s=10;case 10:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}k=(new AW($stringToBytes(l)));$s=9;continue;case 8:m=$clone(c,C.Value).Bytes();$s=11;case 11:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}k=m;case 9:$copySlice(b,k);if(j>0);$copySlice($subslice(b,j),n);$s=-1;return[d,$ifaceNil];}$s=-1;return[$clone(c,C.Value).Len(),$ifaceNil];case 6:o=0;p=new C.Value.ptr(BB.nil,0,0);if(j>0;}s=s+(1)>>0;$s=16;continue;case 17:$s=-1;return[o,$ifaceNil];case 3:z=f.packVal(b,$clone(c,C.Value),d,e);$s=22;case 22:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}$s=-1;return z;case 4:$s=-1;return[0,$ifaceNil];}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.Pack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.Pack=function(b,c,d,e){return this.$val.Pack(b,c,d,e);};Q.ptr.prototype.unpackVal=function(b,c,d,e){var aa,ab,ac,ad,ae,af,ag,ah,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=this;g=f.Order;if(!($interfaceIsEqual(e.Order,$ifaceNil))){g=e.Order;}if(f.Ptr){$s=1;continue;}$s=2;continue;case 1:h=$clone(c,C.Value).Elem();$s=3;case 3:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}c=h;case 2:i=new AP(f.Type).Resolve(e);$s=4;case 4:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}j=i;k=j;if((k===(12))||(k===(13))){$s=6;continue;}if((k===(2))||(k===(4))||(k===(6))||(k===(8))||(k===(10))||(k===(5))||(k===(7))||(k===(9))||(k===(11))){$s=7;continue;}$s=8;continue;case 6:l=0;m=j;if(m===(12)){$s=11;continue;}if(m===(13)){$s=12;continue;}$s=13;continue;case 11:n=g.Uint32(b);$s=14;case 14:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}o=D.Float32frombits(n);$s=15;case 15:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}l=(o);$s=13;continue;case 12:p=g.Uint64(b);$s=16;case 16:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=D.Float64frombits(p);$s=17;case 17:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}l=q;case 13:case 10:r=f.kind;if((r===(13))||(r===(14))){$s=19;continue;}$s=20;continue;case 19:$clone(c,C.Value).SetFloat(l);$s=21;continue;case 20:s=G.Errorf("struc: refusing to unpack float into field %s of type %s",new AY([new $String(f.Name),new $String(new C.Kind(f.kind).String())]));$s=22;case 22:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}$s=-1;return s;case 21:case 18:$s=9;continue;case 7:t=new $Uint64(0,0);u=j;if(u===(4)){$s=24;continue;}if(u===(6)){$s=25;continue;}if(u===(8)){$s=26;continue;}if(u===(10)){$s=27;continue;}if((u===(2))||(u===(5))){$s=28;continue;}if(u===(7)){$s=29;continue;}if(u===(9)){$s=30;continue;}if(u===(11)){$s=31;continue;}$s=32;continue;case 24:t=((v=(new $Int64(0,(((0>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0])<<24>>24)))),new $Uint64(v.$high,v.$low)));$s=32;continue;case 25:x=g.Uint16(b);$s=33;case 33:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}t=((w=(new $Int64(0,((x<<16>>16)))),new $Uint64(w.$high,w.$low)));$s=32;continue;case 26:z=g.Uint32(b);$s=34;case 34:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}t=((y=(new $Int64(0,((z>>0)))),new $Uint64(y.$high,y.$low)));$s=32;continue;case 27:ac=g.Uint64(b);$s=35;case 35:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}t=((aa=((ab=ac,new $Int64(ab.$high,ab.$low))),new $Uint64(aa.$high,aa.$low)));$s=32;continue;case 28:t=(new $Uint64(0,(0>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0])));$s=32;continue;case 29:ad=g.Uint16(b);$s=36;case 36:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}t=(new $Uint64(0,ad));$s=32;continue;case 30:ae=g.Uint32(b);$s=37;case 37:if($c){$c=false;ae=ae.$blk();}if(ae&&ae.$blk!==undefined){break s;}t=(new $Uint64(0,ae));$s=32;continue;case 31:af=g.Uint64(b);$s=38;case 38:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}t=(af);case 32:case 23:ag=f.kind;if(ag===(1)){$clone(c,C.Value).SetBool(!((t.$high===0&&t.$low===0)));}else if((ag===(2))||(ag===(3))||(ag===(4))||(ag===(5))||(ag===(6))){$clone(c,C.Value).SetInt((new $Int64(t.$high,t.$low)));}else{$clone(c,C.Value).SetUint(t);}$s=9;continue;case 8:ah=G.Sprintf("no unpack handler for type: %s",new AY([new AP(j)]));$s=39;case 39:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}$panic(new $String(ah));case 9:case 5:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.unpackVal};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.unpackVal=function(b,c,d,e){return this.$val.unpackVal(b,c,d,e);};Q.ptr.prototype.Unpack=function(b,c,d,e){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:f=this;g=new AP(f.Type).Resolve(e);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if((h===1)||(f.kind===24)){$s=2;continue;}if(f.Slice){$s=3;continue;}$s=4;continue;case 2:if(h===1){$s=-1;return $ifaceNil;}else{$clone(c,C.Value).SetString(($bytesToString(b)));$s=-1;return $ifaceNil;}$s=5;continue;case 3:if($clone(c,C.Value).Cap()>0));p=$clone(c,C.Value).Index(n);$s=18;case 18:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=$clone(p,C.Value);r=e;s=f.unpackVal(o,q,1,r);$s=19;case 19:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}t=s;if(!($interfaceIsEqual(t,$ifaceNil))){$s=-1;return t;}l=l+(m)>>0;n=n+(1)>>0;$s=16;continue;case 17:$s=-1;return $ifaceNil;case 4:u=f.unpackVal(b,$clone(c,C.Value),d,e);$s=20;case 20:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}$s=-1;return u;case 5:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:Q.ptr.prototype.Unpack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$r=$r;return $f;};Q.prototype.Unpack=function(b,c,d,e){return this.$val.Unpack(b,c,d,e);};R.prototype.SetByteOrder=function(b){var b,c,d,e,f;c=this;d=c;e=0;while(true){if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(!(f===BC.nil)){f.Order=b;}e++;}};$ptrType(R).prototype.SetByteOrder=function(b){return this.$get().SetByteOrder(b);};R.prototype.String=function(){var b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=$makeSlice(BD,b.$length);d=b;e=0;case 1:if(!(e=d.$length)?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+e]);if(!(g===BC.nil)){$s=3;continue;}$s=4;continue;case 3:h=g.String();$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=h);case 4:e++;$s=1;continue;case 2:$s=-1;return"{"+H.Join(c,", ")+"}";}return;}if($f===undefined){$f={$blk:R.prototype.String};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(R).prototype.String=function(){return this.$get().String();};R.prototype.Sizeof=function(b,c){var b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;case 1:if(!($clone(b,C.Value).Kind()===22)){$s=2;continue;}e=$clone(b,C.Value).Elem();$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}b=e;$s=1;continue;case 2:f=0;g=d;h=0;case 4:if(!(h=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h]);if(!(j===BC.nil)){$s=6;continue;}$s=7;continue;case 6:k=$clone(b,C.Value).Field(i);$s=8;case 8:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}l=j.Size($clone(k,C.Value),c);$s=9;case 9:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}f=f+(l)>>0;case 7:h++;$s=4;continue;case 5:$s=-1;return f;}return;}if($f===undefined){$f={$blk:R.prototype.Sizeof};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(R).prototype.Sizeof=function(b,c){return this.$get().Sizeof(b,c);};R.prototype.sizefrom=function(b,c){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=$clone(b,C.Value).FieldByIndex(c);$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;g=$clone(f,C.Value).Kind();if((g===(2))||(g===(3))||(g===(4))||(g===(5))||(g===(6))){$s=3;continue;}if((g===(7))||(g===(8))||(g===(9))||(g===(10))||(g===(11))){$s=4;continue;}$s=5;continue;case 3:$s=-1;return(((h=$clone(f,C.Value).Int(),h.$low+((h.$high>>31)*4294967296))>>0));case 4:i=(($clone(f,C.Value).Uint().$low>>0));if(i<0){$s=-1;return 0;}$s=-1;return i;case 5:j=$clone(b,C.Value).Type().FieldByIndex(c);$s=7;case 7:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j.Name;l=$clone(b,C.Value).Interface();$s=8;case 8:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}m=l;n=new $String(k);o=G.Sprintf("sizeof field %T.%s not an integer type",new AY([m,n]));$s=9;case 9:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}$panic(new $String(o));case 6:case 2:$s=-1;return 0;}return;}if($f===undefined){$f={$blk:R.prototype.sizefrom};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(R).prototype.sizefrom=function(b,c){return this.$get().sizefrom(b,c);};R.prototype.Pack=function(b,c,d){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;case 1:if(!($clone(c,C.Value).Kind()===22)){$s=2;continue;}f=$clone(c,C.Value).Elem();$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}c=f;$s=1;continue;case 2:g=0;h=e;i=0;case 4:if(!(i=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]);if(k===BC.nil){$s=6;continue;}$s=7;continue;case 6:i++;$s=4;continue;case 7:l=$clone(c,C.Value).Field(j);$s=8;case 8:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}m=l;n=k.Len;if(!(k.Sizefrom===AZ.nil)){$s=9;continue;}$s=10;continue;case 9:o=e.sizefrom($clone(c,C.Value),k.Sizefrom);$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;case 10:if(n<=0&&k.Slice){n=$clone(m,C.Value).Len();}if(!(k.Sizeof===AZ.nil)){$s=12;continue;}$s=13;continue;case 12:p=$clone(c,C.Value).FieldByIndex(k.Sizeof);$s=14;case 14:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=$clone(p,C.Value).Len();$s=15;case 15:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}r=q;s=k.kind;if((s===(2))||(s===(3))||(s===(4))||(s===(5))||(s===(6))){$s=17;continue;}if((s===(7))||(s===(8))||(s===(9))||(s===(10))||(s===(11))){$s=18;continue;}$s=19;continue;case 17:t=$clone(C.New($clone(m,C.Value).Type()),C.Value).Elem();$s=21;case 21:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}m=t;$clone(m,C.Value).SetInt((new $Int64(0,r)));$s=20;continue;case 18:u=$clone(C.New($clone(m,C.Value).Type()),C.Value).Elem();$s=22;case 22:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}m=u;$clone(m,C.Value).SetUint((new $Uint64(0,r)));$s=20;continue;case 19:v=G.Sprintf("sizeof field is not int or uint type: %s, %s",new AY([new $String(k.Name),$clone(m,C.Value).Type()]));$s=23;case 23:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}$panic(new $String(v));case 20:case 16:case 13:x=k.Pack($subslice(b,g),$clone(m,C.Value),n,d);$s=24;case 24:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}w=x;y=w[0];z=w[1];if(!($interfaceIsEqual(z,$ifaceNil))){$s=-1;return[y,z];}else{g=g+(y)>>0;}i++;$s=4;continue;case 5:$s=-1;return[g,$ifaceNil];}return;}if($f===undefined){$f={$blk:R.prototype.Pack};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(R).prototype.Pack=function(b,c,d){return this.$get().Pack(b,c,d);};R.prototype.Unpack=function(b,c,d){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;ao=$f.ao;ap=$f.ap;aq=$f.aq;ar=$f.ar;as=$f.as;at=$f.at;au=$f.au;av=$f.av;aw=$f.aw;ax=$f.ax;ay=$f.ay;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;case 1:if(!($clone(c,C.Value).Kind()===22)){$s=2;continue;}f=$clone(c,C.Value).Elem();$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}c=f;$s=1;continue;case 2:g=BE.zero();h=AW.nil;i=e;j=0;case 4:if(!(j=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]);if(l===BC.nil){$s=6;continue;}$s=7;continue;case 6:j++;$s=4;continue;case 7:m=$clone(c,C.Value).Field(k);$s=8;case 8:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}n=m;o=l.Len;if(!(l.Sizefrom===AZ.nil)){$s=9;continue;}$s=10;continue;case 9:p=e.sizefrom($clone(c,C.Value),l.Sizefrom);$s=11;case 11:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}o=p;case 10:if(!($clone(n,C.Value).Kind()===22)){q=false;$s=14;continue s;}r=$clone(n,C.Value).Elem();$s=15;case 15:if($c){$c=false;r=r.$blk();}if(r&&r.$blk!==undefined){break s;}s=$clone(r,C.Value).IsValid();$s=16;case 16:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}q=!s;case 14:if(q){$s=12;continue;}$s=13;continue;case 12:t=$clone(n,C.Value).Type().Elem();$s=17;case 17:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}u=C.New(t);$s=18;case 18:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}$r=$clone(n,C.Value).Set($clone(u,C.Value));$s=19;case 19:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 13:if(l.Type===15){$s=20;continue;}$s=21;continue;case 20:if(l.Slice){$s=23;continue;}$s=24;continue;case 23:v=n;if(!l.Array){$s=26;continue;}$s=27;continue;case 26:w=C.MakeSlice($clone(n,C.Value).Type(),o,o);$s=28;case 28:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}v=w;case 27:x=0;case 29:if(!(x>0;$s=29;continue;case 30:if(!l.Array){$s=34;continue;}$s=35;continue;case 34:$r=$clone(n,C.Value).Set($clone(v,C.Value));$s=36;case 36:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 35:$s=25;continue;case 24:ah=AE($clone(n,C.Value));$s=37;case 37:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ag=ah;ai=ag[0];aj=ag[1];if(!($interfaceIsEqual(aj,$ifaceNil))){$s=-1;return aj;}ak=ai.Unpack(b,$clone(n,C.Value),d);$s=38;case 38:if($c){$c=false;ak=ak.$blk();}if(ak&&ak.$blk!==undefined){break s;}al=ak;if(!($interfaceIsEqual(al,$ifaceNil))){$s=-1;return al;}case 25:j++;$s=4;continue;$s=22;continue;case 21:am=new AP(l.Type).Resolve(d);$s=39;case 39:if($c){$c=false;am=am.$blk();}if(am&&am.$blk!==undefined){break s;}an=am;if(an===19){$s=40;continue;}$s=41;continue;case 40:ao=$clone($clone(n,C.Value).Addr(),C.Value).Interface();$s=43;case 43:if($c){$c=false;ao=ao.$blk();}if(ao&&ao.$blk!==undefined){break s;}ap=$assertType(ao,N).Unpack(b,o,d);$s=44;case 44:if($c){$c=false;ap=ap.$blk();}if(ap&&ap.$blk!==undefined){break s;}aq=ap;if(!($interfaceIsEqual(aq,$ifaceNil))){$s=-1;return aq;}$s=42;continue;case 41:ar=new AP(l.Type).Resolve(d);$s=45;case 45:if($c){$c=false;ar=ar.$blk();}if(ar&&ar.$blk!==undefined){break s;}as=new AP(ar).Size();$s=46;case 46:if($c){$c=false;as=as.$blk();}if(as&&as.$blk!==undefined){break s;}at=$imul(o,as);if(at<8){h=$subslice(new AW(g),0,at);}else{h=$makeSlice(AW,at);}av=B.ReadFull(b,h);$s=47;case 47:if($c){$c=false;av=av.$blk();}if(av&&av.$blk!==undefined){break s;}au=av;aw=au[1];if(!($interfaceIsEqual(aw,$ifaceNil))){$s=-1;return aw;}ax=l.Unpack($subslice(h,0,at),$clone(n,C.Value),o,d);$s=48;case 48:if($c){$c=false;ax=ax.$blk();}if(ax&&ax.$blk!==undefined){break s;}ay=ax;if(!($interfaceIsEqual(ay,$ifaceNil))){$s=-1;return ay;}case 42:case 22:j++;$s=4;continue;case 5:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:R.prototype.Unpack};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.ao=ao;$f.ap=ap;$f.aq=aq;$f.ar=ar;$f.as=as;$f.at=at;$f.au=au;$f.av=av;$f.aw=aw;$f.ax=ax;$f.ay=ay;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(R).prototype.Unpack=function(b,c,d){return this.$get().Unpack(b,c,d);};W=function(b){var b,c,d,e,f,g,h,i,j,k,l;d=new V.ptr("",(c=A.BigEndian,new c.constructor.elem(c)),"",false,"");e=new C.StructTag(b).Get("struc");if(e===""){e=new C.StructTag(b).Get("struct");}f=H.Split(e,",");g=0;while(true){if(!(g=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]);if(H.HasPrefix(h,"sizeof=")){i=H.SplitN(h,"=",2);d.Sizeof=(1>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+1]);}else if(H.HasPrefix(h,"sizefrom=")){j=H.SplitN(h,"=",2);d.Sizefrom=(1>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+1]);}else if(h==="big"){d.Order=(k=A.BigEndian,new k.constructor.elem(k));}else if(h==="little"){d.Order=(l=A.LittleEndian,new l.constructor.elem(l));}else if(h==="skip"){d.Skip=true;}else{d.Type=h;}g++;}return d;};Y=function(b){var aa,ab,ac,ad,ae,af,ag,ah,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=BC.nil;d=BF.nil;e=$ifaceNil;d=W(b.Tag);f=false;g=b.Type.Kind();$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}c=new Q.ptr(b.Name,false,0,0,0,false,false,1,d.Order,AZ.nil,AZ.nil,R.nil,g);h=c.kind;if(h===(17)){$s=3;continue;}if(h===(23)){$s=4;continue;}if(h===(22)){$s=5;continue;}$s=6;continue;case 3:c.Slice=true;c.Array=true;i=b.Type.Len();$s=7;case 7:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}c.Len=i;j=b.Type.Elem();$s=8;case 8:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=j.Kind();$s=9;case 9:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}c.kind=k;$s=6;continue;case 4:c.Slice=true;c.Len=-1;l=b.Type.Elem();$s=10;case 10:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}m=l.Kind();$s=11;case 11:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}c.kind=m;$s=6;continue;case 5:c.Ptr=true;n=b.Type.Elem();$s=12;case 12:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}o=n.Kind();$s=13;case 13:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}c.kind=o;case 6:case 2:p=C.New(b.Type);r=$clone(p,C.Value).Interface();$s=14;case 14:if($c){$c=false;r=r.$blk();}if(r&&r.$blk!==undefined){break s;}q=$assertType(r,N,true);s=q[1];if(s){c.Type=19;$s=-1;return[c,d,e];}t=false;u=(v=AV[C.Kind.keyFor(c.kind)],v!==undefined?[v.v,true]:[0,false]);c.defType=u[0];t=u[1];w=X.ReplaceAllLiteralString(d.Type,"");$s=15;case 15:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}x=w;y=(z=AQ[$String.keyFor(x)],z!==undefined?[z.v,true]:[0,false]);c.Type=y[0];f=y[1];if(f){$s=16;continue;}$s=17;continue;case 16:c.Len=1;aa=X.FindAllStringSubmatch(d.Type,-1);$s=18;case 18:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}ab=aa;if(ab.$length>0&&(0>=ab.$length?($throwRuntimeError("index out of range"),undefined):ab.$array[ab.$offset+0]).$length>1){c.Slice=true;ad=(ac=(0>=ab.$length?($throwRuntimeError("index out of range"),undefined):ab.$array[ab.$offset+0]),(1>=ac.$length?($throwRuntimeError("index out of range"),undefined):ac.$array[ac.$offset+1]));if(ad===""){c.Len=-1;}else{ae=E.Atoi(ad);c.Len=ae[0];e=ae[1];}}$s=-1;return[c,d,e];case 17:af=b.Type;if($interfaceIsEqual(af,(C.TypeOf(new AT(0,0))))){$s=20;continue;}if($interfaceIsEqual(af,(C.TypeOf(new AU(0,0))))){$s=21;continue;}if(t){$s=22;continue;}$s=23;continue;case 20:c.Type=17;$s=24;continue;case 21:c.Type=18;$s=24;continue;case 22:c.Type=c.defType;$s=24;continue;case 23:ag=G.Sprintf("struc: Could not resolve field '%v' type '%v'.",new AY([new $String(b.Name),b.Type]));$s=25;case 25:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}ah=I.New(ag);$s=26;case 26:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}e=ah;case 24:case 19:$s=-1;return[c,d,e];}return;}if($f===undefined){$f={$blk:Y};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};Z=function(b){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:case 1:if(!($clone(b,C.Value).Kind()===22)){$s=2;continue;}c=$clone(b,C.Value).Elem();$s=3;case 3:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}b=c;$s=1;continue;case 2:d=$clone(b,C.Value).Type();if($clone(b,C.Value).NumField()<1){$s=-1;return[R.nil,I.New("struc: Struct has no fields.")];}e={};f=$makeSlice(R,$clone(b,C.Value).NumField());g=0;case 4:h=d.NumField();$s=6;case 6:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if(!(g>0;$s=4;continue;case 10:if(!($interfaceIsEqual(o,$ifaceNil))){$s=-1;return[R.nil,o];}p=$clone(b,C.Value).Field(g);$s=13;case 13:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=$clone(p,C.Value).CanSet();$s=14;case 14:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}if(!q){$s=11;continue;}$s=12;continue;case 11:g=g+(1)>>0;$s=4;continue;case 12:m.Index=g;if(!(n.Sizeof==="")){$s=15;continue;}$s=16;continue;case 15:s=d.FieldByName(n.Sizeof);$s=17;case 17:if($c){$c=false;s=s.$blk();}if(s&&s.$blk!==undefined){break s;}r=s;t=$clone(r[0],C.StructField);u=r[1];if(!u){$s=18;continue;}$s=19;continue;case 18:v=G.Errorf("struc: `sizeof=%s` field does not exist",new AY([new $String(n.Sizeof)]));$s=20;case 20:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}$s=-1;return[R.nil,v];case 19:m.Sizeof=t.Index;w=n.Sizeof;(e||$throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(w)]={k:w,v:j.Index};case 16:x=(y=e[$String.keyFor(j.Name)],y!==undefined?[y.v,true]:[AZ.nil,false]);z=x[0];aa=x[1];if(aa){m.Sizefrom=z;}if(!(n.Sizefrom==="")){$s=21;continue;}$s=22;continue;case 21:ac=d.FieldByName(n.Sizefrom);$s=23;case 23:if($c){$c=false;ac=ac.$blk();}if(ac&&ac.$blk!==undefined){break s;}ab=ac;ad=$clone(ab[0],C.StructField);ae=ab[1];if(!ae){$s=24;continue;}$s=25;continue;case 24:af=G.Errorf("struc: `sizefrom=%s` field does not exist",new AY([new $String(n.Sizefrom)]));$s=26;case 26:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}$s=-1;return[R.nil,af];case 25:m.Sizefrom=ad.Index;case 22:if((m.Len===-1)&&m.Sizefrom===AZ.nil){$s=27;continue;}$s=28;continue;case 27:ag=G.Errorf("struc: field `%s` is a slice with no length or sizeof field",new AY([new $String(j.Name)]));$s=29;case 29:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}$s=-1;return[R.nil,ag];case 28:if(m.Type===15){$s=30;continue;}$s=31;continue;case 30:ah=j.Type;if(m.Ptr){$s=32;continue;}$s=33;continue;case 32:ai=ah.Elem();$s=34;case 34:if($c){$c=false;ai=ai.$blk();}if(ai&&ai.$blk!==undefined){break s;}ah=ai;case 33:if(m.Slice){$s=35;continue;}$s=36;continue;case 35:aj=ah.Elem();$s=37;case 37:if($c){$c=false;aj=aj.$blk();}if(aj&&aj.$blk!==undefined){break s;}ah=aj;case 36:al=Z($clone(C.New(ah),C.Value));$s=38;case 38:if($c){$c=false;al=al.$blk();}if(al&&al.$blk!==undefined){break s;}ak=al;m.Fields=ak[0];o=ak[1];if(!($interfaceIsEqual(o,$ifaceNil))){$s=-1;return[R.nil,o];}case 31:((g<0||g>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+g]=m);g=g+(1)>>0;$s=4;continue;case 5:$s=-1;return[f,$ifaceNil];}return;}if($f===undefined){$f={$blk:Z};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AD=function(b){var b,c,d,e,f,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);$r=AB.RLock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(AB,"RUnlock"),[]]);c=(d=AA[C.Type.keyFor(b)],d!==undefined?[d.v,true]:[R.nil,false]);e=c[0];f=c[1];if(f){$s=-1;return e;}$s=-1;return R.nil;}return;}}catch(err){$err=err;$s=-1;return R.nil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AD};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AE=function(b){var b,c,d,e,f,g,h,i,j,k,l,m,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);case 1:if(!($clone(b,C.Value).Kind()===22)){$s=2;continue;}c=$clone(b,C.Value).Elem();$s=3;case 3:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}b=c;$s=1;continue;case 2:d=$clone(b,C.Value).Type();e=AD(d);$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!(f===R.nil)){$s=-1;return[f,$ifaceNil];}$r=AC.Lock();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(AC,"Unlock"),[]]);g=AD(d);$s=6;case 6:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if(!(h===R.nil)){$s=-1;return[h,$ifaceNil];}j=Z($clone(b,C.Value));$s=7;case 7:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[0];l=i[1];if(!($interfaceIsEqual(l,$ifaceNil))){$s=-1;return[R.nil,l];}$r=AB.Lock();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}m=d;(AA||$throwRuntimeError("assignment to entry in nil map"))[C.Type.keyFor(m)]={k:m,v:k};$r=AB.Unlock();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[k,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[R.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AE};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.ptr.prototype.Validate=function(){var b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(b.PtrSize===0){$s=1;continue;}$s=2;continue;case 1:b.PtrSize=32;$s=3;continue;case 2:c=b.PtrSize;if((c===(8))||(c===(16))||(c===(32))||(c===(64))){$s=5;continue;}$s=6;continue;case 5:$s=7;continue;case 6:d=G.Errorf("Invalid Options.PtrSize: %d. Must be in (8, 16, 32, 64)",new AY([new $Int(b.PtrSize)]));$s=8;case 8:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;case 7:case 4:case 3:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.Validate};}$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.Validate=function(){return this.$val.Validate();};AH=function(){var b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=AG.Validate();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}b;$s=-1;return;}return;}if($f===undefined){$f={$blk:AH};}$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};AI=function(b){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=C.ValueOf(b);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;case 2:if(!($clone(d,C.Value).Kind()===22)){$s=3;continue;}e=$clone(d,C.Value).Elem();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=$clone(e,C.Value).Kind();$s=5;case 5:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;if((g===25)||(g===22)){$s=6;continue;}$s=7;continue;case 6:h=$clone(d,C.Value).Elem();$s=9;case 9:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}d=h;$s=8;continue;case 7:$s=3;continue;case 8:$s=2;continue;case 3:i=$clone(d,C.Value).Kind();if(i===(25)){$s=11;continue;}$s=12;continue;case 11:k=AE($clone(d,C.Value));$s=14;case 14:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;l=j[0];m=j[1];$s=-1;return[d,l,m];case 12:if(!$clone(d,C.Value).IsValid()){$s=15;continue;}$s=16;continue;case 15:n=G.Errorf("Invalid reflect.Value for %+v",new AY([b]));$s=17;case 17:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}$s=-1;return[new C.Value.ptr(BB.nil,0,0),$ifaceNil,n];case 16:o=$assertType(b,N,true);p=o[0];q=o[1];if(q){$s=-1;return[d,(r=new O.ptr(p),new r.constructor.elem(r)),$ifaceNil];}$s=-1;return[d,(s=($clone(d,M)),new s.constructor.elem(s)),$ifaceNil];case 13:case 10:$s=-1;return[new C.Value.ptr(BB.nil,0,0),$ifaceNil,$ifaceNil];}return;}if($f===undefined){$f={$blk:AI};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};AL=function(b,c){var b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=AM(b,c,BG.nil);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return d;}return;}if($f===undefined){$f={$blk:AL};}$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Unpack=AL;AM=function(b,c,d){var b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(d===BG.nil){d=AG;}e=d.Validate();$s=1;case 1:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return f;}h=AI(c);$s=2;case 2:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;i=g[0];j=g[1];k=g[2];if(!($interfaceIsEqual(k,$ifaceNil))){$s=-1;return k;}l=j.Unpack(b,$clone(i,C.Value),d);$s=3;case 3:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}$s=-1;return l;}return;}if($f===undefined){$f={$blk:AM};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};$pkg.UnpackWithOptions=AM;AP.prototype.Resolve=function(b){var b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this.$val;d=c;if(d===(18)){$s=2;continue;}if(d===(17)){$s=3;continue;}$s=4;continue;case 2:e=b.PtrSize;if(e===(8)){$s=6;continue;}if(e===(16)){$s=7;continue;}if(e===(32)){$s=8;continue;}if(e===(64)){$s=9;continue;}$s=10;continue;case 6:$s=-1;return 4;case 7:$s=-1;return 6;case 8:$s=-1;return 8;case 9:$s=-1;return 10;case 10:f=G.Sprintf("unsupported ptr bits: %d",new AY([new $Int(b.PtrSize)]));$s=12;case 12:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$panic(new $String(f));case 11:case 5:$s=4;continue;case 3:g=b.PtrSize;if(g===(8)){$s=14;continue;}if(g===(16)){$s=15;continue;}if(g===(32)){$s=16;continue;}if(g===(64)){$s=17;continue;}$s=18;continue;case 14:$s=-1;return 5;case 15:$s=-1;return 7;case 16:$s=-1;return 9;case 17:$s=-1;return 11;case 18:h=G.Sprintf("unsupported ptr bits: %d",new AY([new $Int(b.PtrSize)]));$s=20;case 20:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$panic(new $String(h));case 19:case 13:case 4:case 1:$s=-1;return c;}return;}if($f===undefined){$f={$blk:AP.prototype.Resolve};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(AP).prototype.Resolve=function(b){return new AP(this.$get()).Resolve(b);};AP.prototype.String=function(){var b,c;b=this.$val;return(c=AR[AP.keyFor(b)],c!==undefined?c.v:"");};$ptrType(AP).prototype.String=function(){return new AP(this.$get()).String();};AP.prototype.Size=function(){var b,c;b=this.$val;c=b;if((c===(17))||(c===(18))){$panic(new $String("Size_t/Off_t types must be converted to another type using options.PtrSize"));}else if((c===(1))||(c===(14))||(c===(4))||(c===(5))||(c===(2))){return 1;}else if((c===(6))||(c===(7))){return 2;}else if((c===(8))||(c===(9))||(c===(12))){return 4;}else if((c===(10))||(c===(11))||(c===(13))){return 8;}else{$panic(new $String("Cannot resolve size of type:"+new AP(b).String()));}};$ptrType(AP).prototype.Size=function(){return new AP(this.$get()).Size();};AS=function(){var b,c,d,e,f,g,h;b=AQ;c=0;d=$keys(b);while(true){if(!(c10)");J=A.New("invalid pointer");K=A.New("nil resource body");L=A.New("insufficient data for resource body length");M=A.New("segment length too long");N=A.New("zero length segment");O=A.New("resource length too long");P=A.New("too many Questions to pack (>65535)");Q=A.New("too many Answers to pack (>65535)");R=A.New("too many Authorities to pack (>65535)");S=A.New("too many Additionals to pack (>65535)");T=A.New("name is not in canonical format (it must end with a .)");U=A.New("character string exceeds maximum length (255)");V=A.New("compressed name in SRV resource data");}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["math/rand"]=(function(){var $pkg={},$init,B,A,J,K,M,AG,AI,AM,AN,AO,AP,AQ,AR,AT,AU,AV,C,D,E,G,H,I,P,AH,F,L,N,O,AJ;B=$packages["github.com/gopherjs/gopherjs/nosync"];A=$packages["math"];J=$pkg.Source=$newType(8,$kindInterface,"rand.Source",true,"math/rand",true,null);K=$pkg.Source64=$newType(8,$kindInterface,"rand.Source64",true,"math/rand",true,null);M=$pkg.Rand=$newType(0,$kindStruct,"rand.Rand",true,"math/rand",true,function(src_,s64_,readVal_,readPos_){this.$val=this;if(arguments.length===0){this.src=$ifaceNil;this.s64=$ifaceNil;this.readVal=new $Int64(0,0);this.readPos=0;return;}this.src=src_;this.s64=s64_;this.readVal=readVal_;this.readPos=readPos_;});AG=$pkg.lockedSource=$newType(0,$kindStruct,"rand.lockedSource",true,"math/rand",false,function(lk_,src_){this.$val=this;if(arguments.length===0){this.lk=new B.Mutex.ptr(false);this.src=$ifaceNil;return;}this.lk=lk_;this.src=src_;});AI=$pkg.rngSource=$newType(0,$kindStruct,"rand.rngSource",true,"math/rand",false,function(tap_,feed_,vec_){this.$val=this;if(arguments.length===0){this.tap=0;this.feed=0;this.vec=AM.zero();return;}this.tap=tap_;this.feed=feed_;this.vec=vec_;});AM=$arrayType($Int64,607);AN=$ptrType(AG);AO=$ptrType($Int8);AP=$sliceType($Int);AQ=$ptrType($Int64);AR=$ptrType(M);AT=$funcType([$Int,$Int],[],false);AU=$sliceType($Uint8);AV=$ptrType(AI);M.ptr.prototype.ExpFloat64=function(){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;case 1:b=a.Uint32();$s=3;case 3:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;d=(c&255)>>>0;e=(c)*(((d<0||d>=D.length)?($throwRuntimeError("index out of range"),undefined):D[d]));if(c<((d<0||d>=C.length)?($throwRuntimeError("index out of range"),undefined):C[d])){$s=-1;return e;}if(d===0){$s=4;continue;}$s=5;continue;case 4:f=a.Float64();$s=6;case 6:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=A.Log(f);$s=7;case 7:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$s=-1;return 7.69711747013105-g;case 5:h=a.Float64();$s=10;case 10:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}if($fround(((d<0||d>=E.length)?($throwRuntimeError("index out of range"),undefined):E[d])+$fround(($fround(h))*($fround((i=d-1>>>0,((i<0||i>=E.length)?($throwRuntimeError("index out of range"),undefined):E[i]))-((d<0||d>=E.length)?($throwRuntimeError("index out of range"),undefined):E[d])))))<($fround(A.Exp(-e)))){$s=8;continue;}$s=9;continue;case 8:$s=-1;return e;case 9:$s=1;continue;case 2:$s=-1;return 0;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.ExpFloat64};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.ExpFloat64=function(){return this.$val.ExpFloat64();};F=function(a){var a;if(a<0){return((-a>>>0));}return((a>>>0));};M.ptr.prototype.NormFloat64=function(){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;case 1:b=a.Uint32();$s=3;case 3:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=((b>>0));d=c&127;e=(c)*(((d<0||d>=H.length)?($throwRuntimeError("index out of range"),undefined):H[d]));if(F(c)<((d<0||d>=G.length)?($throwRuntimeError("index out of range"),undefined):G[d])){$s=-1;return e;}if(d===0){$s=4;continue;}$s=5;continue;case 4:case 6:f=a.Float64();$s=8;case 8:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=A.Log(f);$s=9;case 9:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}e=-g*0.29047645161474317;h=a.Float64();$s=10;case 10:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}i=A.Log(h);$s=11;case 11:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}j=-i;if(j+j>=e*e){$s=7;continue;}$s=6;continue;case 7:if(c>0){$s=-1;return 3.442619855899+e;}$s=-1;return-3.442619855899-e;case 5:k=a.Float64();$s=14;case 14:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}if($fround(((d<0||d>=I.length)?($throwRuntimeError("index out of range"),undefined):I[d])+$fround(($fround(k))*($fround((l=d-1>>0,((l<0||l>=I.length)?($throwRuntimeError("index out of range"),undefined):I[l]))-((d<0||d>=I.length)?($throwRuntimeError("index out of range"),undefined):I[d])))))<($fround(A.Exp(-0.5*e*e)))){$s=12;continue;}$s=13;continue;case 12:$s=-1;return e;case 13:$s=1;continue;case 2:$s=-1;return 0;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.NormFloat64};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.NormFloat64=function(){return this.$val.NormFloat64();};L=function(a){var a,b;b=new AI.ptr(0,0,AM.zero());b.Seed(a);return b;};$pkg.NewSource=L;N=function(a){var a,b,c;b=$assertType(a,K,true);c=b[0];return new M.ptr(a,c,new $Int64(0,0),0);};$pkg.New=N;M.ptr.prototype.Seed=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=$assertType(b.src,AN,true);d=c[0];e=c[1];if(e){$s=1;continue;}$s=2;continue;case 1:$r=d.seedPos(a,(b.$ptr_readPos||(b.$ptr_readPos=new AO(function(){return this.$target.readPos;},function($v){this.$target.readPos=$v;},b))));$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 2:$r=b.src.Seed(a);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b.readPos=0;$s=-1;return;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Seed};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Seed=function(a){return this.$val.Seed(a);};M.ptr.prototype.Int63=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.src.Int63();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return b;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Int63};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Int63=function(){return this.$val.Int63();};M.ptr.prototype.Uint32=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.Int63();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return(($shiftRightInt64(b,31).$low>>>0));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Uint32};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Uint32=function(){return this.$val.Uint32();};M.ptr.prototype.Uint64=function(){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;if(!($interfaceIsEqual(a.s64,$ifaceNil))){$s=1;continue;}$s=2;continue;case 1:b=a.s64.Uint64();$s=3;case 3:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return b;case 2:e=a.Int63();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}h=a.Int63();$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$s=-1;return(c=$shiftRightUint64(((d=e,new $Uint64(d.$high,d.$low))),31),f=$shiftLeft64(((g=h,new $Uint64(g.$high,g.$low))),32),new $Uint64(c.$high|f.$high,(c.$low|f.$low)>>>0));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Uint64};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Uint64=function(){return this.$val.Uint64();};M.ptr.prototype.Int31=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;c=a.Int63();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return(((b=$shiftRightInt64(c,32),b.$low+((b.$high>>31)*4294967296))>>0));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Int31};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Int31=function(){return this.$val.Int31();};M.ptr.prototype.Int=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.Int63();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=((b.$low>>>0));$s=-1;return((((c<<1>>>0)>>>1>>>0)>>0));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Int};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Int=function(){return this.$val.Int();};M.ptr.prototype.Int63n=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if((a.$high<0||(a.$high===0&&a.$low<=0))){$panic(new $String("invalid argument to Int63n"));}if((c=(d=new $Int64(a.$high-0,a.$low-1),new $Int64(a.$high&d.$high,(a.$low&d.$low)>>>0)),(c.$high===0&&c.$low===0))){$s=1;continue;}$s=2;continue;case 1:f=b.Int63();$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return(e=f,g=new $Int64(a.$high-0,a.$low-1),new $Int64(e.$high&g.$high,(e.$low&g.$low)>>>0));case 2:j=((h=(i=$div64(new $Uint64(2147483648,0),(new $Uint64(a.$high,a.$low)),true),new $Uint64(2147483647-i.$high,4294967295-i.$low)),new $Int64(h.$high,h.$low)));k=b.Int63();$s=4;case 4:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}l=k;case 5:if(!((l.$high>j.$high||(l.$high===j.$high&&l.$low>j.$low)))){$s=6;continue;}m=b.Int63();$s=7;case 7:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;$s=5;continue;case 6:$s=-1;return $div64(l,a,true);}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Int63n};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Int63n=function(a){return this.$val.Int63n(a);};M.ptr.prototype.Int31n=function(a){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(a<=0){$panic(new $String("invalid argument to Int31n"));}if((a&((a-1>>0)))===0){$s=1;continue;}$s=2;continue;case 1:c=b.Int31();$s=3;case 3:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c&((a-1>>0));case 2:e=(((2147483647-(d=2147483648%((a>>>0)),d===d?d:$throwRuntimeError("integer divide by zero"))>>>0)>>0));f=b.Int31();$s=4;case 4:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=f;case 5:if(!(g>e)){$s=6;continue;}h=b.Int31();$s=7;case 7:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;$s=5;continue;case 6:$s=-1;return(i=g%a,i===i?i:$throwRuntimeError("integer divide by zero"));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Int31n};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Int31n=function(a){return this.$val.Int31n(a);};M.ptr.prototype.int31n=function(a){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=b.Uint32();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=$mul64((new $Uint64(0,d)),(new $Uint64(0,a)));f=((e.$low>>>0));if(f<((a>>>0))){$s=2;continue;}$s=3;continue;case 2:h=(g=((-a>>>0))%((a>>>0)),g===g?g:$throwRuntimeError("integer divide by zero"));case 4:if(!(f>>0));$s=4;continue;case 5:case 3:$s=-1;return(($shiftRightUint64(e,32).$low>>0));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.int31n};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.int31n=function(a){return this.$val.int31n(a);};M.ptr.prototype.Intn=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(a<=0){$panic(new $String("invalid argument to Intn"));}if(a<=2147483647){$s=1;continue;}$s=2;continue;case 1:c=b.Int31n(((a>>0)));$s=3;case 3:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return((c>>0));case 2:e=b.Int63n((new $Int64(0,a)));$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return(((d=e,d.$low+((d.$high>>31)*4294967296))>>0));}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Intn};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Intn=function(a){return this.$val.Intn(a);};M.ptr.prototype.Float64=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;case 1:b=a.Int63();$s=2;case 2:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=($flatten64(b))/9.223372036854776e+18;if(c===1){$s=3;continue;}$s=4;continue;case 3:$s=1;continue;case 4:$s=-1;return c;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Float64};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Float64=function(){return this.$val.Float64();};M.ptr.prototype.Float32=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;case 1:b=a.Float64();$s=2;case 2:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=($fround(b));if(c===1){$s=3;continue;}$s=4;continue;case 3:$s=1;continue;case 4:$s=-1;return c;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Float32};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Float32=function(){return this.$val.Float32();};M.ptr.prototype.Perm=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=$makeSlice(AP,a);d=0;case 1:if(!(d>0);$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=e;((d<0||d>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+d]=((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]));((f<0||f>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+f]=d);d=d+(1)>>0;$s=1;continue;case 2:$s=-1;return c;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Perm};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Perm=function(a){return this.$val.Perm(a);};M.ptr.prototype.Shuffle=function(a,b){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;if(a<0){$panic(new $String("invalid argument to Shuffle"));}d=a-1>>0;case 1:if(!(d>2147483646)){$s=2;continue;}f=c.Int63n((new $Int64(0,(d+1>>0))));$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=(((e=f,e.$low+((e.$high>>31)*4294967296))>>0));$r=b(d,g);$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=d-(1)>>0;$s=1;continue;case 2:case 5:if(!(d>0)){$s=6;continue;}h=c.int31n((((d+1>>0)>>0)));$s=7;case 7:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}i=((h>>0));$r=b(d,i);$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=d-(1)>>0;$s=5;continue;case 6:$s=-1;return;}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Shuffle};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Shuffle=function(a,b){return this.$val.Shuffle(a,b);};M.ptr.prototype.Read=function(a){var a,b,c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;e=$assertType(d.src,AN,true);f=e[0];g=e[1];if(g){$s=1;continue;}$s=2;continue;case 1:i=f.read(a,(d.$ptr_readVal||(d.$ptr_readVal=new AQ(function(){return this.$target.readVal;},function($v){this.$target.readVal=$v;},d))),(d.$ptr_readPos||(d.$ptr_readPos=new AO(function(){return this.$target.readPos;},function($v){this.$target.readPos=$v;},d))));$s=3;case 3:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;b=h[0];c=h[1];$s=-1;return[b,c];case 2:k=O(a,$methodVal(d,"Int63"),(d.$ptr_readVal||(d.$ptr_readVal=new AQ(function(){return this.$target.readVal;},function($v){this.$target.readVal=$v;},d))),(d.$ptr_readPos||(d.$ptr_readPos=new AO(function(){return this.$target.readPos;},function($v){this.$target.readPos=$v;},d))));$s=4;case 4:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;b=j[0];c=j[1];$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:M.ptr.prototype.Read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};M.prototype.Read=function(a){return this.$val.Read(a);};O=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=0;f=$ifaceNil;g=d.$get();h=c.$get();e=0;case 1:if(!(e=a.$length)?($throwRuntimeError("index out of range"),undefined):a.$array[a.$offset+e]=((h.$low<<24>>>24)));h=$shiftRightInt64(h,(8));g=g-(1)<<24>>24;e=e+(1)>>0;$s=1;continue;case 2:d.$set(g);c.$set(h);$s=-1;return[e,f];}return;}if($f===undefined){$f={$blk:O};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};AG.ptr.prototype.Int63=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=new $Int64(0,0);b=this;b.lk.Lock();c=b.src.Int63();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}a=c;b.lk.Unlock();$s=-1;return a;}return;}if($f===undefined){$f={$blk:AG.ptr.prototype.Int63};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AG.prototype.Int63=function(){return this.$val.Int63();};AG.ptr.prototype.Uint64=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=new $Uint64(0,0);b=this;b.lk.Lock();c=b.src.Uint64();$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}a=c;b.lk.Unlock();$s=-1;return a;}return;}if($f===undefined){$f={$blk:AG.ptr.prototype.Uint64};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AG.prototype.Uint64=function(){return this.$val.Uint64();};AG.ptr.prototype.Seed=function(a){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;b.lk.Lock();$r=b.src.Seed(a);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b.lk.Unlock();$s=-1;return;}return;}if($f===undefined){$f={$blk:AG.ptr.prototype.Seed};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};AG.prototype.Seed=function(a){return this.$val.Seed(a);};AG.ptr.prototype.seedPos=function(a,b){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;c.lk.Lock();$r=c.src.Seed(a);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b.$set(0);c.lk.Unlock();$s=-1;return;}return;}if($f===undefined){$f={$blk:AG.ptr.prototype.seedPos};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AG.prototype.seedPos=function(a,b){return this.$val.seedPos(a,b);};AG.ptr.prototype.read=function(a,b,c){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=0;e=$ifaceNil;f=this;f.lk.Lock();h=O(a,$methodVal(f.src,"Int63"),b,c);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;d=g[0];e=g[1];f.lk.Unlock();$s=-1;return[d,e];}return;}if($f===undefined){$f={$blk:AG.ptr.prototype.read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};AG.prototype.read=function(a,b,c){return this.$val.read(a,b,c);};AJ=function(a){var a,b,c,d,e;c=(b=a/44488,(b===b&&b!==1/0&&b!==-1/0)?b>>0:$throwRuntimeError("integer divide by zero"));e=(d=a%44488,d===d?d:$throwRuntimeError("integer divide by zero"));a=($imul(48271,e))-($imul(3399,c))>>0;if(a<0){a=a+(2147483647)>>0;}return a;};AI.ptr.prototype.Seed=function(a){var a,b,c,d,e,f,g,h,i,j;b=this;b.tap=0;b.feed=334;a=$div64(a,new $Int64(0,2147483647),true);if((a.$high<0||(a.$high===0&&a.$low<0))){a=(c=new $Int64(0,2147483647),new $Int64(a.$high+c.$high,a.$low+c.$low));}if((a.$high===0&&a.$low===0)){a=new $Int64(0,89482311);}d=(((a.$low+((a.$high>>31)*4294967296))>>0));e=-20;while(true){if(!(e<607)){break;}d=AJ(d);if(e>=0){f=new $Int64(0,0);f=$shiftLeft64((new $Int64(0,d)),40);d=AJ(d);f=(g=$shiftLeft64((new $Int64(0,d)),20),new $Int64(f.$high^g.$high,(f.$low^g.$low)>>>0));d=AJ(d);f=(h=(new $Int64(0,d)),new $Int64(f.$high^h.$high,(f.$low^h.$low)>>>0));f=(i=((e<0||e>=AH.length)?($throwRuntimeError("index out of range"),undefined):AH[e]),new $Int64(f.$high^i.$high,(f.$low^i.$low)>>>0));(j=b.vec,((e<0||e>=j.length)?($throwRuntimeError("index out of range"),undefined):j[e]=f));}e=e+(1)>>0;}};AI.prototype.Seed=function(a){return this.$val.Seed(a);};AI.ptr.prototype.Int63=function(){var a,b,c;a=this;return((b=(c=a.Uint64(),new $Uint64(c.$high&2147483647,(c.$low&4294967295)>>>0)),new $Int64(b.$high,b.$low)));};AI.prototype.Int63=function(){return this.$val.Int63();};AI.ptr.prototype.Uint64=function(){var a,b,c,d,e,f,g,h,i,j;a=this;a.tap=a.tap-(1)>>0;if(a.tap<0){a.tap=a.tap+(607)>>0;}a.feed=a.feed-(1)>>0;if(a.feed<0){a.feed=a.feed+(607)>>0;}h=(b=(c=a.vec,d=a.feed,((d<0||d>=c.length)?($throwRuntimeError("index out of range"),undefined):c[d])),e=(f=a.vec,g=a.tap,((g<0||g>=f.length)?($throwRuntimeError("index out of range"),undefined):f[g])),new $Int64(b.$high+e.$high,b.$low+e.$low));(i=a.vec,j=a.feed,((j<0||j>=i.length)?($throwRuntimeError("index out of range"),undefined):i[j]=h));return(new $Uint64(h.$high,h.$low));};AI.prototype.Uint64=function(){return this.$val.Uint64();};AR.methods=[{prop:"ExpFloat64",name:"ExpFloat64",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"NormFloat64",name:"NormFloat64",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Seed",name:"Seed",pkg:"",typ:$funcType([$Int64],[],false)},{prop:"Int63",name:"Int63",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Uint32",name:"Uint32",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([],[$Uint64],false)},{prop:"Int31",name:"Int31",pkg:"",typ:$funcType([],[$Int32],false)},{prop:"Int",name:"Int",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Int63n",name:"Int63n",pkg:"",typ:$funcType([$Int64],[$Int64],false)},{prop:"Int31n",name:"Int31n",pkg:"",typ:$funcType([$Int32],[$Int32],false)},{prop:"int31n",name:"int31n",pkg:"math/rand",typ:$funcType([$Int32],[$Int32],false)},{prop:"Intn",name:"Intn",pkg:"",typ:$funcType([$Int],[$Int],false)},{prop:"Float64",name:"Float64",pkg:"",typ:$funcType([],[$Float64],false)},{prop:"Float32",name:"Float32",pkg:"",typ:$funcType([],[$Float32],false)},{prop:"Perm",name:"Perm",pkg:"",typ:$funcType([$Int],[AP],false)},{prop:"Shuffle",name:"Shuffle",pkg:"",typ:$funcType([$Int,AT],[],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([AU],[$Int,$error],false)}];AN.methods=[{prop:"Int63",name:"Int63",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([],[$Uint64],false)},{prop:"Seed",name:"Seed",pkg:"",typ:$funcType([$Int64],[],false)},{prop:"seedPos",name:"seedPos",pkg:"math/rand",typ:$funcType([$Int64,AO],[],false)},{prop:"read",name:"read",pkg:"math/rand",typ:$funcType([AU,AQ,AO],[$Int,$error],false)}];AV.methods=[{prop:"Seed",name:"Seed",pkg:"",typ:$funcType([$Int64],[],false)},{prop:"Int63",name:"Int63",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([],[$Uint64],false)}];J.init([{prop:"Int63",name:"Int63",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Seed",name:"Seed",pkg:"",typ:$funcType([$Int64],[],false)}]);K.init([{prop:"Int63",name:"Int63",pkg:"",typ:$funcType([],[$Int64],false)},{prop:"Seed",name:"Seed",pkg:"",typ:$funcType([$Int64],[],false)},{prop:"Uint64",name:"Uint64",pkg:"",typ:$funcType([],[$Uint64],false)}]);M.init("math/rand",[{prop:"src",name:"src",embedded:false,exported:false,typ:J,tag:""},{prop:"s64",name:"s64",embedded:false,exported:false,typ:K,tag:""},{prop:"readVal",name:"readVal",embedded:false,exported:false,typ:$Int64,tag:""},{prop:"readPos",name:"readPos",embedded:false,exported:false,typ:$Int8,tag:""}]);AG.init("math/rand",[{prop:"lk",name:"lk",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"src",name:"src",embedded:false,exported:false,typ:K,tag:""}]);AI.init("math/rand",[{prop:"tap",name:"tap",embedded:false,exported:false,typ:$Int,tag:""},{prop:"feed",name:"feed",embedded:false,exported:false,typ:$Int,tag:""},{prop:"vec",name:"vec",embedded:false,exported:false,typ:AM,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}C=$toNativeArray($kindUint32,[3801129273,0,2615860924,3279400049,3571300752,3733536696,3836274812,3906990442,3958562475,3997804264,4028649213,4053523342,4074002619,4091154507,4105727352,4118261130,4129155133,4138710916,4147160435,4154685009,4161428406,4167506077,4173011791,4178022498,4182601930,4186803325,4190671498,4194244443,4197554582,4200629752,4203493986,4206168142,4208670408,4211016720,4213221098,4215295924,4217252177,4219099625,4220846988,4222502074,4224071896,4225562770,4226980400,4228329951,4229616109,4230843138,4232014925,4233135020,4234206673,4235232866,4236216336,4237159604,4238064994,4238934652,4239770563,4240574564,4241348362,4242093539,4242811568,4243503822,4244171579,4244816032,4245438297,4246039419,4246620374,4247182079,4247725394,4248251127,4248760037,4249252839,4249730206,4250192773,4250641138,4251075867,4251497493,4251906522,4252303431,4252688672,4253062674,4253425844,4253778565,4254121205,4254454110,4254777611,4255092022,4255397640,4255694750,4255983622,4256264513,4256537670,4256803325,4257061702,4257313014,4257557464,4257795244,4258026541,4258251531,4258470383,4258683258,4258890309,4259091685,4259287526,4259477966,4259663135,4259843154,4260018142,4260188212,4260353470,4260514019,4260669958,4260821380,4260968374,4261111028,4261249421,4261383632,4261513736,4261639802,4261761900,4261880092,4261994441,4262105003,4262211835,4262314988,4262414513,4262510454,4262602857,4262691764,4262777212,4262859239,4262937878,4263013162,4263085118,4263153776,4263219158,4263281289,4263340187,4263395872,4263448358,4263497660,4263543789,4263586755,4263626565,4263663224,4263696735,4263727099,4263754314,4263778377,4263799282,4263817020,4263831582,4263842955,4263851124,4263856071,4263857776,4263856218,4263851370,4263843206,4263831695,4263816804,4263798497,4263776735,4263751476,4263722676,4263690284,4263654251,4263614520,4263571032,4263523724,4263472530,4263417377,4263358192,4263294892,4263227394,4263155608,4263079437,4262998781,4262913534,4262823581,4262728804,4262629075,4262524261,4262414220,4262298801,4262177846,4262051187,4261918645,4261780032,4261635148,4261483780,4261325704,4261160681,4260988457,4260808763,4260621313,4260425802,4260221905,4260009277,4259787550,4259556329,4259315195,4259063697,4258801357,4258527656,4258242044,4257943926,4257632664,4257307571,4256967906,4256612870,4256241598,4255853155,4255446525,4255020608,4254574202,4254106002,4253614578,4253098370,4252555662,4251984571,4251383021,4250748722,4250079132,4249371435,4248622490,4247828790,4246986404,4246090910,4245137315,4244119963,4243032411,4241867296,4240616155,4239269214,4237815118,4236240596,4234530035,4232664930,4230623176,4228378137,4225897409,4223141146,4220059768,4216590757,4212654085,4208145538,4202926710,4196809522,4189531420,4180713890,4169789475,4155865042,4137444620,4111806704,4073393724,4008685917,3873074895]);D=$toNativeArray($kindFloat32,[2.0249555365836613e-09,1.4866739783681027e-11,2.4409616689036184e-11,3.1968806074589295e-11,3.844677007314168e-11,4.42282044321729e-11,4.951644302919611e-11,5.443358958023836e-11,5.905943789574764e-11,6.34494193296753e-11,6.764381416113352e-11,7.167294535648239e-11,7.556032188826833e-11,7.932458162551725e-11,8.298078890689453e-11,8.654132271912474e-11,9.001651507523079e-11,9.341507428706208e-11,9.674443190998971e-11,1.0001099254308699e-10,1.0322031424037093e-10,1.0637725422757427e-10,1.0948611461891744e-10,1.1255067711157807e-10,1.1557434870246297e-10,1.1856014781042035e-10,1.2151082917633005e-10,1.2442885610752796e-10,1.2731647680563896e-10,1.3017574518325858e-10,1.330085347417409e-10,1.3581656632677408e-10,1.386014220061682e-10,1.413645728254309e-10,1.4410737880776736e-10,1.4683107507629245e-10,1.4953686899854546e-10,1.522258291641876e-10,1.5489899640730442e-10,1.575573282952547e-10,1.6020171300645814e-10,1.628330109637588e-10,1.6545202707884954e-10,1.68059510752272e-10,1.7065616975120435e-10,1.73242697965037e-10,1.758197337720091e-10,1.783878739169964e-10,1.8094774290045024e-10,1.834998542005195e-10,1.8604476292871652e-10,1.8858298256319017e-10,1.9111498494872592e-10,1.9364125580789704e-10,1.9616222535212557e-10,1.9867835154840918e-10,2.011900368525943e-10,2.0369768372052732e-10,2.062016807302669e-10,2.0870240258208383e-10,2.1120022397624894e-10,2.136955057352452e-10,2.1618855317040442e-10,2.1867974098199738e-10,2.2116936060356807e-10,2.2365774510202385e-10,2.2614519978869652e-10,2.2863201609713002e-10,2.3111849933865614e-10,2.3360494094681883e-10,2.3609159072179864e-10,2.3857874009713953e-10,2.4106666662859766e-10,2.4355562011635357e-10,2.460458781161634e-10,2.485376904282077e-10,2.5103127909709144e-10,2.5352694943414633e-10,2.560248957284017e-10,2.585253955356137e-10,2.610286709003873e-10,2.6353494386732734e-10,2.6604446423661443e-10,2.6855745405285347e-10,2.71074163116225e-10,2.7359478571575835e-10,2.7611959940720965e-10,2.786487707240326e-10,2.8118254946640775e-10,2.8372118543451563e-10,2.8626484516180994e-10,2.8881380620404684e-10,2.9136826285025563e-10,2.9392840938946563e-10,2.96494523377433e-10,2.990667713476114e-10,3.016454031001814e-10,3.042306406797479e-10,3.068226783753403e-10,3.09421765987139e-10,3.12028125559749e-10,3.1464195138219964e-10,3.17263521010247e-10,3.1989300097734485e-10,3.225306410836737e-10,3.2517669112941405e-10,3.2783134540359526e-10,3.3049485370639786e-10,3.3316743808242677e-10,3.3584937608743815e-10,3.385408342548857e-10,3.4124211789610115e-10,3.4395342130011386e-10,3.4667499426710435e-10,3.494071143528288e-10,3.521500313574677e-10,3.54903967325626e-10,3.576691720574843e-10,3.6044595086437425e-10,3.632345535464765e-10,3.660352021483959e-10,3.688482297370399e-10,3.716738583570134e-10,3.7451239331964814e-10,3.773641121807003e-10,3.802292924959261e-10,3.831082673322328e-10,3.8600128648980103e-10,3.8890865527996255e-10,3.9183070676962473e-10,3.9476774627011935e-10,3.977200790927782e-10,4.006880383045086e-10,4.0367195697221803e-10,4.066721681628138e-10,4.0968900494320337e-10,4.127228558914453e-10,4.15774054074447e-10,4.188429603146915e-10,4.2192993543466173e-10,4.25035395767992e-10,4.2815970213716525e-10,4.313032986313914e-10,4.3446651831757777e-10,4.376498607960855e-10,4.408536868893975e-10,4.4407846844229937e-10,4.4732464954400086e-10,4.5059267428371186e-10,4.538830145062178e-10,4.5719619756745544e-10,4.605326675566346e-10,4.638929240741163e-10,4.672775499869886e-10,4.706869893844612e-10,4.74121908400349e-10,4.775827511238617e-10,4.810701836888143e-10,4.845848167178701e-10,4.881271498113904e-10,4.916979601254923e-10,4.952977472605369e-10,4.989272883726414e-10,5.025872495956207e-10,5.062783525744408e-10,5.100013189540675e-10,5.13756870379467e-10,5.175458395179078e-10,5.21369003525507e-10,5.252272505806843e-10,5.29121357839557e-10,5.330522134805449e-10,5.3702081670437e-10,5.41028055689452e-10,5.450749851476644e-10,5.491624932574268e-10,5.532918012640664e-10,5.574638528571541e-10,5.616799247931681e-10,5.659410717839819e-10,5.702485705860738e-10,5.746036979559221e-10,5.790077306500052e-10,5.83462111958255e-10,5.879682296594524e-10,5.925275825546805e-10,5.971417249561739e-10,6.01812211176167e-10,6.065408175714992e-10,6.113292094767075e-10,6.16179329782085e-10,6.21092954844471e-10,6.260721940876124e-10,6.311191569352559e-10,6.362359528111483e-10,6.414249686947926e-10,6.466885360545405e-10,6.520292639144998e-10,6.574497612987784e-10,6.629528592760892e-10,6.685415554485985e-10,6.742187919073217e-10,6.799880103436351e-10,6.858525969377638e-10,6.918161599145378e-10,6.978825850545434e-10,7.040559801829716e-10,7.103406751696184e-10,7.167412219288849e-10,7.232625609532306e-10,7.2990985477972e-10,7.366885990123251e-10,7.436047333442275e-10,7.506645305355164e-10,7.57874762946642e-10,7.652426470272644e-10,7.727759543385559e-10,7.804830115532013e-10,7.883728114777e-10,7.964550685635174e-10,8.047402189070851e-10,8.132396422944055e-10,8.219657177122031e-10,8.309318788590758e-10,8.401527806789488e-10,8.496445214056791e-10,8.594246980742071e-10,8.695127395874636e-10,8.799300732498239e-10,8.90700457834015e-10,9.01850316648023e-10,9.134091816243028e-10,9.254100818978372e-10,9.37890431984556e-10,9.508922538259412e-10,9.64463842123564e-10,9.78660263939446e-10,9.935448019859905e-10,1.0091912860943353e-09,1.0256859805934937e-09,1.0431305819125214e-09,1.0616465484503124e-09,1.0813799855569073e-09,1.1025096391392708e-09,1.1252564435793033e-09,1.149898620766976e-09,1.176793218427008e-09,1.2064089727203964e-09,1.2393785997488749e-09,1.2765849488616254e-09,1.319313880365769e-09,1.36954347862428e-09,1.4305497897382224e-09,1.5083649884672923e-09,1.6160853766322703e-09,1.7921247819074893e-09]);E=$toNativeArray($kindFloat32,[1,0.9381436705589294,0.900469958782196,0.8717043399810791,0.847785472869873,0.8269932866096497,0.8084216713905334,0.7915276288986206,0.7759568691253662,0.7614634037017822,0.7478685975074768,0.7350381016731262,0.7228676676750183,0.7112747430801392,0.7001926302909851,0.6895664930343628,0.6793505549430847,0.669506311416626,0.6600008606910706,0.6508058309555054,0.6418967247009277,0.633251965045929,0.62485271692276,0.6166821718215942,0.608725368976593,0.6009689569473267,0.5934008955955505,0.5860103368759155,0.5787873864173889,0.5717230439186096,0.5648092031478882,0.5580382943153381,0.5514034032821655,0.5448982119560242,0.5385168790817261,0.5322538614273071,0.526104211807251,0.5200631618499756,0.5141264200210571,0.5082897543907166,0.5025495290756226,0.4969019889831543,0.4913438558578491,0.4858720004558563,0.48048335313796997,0.4751752018928528,0.4699448347091675,0.4647897481918335,0.4597076177597046,0.4546961486339569,0.4497532546520233,0.44487687945365906,0.4400651156902313,0.4353161156177521,0.4306281507015228,0.42599955201148987,0.42142874002456665,0.4169141948223114,0.4124544560909271,0.40804818272590637,0.4036940038204193,0.39939069747924805,0.3951369822025299,0.39093172550201416,0.38677382469177246,0.38266217708587646,0.378595769405365,0.37457355856895447,0.37059465050697327,0.366658091545105,0.362762987613678,0.358908474445343,0.35509374737739563,0.35131800174713135,0.3475804924964905,0.34388044476509094,0.34021714329719543,0.33658990263938904,0.3329980671405792,0.3294409513473511,0.32591795921325684,0.32242849469184875,0.3189719021320343,0.3155476748943329,0.31215524673461914,0.3087940812110901,0.30546361207962036,0.30216339230537415,0.29889291524887085,0.29565170407295227,0.2924392819404602,0.2892552316188812,0.28609907627105713,0.2829704284667969,0.27986884117126465,0.2767939269542694,0.2737452983856201,0.2707225978374481,0.26772540807724,0.26475343108177185,0.2618062496185303,0.258883535861969,0.2559850215911865,0.25311028957366943,0.25025907158851624,0.24743106961250305,0.2446259707212448,0.24184346199035645,0.23908329010009766,0.23634515702724457,0.2336287796497345,0.23093391954898834,0.22826029360294342,0.22560766339302063,0.22297576069831848,0.22036437690258026,0.21777324378490448,0.21520215272903442,0.212650865316391,0.21011915802955627,0.20760682225227356,0.20511364936828613,0.20263944566249847,0.20018397271633148,0.19774706661701202,0.1953285187482834,0.19292815029621124,0.19054576754570007,0.18818120658397675,0.18583425879478455,0.18350479006767273,0.18119260668754578,0.17889754474163055,0.17661945521831512,0.17435817420482635,0.1721135377883911,0.16988539695739746,0.16767361760139465,0.16547803580760956,0.16329853236675262,0.16113494336605072,0.1589871346950531,0.15685498714447021,0.15473836660385132,0.15263713896274567,0.1505511850118637,0.1484803706407547,0.14642459154129028,0.1443837285041809,0.14235764741897583,0.1403462439775467,0.13834942877292633,0.136367067694664,0.13439907133579254,0.1324453204870224,0.1305057406425476,0.12858019769191742,0.12666863203048706,0.12477091699838638,0.12288697808980942,0.1210167184472084,0.11916005611419678,0.11731690168380737,0.11548716574907303,0.11367076635360718,0.11186762899160385,0.11007767915725708,0.1083008274435997,0.10653700679540634,0.10478614270687103,0.1030481606721878,0.10132300108671188,0.0996105819940567,0.09791085124015808,0.09622374176979065,0.09454918652772903,0.09288713335990906,0.09123751521110535,0.08960027992725372,0.08797537535429001,0.08636274188756943,0.0847623273730278,0.08317409455776215,0.08159798383712769,0.08003395050764084,0.07848194986581802,0.07694194465875626,0.07541389018297195,0.07389774918556213,0.07239348441362381,0.070901058614254,0.06942043453454971,0.06795158982276917,0.06649449467658997,0.06504911929368973,0.06361543387174606,0.06219341605901718,0.06078304722905159,0.0593843050301075,0.05799717456102371,0.05662164092063904,0.05525768920779228,0.05390531197190285,0.05256449431180954,0.05123523622751236,0.04991753399372101,0.04861138388514519,0.047316793352365494,0.04603376239538193,0.044762298464775085,0.04350241273641586,0.04225412383675575,0.04101744294166565,0.039792392402887344,0.03857899457216263,0.03737728297710419,0.03618728369474411,0.03500903770327568,0.03384258225560188,0.0326879620552063,0.031545232981443405,0.030414443463087082,0.0292956605553627,0.028188949450850487,0.027094384655356407,0.02601204626262188,0.024942025542259216,0.023884421214461327,0.022839335724711418,0.021806888282299042,0.020787203684449196,0.019780423492193222,0.018786700442433357,0.017806200310587883,0.016839107498526573,0.015885621309280396,0.014945968054234982,0.01402039173990488,0.013109165243804455,0.012212592177093029,0.011331013403832912,0.010464809834957123,0.009614413604140282,0.008780314587056637,0.007963077165186405,0.007163353264331818,0.0063819061033427715,0.005619642324745655,0.004877655766904354,0.004157294984906912,0.003460264764726162,0.0027887988835573196,0.0021459676790982485,0.001536299823783338,0.0009672692976891994,0.0004541343660093844]);G=$toNativeArray($kindUint32,[1991057938,0,1611602771,1826899878,1918584482,1969227037,2001281515,2023368125,2039498179,2051788381,2061460127,2069267110,2075699398,2081089314,2085670119,2089610331,2093034710,2096037586,2098691595,2101053571,2103168620,2105072996,2106796166,2108362327,2109791536,2111100552,2112303493,2113412330,2114437283,2115387130,2116269447,2117090813,2117856962,2118572919,2119243101,2119871411,2120461303,2121015852,2121537798,2122029592,2122493434,2122931299,2123344971,2123736059,2124106020,2124456175,2124787725,2125101763,2125399283,2125681194,2125948325,2126201433,2126441213,2126668298,2126883268,2127086657,2127278949,2127460589,2127631985,2127793506,2127945490,2128088244,2128222044,2128347141,2128463758,2128572095,2128672327,2128764606,2128849065,2128925811,2128994934,2129056501,2129110560,2129157136,2129196237,2129227847,2129251929,2129268426,2129277255,2129278312,2129271467,2129256561,2129233410,2129201800,2129161480,2129112170,2129053545,2128985244,2128906855,2128817916,2128717911,2128606255,2128482298,2128345305,2128194452,2128028813,2127847342,2127648860,2127432031,2127195339,2126937058,2126655214,2126347546,2126011445,2125643893,2125241376,2124799783,2124314271,2123779094,2123187386,2122530867,2121799464,2120980787,2120059418,2119015917,2117825402,2116455471,2114863093,2112989789,2110753906,2108037662,2104664315,2100355223,2094642347,2086670106,2074676188,2054300022,2010539237]);H=$toNativeArray($kindFloat32,[1.7290404663583558e-09,1.2680928529462676e-10,1.689751810696194e-10,1.9862687883343e-10,2.223243117382978e-10,2.4244936613904144e-10,2.601613091623989e-10,2.761198769629658e-10,2.9073962681813725e-10,3.042996965518796e-10,3.169979556627567e-10,3.289802041894774e-10,3.4035738116777736e-10,3.5121602848242617e-10,3.61625090983253e-10,3.7164057942185025e-10,3.813085680537398e-10,3.906675816178762e-10,3.997501218933053e-10,4.0858399996679395e-10,4.1719308563337165e-10,4.255982233303257e-10,4.3381759295968436e-10,4.4186720948857783e-10,4.497613115272969e-10,4.57512583373898e-10,4.6513240481438345e-10,4.726310454117311e-10,4.800177477726209e-10,4.873009773476156e-10,4.944885056978876e-10,5.015873272284921e-10,5.086040477664255e-10,5.155446070048697e-10,5.224146670812502e-10,5.292193350214802e-10,5.359634958068682e-10,5.426517013518151e-10,5.492881705038144e-10,5.558769555769061e-10,5.624218868405251e-10,5.689264614971989e-10,5.75394121238304e-10,5.818281967329142e-10,5.882316855831959e-10,5.946076964136182e-10,6.009590047817426e-10,6.072883862451306e-10,6.135985053390414e-10,6.19892026598734e-10,6.261713370037114e-10,6.324390455780815e-10,6.386973727678935e-10,6.449488165749528e-10,6.511955974453087e-10,6.574400468473129e-10,6.636843297158634e-10,6.699307220081607e-10,6.761814441702541e-10,6.824387166481927e-10,6.887046488657234e-10,6.949815167800466e-10,7.012714853260604e-10,7.075767749498141e-10,7.13899661608508e-10,7.202424212593428e-10,7.266072743483676e-10,7.329966078550854e-10,7.394128087589991e-10,7.458582640396116e-10,7.523354716987285e-10,7.588469852493063e-10,7.653954137154528e-10,7.719834771435785e-10,7.786139510912449e-10,7.852897221383159e-10,7.920137878869582e-10,7.987892014504894e-10,8.056192379868321e-10,8.125072836762115e-10,8.194568912323064e-10,8.264716688799467e-10,8.3355555791087e-10,8.407127216614185e-10,8.479473234679347e-10,8.552640262671218e-10,8.626675485068347e-10,8.701631637464402e-10,8.777562010564566e-10,8.854524335966119e-10,8.932581896381464e-10,9.011799639857543e-10,9.092249730890956e-10,9.174008219758889e-10,9.25715837318819e-10,9.341788453909317e-10,9.42799727177146e-10,9.515889187738935e-10,9.605578554783278e-10,9.697193048552322e-10,9.790869226478094e-10,9.886760299337993e-10,9.985036131254788e-10,1.008588212947359e-09,1.0189509236369076e-09,1.0296150598776421e-09,1.040606933955246e-09,1.0519566329136865e-09,1.0636980185552147e-09,1.0758701707302976e-09,1.0885182755160372e-09,1.101694735439196e-09,1.115461056855338e-09,1.1298901814171813e-09,1.1450695946990663e-09,1.1611052119775422e-09,1.178127595480305e-09,1.1962995039027646e-09,1.2158286599728285e-09,1.2369856250415978e-09,1.2601323318151003e-09,1.2857697129220469e-09,1.3146201904845611e-09,1.3477839955200466e-09,1.3870635751089821e-09,1.43574030442295e-09,1.5008658760251592e-09,1.6030947680434338e-09]);I=$toNativeArray($kindFloat32,[1,0.963599681854248,0.9362826943397522,0.9130436182022095,0.8922816514968872,0.8732430338859558,0.8555005788803101,0.8387836217880249,0.8229072093963623,0.8077383041381836,0.7931770086288452,0.7791460752487183,0.7655841708183289,0.7524415850639343,0.7396772503852844,0.7272568941116333,0.7151514887809753,0.7033361196517944,0.6917891502380371,0.6804918646812439,0.6694276928901672,0.6585819721221924,0.6479418277740479,0.6374954581260681,0.6272324919700623,0.6171433925628662,0.6072195172309875,0.5974531769752502,0.5878370404243469,0.5783646702766418,0.5690299868583679,0.5598273873329163,0.550751805305481,0.5417983531951904,0.5329626798629761,0.5242405533790588,0.5156282186508179,0.5071220397949219,0.49871864914894104,0.4904148280620575,0.48220765590667725,0.47409430146217346,0.466072142124176,0.45813870429992676,0.45029163360595703,0.44252872467041016,0.4348478317260742,0.42724698781967163,0.41972434520721436,0.41227802634239197,0.40490642189979553,0.39760786294937134,0.3903807997703552,0.3832238018512726,0.3761354684829712,0.3691144585609436,0.36215949058532715,0.3552693724632263,0.3484429717063904,0.3416791558265686,0.33497685194015503,0.32833510637283325,0.3217529058456421,0.3152293860912323,0.30876362323760986,0.3023548424243927,0.2960021495819092,0.2897048592567444,0.28346219658851624,0.2772735059261322,0.271138072013855,0.2650552988052368,0.25902456045150757,0.25304529070854187,0.24711695313453674,0.24123899638652802,0.23541094362735748,0.22963231801986694,0.22390270233154297,0.21822164952754974,0.21258877217769623,0.20700371265411377,0.20146611332893372,0.1959756463766098,0.19053204357624054,0.18513499200344086,0.17978426814079285,0.1744796335697174,0.16922089457511902,0.16400785744190216,0.1588403731584549,0.15371830761432648,0.14864157140254974,0.14361007511615753,0.13862377405166626,0.13368265330791473,0.12878671288490295,0.12393598258495331,0.11913054436445236,0.11437050998210907,0.10965602099895477,0.1049872562289238,0.10036443918943405,0.09578784555196762,0.09125780314207077,0.08677466958761215,0.08233889937400818,0.07795098423957825,0.07361150532960892,0.06932111829519272,0.06508058309555054,0.06089077144861221,0.05675266310572624,0.05266740173101425,0.048636294901371,0.044660862535238266,0.040742866694927216,0.03688438981771469,0.03308788686990738,0.029356317594647408,0.025693291798233986,0.02210330404341221,0.018592102453112602,0.015167297795414925,0.011839478276669979,0.0086244847625494,0.005548994988203049,0.0026696291752159595]);AH=$toNativeArray($kindInt64,[new $Int64(-973649357,3952672746),new $Int64(-1065661887,3130416987),new $Int64(324977939,3414273807),new $Int64(1241840476,2806224363),new $Int64(-1477934308,1997590414),new $Int64(2103305448,2402795971),new $Int64(1663160183,1140819369),new $Int64(1120601685,1788868961),new $Int64(1848035537,1089001426),new $Int64(1235702047,873593504),new $Int64(1911387977,581324885),new $Int64(-1654874170,1609182556),new $Int64(1069394745,1241596776),new $Int64(1895445337,1771189259),new $Int64(-1374618802,3467012610),new $Int64(-140526423,2344407434),new $Int64(-1745367887,782467244),new $Int64(26335124,3404933915),new $Int64(1063924276,618867887),new $Int64(-968700782,520164395),new $Int64(-1591572833,1341358184),new $Int64(-1515085039,665794848),new $Int64(1527227641,3183648150),new $Int64(1781176124,696329606),new $Int64(1789146075,4151988961),new $Int64(-2087444114,998951326),new $Int64(-612324923,1364957564),new $Int64(63173359,4090230633),new $Int64(-1498029007,4009697548),new $Int64(248009524,2569622517),new $Int64(778703922,3742421481),new $Int64(-1109106023,1506914633),new $Int64(1738099768,1983412561),new $Int64(236311649,1436266083),new $Int64(-1111517500,3922894967),new $Int64(-1336974714,1792680179),new $Int64(563141142,1188796351),new $Int64(1349617468,405968250),new $Int64(1044074554,433754187),new $Int64(870549669,4073162024),new $Int64(-1094251604,433121399),new $Int64(2451824,4162580594),new $Int64(-137262572,4132415622),new $Int64(-1536231048,3033822028),new $Int64(2016407895,824682382),new $Int64(2366218,3583765414),new $Int64(-624604839,535386927),new $Int64(1637219058,2286693689),new $Int64(1453075389,2968466525),new $Int64(193683513,1351410206),new $Int64(-283806096,1412813499),new $Int64(492736522,4126267639),new $Int64(512765208,2105529399),new $Int64(2132966268,2413882233),new $Int64(947457634,32226200),new $Int64(1149341356,2032329073),new $Int64(106485445,1356518208),new $Int64(-2067810156,3430061722),new $Int64(-1484435135,3820169661),new $Int64(-1665985194,2981816134),new $Int64(1017155588,4184371017),new $Int64(206574701,2119206761),new $Int64(-852109057,2472200560),new $Int64(-560457548,2853524696),new $Int64(1307803389,1681119904),new $Int64(-174986835,95608918),new $Int64(392686347,3690479145),new $Int64(-1205570926,1397922290),new $Int64(-1159314025,1516129515),new $Int64(-320178155,1547420459),new $Int64(1311333971,1470949486),new $Int64(-1953469798,1336785672),new $Int64(-45086614,4131677129),new $Int64(-1392278100,4246329084),new $Int64(-1142500187,3788585631),new $Int64(-66478285,3080389532),new $Int64(-646438364,2215402037),new $Int64(391002300,1171593935),new $Int64(1408774047,1423855166),new $Int64(-519177718,2276716302),new $Int64(-368453140,2068027241),new $Int64(1369359303,3427553297),new $Int64(189241615,3289637845),new $Int64(1057480830,3486407650),new $Int64(-1512910664,3071877822),new $Int64(1159653919,3363620705),new $Int64(-934256930,4159821533),new $Int64(-76621938,1894661),new $Int64(-674493898,1156868282),new $Int64(348271067,776219088),new $Int64(-501428838,2425634259),new $Int64(1716021749,680510161),new $Int64(-574263456,1310101429),new $Int64(1095885995,2964454134),new $Int64(-325695512,3467098407),new $Int64(1990672920,2109628894),new $Int64(-2139648704,1232604732),new $Int64(-1838070714,3261916179),new $Int64(1699175360,434597899),new $Int64(235436061,1624796439),new $Int64(-1626402839,3589632480),new $Int64(1198416575,864579159),new $Int64(-1938748161,1380889830),new $Int64(619206309,2654509477),new $Int64(1419738251,1468209306),new $Int64(-1744284772,100794388),new $Int64(-1191421458,2991674471),new $Int64(-208666741,2224662036),new $Int64(-173659161,977097250),new $Int64(1351320195,726419512),new $Int64(-183459897,1747974366),new $Int64(-753095183,1556430604),new $Int64(-1049492215,1080776742),new $Int64(-385846958,280794874),new $Int64(117767733,919835643),new $Int64(-967009426,3434019658),new $Int64(-1951414480,2461941785),new $Int64(133215641,3615001066),new $Int64(417204809,3103414427),new $Int64(790056561,3380809712),new $Int64(-1267681408,2724693469),new $Int64(547796833,598827710),new $Int64(-1846559452,3452273442),new $Int64(-75778224,649274915),new $Int64(-801301329,2585724112),new $Int64(-1510934263,3165579553),new $Int64(1185578221,2635894283),new $Int64(-52910178,2053289721),new $Int64(985976581,3169337108),new $Int64(1170569632,144717764),new $Int64(1079216270,1383666384),new $Int64(-124804942,681540375),new $Int64(1375448925,537050586),new $Int64(-1964768344,315246468),new $Int64(226402871,849323088),new $Int64(-885062465,45543944),new $Int64(-946445250,2319052083),new $Int64(-40708194,3613090841),new $Int64(560472520,2992171180),new $Int64(-381863169,2068244785),new $Int64(917538188,4239862634),new $Int64(-1369555809,3892253031),new $Int64(720683925,958186149),new $Int64(-423297785,1877702262),new $Int64(1357886971,837674867),new $Int64(1837048883,1507589294),new $Int64(1905518400,873336795),new $Int64(-1879761037,2764496274),new $Int64(-1806480530,4196182374),new $Int64(-1066765755,550964545),new $Int64(818747069,420611474),new $Int64(-1924830376,204265180),new $Int64(1549974541,1787046383),new $Int64(1215581865,3102292318),new $Int64(418321538,1552199393),new $Int64(1243493047,980542004),new $Int64(267284263,3293718720),new $Int64(1179528763,3771917473),new $Int64(599484404,2195808264),new $Int64(252818753,3894702887),new $Int64(-1367475956,2099949527),new $Int64(1424094358,338442522),new $Int64(490737398,637158004),new $Int64(-1727621530,281976339),new $Int64(574970164,3619802330),new $Int64(-431930823,3084554784),new $Int64(-1264611183,4129772886),new $Int64(-2104399043,1680378557),new $Int64(-1621962591,3339087776),new $Int64(1680500332,4220317857),new $Int64(-1935828963,2959322499),new $Int64(1675600481,1488354890),new $Int64(-834863562,3958162143),new $Int64(-1226511573,2773705983),new $Int64(1876039582,225908689),new $Int64(-1183735113,908216283),new $Int64(-605696219,3574646075),new $Int64(-1827723091,1936937569),new $Int64(1519770881,75492235),new $Int64(816689472,1935193178),new $Int64(2142521206,2018250883),new $Int64(455141620,3943126022),new $Int64(-601399488,3066544345),new $Int64(1932392669,2793082663),new $Int64(-1239009361,3297036421),new $Int64(1640597065,2206987825),new $Int64(-553246738,807894872),new $Int64(-1781325307,766252117),new $Int64(2060649606,3833114345),new $Int64(845619743,1255067973),new $Int64(1201145605,741697208),new $Int64(-1476242608,2810093753),new $Int64(1109032642,4229340371),new $Int64(1462188720,1361684224),new $Int64(-1159399429,1906263026),new $Int64(475781207,3904421704),new $Int64(-623537128,1769075545),new $Int64(1062308525,2621599764),new $Int64(1279509432,3431891480),new $Int64(-1742751146,1871896503),new $Int64(128756421,1412808876),new $Int64(1605404688,952876175),new $Int64(-230443691,1824438899),new $Int64(1662295856,1005035476),new $Int64(-156574141,527508597),new $Int64(1288873303,3066806859),new $Int64(565995893,3244940914),new $Int64(-889746188,209092916),new $Int64(-247669406,1242699167),new $Int64(-713830396,456723774),new $Int64(1776978905,1001252870),new $Int64(1468772157,2026725874),new $Int64(857254202,2137562569),new $Int64(765939740,3183366709),new $Int64(1533887628,2612072960),new $Int64(56977098,1727148468),new $Int64(-1197583895,3803658212),new $Int64(1883670356,479946959),new $Int64(685713571,1562982345),new $Int64(-1946242443,1766109365),new $Int64(700596547,3257093788),new $Int64(-184714929,2365720207),new $Int64(93384808,3742754173),new $Int64(-458385235,2878193673),new $Int64(1096135042,2174002182),new $Int64(-834260953,3573511231),new $Int64(-754572527,1760299077),new $Int64(-1375627191,2260779833),new $Int64(-866019274,1452805722),new $Int64(-1229671918,2940011802),new $Int64(1890251082,1886183802),new $Int64(893897673,2514369088),new $Int64(1644345561,3924317791),new $Int64(-1974867432,500935732),new $Int64(1403501753,676580929),new $Int64(-1565912283,1184984890),new $Int64(-691968413,1271474274),new $Int64(-1828754738,3163791473),new $Int64(2051027584,2842487377),new $Int64(1511537551,2170968612),new $Int64(573262976,3535856740),new $Int64(-2053227187,1488599718),new $Int64(-1180531831,3408913763),new $Int64(-2086531912,2501050084),new $Int64(-875130448,1639124157),new $Int64(-2009482504,4088176393),new $Int64(1574896563,3989947576),new $Int64(-165243708,3414355209),new $Int64(-792329287,2275136352),new $Int64(-2057774345,2151835223),new $Int64(-931144933,1654534827),new $Int64(-679921451,377892833),new $Int64(-482716010,660204544),new $Int64(85706799,390828249),new $Int64(-1422172693,3402783878),new $Int64(-1468634160,3717936603),new $Int64(1113532086,2211058823),new $Int64(1564224320,2692150867),new $Int64(1952770442,1928910388),new $Int64(788716862,3931011137),new $Int64(1083670504,1112701047),new $Int64(-68150572,2452299106),new $Int64(-896164822,2337204777),new $Int64(1774877857,273889282),new $Int64(1798719843,1462008793),new $Int64(2138834788,1554494002),new $Int64(-1194967131,182675323),new $Int64(-1598554764,1882802136),new $Int64(589279648,3700220025),new $Int64(381039426,3083431543),new $Int64(-851859191,3622207527),new $Int64(338126939,432729309),new $Int64(-1667470126,2391914317),new $Int64(-1849558151,235747924),new $Int64(2120733629,3088823825),new $Int64(-745079795,2314658321),new $Int64(1165929723,2957634338),new $Int64(501323675,4117056981),new $Int64(1564699815,1482500298),new $Int64(-740826490,840489337),new $Int64(799522364,3483178565),new $Int64(532129761,2074004656),new $Int64(724246478,3643392642),new $Int64(-665153481,1583624461),new $Int64(-885822954,287473085),new $Int64(1667835381,3136843981),new $Int64(1138806821,1266970974),new $Int64(135185781,1998688839),new $Int64(392094735,1492900209),new $Int64(1031326774,1538112737),new $Int64(-2070568842,2207265429),new $Int64(-1886797613,963263315),new $Int64(1671145500,2295892134),new $Int64(1068469660,2002560897),new $Int64(-356250305,1369254035),new $Int64(33436120,3353312708),new $Int64(57507843,947771099),new $Int64(-1945755145,1747061399),new $Int64(1507240140,2047354631),new $Int64(720000810,4165367136),new $Int64(479265078,3388864963),new $Int64(-952181250,286492130),new $Int64(2045622690,2795735007),new $Int64(-715730566,3703961339),new $Int64(-148436487,1797825479),new $Int64(1429039600,1116589674),new $Int64(-1665420098,2593309206),new $Int64(1329049334,3404995677),new $Int64(-750579440,3453462936),new $Int64(1014767077,3016498634),new $Int64(75698599,1650371545),new $Int64(1592007860,212344364),new $Int64(1127766888,3843932156),new $Int64(-748019856,3573129983),new $Int64(-890581831,665897820),new $Int64(1071492673,1675628772),new $Int64(243225682,2831752928),new $Int64(2120298836,1486294219),new $Int64(-1954407413,268782709),new $Int64(-1002123503,4186179080),new $Int64(624342951,1613720397),new $Int64(857179861,2703686015),new $Int64(-911618704,2205342611),new $Int64(-672703993,1411666394),new $Int64(-1528454899,677744900),new $Int64(-1876628533,4172867247),new $Int64(135494707,2163418403),new $Int64(849547544,2841526879),new $Int64(-1117516959,1082141470),new $Int64(-1770111792,4046134367),new $Int64(51415528,2142943655),new $Int64(-249824333,3124627521),new $Int64(998228909,219992939),new $Int64(-1078790951,1756846531),new $Int64(1283749206,1225118210),new $Int64(-525858006,1647770243),new $Int64(-2035959705,444807907),new $Int64(2036369448,3952076173),new $Int64(53201823,1461839639),new $Int64(315761893,3699250910),new $Int64(702974850,1373688981),new $Int64(734022261,147523747),new $Int64(-2047330906,1211276581),new $Int64(1294440951,2548832680),new $Int64(1144696256,1995631888),new $Int64(-1992983070,2011457303),new $Int64(-1351022674,3057425772),new $Int64(667839456,81484597),new $Int64(-1681980888,3646681560),new $Int64(-1372462725,635548515),new $Int64(602489502,2508044581),new $Int64(-1794220117,1014917157),new $Int64(719992433,3214891315),new $Int64(-1294799037,959582252),new $Int64(226415134,3347040449),new $Int64(-362868096,4102971975),new $Int64(397887437,4078022210),new $Int64(-536803826,2851767182),new $Int64(-1398321012,1540160644),new $Int64(-1549098876,1057290595),new $Int64(-112592988,3907769253),new $Int64(579300318,4248952684),new $Int64(-1054576049,132554364),new $Int64(-1085862414,1029351092),new $Int64(697840928,2583007416),new $Int64(298619124,1486185789),new $Int64(55905697,2871589073),new $Int64(2017643612,723203291),new $Int64(146250550,2494333952),new $Int64(-1082993397,2230939180),new $Int64(-1804568072,3943232912),new $Int64(1768732449,2181367922),new $Int64(-729261111,2889274791),new $Int64(1824032949,2046728161),new $Int64(1653899792,1376052477),new $Int64(1022327048,381236993),new $Int64(-1113097690,3188942166),new $Int64(-74480109,350070824),new $Int64(144881592,61758415),new $Int64(-741824226,3492950336),new $Int64(-2030042720,3093818430),new $Int64(-453590535,2962480613),new $Int64(-1912050708,3154871160),new $Int64(-1636478569,3228564679),new $Int64(610731502,888276216),new $Int64(-946702974,3574998604),new $Int64(-1277068380,1967526716),new $Int64(-1556147941,1554691298),new $Int64(-1573024234,339944798),new $Int64(1223764147,1154515356),new $Int64(1825645307,967516237),new $Int64(1546195135,596588202),new $Int64(-1867600880,3764362170),new $Int64(-1655392592,266611402),new $Int64(-393255880,2047856075),new $Int64(-1000726433,21444105),new $Int64(-949424754,3065563181),new $Int64(-232418803,1140663212),new $Int64(633187674,2323741028),new $Int64(2126290159,3103873707),new $Int64(1008658319,2766828349),new $Int64(-485587503,1970872996),new $Int64(1628585413,3766615585),new $Int64(-595148528,2036813414),new $Int64(-1994877121,3105536507),new $Int64(13954645,3396176938),new $Int64(-721402003,1377154485),new $Int64(-61839181,3807014186),new $Int64(543009040,3710110597),new $Int64(-1751425519,916420443),new $Int64(734556788,2103831255),new $Int64(-1766161494,717331943),new $Int64(-1574598896,3550505941),new $Int64(45939673,378749927),new $Int64(-1997615719,611017331),new $Int64(592130075,758907650),new $Int64(1012992349,154266815),new $Int64(-1040454942,1407468696),new $Int64(-1678191250,970098704),new $Int64(-285057486,1971660656),new $Int64(998365243,3332747885),new $Int64(1947089649,1935189867),new $Int64(1510248801,203520055),new $Int64(-1305165746,3916463034),new $Int64(-388598655,3474113316),new $Int64(1036101639,316544223),new $Int64(-1773744891,1650844677),new $Int64(-907191419,4267565603),new $Int64(-1070275024,2501167616),new $Int64(-1520651863,3929401789),new $Int64(-2091360852,337170252),new $Int64(-960502090,2061966842),new $Int64(-304190848,2508461464),new $Int64(-1941471116,2791377107),new $Int64(1240791848,1227227588),new $Int64(1813978778,1709681848),new $Int64(1153692192,3768820575),new $Int64(-1002297449,2887126398),new $Int64(-1447111334,296561685),new $Int64(700300844,3729960077),new $Int64(-1572311344,372833036),new $Int64(2078875613,2409779288),new $Int64(1829161290,555274064),new $Int64(-1105595719,4239804901),new $Int64(1839403216,3723486978),new $Int64(-1649093095,2145871984),new $Int64(-1582765715,3565480803),new $Int64(-1568653827,2197313814),new $Int64(974785092,3613674566),new $Int64(438638731,3042093666),new $Int64(-96556264,3324034321),new $Int64(869420878,3708873369),new $Int64(946682149,1698090092),new $Int64(1618900382,4213940712),new $Int64(-1843479747,2087477361),new $Int64(-1766167800,2407950639),new $Int64(-1296225558,3942568569),new $Int64(-1223900450,4088074412),new $Int64(723260036,2964773675),new $Int64(-673921829,1539178386),new $Int64(1062961552,2694849566),new $Int64(460977733,2120273838),new $Int64(-1604570740,2484608657),new $Int64(880846449,2956190677),new $Int64(1970902366,4223313749),new $Int64(662161910,3502682327),new $Int64(705634754,4133891139),new $Int64(-1031359300,1166449596),new $Int64(1038247601,3362705993),new $Int64(93734798,3892921029),new $Int64(1876124043,786869787),new $Int64(1057490746,1046342263),new $Int64(242763728,493777327),new $Int64(-853573201,3304827646),new $Int64(616460742,125356352),new $Int64(499300063,74094113),new $Int64(-795586925,2500816079),new $Int64(-490248444,514015239),new $Int64(1377565129,543520454),new $Int64(-2039776725,3614531153),new $Int64(2056746300,2356753985),new $Int64(1390062617,2018141668),new $Int64(131272971,2087974891),new $Int64(-1502927041,3166972343),new $Int64(372256200,1517638666),new $Int64(-935275664,173466846),new $Int64(-695774461,4241513471),new $Int64(-1413550842,2783126920),new $Int64(1972004134,4167264826),new $Int64(29260506,3907395640),new $Int64(-910901561,1539634186),new $Int64(-595957298,178241987),new $Int64(-113277636,182168164),new $Int64(-1102530459,2386154934),new $Int64(1379126408,4077374341),new $Int64(-2114679722,1732699140),new $Int64(-421057745,1041306002),new $Int64(1860414813,2068001749),new $Int64(1005320202,3208962910),new $Int64(844054010,697710380),new $Int64(-1509359403,2228431183),new $Int64(-810313977,3554678728),new $Int64(-750989047,173470263),new $Int64(-85886265,3848297795),new $Int64(-926936977,246236185),new $Int64(-1984190461,2066374846),new $Int64(1771673660,312890749),new $Int64(703378057,3573310289),new $Int64(-598851901,143166754),new $Int64(613554316,2081511079),new $Int64(1197802104,486038032),new $Int64(-1906483789,2982218564),new $Int64(364901986,1000939191),new $Int64(1902782651,2750454885),new $Int64(-671844857,3375313137),new $Int64(-1643868040,881302957),new $Int64(-1508784745,2514186393),new $Int64(-1703622845,360024739),new $Int64(1399671872,292500025),new $Int64(1381210821,2276300752),new $Int64(521803381,4069087683),new $Int64(-1938982667,1637778212),new $Int64(720490469,1676670893),new $Int64(1067262482,3855174429),new $Int64(2114075974,2067248671),new $Int64(-89426259,2884561259),new $Int64(-805741095,2456511185),new $Int64(983726246,561175414),new $Int64(-1719489563,432588903),new $Int64(885133709,4059399550),new $Int64(-93096266,1075014784),new $Int64(-1733832628,2728058415),new $Int64(1839142064,1299703678),new $Int64(1262333188,2347583393),new $Int64(1285481956,2468164145),new $Int64(-1158354011,1140014346),new $Int64(2033889184,1936972070),new $Int64(-1737578993,3870530098),new $Int64(-484494257,1717789158),new $Int64(-232997156,1153452491),new $Int64(-990424416,3948827651),new $Int64(-1357145630,2101413152),new $Int64(1495744672,3854091229),new $Int64(83644069,4215565463),new $Int64(-1385277313,1202710438),new $Int64(-564909037,2072216740),new $Int64(705690639,2066751068),new $Int64(-2113583312,173902580),new $Int64(-741983806,142459001),new $Int64(172391592,1889151926),new $Int64(-498943125,3034199774),new $Int64(1618587731,516490102),new $Int64(93114264,3692577783),new $Int64(-2078821353,2953948865),new $Int64(-320938673,4041040923),new $Int64(-1942517976,592046130),new $Int64(-705643640,384297211),new $Int64(-2051649464,265863924),new $Int64(2101717619,1333136237),new $Int64(1499611781,1406273556),new $Int64(1074670496,426305476),new $Int64(125704633,2750898176),new $Int64(488068495,1633944332),new $Int64(2037723464,3236349343),new $Int64(-1703423246,4013676611),new $Int64(1718532237,2265047407),new $Int64(1433593806,875071080),new $Int64(-343047503,1418843655),new $Int64(2009228711,451657300),new $Int64(1229446621,1866374663),new $Int64(1653472867,1551455622),new $Int64(577191481,3560962459),new $Int64(1669204077,3347903778),new $Int64(-298327194,2675874918),new $Int64(-1831355577,2762991672),new $Int64(530492383,3689068477),new $Int64(844089962,4071997905),new $Int64(1508155730,1381702441),new $Int64(2089931018,2373284878),new $Int64(-864267462,2143983064),new $Int64(308739063,1938207195),new $Int64(1754949306,1188152253),new $Int64(1272345009,615870490),new $Int64(742653194,2662252621),new $Int64(1477718295,3839976789),new $Int64(-2091334213,306752547),new $Int64(-1426688067,2162363077),new $Int64(-57052633,2767224719),new $Int64(-1471624099,2628837712),new $Int64(1678405918,2967771969),new $Int64(1694285728,499792248),new $Int64(-1744131281,4285253508),new $Int64(962357072,2856511070),new $Int64(679471692,2526409716),new $Int64(-1793706473,1240875658),new $Int64(-914893422,2577342868),new $Int64(-1001298215,4136853496),new $Int64(-1477114974,2403540137),new $Int64(1372824515,1371410668),new $Int64(-176562048,371758825),new $Int64(-441063112,1528834084),new $Int64(-71688630,1504757260),new $Int64(-1461820072,699052551),new $Int64(-505543539,3347789870),new $Int64(1951619734,3430604759),new $Int64(2119672219,1935601723),new $Int64(966789690,834676166)]);P=N(new AG.ptr(new B.Mutex.ptr(false),$assertType(L(new $Int64(0,1)),K)));}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["net"]=(function(){var $pkg={},$init,E,A,C,F,J,K,Q,N,O,M,G,H,D,I,P,B,L,AG,AH,AK,EE,EF,EM,EX,EY,EZ,FU,HS,HW,II,IM,IN,IO,IP,JJ,LC,NE,NG,NM,NP,NX,OE,OM,OQ,OR,OS,OT,OU,OV,OW,PM,PN,PP,QL,QM,QN,QO,QT,AI,BX,BY,BZ,CA,CB,CC,CD,DM,DZ,EA,EB,EC,ED,EG,EN,FB,FF,FG,FH,HU,IE,IF,IG,IJ,IT,c,d,e,f,g,h,i,j,k,AJ,AL,AP,CY,EK,EO,EP,EQ,ER,ES,ET,EU,EV,EW,FA,FC,FD,FE,FI,FJ,FK,FL,FM,FN,FO,FQ,FR,FT,JK,JM,JN,JP,JQ,JR,JT,JU;E=$packages["context"];A=$packages["errors"];C=$packages["github.com/gopherjs/gopherjs/js"];F=$packages["internal/bytealg"];J=$packages["internal/nettrace"];K=$packages["internal/poll"];Q=$packages["internal/singleflight"];N=$packages["internal/x/net/dns/dnsmessage"];O=$packages["io"];M=$packages["math/rand"];G=$packages["os"];H=$packages["runtime"];D=$packages["sort"];I=$packages["sync"];P=$packages["sync/atomic"];B=$packages["syscall"];L=$packages["time"];AG=$pkg.policyTableEntry=$newType(0,$kindStruct,"net.policyTableEntry",true,"net",false,function(Prefix_,Precedence_,Label_){this.$val=this;if(arguments.length===0){this.Prefix=NP.nil;this.Precedence=0;this.Label=0;return;}this.Prefix=Prefix_;this.Precedence=Precedence_;this.Label=Label_;});AH=$pkg.policyTable=$newType(12,$kindSlice,"net.policyTable",true,"net",false,null);AK=$pkg.byMaskLength=$newType(12,$kindSlice,"net.byMaskLength",true,"net",false,null);EE=$pkg.Interface=$newType(0,$kindStruct,"net.Interface",true,"net",true,function(Index_,MTU_,Name_,HardwareAddr_,Flags_){this.$val=this;if(arguments.length===0){this.Index=0;this.MTU=0;this.Name="";this.HardwareAddr=HS.nil;this.Flags=0;return;}this.Index=Index_;this.MTU=MTU_;this.Name=Name_;this.HardwareAddr=HardwareAddr_;this.Flags=Flags_;});EF=$pkg.Flags=$newType(4,$kindUint,"net.Flags",true,"net",true,null);EM=$pkg.ipv6ZoneCache=$newType(0,$kindStruct,"net.ipv6ZoneCache",true,"net",false,function(RWMutex_,lastFetched_,toIndex_,toName_){this.$val=this;if(arguments.length===0){this.RWMutex=new I.RWMutex.ptr(new I.Mutex.ptr(0,0),0,0,0,0);this.lastFetched=new L.Time.ptr(new $Uint64(0,0),new $Int64(0,0),NE.nil);this.toIndex=false;this.toName=false;return;}this.RWMutex=RWMutex_;this.lastFetched=lastFetched_;this.toIndex=toIndex_;this.toName=toName_;});EX=$pkg.IP=$newType(12,$kindSlice,"net.IP",true,"net",true,null);EY=$pkg.IPMask=$newType(12,$kindSlice,"net.IPMask",true,"net",true,null);EZ=$pkg.IPNet=$newType(0,$kindStruct,"net.IPNet",true,"net",true,function(IP_,Mask_){this.$val=this;if(arguments.length===0){this.IP=EX.nil;this.Mask=EY.nil;return;}this.IP=IP_;this.Mask=Mask_;});FU=$pkg.IPAddr=$newType(0,$kindStruct,"net.IPAddr",true,"net",true,function(IP_,Zone_){this.$val=this;if(arguments.length===0){this.IP=EX.nil;this.Zone="";return;}this.IP=IP_;this.Zone=Zone_;});HS=$pkg.HardwareAddr=$newType(12,$kindSlice,"net.HardwareAddr",true,"net",true,null);HW=$pkg.Addr=$newType(8,$kindInterface,"net.Addr",true,"net",true,null);II=$pkg.OpError=$newType(0,$kindStruct,"net.OpError",true,"net",true,function(Op_,Net_,Source_,Addr_,Err_){this.$val=this;if(arguments.length===0){this.Op="";this.Net="";this.Source=$ifaceNil;this.Addr=$ifaceNil;this.Err=$ifaceNil;return;}this.Op=Op_;this.Net=Net_;this.Source=Source_;this.Addr=Addr_;this.Err=Err_;});IM=$pkg.timeout=$newType(8,$kindInterface,"net.timeout",true,"net",false,null);IN=$pkg.temporary=$newType(8,$kindInterface,"net.temporary",true,"net",false,null);IO=$pkg.ParseError=$newType(0,$kindStruct,"net.ParseError",true,"net",true,function(Type_,Text_){this.$val=this;if(arguments.length===0){this.Type="";this.Text="";return;}this.Type=Type_;this.Text=Text_;});IP=$pkg.AddrError=$newType(0,$kindStruct,"net.AddrError",true,"net",true,function(Err_,Addr_){this.$val=this;if(arguments.length===0){this.Err="";this.Addr="";return;}this.Err=Err_;this.Addr=Addr_;});JJ=$pkg.file=$newType(0,$kindStruct,"net.file",true,"net",false,function(file_,data_,atEOF_){this.$val=this;if(arguments.length===0){this.file=OM.nil;this.data=NM.nil;this.atEOF=false;return;}this.file=file_;this.data=data_;this.atEOF=atEOF_;});LC=$pkg.sockaddr=$newType(8,$kindInterface,"net.sockaddr",true,"net",false,null);NE=$ptrType(L.Location);NG=$sliceType($String);NM=$sliceType($Uint8);NP=$ptrType(EZ);NX=$ptrType(FU);OE=$ptrType(II);OM=$ptrType(G.File);OQ=$ptrType(JJ);OR=$ptrType(EE);OS=$sliceType(HW);OT=$sliceType(EE);OU=$ptrType(B.IfInfomsg);OV=$ptrType(B.IfAddrmsg);OW=$arrayType($Uint8,4);PM=$ptrType(G.SyscallError);PN=$ptrType(IP);PP=$arrayType($Uint8,20);QL=$ptrType(EM);QM=$mapType($String,$Int);QN=$mapType($Int,$String);QO=$ptrType(EX);QT=$ptrType(IO);AJ=function(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=D.Sort(D.Reverse(($subslice(new AK(AI.$array),AI.$offset,AI.$offset+AI.$length))));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AJ};}$f.$s=$s;$f.$r=$r;return $f;};AK.prototype.Len=function(){var l;l=this;return l.$length;};$ptrType(AK).prototype.Len=function(){return this.$get().Len();};AK.prototype.Swap=function(l,m){var l,m,n,o,p;n=this;o=$clone(((m<0||m>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+m]),AG);p=$clone(((l<0||l>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+l]),AG);AG.copy(((l<0||l>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+l]),o);AG.copy(((m<0||m>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+m]),p);};$ptrType(AK).prototype.Swap=function(l,m){return this.$get().Swap(l,m);};AK.prototype.Less=function(l,m){var l,m,n,o,p,q,r;n=this;o=((l<0||l>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+l]).Prefix.Mask.Size();p=o[0];q=((m<0||m>=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+m]).Prefix.Mask.Size();r=q[0];return p=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]),AG);if(p.Prefix.Contains(l)){return p;}o++;}return new AG.ptr(NP.nil,0,0);};$ptrType(AH).prototype.Classify=function(l){return this.$get().Classify(l);};AP=function(){HU=true;};CY=function(l){var l,m,n,o;m=$assertType(l,B.Errno,true);n=m[0];o=m[1];if(o){return(n===104)||(n===103);}return false;};EF.prototype.String=function(){var l,m,n,o,p,q,r;l=this.$val;m="";n=EG;o=0;while(true){if(!(o=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]);if(!((((l&(((r=((p>>>0)),r<32?(1<>>0)))>>>0)===0))){if(!(m==="")){m=m+("|");}m=m+(q);}o++;}if(m===""){m="0";}return m;};$ptrType(EF).prototype.String=function(){return new EF(this.$get()).String();};EE.ptr.prototype.Addrs=function(){var l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(l===OR.nil){$s=-1;return[OS.nil,new II.ptr("route","ip+net",$ifaceNil,$ifaceNil,DZ)];}n=ER(l);$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];if(!($interfaceIsEqual(p,$ifaceNil))){p=new II.ptr("route","ip+net",$ifaceNil,$ifaceNil,p);}$s=-1;return[o,p];}return;}if($f===undefined){$f={$blk:EE.ptr.prototype.Addrs};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};EE.prototype.Addrs=function(){return this.$val.Addrs();};EE.ptr.prototype.MulticastAddrs=function(){var l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(l===OR.nil){$s=-1;return[OS.nil,new II.ptr("route","ip+net",$ifaceNil,$ifaceNil,DZ)];}n=EU(l);$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];if(!($interfaceIsEqual(p,$ifaceNil))){p=new II.ptr("route","ip+net",$ifaceNil,$ifaceNil,p);}$s=-1;return[o,p];}return;}if($f===undefined){$f={$blk:EE.ptr.prototype.MulticastAddrs};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};EE.prototype.MulticastAddrs=function(){return this.$val.MulticastAddrs();};EK=function(l,m){var l,m,n,o,p;n=l;o=0;while(true){if(!(o=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]),EE);if(m===p.Index){return[p,$ifaceNil];}o++;}return[OR.nil,EC];};EO=function(l){var aa,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:m=[m];o=B.NetlinkRIB(18,0);$s=1;case 1:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;p=n[0];q=n[1];if(!($interfaceIsEqual(q,$ifaceNil))){$s=-1;return[OT.nil,G.NewSyscallError("netlinkrib",q)];}r=B.ParseNetlinkMessage(p);s=r[0];q=r[1];if(!($interfaceIsEqual(q,$ifaceNil))){$s=-1;return[OT.nil,G.NewSyscallError("parsenetlinkmessage",q)];}t=OT.nil;u=s;v=0;loop:while(true){if(!(v=u.$length)?($throwRuntimeError("index out of range"),undefined):u.$array[u.$offset+v]),B.NetlinkMessage);w=m[0].Header.Type;if(w===(3)){break loop;}else if(w===(16)){x=($pointerOfStructConversion(($sliceToArray(m[0].Data)),OU));if((l===0)||(l===((x.Index>>0)))){y=B.ParseNetlinkRouteAttr(m[0]);z=y[0];aa=y[1];if(!($interfaceIsEqual(aa,$ifaceNil))){$s=-1;return[OT.nil,G.NewSyscallError("parsenetlinkrouteattr",aa)];}t=$append(t,EP(x,z));if(l===((x.Index>>0))){break loop;}}}v++;}$s=-1;return[t,$ifaceNil];}return;}if($f===undefined){$f={$blk:EO};}$f.aa=aa;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};EP=function(l,m){var aa,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;n=new EE.ptr(((l.Index>>0)),0,"",HS.nil,EQ(l.Flags));o=m;p=0;while(true){if(!(p=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]),B.NetlinkRouteAttr);r=q.Attr.Type;if(r===(1)){s=q.Value.$length;if(s===(4)){t=l.Type;if((t===(768))||(t===(778))||(t===(776))){p++;continue;}}else if(s===(16)){u=l.Type;if((u===(769))||(u===(823))){p++;continue;}}v=false;w=q.Value;x=0;while(true){if(!(x=w.$length)?($throwRuntimeError("index out of range"),undefined):w.$array[w.$offset+x]);if(!((y===0))){v=true;break;}x++;}if(v){n.HardwareAddr=(z=q.Value,$subslice(new HS(z.$array),z.$offset,z.$offset+z.$length));}}else if(r===(3)){n.Name=($bytesToString($subslice(q.Value,0,(q.Value.$length-1>>0))));}else if(r===(4)){n.MTU=(((aa=$subslice(q.Value,0,4),(0>=aa.$length?($throwRuntimeError("index out of range"),undefined):aa.$array[aa.$offset+0]))>>0));}p++;}return n;};EQ=function(l){var l,m;m=0;if(!((((l&1)>>>0)===0))){m=(m|(1))>>>0;}if(!((((l&2)>>>0)===0))){m=(m|(2))>>>0;}if(!((((l&8)>>>0)===0))){m=(m|(4))>>>0;}if(!((((l&16)>>>0)===0))){m=(m|(8))>>>0;}if(!((((l&4096)>>>0)===0))){m=(m|(16))>>>0;}return m;};ER=function(l){var l,m,n,o,p,q,r,s,t,u,v,w,x,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:n=B.NetlinkRIB(22,0);$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];if(!($interfaceIsEqual(p,$ifaceNil))){$s=-1;return[OS.nil,G.NewSyscallError("netlinkrib",p)];}q=B.ParseNetlinkMessage(o);r=q[0];p=q[1];if(!($interfaceIsEqual(p,$ifaceNil))){$s=-1;return[OS.nil,G.NewSyscallError("parsenetlinkmessage",p)];}s=OT.nil;if(l===OR.nil){$s=2;continue;}$s=3;continue;case 2:t=$ifaceNil;v=EO(0);$s=4;case 4:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}u=v;s=u[0];t=u[1];if(!($interfaceIsEqual(t,$ifaceNil))){$s=-1;return[OS.nil,t];}case 3:w=ES(s,l,r);x=w[0];p=w[1];if(!($interfaceIsEqual(p,$ifaceNil))){$s=-1;return[OS.nil,p];}$s=-1;return[x,$ifaceNil];}return;}if($f===undefined){$f={$blk:ER};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.$s=$s;$f.$r=$r;return $f;};ES=function(l,m,n){var l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;o=OS.nil;p=n;q=0;loop:while(true){if(!(q=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+q]),B.NetlinkMessage);s=r.Header.Type;if(s===(3)){break loop;}else if(s===(20)){t=($pointerOfStructConversion(($sliceToArray(r.Data)),OV));if(!((l.$length===0))||(m.Index===((t.Index>>0)))){if(!((l.$length===0))){u=$ifaceNil;v=EK(l,((t.Index>>0)));m=v[0];u=v[1];if(!($interfaceIsEqual(u,$ifaceNil))){return[OS.nil,u];}}w=B.ParseNetlinkRouteAttr(r);x=w[0];y=w[1];if(!($interfaceIsEqual(y,$ifaceNil))){return[OS.nil,G.NewSyscallError("parsenetlinkrouteattr",y)];}z=ET(t,x);if(!($interfaceIsEqual(z,$ifaceNil))){o=$append(o,z);}}}q++;}return[o,$ifaceNil];};ET=function(l,m){var l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;n=false;o=m;p=0;while(true){if(!(p=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]),B.NetlinkRouteAttr);if(q.Attr.Type===2){n=true;break;}p++;}r=m;s=0;while(true){if(!(s=r.$length)?($throwRuntimeError("index out of range"),undefined):r.$array[r.$offset+s]),B.NetlinkRouteAttr);if(n&&(t.Attr.Type===1)){s++;continue;}u=l.Family;if(u===(2)){return new EZ.ptr(FA((v=t.Value,(0>=v.$length?($throwRuntimeError("index out of range"),undefined):v.$array[v.$offset+0])),(w=t.Value,(1>=w.$length?($throwRuntimeError("index out of range"),undefined):w.$array[w.$offset+1])),(x=t.Value,(2>=x.$length?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+2])),(y=t.Value,(3>=y.$length?($throwRuntimeError("index out of range"),undefined):y.$array[y.$offset+3]))),FD(((l.Prefixlen>>0)),32));}else if(u===(10)){z=new EZ.ptr($makeSlice(EX,16),FD(((l.Prefixlen>>0)),128));$copySlice(z.IP,t.Value);return z;}s++;}return $ifaceNil;};EU=function(l){var l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:m=EV("/proc/net/igmp",l);$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}n=m;o=EW("/proc/net/igmp6",l);$s=2;case 2:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}p=o;$s=-1;return[$appendSlice(n,p),$ifaceNil];}return;}if($f===undefined){$f={$blk:EU};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};EV=function(l,m){var aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);o=JK(l);$s=1;case 1:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;p=n[0];q=n[1];if(!($interfaceIsEqual(q,$ifaceNil))){$s=-1;return OS.nil;}$deferred.push([$methodVal(p,"close"),[]]);r=OS.nil;s="";t=p.readLine();$s=2;case 2:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}t;u=$makeSlice(NM,4);w=p.readLine();$s=3;case 3:if($c){$c=false;w=w.$blk();}if(w&&w.$blk!==undefined){break s;}v=w;x=v[0];y=v[1];case 4:if(!(y)){$s=5;continue;}z=JN(x," :\r\t\n");if(z.$length<4){$s=6;continue;}$s=7;continue;case 6:ab=p.readLine();$s=8;case 8:if($c){$c=false;ab=ab.$blk();}if(ab&&ab.$blk!==undefined){break s;}aa=ab;x=aa[0];y=aa[1];$s=4;continue;case 7:if(!((x.charCodeAt(0)===32))&&!((x.charCodeAt(0)===9))){s=(1>=z.$length?($throwRuntimeError("index out of range"),undefined):z.$array[z.$offset+1]);}else if(((0>=z.$length?($throwRuntimeError("index out of range"),undefined):z.$array[z.$offset+0]).length===8)){if(m===OR.nil||s===m.Name){ac=0;while(true){if(!((ac+1>>0)<(0>=z.$length?($throwRuntimeError("index out of range"),undefined):z.$array[z.$offset+0]).length)){break;}ad=JR($substring((0>=z.$length?($throwRuntimeError("index out of range"),undefined):z.$array[z.$offset+0]),ac,(ac+2>>0)),0);(ae=(af=ac/2,(af===af&&af!==1/0&&af!==-1/0)?af>>0:$throwRuntimeError("integer divide by zero")),((ae<0||ae>=u.$length)?($throwRuntimeError("index out of range"),undefined):u.$array[u.$offset+ae]=ad[0]));ac=ac+(2)>>0;}ah=(ag=$subslice(u,0,4),(0>=ag.$length?($throwRuntimeError("index out of range"),undefined):ag.$array[ag.$offset+0]));ai=new FU.ptr(FA((((ah>>>24>>>0)<<24>>>24)),(((ah>>>16>>>0)<<24>>>24)),(((ah>>>8>>>0)<<24>>>24)),((ah<<24>>>24))),"");r=$append(r,ai);}}ak=p.readLine();$s=9;case 9:if($c){$c=false;ak=ak.$blk();}if(ak&&ak.$blk!==undefined){break s;}aj=ak;x=aj[0];y=aj[1];$s=4;continue;case 5:$s=-1;return r;}return;}}catch(err){$err=err;$s=-1;return OS.nil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:EV};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};EW=function(l,m){var aa,ab,ac,ad,ae,af,ag,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);o=JK(l);$s=1;case 1:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;p=n[0];q=n[1];if(!($interfaceIsEqual(q,$ifaceNil))){$s=-1;return OS.nil;}$deferred.push([$methodVal(p,"close"),[]]);r=OS.nil;s=$makeSlice(NM,16);u=p.readLine();$s=2;case 2:if($c){$c=false;u=u.$blk();}if(u&&u.$blk!==undefined){break s;}t=u;v=t[0];w=t[1];case 3:if(!(w)){$s=4;continue;}x=JN(v," \r\t\n");if(x.$length<6){$s=5;continue;}$s=6;continue;case 5:z=p.readLine();$s=7;case 7:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}y=z;v=y[0];w=y[1];$s=3;continue;case 6:if(m===OR.nil||(1>=x.$length?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+1])===m.Name){aa=0;while(true){if(!((aa+1>>0)<(2>=x.$length?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+2]).length)){break;}ab=JR($substring((2>=x.$length?($throwRuntimeError("index out of range"),undefined):x.$array[x.$offset+2]),aa,(aa+2>>0)),0);(ac=(ad=aa/2,(ad===ad&&ad!==1/0&&ad!==-1/0)?ad>>0:$throwRuntimeError("integer divide by zero")),((ac<0||ac>=s.$length)?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+ac]=ab[0]));aa=aa+(2)>>0;}ae=new FU.ptr(new EX([(0>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+0]),(1>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+1]),(2>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+2]),(3>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+3]),(4>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+4]),(5>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+5]),(6>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+6]),(7>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+7]),(8>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+8]),(9>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+9]),(10>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+10]),(11>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+11]),(12>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+12]),(13>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+13]),(14>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+14]),(15>=s.$length?($throwRuntimeError("index out of range"),undefined):s.$array[s.$offset+15])]),"");r=$append(r,ae);}ag=p.readLine();$s=8;case 8:if($c){$c=false;ag=ag.$blk();}if(ag&&ag.$blk!==undefined){break s;}af=ag;v=af[0];w=af[1];$s=3;continue;case 4:$s=-1;return r;}return;}}catch(err){$err=err;$s=-1;return OS.nil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:EW};}$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};FA=function(l,m,n,o){var l,m,n,o,p;p=$makeSlice(EX,16);$copySlice(p,FB);(12>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+12]=l);(13>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+13]=m);(14>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+14]=n);(15>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+15]=o);return p;};$pkg.IPv4=FA;FC=function(l,m,n,o){var l,m,n,o,p;p=$makeSlice(EY,4);(0>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+0]=l);(1>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+1]=m);(2>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+2]=n);(3>=p.$length?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+3]=o);return p;};$pkg.IPv4Mask=FC;FD=function(l,m){var l,m,n,o,p,q,r,s;if(!((m===32))&&!((m===128))){return EY.nil;}if(l<0||l>m){return EY.nil;}o=(n=m/8,(n===n&&n!==1/0&&n!==-1/0)?n>>0:$throwRuntimeError("integer divide by zero"));p=$makeSlice(EY,o);q=((l>>>0));r=0;while(true){if(!(r=8){((r<0||r>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+r]=255);q=q-(8)>>>0;r=r+(1)>>0;continue;}((r<0||r>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+r]=(~(((s=q,s<32?(255>>>s):0)<<24>>>24))<<24>>>24));q=0;r=r+(1)>>0;}return p;};$pkg.CIDRMask=FD;EX.prototype.IsUnspecified=function(){var l;l=this;return l.Equal($pkg.IPv4zero)||l.Equal($pkg.IPv6unspecified);};$ptrType(EX).prototype.IsUnspecified=function(){return this.$get().IsUnspecified();};EX.prototype.IsLoopback=function(){var l,m;l=this;m=l.To4();if(!(m===EX.nil)){return(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])===127;}return l.Equal($pkg.IPv6loopback);};$ptrType(EX).prototype.IsLoopback=function(){return this.$get().IsLoopback();};EX.prototype.IsMulticast=function(){var l,m;l=this;m=l.To4();if(!(m===EX.nil)){return(((0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])&240)>>>0)===224;}return(l.$length===16)&&((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])===255);};$ptrType(EX).prototype.IsMulticast=function(){return this.$get().IsMulticast();};EX.prototype.IsInterfaceLocalMulticast=function(){var l;l=this;return(l.$length===16)&&((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])===255)&&((((1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1])&15)>>>0)===1);};$ptrType(EX).prototype.IsInterfaceLocalMulticast=function(){return this.$get().IsInterfaceLocalMulticast();};EX.prototype.IsLinkLocalMulticast=function(){var l,m;l=this;m=l.To4();if(!(m===EX.nil)){return((0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])===224)&&((1>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+1])===0)&&((2>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+2])===0);}return(l.$length===16)&&((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])===255)&&((((1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1])&15)>>>0)===2);};$ptrType(EX).prototype.IsLinkLocalMulticast=function(){return this.$get().IsLinkLocalMulticast();};EX.prototype.IsLinkLocalUnicast=function(){var l,m;l=this;m=l.To4();if(!(m===EX.nil)){return((0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])===169)&&((1>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+1])===254);}return(l.$length===16)&&((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])===254)&&((((1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1])&192)>>>0)===128);};$ptrType(EX).prototype.IsLinkLocalUnicast=function(){return this.$get().IsLinkLocalUnicast();};EX.prototype.IsGlobalUnicast=function(){var l;l=this;return((l.$length===4)||(l.$length===16))&&!l.Equal($pkg.IPv4bcast)&&!l.IsUnspecified()&&!l.IsLoopback()&&!l.IsMulticast()&&!l.IsLinkLocalUnicast();};$ptrType(EX).prototype.IsGlobalUnicast=function(){return this.$get().IsGlobalUnicast();};FE=function(l){var l,m;m=0;while(true){if(!(m=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m])===0))){return false;}m=m+(1)>>0;}return true;};EX.prototype.To4=function(){var l;l=this;if(l.$length===4){return l;}if((l.$length===16)&&FE($subslice(l,0,10))&&((10>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+10])===255)&&((11>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+11])===255)){return $subslice(l,12,16);}return EX.nil;};$ptrType(EX).prototype.To4=function(){return this.$get().To4();};EX.prototype.To16=function(){var l;l=this;if(l.$length===4){return FA((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0]),(1>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+1]),(2>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+2]),(3>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+3]));}if(l.$length===16){return l;}return EX.nil;};$ptrType(EX).prototype.To16=function(){return this.$get().To16();};EX.prototype.DefaultMask=function(){var l;l=this;l=l.To4();if(l===EX.nil){return EY.nil;}if((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])<128){return FF;}else if((0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])<192){return FG;}else{return FH;}};$ptrType(EX).prototype.DefaultMask=function(){return this.$get().DefaultMask();};FI=function(l){var l,m,n,o;m=l;n=0;while(true){if(!(n=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+n]);if(!((o===255))){return false;}n++;}return true;};EX.prototype.Mask=function(l){var l,m,n,o,p,q,r;m=this;if((l.$length===16)&&(m.$length===4)&&FI((n=$subslice(l,0,12),$subslice(new NM(n.$array),n.$offset,n.$offset+n.$length)))){l=$subslice(l,12);}if((l.$length===4)&&(m.$length===16)&&F.Equal((o=$subslice(m,0,12),$subslice(new NM(o.$array),o.$offset,o.$offset+o.$length)),FB)){m=$subslice(m,12);}p=m.$length;if(!((p===l.$length))){return EX.nil;}q=$makeSlice(EX,p);r=0;while(true){if(!(r=q.$length)?($throwRuntimeError("index out of range"),undefined):q.$array[q.$offset+r]=((((r<0||r>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+r])&((r<0||r>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+r]))>>>0));r=r+(1)>>0;}return q;};$ptrType(EX).prototype.Mask=function(l){return this.$get().Mask(l);};FJ=function(l,m,n){var l,m,n,o,p,q,r,s,t,u,v,w;if(n<10){((m<0||m>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m]=(n+48<<24>>>24));return 1;}else if(n<100){(p=m+1>>0,((p<0||p>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+p]=((o=n%10,o===o?o:$throwRuntimeError("integer divide by zero"))+48<<24>>>24)));((m<0||m>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m]=((q=n/10,(q===q&&q!==1/0&&q!==-1/0)?q>>>0:$throwRuntimeError("integer divide by zero"))+48<<24>>>24));return 2;}(s=m+2>>0,((s<0||s>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+s]=((r=n%10,r===r?r:$throwRuntimeError("integer divide by zero"))+48<<24>>>24)));(v=m+1>>0,((v<0||v>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+v]=((t=((u=n/10,(u===u&&u!==1/0&&u!==-1/0)?u>>>0:$throwRuntimeError("integer divide by zero")))%10,t===t?t:$throwRuntimeError("integer divide by zero"))+48<<24>>>24)));((m<0||m>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+m]=((w=n/100,(w===w&&w!==1/0&&w!==-1/0)?w>>>0:$throwRuntimeError("integer divide by zero"))+48<<24>>>24));return 3;};EX.prototype.String=function(){var l,m,n,o,p,q,r,s,t,u,v,w,x;l=this;m=l;if(l.$length===0){return"";}n=m.To4();if(n.$length===4){o=$makeSlice(NM,15);p=FJ(o,0,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0]));((p<0||p>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]=46);p=p+(1)>>0;p=p+(FJ(o,p,(1>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+1])))>>0;((p<0||p>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]=46);p=p+(1)>>0;p=p+(FJ(o,p,(2>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+2])))>>0;((p<0||p>=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]=46);p=p+(1)>>0;p=p+(FJ(o,p,(3>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+3])))>>0;return($bytesToString($subslice(o,0,p)));}if(!((m.$length===16))){return"?"+FK($subslice(new NM(l.$array),l.$offset,l.$offset+l.$length));}q=-1;r=-1;s=0;while(true){if(!(s<16)){break;}t=s;while(true){if(!(t<16&&(((t<0||t>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+t])===0)&&((u=t+1>>0,((u<0||u>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+u]))===0))){break;}t=t+(2)>>0;}if(t>s&&(t-s>>0)>(r-q>>0)){q=s;r=t;s=t;}s=s+(2)>>0;}if((r-q>>0)<=2){q=-1;r=-1;}v=$makeSlice(NM,0,39);w=0;while(true){if(!(w<16)){break;}if(w===q){v=$append(v,58,58);w=r;if(w>=16){break;}}else if(w>0){v=$append(v,58);}v=JU(v,(((((((w<0||w>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+w])>>>0))<<8>>>0))|(((x=w+1>>0,((x<0||x>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+x]))>>>0)))>>>0);w=w+(2)>>0;}return($bytesToString(v));};$ptrType(EX).prototype.String=function(){return this.$get().String();};FK=function(l){var l,m,n,o,p,q,r,s,t,u;m=$makeSlice(NM,($imul(l.$length,2)));n=l;o=0;while(true){if(!(o=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]);r="0123456789abcdef".charCodeAt((q>>>4<<24>>>24));s="0123456789abcdef".charCodeAt(((q&15)>>>0));(t=$imul(p,2),((t<0||t>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+t]=r));(u=($imul(p,2))+1>>0,((u<0||u>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+u]=s));o++;}return($bytesToString(m));};FL=function(l){var l;if(l.$length===0){return"";}return l.String();};EX.prototype.MarshalText=function(){var l;l=this;if(l.$length===0){return[(new NM($stringToBytes(""))),$ifaceNil];}if(!((l.$length===4))&&!((l.$length===16))){return[NM.nil,new IP.ptr("invalid IP address",FK($subslice(new NM(l.$array),l.$offset,l.$offset+l.$length)))];}return[(new NM($stringToBytes(l.String()))),$ifaceNil];};$ptrType(EX).prototype.MarshalText=function(){return this.$get().MarshalText();};$ptrType(EX).prototype.UnmarshalText=function(l){var l,m,n,o;m=this;if(l.$length===0){m.$set(EX.nil);return $ifaceNil;}n=($bytesToString(l));o=FR(n);if(o===EX.nil){return new IO.ptr("IP address",n);}m.$set(o);return $ifaceNil;};EX.prototype.Equal=function(l){var l,m,n,o,p,q;m=this;if(m.$length===l.$length){return F.Equal($subslice(new NM(m.$array),m.$offset,m.$offset+m.$length),$subslice(new NM(l.$array),l.$offset,l.$offset+l.$length));}if((m.$length===4)&&(l.$length===16)){return F.Equal((n=$subslice(l,0,12),$subslice(new NM(n.$array),n.$offset,n.$offset+n.$length)),FB)&&F.Equal($subslice(new NM(m.$array),m.$offset,m.$offset+m.$length),(o=$subslice(l,12),$subslice(new NM(o.$array),o.$offset,o.$offset+o.$length)));}if((m.$length===16)&&(l.$length===4)){return F.Equal((p=$subslice(m,0,12),$subslice(new NM(p.$array),p.$offset,p.$offset+p.$length)),FB)&&F.Equal((q=$subslice(m,12),$subslice(new NM(q.$array),q.$offset,q.$offset+q.$length)),$subslice(new NM(l.$array),l.$offset,l.$offset+l.$length));}return false;};$ptrType(EX).prototype.Equal=function(l){return this.$get().Equal(l);};FM=function(l){var l,m,n,o,p,q,r;m=0;n=l;o=0;while(true){if(!(o=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]);if(q===255){m=m+(8)>>0;o++;continue;}while(true){if(!(!((((q&128)>>>0)===0)))){break;}m=m+(1)>>0;q=(r=(1),r<32?(q<>>24;}if(!((q===0))){return-1;}p=p+(1)>>0;while(true){if(!(p=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+p])===0))){return-1;}p=p+(1)>>0;}break;}return m;};EY.prototype.Size=function(){var l,m,n,o,p,q,r;l=0;m=0;n=this;o=FM(n);p=$imul(n.$length,8);l=o;m=p;if(l===-1){q=0;r=0;l=q;m=r;return[l,m];}return[l,m];};$ptrType(EY).prototype.Size=function(){return this.$get().Size();};EY.prototype.String=function(){var l;l=this;if(l.$length===0){return"";}return FK($subslice(new NM(l.$array),l.$offset,l.$offset+l.$length));};$ptrType(EY).prototype.String=function(){return this.$get().String();};FN=function(l){var l,m,n,o,p,q,r,s,t,u;m=EX.nil;n=EY.nil;m=l.IP.To4();if(m===EX.nil){m=l.IP;if(!((m.$length===16))){o=EX.nil;p=EY.nil;m=o;n=p;return[m,n];}}n=l.Mask;q=n.$length;if(q===(4)){if(!((m.$length===4))){r=EX.nil;s=EY.nil;m=r;n=s;return[m,n];}}else if(q===(16)){if(m.$length===4){n=$subslice(n,12);}}else{t=EX.nil;u=EY.nil;m=t;n=u;return[m,n];}return[m,n];};EZ.ptr.prototype.Contains=function(l){var l,m,n,o,p,q,r,s;m=this;n=FN(m);o=n[0];p=n[1];q=l.To4();if(!(q===EX.nil)){l=q;}r=l.$length;if(!((r===o.$length))){return false;}s=0;while(true){if(!(s=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+s])&((s<0||s>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+s]))>>>0)===((((s<0||s>=l.$length)?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+s])&((s<0||s>=p.$length)?($throwRuntimeError("index out of range"),undefined):p.$array[p.$offset+s]))>>>0)))){return false;}s=s+(1)>>0;}return true;};EZ.prototype.Contains=function(l){return this.$val.Contains(l);};EZ.ptr.prototype.Network=function(){var l;l=this;return"ip+net";};EZ.prototype.Network=function(){return this.$val.Network();};EZ.ptr.prototype.String=function(){var l,m,n,o,p;l=this;m=FN(l);n=m[0];o=m[1];if(n===EX.nil||o===EY.nil){return"";}p=FM(o);if(p===-1){return n.String()+"/"+o.String();}return n.String()+"/"+JT(((p>>>0)));};EZ.prototype.String=function(){return this.$val.String();};FO=function(l){var l,m,n,o,p,q,r;m=OW.zero();n=0;while(true){if(!(n<4)){break;}if(l.length===0){return EX.nil;}if(n>0){if(!((l.charCodeAt(0)===46))){return EX.nil;}l=$substring(l,1);}o=JP(l);p=o[0];q=o[1];r=o[2];if(!r||p>255){return EX.nil;}l=$substring(l,q);((n<0||n>=m.length)?($throwRuntimeError("index out of range"),undefined):m[n]=((p<<24>>>24)));n=n+(1)>>0;}if(!((l.length===0))){return EX.nil;}return FA(m[0],m[1],m[2],m[3]);};FQ=function(l){var aa,ab,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;m=EX.nil;m=$makeSlice(EX,16);n=-1;if(l.length>=2&&(l.charCodeAt(0)===58)&&(l.charCodeAt(1)===58)){n=0;l=$substring(l,2);if(l.length===0){m=m;return m;}}o=0;while(true){if(!(o<16)){break;}p=JQ(l);q=p[0];r=p[1];s=p[2];if(!s||q>65535){m=EX.nil;return m;}if(r>0)>16){m=EX.nil;return m;}t=FO(l);if(t===EX.nil){m=EX.nil;return m;}((o<0||o>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+o]=(12>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+12]));(u=o+1>>0,((u<0||u>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+u]=(13>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+13])));(v=o+2>>0,((v<0||v>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+v]=(14>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+14])));(w=o+3>>0,((w<0||w>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+w]=(15>=t.$length?($throwRuntimeError("index out of range"),undefined):t.$array[t.$offset+15])));l="";o=o+(4)>>0;break;}((o<0||o>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+o]=(((q>>8>>0)<<24>>>24)));(x=o+1>>0,((x<0||x>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+x]=((q<<24>>>24))));o=o+(2)>>0;l=$substring(l,r);if(l.length===0){break;}if(!((l.charCodeAt(0)===58))||(l.length===1)){m=EX.nil;return m;}l=$substring(l,1);if(l.charCodeAt(0)===58){if(n>=0){m=EX.nil;return m;}n=o;l=$substring(l,1);if(l.length===0){break;}}}if(!((l.length===0))){m=EX.nil;return m;}if(o<16){if(n<0){m=EX.nil;return m;}y=16-o>>0;z=o-1>>0;while(true){if(!(z>=n)){break;}(aa=z+y>>0,((aa<0||aa>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+aa]=((z<0||z>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+z])));z=z-(1)>>0;}ab=(n+y>>0)-1>>0;while(true){if(!(ab>=n)){break;}((ab<0||ab>=m.$length)?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+ab]=0);ab=ab-(1)>>0;}}else if(n>=0){m=EX.nil;return m;}m=m;return m;};FR=function(l){var l,m,n;m=0;while(true){if(!(m>0;}return EX.nil;};$pkg.ParseIP=FR;FT=function(l){var l,m,n,o,p,q,r,s,t,u,v,w;m=F.IndexByteString(l,47);if(m<0){return[EX.nil,NP.nil,new IO.ptr("CIDR address",l)];}n=$substring(l,0,m);o=$substring(l,(m+1>>0));p=n;q=o;r=4;s=FO(p);if(s===EX.nil){r=16;s=FQ(p);}t=JP(q);u=t[0];m=t[1];v=t[2];if(s===EX.nil||!v||!((m===q.length))||u<0||u>($imul(8,r))){return[EX.nil,NP.nil,new IO.ptr("CIDR address",l)];}w=FD(u,$imul(8,r));return[s,new EZ.ptr(s.Mask(w),w),$ifaceNil];};$pkg.ParseCIDR=FT;FU.ptr.prototype.Network=function(){var l;l=this;return"ip";};FU.prototype.Network=function(){return this.$val.Network();};FU.ptr.prototype.String=function(){var l,m;l=this;if(l===NX.nil){return"";}m=FL(l.IP);if(!(l.Zone==="")){return m+"%"+l.Zone;}return m;};FU.prototype.String=function(){return this.$val.String();};HS.prototype.String=function(){var l,m,n,o,p,q;l=this;if(l.$length===0){return"";}m=$makeSlice(NM,0,(($imul(l.$length,3))-1>>0));n=l;o=0;while(true){if(!(o=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]);if(p>0){m=$append(m,58);}m=$append(m,"0123456789abcdef".charCodeAt((q>>>4<<24>>>24)));m=$append(m,"0123456789abcdef".charCodeAt(((q&15)>>>0)));o++;}return($bytesToString(m));};$ptrType(HS).prototype.String=function(){return this.$get().String();};II.ptr.prototype.Error=function(){var l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(l===OE.nil){$s=-1;return"";}m=l.Op;if(!(l.Net==="")){m=m+(" "+l.Net);}if(!($interfaceIsEqual(l.Source,$ifaceNil))){$s=1;continue;}$s=2;continue;case 1:n=l.Source.String();$s=3;case 3:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=m+(" "+n);case 2:if(!($interfaceIsEqual(l.Addr,$ifaceNil))){$s=4;continue;}$s=5;continue;case 4:if(!($interfaceIsEqual(l.Source,$ifaceNil))){m=m+("->");}else{m=m+(" ");}o=l.Addr.String();$s=6;case 6:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}m=m+(o);case 5:p=l.Err.Error();$s=7;case 7:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}m=m+(": "+p);$s=-1;return m;}return;}if($f===undefined){$f={$blk:II.ptr.prototype.Error};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};II.prototype.Error=function(){return this.$val.Error();};II.ptr.prototype.Timeout=function(){var l,m,n,o,p,q,r,s,t,u,v,w,x,y,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;m=$assertType(l.Err,PM,true);n=m[0];o=m[1];if(o){$s=1;continue;}$s=2;continue;case 1:p=$assertType(n.Err,IM,true);q=p[0];r=p[1];if(!(r)){s=false;$s=3;continue s;}t=q.Timeout();$s=4;case 4:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}s=t;case 3:$s=-1;return s;case 2:u=$assertType(l.Err,IM,true);v=u[0];w=u[1];if(!(w)){x=false;$s=5;continue s;}y=v.Timeout();$s=6;case 6:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;case 5:$s=-1;return x;}return;}if($f===undefined){$f={$blk:II.ptr.prototype.Timeout};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.$s=$s;$f.$r=$r;return $f;};II.prototype.Timeout=function(){return this.$val.Timeout();};II.ptr.prototype.Temporary=function(){var l,m,n,o,p,q,r,s,t,u,v,w,x,y,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;if(l.Op==="accept"&&CY(l.Err)){$s=-1;return true;}m=$assertType(l.Err,PM,true);n=m[0];o=m[1];if(o){$s=1;continue;}$s=2;continue;case 1:p=$assertType(n.Err,IN,true);q=p[0];r=p[1];if(!(r)){s=false;$s=3;continue s;}t=q.Temporary();$s=4;case 4:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}s=t;case 3:$s=-1;return s;case 2:u=$assertType(l.Err,IN,true);v=u[0];w=u[1];if(!(w)){x=false;$s=5;continue s;}y=v.Temporary();$s=6;case 6:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;case 5:$s=-1;return x;}return;}if($f===undefined){$f={$blk:II.ptr.prototype.Temporary};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.$s=$s;$f.$r=$r;return $f;};II.prototype.Temporary=function(){return this.$val.Temporary();};IO.ptr.prototype.Error=function(){var l;l=this;return"invalid "+l.Type+": "+l.Text;};IO.prototype.Error=function(){return this.$val.Error();};IP.ptr.prototype.Error=function(){var l,m;l=this;if(l===PN.nil){return"";}m=l.Err;if(!(l.Addr==="")){m="address "+l.Addr+": "+m;}return m;};IP.prototype.Error=function(){return this.$val.Error();};IP.ptr.prototype.Timeout=function(){var l;l=this;return false;};IP.prototype.Timeout=function(){return this.$val.Timeout();};IP.ptr.prototype.Temporary=function(){var l;l=this;return false;};IP.prototype.Temporary=function(){return this.$val.Temporary();};JJ.ptr.prototype.close=function(){var l,m,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l=this;m=l.file.Close();$s=1;case 1:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}m;$s=-1;return;}return;}if($f===undefined){$f={$blk:JJ.ptr.prototype.close};}$f.l=l;$f.m=m;$f.$s=$s;$f.$r=$r;return $f;};JJ.prototype.close=function(){return this.$val.close();};JJ.ptr.prototype.getLineFromData=function(){var l,m,n,o,p,q;l="";m=false;n=this;o=n.data;p=0;p=0;while(true){if(!(p=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p])===10){l=($bytesToString($subslice(o,0,p)));m=true;p=p+(1)>>0;q=o.$length-p>>0;$copySlice($subslice(o,0),$subslice(o,p));n.data=$subslice(o,0,q);return[l,m];}p=p+(1)>>0;}if(n.atEOF&&n.data.$length>0){l=($bytesToString(o));n.data=$subslice(n.data,0,0);m=true;}return[l,m];};JJ.prototype.getLineFromData=function(){return this.$val.getLineFromData();};JJ.ptr.prototype.readLine=function(){var l,m,n,o,p,q,r,s,t,u,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:l="";m=false;n=this;o=n.getLineFromData();l=o[0];m=o[1];if(m){$s=-1;return[l,m];}if(n.data.$length=0){n.data=$subslice(n.data,0,(p+s>>0));}if($interfaceIsEqual(t,O.EOF)||$interfaceIsEqual(t,O.ErrUnexpectedEOF)){n.atEOF=true;}case 2:u=n.getLineFromData();l=u[0];m=u[1];$s=-1;return[l,m];}return;}if($f===undefined){$f={$blk:JJ.ptr.prototype.readLine};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$r=$r;return $f;};JJ.prototype.readLine=function(){return this.$val.readLine();};JK=function(l){var l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:n=G.Open(l);$s=1;case 1:if($c){$c=false;n=n.$blk();}if(n&&n.$blk!==undefined){break s;}m=n;o=m[0];p=m[1];if(!($interfaceIsEqual(p,$ifaceNil))){$s=-1;return[OQ.nil,p];}$s=-1;return[new JJ.ptr(o,$makeSlice(NM,0,65536),false),$ifaceNil];}return;}if($f===undefined){$f={$blk:JK};}$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};JM=function(l,m){var l,m,n,o;n=0;o=0;while(true){if(!(o=0){n=n+(1)>>0;}o=o+(1)>>0;}return n;};JN=function(l,m){var l,m,n,o,p,q;n=$makeSlice(NG,(1+JM(l,m)>>0));o=0;p=0;q=0;while(true){if(!(q=0){if(p=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]=$substring(l,p,q));o=o+(1)>>0;}p=q+1>>0;}q=q+(1)>>0;}if(p=n.$length)?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+o]=$substring(l,p));o=o+(1)>>0;}return $subslice(n,0,o);};JP=function(l){var l,m,n,o,p,q,r,s,t,u,v,w,x;m=0;n=0;o=false;m=0;n=0;while(true){if(!(n>>24)>>0))>>0;if(m>=16777215){p=16777215;q=n;r=false;m=p;n=q;o=r;return[m,n,o];}n=n+(1)>>0;}if(n===0){s=0;t=0;u=false;m=s;n=t;o=u;return[m,n,o];}v=m;w=n;x=true;m=v;n=w;o=x;return[m,n,o];};JQ=function(l){var l,m,n,o,p,q,r,s,t,u,v,w,x;m=0;n=0;o=false;m=0;n=0;while(true){if(!(n>>24)>>0)))>>0;}else if(97<=l.charCodeAt(n)&&l.charCodeAt(n)<=102){m=$imul(m,(16));m=m+(((((l.charCodeAt(n)-97<<24>>>24)>>0))+10>>0))>>0;}else if(65<=l.charCodeAt(n)&&l.charCodeAt(n)<=70){m=$imul(m,(16));m=m+(((((l.charCodeAt(n)-65<<24>>>24)>>0))+10>>0))>>0;}else{break;}if(m>=16777215){p=0;q=n;r=false;m=p;n=q;o=r;return[m,n,o];}n=n+(1)>>0;}if(n===0){s=0;t=n;u=false;m=s;n=t;o=u;return[m,n,o];}v=m;w=n;x=true;m=v;n=w;o=x;return[m,n,o];};JR=function(l,m){var l,m,n,o,p,q;if(l.length>2&&!((l.charCodeAt(2)===m))){return[0,false];}n=JQ($substring(l,0,2));o=n[0];p=n[1];q=n[2];return[((o<<24>>>24)),q&&(p===2)];};JT=function(l){var l,m,n,o,p;if(l===0){return"0";}m=PP.zero();n=19;while(true){if(!(l>=10)){break;}p=(o=l/10,(o===o&&o!==1/0&&o!==-1/0)?o>>>0:$throwRuntimeError("integer divide by zero"));((n<0||n>=m.length)?($throwRuntimeError("index out of range"),undefined):m[n]=((((48+l>>>0)-(p*10>>>0)>>>0)<<24>>>24)));n=n-(1)>>0;l=p;}((n<0||n>=m.length)?($throwRuntimeError("index out of range"),undefined):m[n]=(((48+l>>>0)<<24>>>24)));return($bytesToString($subslice(new NM(m),n)));};JU=function(l,m){var l,m,n,o,p;if(m===0){return $append(l,48);}n=7;while(true){if(!(n>=0)){break;}p=(o=((($imul(n,4))>>>0)),o<32?(m>>>o):0)>>>0;if(p>0){l=$append(l,"0123456789abcdef".charCodeAt(((p&15)>>>0)));}n=n-(1)>>0;}return l;};AH.methods=[{prop:"Classify",name:"Classify",pkg:"",typ:$funcType([EX],[AG],false)}];AK.methods=[{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)}];OR.methods=[{prop:"Addrs",name:"Addrs",pkg:"",typ:$funcType([],[OS,$error],false)},{prop:"MulticastAddrs",name:"MulticastAddrs",pkg:"",typ:$funcType([],[OS,$error],false)}];EF.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];QL.methods=[{prop:"update",name:"update",pkg:"net",typ:$funcType([OT,$Bool],[$Bool],false)},{prop:"name",name:"name",pkg:"net",typ:$funcType([$Int],[$String],false)},{prop:"index",name:"index",pkg:"net",typ:$funcType([$String],[$Int],false)}];EX.methods=[{prop:"IsUnspecified",name:"IsUnspecified",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsLoopback",name:"IsLoopback",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsMulticast",name:"IsMulticast",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsInterfaceLocalMulticast",name:"IsInterfaceLocalMulticast",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsLinkLocalMulticast",name:"IsLinkLocalMulticast",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsLinkLocalUnicast",name:"IsLinkLocalUnicast",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"IsGlobalUnicast",name:"IsGlobalUnicast",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"To4",name:"To4",pkg:"",typ:$funcType([],[EX],false)},{prop:"To16",name:"To16",pkg:"",typ:$funcType([],[EX],false)},{prop:"DefaultMask",name:"DefaultMask",pkg:"",typ:$funcType([],[EY],false)},{prop:"Mask",name:"Mask",pkg:"",typ:$funcType([EY],[EX],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"MarshalText",name:"MarshalText",pkg:"",typ:$funcType([],[NM,$error],false)},{prop:"Equal",name:"Equal",pkg:"",typ:$funcType([EX],[$Bool],false)},{prop:"matchAddrFamily",name:"matchAddrFamily",pkg:"net",typ:$funcType([EX],[$Bool],false)}];QO.methods=[{prop:"UnmarshalText",name:"UnmarshalText",pkg:"",typ:$funcType([NM],[$error],false)}];EY.methods=[{prop:"Size",name:"Size",pkg:"",typ:$funcType([],[$Int,$Int],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];NP.methods=[{prop:"Contains",name:"Contains",pkg:"",typ:$funcType([EX],[$Bool],false)},{prop:"Network",name:"Network",pkg:"",typ:$funcType([],[$String],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];NX.methods=[{prop:"Network",name:"Network",pkg:"",typ:$funcType([],[$String],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"isWildcard",name:"isWildcard",pkg:"net",typ:$funcType([],[$Bool],false)},{prop:"opAddr",name:"opAddr",pkg:"net",typ:$funcType([],[HW],false)},{prop:"family",name:"family",pkg:"net",typ:$funcType([],[$Int],false)},{prop:"sockaddr",name:"sockaddr",pkg:"net",typ:$funcType([$Int],[B.Sockaddr,$error],false)},{prop:"toLocal",name:"toLocal",pkg:"net",typ:$funcType([$String],[LC],false)}];HS.methods=[{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];OE.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}];QT.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];PN.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}];OQ.methods=[{prop:"close",name:"close",pkg:"net",typ:$funcType([],[],false)},{prop:"getLineFromData",name:"getLineFromData",pkg:"net",typ:$funcType([],[$String,$Bool],false)},{prop:"readLine",name:"readLine",pkg:"net",typ:$funcType([],[$String,$Bool],false)}];AG.init("",[{prop:"Prefix",name:"Prefix",embedded:false,exported:true,typ:NP,tag:""},{prop:"Precedence",name:"Precedence",embedded:false,exported:true,typ:$Uint8,tag:""},{prop:"Label",name:"Label",embedded:false,exported:true,typ:$Uint8,tag:""}]);AH.init(AG);AK.init(AG);EE.init("",[{prop:"Index",name:"Index",embedded:false,exported:true,typ:$Int,tag:""},{prop:"MTU",name:"MTU",embedded:false,exported:true,typ:$Int,tag:""},{prop:"Name",name:"Name",embedded:false,exported:true,typ:$String,tag:""},{prop:"HardwareAddr",name:"HardwareAddr",embedded:false,exported:true,typ:HS,tag:""},{prop:"Flags",name:"Flags",embedded:false,exported:true,typ:EF,tag:""}]);EM.init("net",[{prop:"RWMutex",name:"RWMutex",embedded:true,exported:true,typ:I.RWMutex,tag:""},{prop:"lastFetched",name:"lastFetched",embedded:false,exported:false,typ:L.Time,tag:""},{prop:"toIndex",name:"toIndex",embedded:false,exported:false,typ:QM,tag:""},{prop:"toName",name:"toName",embedded:false,exported:false,typ:QN,tag:""}]);EX.init($Uint8);EY.init($Uint8);EZ.init("",[{prop:"IP",name:"IP",embedded:false,exported:true,typ:EX,tag:""},{prop:"Mask",name:"Mask",embedded:false,exported:true,typ:EY,tag:""}]);FU.init("",[{prop:"IP",name:"IP",embedded:false,exported:true,typ:EX,tag:""},{prop:"Zone",name:"Zone",embedded:false,exported:true,typ:$String,tag:""}]);HS.init($Uint8);HW.init([{prop:"Network",name:"Network",pkg:"",typ:$funcType([],[$String],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}]);II.init("",[{prop:"Op",name:"Op",embedded:false,exported:true,typ:$String,tag:""},{prop:"Net",name:"Net",embedded:false,exported:true,typ:$String,tag:""},{prop:"Source",name:"Source",embedded:false,exported:true,typ:HW,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:HW,tag:""},{prop:"Err",name:"Err",embedded:false,exported:true,typ:$error,tag:""}]);IM.init([{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)}]);IN.init([{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}]);IO.init("",[{prop:"Type",name:"Type",embedded:false,exported:true,typ:$String,tag:""},{prop:"Text",name:"Text",embedded:false,exported:true,typ:$String,tag:""}]);IP.init("",[{prop:"Err",name:"Err",embedded:false,exported:true,typ:$String,tag:""},{prop:"Addr",name:"Addr",embedded:false,exported:true,typ:$String,tag:""}]);JJ.init("net",[{prop:"file",name:"file",embedded:false,exported:false,typ:OM,tag:""},{prop:"data",name:"data",embedded:false,exported:false,typ:NM,tag:""},{prop:"atEOF",name:"atEOF",embedded:false,exported:false,typ:$Bool,tag:""}]);LC.init([{prop:"Network",name:"Network",pkg:"",typ:$funcType([],[$String],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"family",name:"family",pkg:"net",typ:$funcType([],[$Int],false)},{prop:"isWildcard",name:"isWildcard",pkg:"net",typ:$funcType([],[$Bool],false)},{prop:"sockaddr",name:"sockaddr",pkg:"net",typ:$funcType([$Int],[B.Sockaddr,$error],false)},{prop:"toLocal",name:"toLocal",pkg:"net",typ:$funcType([$String],[LC],false)}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=E.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=J.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=K.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=Q.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=N.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=O.$init();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=M.$init();$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=11;case 11:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=13;case 13:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=I.$init();$s=14;case 14:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=P.$init();$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=16;case 16:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=L.$init();$s=17;case 17:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}HU=false;BX=A.New("lame referral");BY=A.New("cannot unmarshal DNS message");BZ=A.New("cannot marshal DNS message");CA=A.New("server misbehaving");CB=A.New("invalid DNS response");CC=A.New("no answer from DNS server");CD=A.New("server misbehaving");DM=(function $b(c,d,e,f){var c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:g=d(c,e,f);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}$s=-1;return g;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;});DZ=A.New("invalid network interface");EA=A.New("invalid network interface index");EB=A.New("invalid network interface name");EC=A.New("no such network interface");ED=A.New("no such multicast network interface");EG=new NG(["up","broadcast","loopback","pointtopoint","multicast"]);EN=new EM.ptr(new I.RWMutex.ptr(new I.Mutex.ptr(0,0),0,0,0,0),new L.Time.ptr(new $Uint64(0,0),new $Int64(0,0),NE.nil),{},{});FB=new NM([0,0,0,0,0,0,0,0,0,0,255,255]);$pkg.IPv4bcast=FA(255,255,255,255);$pkg.IPv4allsys=FA(224,0,0,1);$pkg.IPv4allrouter=FA(224,0,0,2);$pkg.IPv4zero=FA(0,0,0,0);$pkg.IPv6unspecified=new EX([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);$pkg.IPv6loopback=new EX([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]);FF=FC(255,0,0,0);FG=FC(255,255,0,0);FH=FC(255,255,255,0);IE=A.New("no suitable address found");IF=A.New("missing address");IG=A.New("operation was canceled");$pkg.ErrWriteToConnected=A.New("use of WriteTo with pre-connected connection");IJ=$clone(L.Unix(new $Int64(0,1),new $Int64(0,0)),L.Time);IT=A.New("no such host");c=AL("::1/128");$s=18;case 18:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=AL("::/0");$s=19;case 19:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=AL("::ffff:0:0/96");$s=20;case 20:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}f=AL("2002::/16");$s=21;case 21:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}g=AL("2001::/32");$s=22;case 22:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=AL("fc00::/7");$s=23;case 23:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}i=AL("::/96");$s=24;case 24:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}j=AL("fec0::/10");$s=25;case 25:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}k=AL("3ffe::/16");$s=26;case 26:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}AI=new AH([new AG.ptr(c,50,0),new AG.ptr(d,40,1),new AG.ptr(e,35,4),new AG.ptr(f,30,2),new AG.ptr(g,5,5),new AG.ptr(h,3,13),new AG.ptr(i,1,3),new AG.ptr(j,1,11),new AG.ptr(k,1,12)]);$r=AJ();$s=27;case 27:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}AP();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["net/url"]=(function(){var $pkg={},$init,A,B,C,D,E,F,G,H,L,M,U,X,AH,AO,AP,AQ,AR,AS,AT,AU,AV,I,J,N,O,Q,R,T,V,W,Y,Z,AA,AC,AD,AE,AF,AG,AI,AJ,AK,AL,AM,AN;A=$packages["errors"];B=$packages["fmt"];C=$packages["sort"];D=$packages["strconv"];E=$packages["strings"];F=$pkg.Error=$newType(0,$kindStruct,"url.Error",true,"net/url",true,function(Op_,URL_,Err_){this.$val=this;if(arguments.length===0){this.Op="";this.URL="";this.Err=$ifaceNil;return;}this.Op=Op_;this.URL=URL_;this.Err=Err_;});G=$pkg.timeout=$newType(8,$kindInterface,"url.timeout",true,"net/url",false,null);H=$pkg.temporary=$newType(8,$kindInterface,"url.temporary",true,"net/url",false,null);L=$pkg.EscapeError=$newType(8,$kindString,"url.EscapeError",true,"net/url",true,null);M=$pkg.InvalidHostError=$newType(8,$kindString,"url.InvalidHostError",true,"net/url",true,null);U=$pkg.URL=$newType(0,$kindStruct,"url.URL",true,"net/url",true,function(Scheme_,Opaque_,User_,Host_,Path_,RawPath_,ForceQuery_,RawQuery_,Fragment_){this.$val=this;if(arguments.length===0){this.Scheme="";this.Opaque="";this.User=AQ.nil;this.Host="";this.Path="";this.RawPath="";this.ForceQuery=false;this.RawQuery="";this.Fragment="";return;}this.Scheme=Scheme_;this.Opaque=Opaque_;this.User=User_;this.Host=Host_;this.Path=Path_;this.RawPath=RawPath_;this.ForceQuery=ForceQuery_;this.RawQuery=RawQuery_;this.Fragment=Fragment_;});X=$pkg.Userinfo=$newType(0,$kindStruct,"url.Userinfo",true,"net/url",true,function(username_,password_,passwordSet_){this.$val=this;if(arguments.length===0){this.username="";this.password="";this.passwordSet=false;return;}this.username=username_;this.password=password_;this.passwordSet=passwordSet_;});AH=$pkg.Values=$newType(4,$kindMap,"url.Values",true,"net/url",true,null);AO=$sliceType($Uint8);AP=$arrayType($Uint8,64);AQ=$ptrType(X);AR=$ptrType(U);AS=$sliceType($emptyInterface);AT=$ptrType(E.Builder);AU=$sliceType($String);AV=$ptrType(F);F.ptr.prototype.Error=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.Err.Error();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return a.Op+" "+a.URL+": "+b;}return;}if($f===undefined){$f={$blk:F.ptr.prototype.Error};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};F.prototype.Error=function(){return this.$val.Error();};F.ptr.prototype.Timeout=function(){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=$assertType(a.Err,G,true);c=b[0];d=b[1];if(!(d)){e=false;$s=1;continue s;}f=c.Timeout();$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;case 1:$s=-1;return e;}return;}if($f===undefined){$f={$blk:F.ptr.prototype.Timeout};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};F.prototype.Timeout=function(){return this.$val.Timeout();};F.ptr.prototype.Temporary=function(){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=$assertType(a.Err,H,true);c=b[0];d=b[1];if(!(d)){e=false;$s=1;continue s;}f=c.Temporary();$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;case 1:$s=-1;return e;}return;}if($f===undefined){$f={$blk:F.ptr.prototype.Temporary};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};F.prototype.Temporary=function(){return this.$val.Temporary();};I=function(a){var a;if(48<=a&&a<=57){return true;}else if(97<=a&&a<=102){return true;}else if(65<=a&&a<=70){return true;}return false;};J=function(a){var a;if(48<=a&&a<=57){return a-48<<24>>>24;}else if(97<=a&&a<=102){return(a-97<<24>>>24)+10<<24>>>24;}else if(65<=a&&a<=70){return(a-65<<24>>>24)+10<<24>>>24;}return 0;};L.prototype.Error=function(){var a;a=this.$val;return"invalid URL escape "+D.Quote((a));};$ptrType(L).prototype.Error=function(){return new L(this.$get()).Error();};M.prototype.Error=function(){var a;a=this.$val;return"invalid character "+D.Quote((a))+" in host name";};$ptrType(M).prototype.Error=function(){return new M(this.$get()).Error();};N=function(a,b){var a,b,c,d,e,f;if(65<=a&&a<=90||97<=a&&a<=122||48<=a&&a<=57){return false;}if((b===3)||(b===4)){c=a;if((c===(33))||(c===(36))||(c===(38))||(c===(39))||(c===(40))||(c===(41))||(c===(42))||(c===(43))||(c===(44))||(c===(59))||(c===(61))||(c===(58))||(c===(91))||(c===(93))||(c===(60))||(c===(62))||(c===(34))){return false;}}d=a;if((d===(45))||(d===(95))||(d===(46))||(d===(126))){return false;}else if((d===(36))||(d===(38))||(d===(43))||(d===(44))||(d===(47))||(d===(58))||(d===(59))||(d===(61))||(d===(63))||(d===(64))){e=b;if(e===(1)){return a===63;}else if(e===(2)){return(a===47)||(a===59)||(a===44)||(a===63);}else if(e===(5)){return(a===64)||(a===47)||(a===63)||(a===58);}else if(e===(6)){return true;}else if(e===(7)){return false;}}if(b===7){f=a;if((f===(33))||(f===(40))||(f===(41))||(f===(42))){return false;}}return true;};O=function(a){var a;return Q(a,6);};$pkg.QueryUnescape=O;Q=function(a,b){var a,b,c,d,e,f,g,h,i,j,k;c=0;d=false;e=0;while(true){if(!(e>0;if((e+2>>0)>=a.length||!I(a.charCodeAt((e+1>>0)))||!I(a.charCodeAt((e+2>>0)))){a=$substring(a,e);if(a.length>3){a=$substring(a,0,3);}return["",new L((a))];}if((b===3)&&J(a.charCodeAt((e+1>>0)))<8&&!($substring(a,e,(e+3>>0))==="%25")){return["",new L(($substring(a,e,(e+3>>0))))];}if(b===4){g=((J(a.charCodeAt((e+1>>0)))<<4<<24>>>24)|J(a.charCodeAt((e+2>>0))))>>>0;if(!($substring(a,e,(e+3>>0))==="%25")&&!((g===32))&&N(g,3)){return["",new L(($substring(a,e,(e+3>>0))))];}}e=e+(3)>>0;}else if(f===(43)){d=b===6;e=e+(1)>>0;}else{if(((b===3)||(b===4))&&a.charCodeAt(e)<128&&N(a.charCodeAt(e),b)){return["",new M(($substring(a,e,(e+1>>0))))];}e=e+(1)>>0;}}if((c===0)&&!d){return[a,$ifaceNil];}h=$makeSlice(AO,(a.length-($imul(2,c))>>0));i=0;j=0;while(true){if(!(j=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]=(((J(a.charCodeAt((j+1>>0)))<<4<<24>>>24)|J(a.charCodeAt((j+2>>0))))>>>0));i=i+(1)>>0;j=j+(3)>>0;}else if(k===(43)){if(b===6){((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]=32);}else{((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]=43);}i=i+(1)>>0;j=j+(1)>>0;}else{((i<0||i>=h.$length)?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+i]=a.charCodeAt(j));i=i+(1)>>0;j=j+(1)>>0;}}return[($bytesToString(h)),$ifaceNil];};R=function(a){var a;return T(a,6);};$pkg.QueryEscape=R;T=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;c=0;d=0;e=c;f=d;g=0;while(true){if(!(g>0;}else{f=f+(1)>>0;}}g=g+(1)>>0;}if((e===0)&&(f===0)){return a;}i=AP.zero();j=AO.nil;k=a.length+($imul(2,f))>>0;if(k<=64){j=$subslice(new AO(i),0,k);}else{j=$makeSlice(AO,k);}if(f===0){$copyString(j,a);l=0;while(true){if(!(l=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+l]=43);}l=l+(1)>>0;}return($bytesToString(j));}m=0;n=0;while(true){if(!(n=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+m]=43);m=m+(1)>>0;}else if(N(o,b)){((m<0||m>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+m]=37);(p=m+1>>0,((p<0||p>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+p]="0123456789ABCDEF".charCodeAt((o>>>4<<24>>>24))));(q=m+2>>0,((q<0||q>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+q]="0123456789ABCDEF".charCodeAt(((o&15)>>>0))));m=m+(3)>>0;}else{((m<0||m>=j.$length)?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+m]=a.charCodeAt(n));m=m+(1)>>0;}n=n+(1)>>0;}return($bytesToString(j));};V=function(a){var a;return new X.ptr(a,"",false);};$pkg.User=V;W=function(a,b){var a,b;return new X.ptr(a,b,true);};$pkg.UserPassword=W;X.ptr.prototype.Username=function(){var a;a=this;if(a===AQ.nil){return"";}return a.username;};X.prototype.Username=function(){return this.$val.Username();};X.ptr.prototype.Password=function(){var a;a=this;if(a===AQ.nil){return["",false];}return[a.password,a.passwordSet];};X.prototype.Password=function(){return this.$val.Password();};X.ptr.prototype.String=function(){var a,b;a=this;if(a===AQ.nil){return"";}b=T(a.username,5);if(a.passwordSet){b=b+(":"+T(a.password,5));}return b;};X.prototype.String=function(){return this.$val.String();};Y=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;b="";c="";d=$ifaceNil;e=0;while(true){if(!(e>0));o=$ifaceNil;b=m;c=n;d=o;return[b,c,d];}else{p="";q=a;r=$ifaceNil;b=p;c=q;d=r;return[b,c,d];}e=e+(1)>>0;}s="";t=a;u=$ifaceNil;b=s;c=t;d=u;return[b,c,d];};Z=function(a,b,c){var a,b,c,d;d=E.Index(a,b);if(d<0){return[a,""];}if(c){return[$substring(a,0,d),$substring(a,(d+b.length>>0))];}return[$substring(a,0,d),$substring(a,d)];};AA=function(a){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=Z(a,"#",true);c=b[0];d=b[1];f=AC(c,false);$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;g=e[0];h=e[1];if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[AR.nil,new F.ptr("parse",c,h)];}if(d===""){$s=-1;return[g,$ifaceNil];}i=Q(d,7);g.Fragment=i[0];h=i[1];if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return[AR.nil,new F.ptr("parse",a,h)];}$s=-1;return[g,$ifaceNil];}return;}if($f===undefined){$f={$blk:AA};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Parse=AA;AC=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c="";d=$ifaceNil;if(AN(a)){$s=-1;return[AR.nil,A.New("net/url: invalid control character in URL")];}if(a===""&&b){$s=-1;return[AR.nil,A.New("empty url")];}e=new U.ptr("","",AQ.nil,"","","",false,"","");if(a==="*"){e.Path="*";$s=-1;return[e,$ifaceNil];}f=Y(a);e.Scheme=f[0];c=f[1];d=f[2];if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return[AR.nil,d];}g=E.ToLower(e.Scheme);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}e.Scheme=g;if(E.HasSuffix(c,"?")&&(E.Count(c,"?")===1)){e.ForceQuery=true;c=$substring(c,0,(c.length-1>>0));}else{h=Z(c,"?",true);c=h[0];e.RawQuery=h[1];}if(!E.HasPrefix(c,"/")){if(!(e.Scheme==="")){e.Opaque=c;$s=-1;return[e,$ifaceNil];}if(b){$s=-1;return[AR.nil,A.New("invalid URI for request")];}i=E.Index(c,":");j=E.Index(c,"/");if(i>=0&&(j<0||i>0)));$s=5;case 5:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;c=h[0];d=h[1];case 3:if(!($interfaceIsEqual(d,$ifaceNil))){j=AQ.nil;k="";l=d;b=j;c=k;d=l;$s=-1;return[b,c,d];}if(e<0){m=AQ.nil;n=c;o=$ifaceNil;b=m;c=n;d=o;$s=-1;return[b,c,d];}p=$substring(a,0,e);if(!AM(p)){q=AQ.nil;r="";s=A.New("net/url: invalid userinfo");b=q;c=r;d=s;$s=-1;return[b,c,d];}if(!E.Contains(p,":")){t=Q(p,5);p=t[0];d=t[1];if(!($interfaceIsEqual(d,$ifaceNil))){u=AQ.nil;v="";w=d;b=u;c=v;d=w;$s=-1;return[b,c,d];}b=V(p);}else{x=Z(p,":",true);y=x[0];z=x[1];aa=Q(y,5);y=aa[0];d=aa[1];if(!($interfaceIsEqual(d,$ifaceNil))){ab=AQ.nil;ac="";ad=d;b=ab;c=ac;d=ad;$s=-1;return[b,c,d];}ae=Q(z,5);z=ae[0];d=ae[1];if(!($interfaceIsEqual(d,$ifaceNil))){af=AQ.nil;ag="";ah=d;b=af;c=ag;d=ah;$s=-1;return[b,c,d];}b=W(y,z);}ai=b;aj=c;ak=$ifaceNil;b=ai;c=aj;d=ak;$s=-1;return[b,c,d];}return;}if($f===undefined){$f={$blk:AD};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AE=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(E.HasPrefix(a,"[")){$s=1;continue;}$s=2;continue;case 1:b=E.LastIndex(a,"]");if(b<0){$s=-1;return["",A.New("missing ']' in host")];}c=$substring(a,(b+1>>0));if(!AG(c)){$s=4;continue;}$s=5;continue;case 4:d=B.Errorf("invalid port %q after host",new AS([new $String(c)]));$s=6;case 6:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}$s=-1;return["",d];case 5:e=E.Index($substring(a,0,b),"%25");if(e>=0){f=Q($substring(a,0,e),3);g=f[0];h=f[1];if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return["",h];}i=Q($substring(a,e,b),4);j=i[0];h=i[1];if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return["",h];}k=Q($substring(a,b),3);l=k[0];h=k[1];if(!($interfaceIsEqual(h,$ifaceNil))){$s=-1;return["",h];}$s=-1;return[g+j+l,$ifaceNil];}$s=3;continue;case 2:m=E.LastIndex(a,":");if(!((m===-1))){$s=7;continue;}$s=8;continue;case 7:n=$substring(a,m);if(!AG(n)){$s=9;continue;}$s=10;continue;case 9:o=B.Errorf("invalid port %q after host",new AS([new $String(n)]));$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}$s=-1;return["",o];case 10:case 8:case 3:p=$ifaceNil;q=Q(a,3);a=q[0];p=q[1];if(!($interfaceIsEqual(p,$ifaceNil))){$s=-1;return["",p];}$s=-1;return[a,$ifaceNil];}return;}if($f===undefined){$f={$blk:AE};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};U.ptr.prototype.setPath=function(a){var a,b,c,d,e,f;b=this;c=Q(a,1);d=c[0];e=c[1];if(!($interfaceIsEqual(e,$ifaceNil))){return e;}b.Path=d;f=T(d,1);if(a===f){b.RawPath="";}else{b.RawPath=a;}return $ifaceNil;};U.prototype.setPath=function(a){return this.$val.setPath(a);};U.ptr.prototype.EscapedPath=function(){var a,b,c,d;a=this;if(!(a.RawPath==="")&&AF(a.RawPath)){b=Q(a.RawPath,1);c=b[0];d=b[1];if($interfaceIsEqual(d,$ifaceNil)&&c===a.Path){return a.RawPath;}}if(a.Path==="*"){return"*";}return T(a.Path,1);};U.prototype.EscapedPath=function(){return this.$val.EscapedPath();};AF=function(a){var a,b,c;b=0;while(true){if(!(b>0;}return true;};AG=function(a){var a,b,c,d,e;if(a===""){return true;}if(!((a.charCodeAt(0)===58))){return false;}b=$substring(a,1);c=0;while(true){if(!(c57){return false;}c+=d[1];}return true;};U.ptr.prototype.String=function(){var a,b,c,d,e,f;a=this;b=new E.Builder.ptr(AT.nil,AO.nil);if(!(a.Scheme==="")){b.WriteString(a.Scheme);b.WriteByte(58);}if(!(a.Opaque==="")){b.WriteString(a.Opaque);}else{if(!(a.Scheme==="")||!(a.Host==="")||!(a.User===AQ.nil)){if(!(a.Host==="")||!(a.Path==="")||!(a.User===AQ.nil)){b.WriteString("//");}c=a.User;if(!(c===AQ.nil)){b.WriteString(c.String());b.WriteByte(64);}d=a.Host;if(!(d==="")){b.WriteString(T(d,3));}}e=a.EscapedPath();if(!(e==="")&&!((e.charCodeAt(0)===47))&&!(a.Host==="")){b.WriteByte(47);}if(b.Len()===0){f=E.IndexByte(e,58);if(f>-1&&(E.IndexByte($substring(e,0,f),47)===-1)){b.WriteString("./");}}b.WriteString(e);}if(a.ForceQuery||!(a.RawQuery==="")){b.WriteByte(63);b.WriteString(a.RawQuery);}if(!(a.Fragment==="")){b.WriteByte(35);b.WriteString(T(a.Fragment,7));}return b.String();};U.prototype.String=function(){return this.$val.String();};AH.prototype.Get=function(a){var a,b,c,d;b=this.$val;if(b===false){return"";}d=(c=b[$String.keyFor(a)],c!==undefined?c.v:AU.nil);if(d.$length===0){return"";}return(0>=d.$length?($throwRuntimeError("index out of range"),undefined):d.$array[d.$offset+0]);};$ptrType(AH).prototype.Get=function(a){return new AH(this.$get()).Get(a);};AH.prototype.Set=function(a,b){var a,b,c,d;c=this.$val;d=a;(c||$throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(d)]={k:d,v:new AU([b])};};$ptrType(AH).prototype.Set=function(a,b){return new AH(this.$get()).Set(a,b);};AH.prototype.Add=function(a,b){var a,b,c,d,e;c=this.$val;d=a;(c||$throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(d)]={k:d,v:$append((e=c[$String.keyFor(a)],e!==undefined?e.v:AU.nil),b)};};$ptrType(AH).prototype.Add=function(a,b){return new AH(this.$get()).Add(a,b);};AH.prototype.Del=function(a){var a,b;b=this.$val;delete b[$String.keyFor(a)];};$ptrType(AH).prototype.Del=function(a){return new AH(this.$get()).Del(a);};AI=function(a){var a,b,c;b={};c=AJ(b,a);return[b,c];};$pkg.ParseQuery=AI;AJ=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=$ifaceNil;while(true){if(!(!(b===""))){break;}d=b;e=E.IndexAny(d,"&;");if(e>=0){f=$substring(d,0,e);g=$substring(d,(e+1>>0));d=f;b=g;}else{b="";}if(d===""){continue;}h="";i=E.Index(d,"=");if(i>=0){j=$substring(d,0,i);k=$substring(d,(i+1>>0));d=j;h=k;}l=O(d);d=l[0];m=l[1];if(!($interfaceIsEqual(m,$ifaceNil))){if($interfaceIsEqual(c,$ifaceNil)){c=m;}continue;}n=O(h);h=n[0];m=n[1];if(!($interfaceIsEqual(m,$ifaceNil))){if($interfaceIsEqual(c,$ifaceNil)){c=m;}continue;}o=d;(a||$throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(o)]={k:o,v:$append((p=a[$String.keyFor(d)],p!==undefined?p.v:AU.nil),h)};}c=c;return c;};AH.prototype.Encode=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this.$val;if(a===false){$s=-1;return"";}b=new E.Builder.ptr(AT.nil,AO.nil);c=$makeSlice(AU,0,$keys(a).length);d=a;e=0;f=$keys(d);while(true){if(!(e=i.$length)?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+j]);m=(l=a[$String.keyFor(k)],l!==undefined?l.v:AU.nil);n=R(k);o=m;p=0;while(true){if(!(p=o.$length)?($throwRuntimeError("index out of range"),undefined):o.$array[o.$offset+p]);if(b.Len()>0){b.WriteByte(38);}b.WriteString(n);b.WriteByte(61);b.WriteString(R(q));p++;}j++;}$s=-1;return b.String();}return;}if($f===undefined){$f={$blk:AH.prototype.Encode};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(AH).prototype.Encode=function(){return new AH(this.$get()).Encode();};AK=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,l;c="";if(b===""){c=a;}else if(!((b.charCodeAt(0)===47))){d=E.LastIndex(a,"/");c=$substring(a,0,(d+1>>0))+b;}else{c=b;}if(c===""){return"";}e=AU.nil;f=E.Split(c,"/");g=f;h=0;while(true){if(!(h=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h]);j=i;if(j===(".")){}else if(j===("..")){if(e.$length>0){e=$subslice(e,0,(e.$length-1>>0));}}else{e=$append(e,i);}h++;}l=(k=f.$length-1>>0,((k<0||k>=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+k]));if(l==="."||l===".."){e=$append(e,"");}return"/"+E.TrimPrefix(E.Join(e,"/"),"/");};U.ptr.prototype.IsAbs=function(){var a;a=this;return!(a.Scheme==="");};U.prototype.IsAbs=function(){return this.$val.IsAbs();};U.ptr.prototype.Parse=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;d=AA(a);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[AR.nil,f];}$s=-1;return[b.ResolveReference(e),$ifaceNil];}return;}if($f===undefined){$f={$blk:U.ptr.prototype.Parse};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};U.prototype.Parse=function(a){return this.$val.Parse(a);};U.ptr.prototype.ResolveReference=function(a){var a,b,c;b=this;c=$clone(a,U);if(a.Scheme===""){c.Scheme=b.Scheme;}if(!(a.Scheme==="")||!(a.Host==="")||!(a.User===AQ.nil)){c.setPath(AK(a.EscapedPath(),""));return c;}if(!(a.Opaque==="")){c.User=AQ.nil;c.Host="";c.Path="";return c;}if(a.Path===""&&a.RawQuery===""){c.RawQuery=b.RawQuery;if(a.Fragment===""){c.Fragment=b.Fragment;}}c.Host=b.Host;c.User=b.User;c.setPath(AK(b.EscapedPath(),a.EscapedPath()));return c;};U.prototype.ResolveReference=function(a){return this.$val.ResolveReference(a);};U.ptr.prototype.Query=function(){var a,b,c;a=this;b=AI(a.RawQuery);c=b[0];return c;};U.prototype.Query=function(){return this.$val.Query();};U.ptr.prototype.RequestURI=function(){var a,b;a=this;b=a.Opaque;if(b===""){b=a.EscapedPath();if(b===""){b="/";}}else{if(E.HasPrefix(b,"//")){b=a.Scheme+":"+b;}}if(a.ForceQuery||!(a.RawQuery==="")){b=b+("?"+a.RawQuery);}return b;};U.prototype.RequestURI=function(){return this.$val.RequestURI();};U.ptr.prototype.Hostname=function(){var a,b,c;a=this;b=AL(a.Host);c=b[0];return c;};U.prototype.Hostname=function(){return this.$val.Hostname();};U.ptr.prototype.Port=function(){var a,b,c;a=this;b=AL(a.Host);c=b[1];return c;};U.prototype.Port=function(){return this.$val.Port();};AL=function(a){var a,b,c,d,e,f;b="";c="";b=a;d=E.LastIndexByte(b,58);if(!((d===-1))&&AG($substring(b,d))){e=$substring(b,0,d);f=$substring(b,(d+1>>0));b=e;c=f;}if(E.HasPrefix(b,"[")&&E.HasSuffix(b,"]")){b=$substring(b,1,(b.length-1>>0));}return[b,c];};U.ptr.prototype.MarshalBinary=function(){var a,b,c,d,e;a=AO.nil;b=$ifaceNil;c=this;d=(new AO($stringToBytes(c.String())));e=$ifaceNil;a=d;b=e;return[a,b];};U.prototype.MarshalBinary=function(){return this.$val.MarshalBinary();};U.ptr.prototype.UnmarshalBinary=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;d=AA(($bytesToString(a)));$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return f;}U.copy(b,e);$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:U.ptr.prototype.UnmarshalBinary};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};U.prototype.UnmarshalBinary=function(a){return this.$val.UnmarshalBinary(a);};AM=function(a){var a,b,c,d,e,f;b=a;c=0;while(true){if(!(c>0;}return false;};AV.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}];L.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];M.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];AR.methods=[{prop:"setPath",name:"setPath",pkg:"net/url",typ:$funcType([$String],[$error],false)},{prop:"EscapedPath",name:"EscapedPath",pkg:"",typ:$funcType([],[$String],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)},{prop:"IsAbs",name:"IsAbs",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Parse",name:"Parse",pkg:"",typ:$funcType([$String],[AR,$error],false)},{prop:"ResolveReference",name:"ResolveReference",pkg:"",typ:$funcType([AR],[AR],false)},{prop:"Query",name:"Query",pkg:"",typ:$funcType([],[AH],false)},{prop:"RequestURI",name:"RequestURI",pkg:"",typ:$funcType([],[$String],false)},{prop:"Hostname",name:"Hostname",pkg:"",typ:$funcType([],[$String],false)},{prop:"Port",name:"Port",pkg:"",typ:$funcType([],[$String],false)},{prop:"MarshalBinary",name:"MarshalBinary",pkg:"",typ:$funcType([],[AO,$error],false)},{prop:"UnmarshalBinary",name:"UnmarshalBinary",pkg:"",typ:$funcType([AO],[$error],false)}];AQ.methods=[{prop:"Username",name:"Username",pkg:"",typ:$funcType([],[$String],false)},{prop:"Password",name:"Password",pkg:"",typ:$funcType([],[$String,$Bool],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];AH.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([$String],[$String],false)},{prop:"Set",name:"Set",pkg:"",typ:$funcType([$String,$String],[],false)},{prop:"Add",name:"Add",pkg:"",typ:$funcType([$String,$String],[],false)},{prop:"Del",name:"Del",pkg:"",typ:$funcType([$String],[],false)},{prop:"Encode",name:"Encode",pkg:"",typ:$funcType([],[$String],false)}];F.init("",[{prop:"Op",name:"Op",embedded:false,exported:true,typ:$String,tag:""},{prop:"URL",name:"URL",embedded:false,exported:true,typ:$String,tag:""},{prop:"Err",name:"Err",embedded:false,exported:true,typ:$error,tag:""}]);G.init([{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)}]);H.init([{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}]);U.init("",[{prop:"Scheme",name:"Scheme",embedded:false,exported:true,typ:$String,tag:""},{prop:"Opaque",name:"Opaque",embedded:false,exported:true,typ:$String,tag:""},{prop:"User",name:"User",embedded:false,exported:true,typ:AQ,tag:""},{prop:"Host",name:"Host",embedded:false,exported:true,typ:$String,tag:""},{prop:"Path",name:"Path",embedded:false,exported:true,typ:$String,tag:""},{prop:"RawPath",name:"RawPath",embedded:false,exported:true,typ:$String,tag:""},{prop:"ForceQuery",name:"ForceQuery",embedded:false,exported:true,typ:$Bool,tag:""},{prop:"RawQuery",name:"RawQuery",embedded:false,exported:true,typ:$String,tag:""},{prop:"Fragment",name:"Fragment",embedded:false,exported:true,typ:$String,tag:""}]);X.init("net/url",[{prop:"username",name:"username",embedded:false,exported:false,typ:$String,tag:""},{prop:"password",name:"password",embedded:false,exported:false,typ:$String,tag:""},{prop:"passwordSet",name:"passwordSet",embedded:false,exported:false,typ:$Bool,tag:""}]);AH.init($String,AU);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket"]=(function(){var $pkg={},$init,B,C,G,H,D,E,A,F,I,K,M,P,Q,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,N,J,L,O,R;B=$packages["bytes"];C=$packages["fmt"];G=$packages["github.com/gopherjs/gopherjs/js"];H=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs"];D=$packages["io"];E=$packages["net"];A=$packages["net/url"];F=$packages["time"];I=$pkg.addr=$newType(0,$kindStruct,"websocket.addr",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(URL_){this.$val=this;if(arguments.length===0){this.URL=Y.nil;return;}this.URL=URL_;});K=$pkg.closeError=$newType(0,$kindStruct,"websocket.closeError",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(Object_,Code_,Reason_,WasClean_){this.$val=this;if(arguments.length===0){this.Object=null;this.Code=0;this.Reason="";this.WasClean=false;return;}this.Object=Object_;this.Code=Code_;this.Reason=Reason_;this.WasClean=WasClean_;});M=$pkg.deadlineErr=$newType(0,$kindStruct,"websocket.deadlineErr",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(){this.$val=this;if(arguments.length===0){return;}});P=$pkg.conn=$newType(0,$kindStruct,"websocket.conn",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(WebSocket_,ch_,readBuf_,readDeadline_){this.$val=this;if(arguments.length===0){this.WebSocket=T.nil;this.ch=$chanNil;this.readBuf=U.nil;this.readDeadline=new F.Time.ptr(new $Uint64(0,0),new $Int64(0,0),V.nil);return;}this.WebSocket=WebSocket_;this.ch=ch_;this.readBuf=readBuf_;this.readDeadline=readDeadline_;});Q=$pkg.messageEvent=$newType(0,$kindStruct,"websocket.messageEvent",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(Object_,Data_){this.$val=this;if(arguments.length===0){this.Object=null;this.Data=null;return;}this.Object=Object_;this.Data=Data_;});S=$sliceType($emptyInterface);T=$ptrType(H.WebSocket);U=$ptrType(B.Reader);V=$ptrType(F.Location);W=$ptrType(Q);X=$sliceType($Uint8);Y=$ptrType(A.URL);Z=$ptrType(I);AA=$ptrType(K);AB=$ptrType(G.Object);AC=$ptrType(M);AD=$ptrType(P);AE=$chanType(W,false,false);I.ptr.prototype.Network=function(){var a;a=this;return"websocket";};I.prototype.Network=function(){return this.$val.Network();};J=function(a,b){var a,b;return(function $b(c){var c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=b();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$close(a);$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.$s=$s;$f.$r=$r;return $f;});};K.ptr.prototype.Error=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b="";if(!!(a.Object.wasClean)){b="clean";}else{b="unclean";}c=C.Sprintf("CloseEvent: (%s) (%d) %s",new S([new $String(b),new $Int(($parseInt(a.Object.code)>>0)),new $String($internalize(a.Object.reason,$String))]));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:K.ptr.prototype.Error};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};K.prototype.Error=function(){return this.$val.Error();};L=function(a,b){var a,b;return(function $b(c){var c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];$r=b();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$go((function(c){return function $b(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=$send(a,new K.ptr(c[0],0,"",false));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$close(a);$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.$s=$s;$f.$r=$r;return $f;};})(c),[]);$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.$s=$s;$f.$r=$r;return $f;});};M.ptr.prototype.Error=function(){var a;a=this;return"i/o timeout: deadline reached";};M.prototype.Error=function(){return this.$val.Error();};M.ptr.prototype.Timeout=function(){var a;a=this;return true;};M.prototype.Timeout=function(){return this.$val.Timeout();};M.ptr.prototype.Temporary=function(){var a;a=this;return true;};M.prototype.Temporary=function(){return this.$val.Temporary();};O=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=[b];c=[c];d=[d];e=H.New(a);d[0]=e[0];f=e[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[$ifaceNil,f];}g=new P.ptr(d[0],new $Chan(W,1),U.nil,new F.Time.ptr(new $Uint64(0,0),new $Int64(0,0),V.nil));g.initialize();h=new $Chan($error,1);c[0]=$throwNilPointerError;b[0]=$throwNilPointerError;i=(function(b,c,d){return function(){d[0].RemoveEventListener("open",false,c[0]);d[0].RemoveEventListener("close",false,b[0]);};})(b,c,d);c[0]=J(h,i);b[0]=L(h,i);d[0].AddEventListener("open",false,c[0]);d[0].AddEventListener("close",false,b[0]);k=$recv(h);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;f=j[0];l=j[1];if(l&&!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[$ifaceNil,f];}$s=-1;return[g,$ifaceNil];}return;}if($f===undefined){$f={$blk:O};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Dial=O;P.ptr.prototype.onMessage=function(a){var a,b;b=this;$go((function $b(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=$send(b.ch,new Q.ptr(a,null));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.$s=$s;$f.$r=$r;return $f;}),[]);};P.prototype.onMessage=function(a){return this.$val.onMessage(a);};P.ptr.prototype.onClose=function(a){var a,b;b=this;$go((function $b(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=$send(b.ch,W.nil);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.$s=$s;$f.$r=$r;return $f;}),[]);};P.prototype.onClose=function(a){return this.$val.onClose(a);};P.ptr.prototype.initialize=function(){var a;a=this;a.WebSocket.Object.binaryType=$externalize("arraybuffer",$String);a.WebSocket.AddEventListener("message",false,$methodVal(a,"onMessage"));a.WebSocket.AddEventListener("close",false,$methodVal(a,"onClose"));};P.prototype.initialize=function(){return this.$val.initialize();};P.ptr.prototype.handleFrame=function(a,b){var a,b,c;c=this;if(!b){return[W.nil,D.EOF];}else if(a===W.nil){$close(c.ch);return[W.nil,D.EOF];}return[a,$ifaceNil];};P.prototype.handleFrame=function(a,b){return this.$val.handleFrame(a,b);};P.ptr.prototype.receiveFrame=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;c=$chanNil;if(a&&!$clone(b.readDeadline,F.Time).IsZero()){$s=1;continue;}$s=2;continue;case 1:d=$clone(F.Now(),F.Time);if($clone(d,F.Time).After($clone(b.readDeadline,F.Time))){e=$select([[b.ch],[]]);if(e[0]===0){f=e[1];g=f[0];h=f[1];$s=-1;return b.handleFrame(g,h);}else if(e[0]===1){$s=-1;return[W.nil,N];}}i=F.NewTimer($clone(b.readDeadline,F.Time).Sub($clone(d,F.Time)));$deferred.push([$methodVal(i,"Stop"),[]]);c=i.C;case 2:k=$select([[b.ch],[c]]);$s=3;case 3:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;if(j[0]===0){l=j[1];m=l[0];n=l[1];$s=-1;return b.handleFrame(m,n);}else if(j[0]===1){$s=-1;return[W.nil,N];}$s=-1;return[W.nil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[W.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:P.ptr.prototype.receiveFrame};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};P.prototype.receiveFrame=function(a){return this.$val.receiveFrame(a);};R=function(a){var a,b,c;b=a.constructor;if(b===$global.ArrayBuffer){c=new($global.Uint8Array)(a);return $assertType($internalize(c,$emptyInterface),X);}return(new X($stringToBytes($internalize(a,$String))));};P.ptr.prototype.Read=function(a){var a,b,c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if(!(d.readBuf===U.nil)){e=d.readBuf.Read(a);b=e[0];c=e[1];if($interfaceIsEqual(c,D.EOF)){d.readBuf=U.nil;c=$ifaceNil;}if(b>0){$s=-1;return[b,c];}}g=d.receiveFrame(true);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[0];c=f[1];if(!($interfaceIsEqual(c,$ifaceNil))){i=0;j=c;b=i;c=j;$s=-1;return[b,c];}k=R(h.Object.data);b=$copySlice(a,k);if(b>=k.$length){$s=-1;return[b,c];}d.readBuf=B.NewReader($subslice(k,b));$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:P.ptr.prototype.Read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.Read=function(a){return this.$val.Read(a);};P.ptr.prototype.Write=function(a){var a,b,c,d,e,f,g,h;b=0;c=$ifaceNil;d=this;c=d.WebSocket.Send(a);if(!($interfaceIsEqual(c,$ifaceNil))){e=0;f=c;b=e;c=f;return[b,c];}g=a.$length;h=$ifaceNil;b=g;c=h;return[b,c];};P.prototype.Write=function(a){return this.$val.Write(a);};P.ptr.prototype.LocalAddr=function(){var a;a=this;$panic(new $String("we are unable to implement websocket.conn.LocalAddr() due to limitations in the underlying JavaScript API"));};P.prototype.LocalAddr=function(){return this.$val.LocalAddr();};P.ptr.prototype.RemoteAddr=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;c=A.Parse($internalize(a.WebSocket.Object.url,$String));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}b=c;d=b[0];e=b[1];if(!($interfaceIsEqual(e,$ifaceNil))){$panic(e);}$s=-1;return new I.ptr(d);}return;}if($f===undefined){$f={$blk:P.ptr.prototype.RemoteAddr};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.RemoteAddr=function(){return this.$val.RemoteAddr();};P.ptr.prototype.SetDeadline=function(a){var a,b;b=this;F.Time.copy(b.readDeadline,a);return $ifaceNil;};P.prototype.SetDeadline=function(a){return this.$val.SetDeadline(a);};P.ptr.prototype.SetReadDeadline=function(a){var a,b;b=this;F.Time.copy(b.readDeadline,a);return $ifaceNil;};P.prototype.SetReadDeadline=function(a){return this.$val.SetReadDeadline(a);};P.ptr.prototype.SetWriteDeadline=function(a){var a,b;b=this;return $ifaceNil;};P.prototype.SetWriteDeadline=function(a){return this.$val.SetWriteDeadline(a);};Z.methods=[{prop:"Network",name:"Network",pkg:"",typ:$funcType([],[$String],false)}];AA.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];AC.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}];AD.methods=[{prop:"onMessage",name:"onMessage",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([AB],[],false)},{prop:"onClose",name:"onClose",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([AB],[],false)},{prop:"initialize",name:"initialize",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([],[],false)},{prop:"handleFrame",name:"handleFrame",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([W,$Bool],[W,$error],false)},{prop:"receiveFrame",name:"receiveFrame",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([$Bool],[W,$error],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([X],[$Int,$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([X],[$Int,$error],false)},{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[E.Addr],false)},{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[E.Addr],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([F.Time],[$error],false)},{prop:"SetReadDeadline",name:"SetReadDeadline",pkg:"",typ:$funcType([F.Time],[$error],false)},{prop:"SetWriteDeadline",name:"SetWriteDeadline",pkg:"",typ:$funcType([F.Time],[$error],false)}];I.init("",[{prop:"URL",name:"URL",embedded:true,exported:true,typ:Y,tag:""}]);K.init("",[{prop:"Object",name:"Object",embedded:true,exported:true,typ:AB,tag:""},{prop:"Code",name:"Code",embedded:false,exported:true,typ:$Int,tag:"js:\"code\""},{prop:"Reason",name:"Reason",embedded:false,exported:true,typ:$String,tag:"js:\"reason\""},{prop:"WasClean",name:"WasClean",embedded:false,exported:true,typ:$Bool,tag:"js:\"wasClean\""}]);M.init("",[]);P.init("github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",[{prop:"WebSocket",name:"WebSocket",embedded:true,exported:true,typ:T,tag:""},{prop:"ch",name:"ch",embedded:false,exported:false,typ:AE,tag:""},{prop:"readBuf",name:"readBuf",embedded:false,exported:false,typ:U,tag:""},{prop:"readDeadline",name:"readDeadline",embedded:false,exported:false,typ:F.Time,tag:""}]);Q.init("",[{prop:"Object",name:"Object",embedded:true,exported:true,typ:AB,tag:""},{prop:"Data",name:"Data",embedded:false,exported:true,typ:AB,tag:"js:\"data\""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}N=new M.ptr();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["container/heap"]=(function(){var $pkg={},$init,A,D,E,H,I;A=$packages["sort"];D=function(a,b){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=a.Push(b);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=a;d=a.Len();$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d-1>>0;$r=H(c,e);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:D};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Push=D;E=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=a.Len();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b-1>>0;$r=a.Swap(0,c);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=I(a,0,c);$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d;e=a.Pop();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:E};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Pop=E;H=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:case 1:d=(c=((b-1>>0))/2,(c===c&&c!==1/0&&c!==-1/0)?c>>0:$throwRuntimeError("integer divide by zero"));if(d===b){e=true;$s=5;continue s;}f=a.Less(b,d);$s=6;case 6:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=!f;case 5:if(e){$s=3;continue;}$s=4;continue;case 3:$s=2;continue;case 4:$r=a.Swap(d,b);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b=d;$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};I=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=b;case 1:e=($imul(2,d))+1>>0;if(e>=c||e<0){$s=2;continue;}f=e;g=e+1>>0;if(!(gb;}return;}if($f===undefined){$f={$blk:I};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux"]=(function(){var $pkg={},$init,H,C,A,D,E,F,I,B,J,G,N,Q,S,T,U,Z,AA,AB,AC,AE,AF,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,K,L,M,O,P,R,V,W,Y,AD,AG;H=$packages["container/heap"];C=$packages["encoding/binary"];A=$packages["errors"];D=$packages["fmt"];E=$packages["io"];F=$packages["math"];I=$packages["net"];B=$packages["sync"];J=$packages["sync/atomic"];G=$packages["time"];N=$pkg.Allocator=$newType(0,$kindStruct,"smux.Allocator",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(buffers_){this.$val=this;if(arguments.length===0){this.buffers=AI.nil;return;}this.buffers=buffers_;});Q=$pkg.Frame=$newType(0,$kindStruct,"smux.Frame",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(ver_,cmd_,sid_,data_){this.$val=this;if(arguments.length===0){this.ver=0;this.cmd=0;this.sid=0;this.data=AJ.nil;return;}this.ver=ver_;this.cmd=cmd_;this.sid=sid_;this.data=data_;});S=$pkg.rawHeader=$newType(8,$kindArray,"smux.rawHeader",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);T=$pkg.updHeader=$newType(8,$kindArray,"smux.updHeader",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);U=$pkg.Config=$newType(0,$kindStruct,"smux.Config",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(Version_,KeepAliveDisabled_,KeepAliveInterval_,KeepAliveTimeout_,MaxFrameSize_,MaxReceiveBuffer_,MaxStreamBuffer_){this.$val=this;if(arguments.length===0){this.Version=0;this.KeepAliveDisabled=false;this.KeepAliveInterval=new G.Duration(0,0);this.KeepAliveTimeout=new G.Duration(0,0);this.MaxFrameSize=0;this.MaxReceiveBuffer=0;this.MaxStreamBuffer=0;return;}this.Version=Version_;this.KeepAliveDisabled=KeepAliveDisabled_;this.KeepAliveInterval=KeepAliveInterval_;this.KeepAliveTimeout=KeepAliveTimeout_;this.MaxFrameSize=MaxFrameSize_;this.MaxReceiveBuffer=MaxReceiveBuffer_;this.MaxStreamBuffer=MaxStreamBuffer_;});Z=$pkg.writeRequest=$newType(0,$kindStruct,"smux.writeRequest",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,function(prio_,frame_,result_){this.$val=this;if(arguments.length===0){this.prio=new $Uint64(0,0);this.frame=new Q.ptr(0,0,0,AJ.nil);this.result=$chanNil;return;}this.prio=prio_;this.frame=frame_;this.result=result_;});AA=$pkg.writeResult=$newType(0,$kindStruct,"smux.writeResult",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,function(n_,err_){this.$val=this;if(arguments.length===0){this.n=0;this.err=$ifaceNil;return;}this.n=n_;this.err=err_;});AB=$pkg.buffersWriter=$newType(8,$kindInterface,"smux.buffersWriter",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);AC=$pkg.Session=$newType(0,$kindStruct,"smux.Session",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(conn_,config_,nextStreamID_,nextStreamIDLock_,bucket_,bucketNotify_,streams_,streamLock_,die_,dieOnce_,socketReadError_,socketWriteError_,chSocketReadError_,chSocketWriteError_,socketReadErrorOnce_,socketWriteErrorOnce_,protoError_,chProtoError_,protoErrorOnce_,chAccepts_,dataReady_,goAway_,deadline_,shaper_,writes_){this.$val=this;if(arguments.length===0){this.conn=$ifaceNil;this.config=AL.nil;this.nextStreamID=0;this.nextStreamIDLock=new B.Mutex.ptr(0,0);this.bucket=0;this.bucketNotify=$chanNil;this.streams=false;this.streamLock=new B.Mutex.ptr(0,0);this.die=$chanNil;this.dieOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.socketReadError=new J.Value.ptr($ifaceNil);this.socketWriteError=new J.Value.ptr($ifaceNil);this.chSocketReadError=$chanNil;this.chSocketWriteError=$chanNil;this.socketReadErrorOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.socketWriteErrorOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.protoError=new J.Value.ptr($ifaceNil);this.chProtoError=$chanNil;this.protoErrorOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.chAccepts=$chanNil;this.dataReady=0;this.goAway=0;this.deadline=new J.Value.ptr($ifaceNil);this.shaper=$chanNil;this.writes=$chanNil;return;}this.conn=conn_;this.config=config_;this.nextStreamID=nextStreamID_;this.nextStreamIDLock=nextStreamIDLock_;this.bucket=bucket_;this.bucketNotify=bucketNotify_;this.streams=streams_;this.streamLock=streamLock_;this.die=die_;this.dieOnce=dieOnce_;this.socketReadError=socketReadError_;this.socketWriteError=socketWriteError_;this.chSocketReadError=chSocketReadError_;this.chSocketWriteError=chSocketWriteError_;this.socketReadErrorOnce=socketReadErrorOnce_;this.socketWriteErrorOnce=socketWriteErrorOnce_;this.protoError=protoError_;this.chProtoError=chProtoError_;this.protoErrorOnce=protoErrorOnce_;this.chAccepts=chAccepts_;this.dataReady=dataReady_;this.goAway=goAway_;this.deadline=deadline_;this.shaper=shaper_;this.writes=writes_;});AE=$pkg.shaperHeap=$newType(12,$kindSlice,"smux.shaperHeap",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);AF=$pkg.Stream=$newType(0,$kindStruct,"smux.Stream",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(id_,sess_,buffers_,heads_,bufferLock_,frameSize_,chReadEvent_,die_,dieOnce_,chFinEvent_,finEventOnce_,readDeadline_,writeDeadline_,numRead_,numWritten_,incr_,peerConsumed_,peerWindow_,chUpdate_){this.$val=this;if(arguments.length===0){this.id=0;this.sess=AM.nil;this.buffers=AU.nil;this.heads=AU.nil;this.bufferLock=new B.Mutex.ptr(0,0);this.frameSize=0;this.chReadEvent=$chanNil;this.die=$chanNil;this.dieOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.chFinEvent=$chanNil;this.finEventOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.readDeadline=new J.Value.ptr($ifaceNil);this.writeDeadline=new J.Value.ptr($ifaceNil);this.numRead=0;this.numWritten=0;this.incr=0;this.peerConsumed=0;this.peerWindow=0;this.chUpdate=$chanNil;return;}this.id=id_;this.sess=sess_;this.buffers=buffers_;this.heads=heads_;this.bufferLock=bufferLock_;this.frameSize=frameSize_;this.chReadEvent=chReadEvent_;this.die=die_;this.dieOnce=dieOnce_;this.chFinEvent=chFinEvent_;this.finEventOnce=finEventOnce_;this.readDeadline=readDeadline_;this.writeDeadline=writeDeadline_;this.numRead=numRead_;this.numWritten=numWritten_;this.incr=incr_;this.peerConsumed=peerConsumed_;this.peerWindow=peerWindow_;this.chUpdate=chUpdate_;});AH=$ptrType(N);AI=$sliceType(B.Pool);AJ=$sliceType($Uint8);AK=$sliceType($emptyInterface);AL=$ptrType(U);AM=$ptrType(AC);AN=$structType("",[]);AO=$ptrType(AF);AP=$interfaceType([{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[I.Addr],false)}]);AQ=$interfaceType([{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[I.Addr],false)}]);AR=$ptrType($Int32);AS=$arrayType($Uint8,8);AT=$ptrType(AE);AU=$sliceType(AJ);AV=$ptrType(G.Timer);AW=$ptrType($Uint32);AX=$chanType(AA,false,false);AY=$chanType(G.Time,false,true);AZ=$chanType(AN,false,false);BA=$mapType($Uint32,AO);BB=$chanType(AO,false,false);BC=$chanType(Z,false,false);BD=$chanType(AN,false,true);M=function(){K=O();};O=function(){var a,b,c,d,e,f;a=new N.ptr(AI.nil);a.buffers=$makeSlice(AI,17);b=a.buffers;c=0;while(true){if(!(c=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+e])).New=(function(d){return function(){var f;return $makeSlice(AJ,((f=((d[0]>>>0)),f<32?(1<>0));};})(d);c++;}return a;};$pkg.NewAllocator=O;N.ptr.prototype.Get=function(a){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(a<=0||a>65536){$s=-1;return AJ.nil;}c=P(a);if(a===((d=c,d<32?(1<>0)){$s=1;continue;}$s=2;continue;case 1:f=(e=b.buffers,((c<0||c>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+c])).Get();$s=4;case 4:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return $subslice($assertType(f,AJ),0,a);case 2:i=(g=b.buffers,h=c+1<<24>>>24,((h<0||h>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h])).Get();$s=5;case 5:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}$s=-1;return $subslice($assertType(i,AJ),0,a);case 3:$s=-1;return AJ.nil;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.Get};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.Get=function(a){return this.$val.Get(a);};N.ptr.prototype.Put=function(a){var a,b,c,d,e;b=this;c=P(a.$capacity);if((a.$capacity===0)||a.$capacity>65536||!((a.$capacity===((d=c,d<32?(1<>0)))){return A.New("allocator Put() incorrect buffer size");}(e=b.buffers,((c<0||c>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+c])).Put(a);return $ifaceNil;};N.prototype.Put=function(a){return this.$val.Put(a);};P=function(a){var a,b,c;b=((a>>>0));b=(b|((b>>>1>>>0)))>>>0;b=(b|((b>>>2>>>0)))>>>0;b=(b|((b>>>4>>>0)))>>>0;b=(b|((b>>>8>>>0)))>>>0;b=(b|((b>>>16>>>0)))>>>0;return(c=(($imul(b,130329821)>>>0))>>>27>>>0,((c<0||c>=L.length)?($throwRuntimeError("index out of range"),undefined):L[c]));};R=function(a,b,c){var a,b,c;return new Q.ptr(a,b,c,AJ.nil);};S.prototype.Version=function(){var a;a=this.$val;return a[0];};$ptrType(S).prototype.Version=function(){return new S(this.$get()).Version();};S.prototype.Cmd=function(){var a;a=this.$val;return a[1];};$ptrType(S).prototype.Cmd=function(){return new S(this.$get()).Cmd();};S.prototype.Length=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint16($subslice(new AJ(a),2));};$ptrType(S).prototype.Length=function(){return new S(this.$get()).Length();};S.prototype.StreamID=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint32($subslice(new AJ(a),4));};$ptrType(S).prototype.StreamID=function(){return new S(this.$get()).StreamID();};S.prototype.String=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this.$val;b=D.Sprintf("Version:%d Cmd:%d StreamID:%d Length:%d",new AK([new $Uint8(new S($clone(a,S)).Version()),new $Uint8(new S($clone(a,S)).Cmd()),new $Uint32(new S($clone(a,S)).StreamID()),new $Uint16(new S($clone(a,S)).Length())]));$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return b;}return;}if($f===undefined){$f={$blk:S.prototype.String};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(S).prototype.String=function(){return new S(this.$get()).String();};T.prototype.Consumed=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint32(new AJ(a));};$ptrType(T).prototype.Consumed=function(){return new T(this.$get()).Consumed();};T.prototype.Window=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint32($subslice(new AJ(a),4));};$ptrType(T).prototype.Window=function(){return new T(this.$get()).Window();};V=function(){return new U.ptr(1,false,new G.Duration(2,1410065408),new G.Duration(6,4230196224),32768,4194304,65536);};$pkg.DefaultConfig=V;W=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(!((a.Version===1)||(a.Version===2))){$s=-1;return A.New("unsupported protocol version");}if(!a.KeepAliveDisabled){$s=1;continue;}$s=2;continue;case 1:if((b=a.KeepAliveInterval,(b.$high===0&&b.$low===0))){$s=-1;return A.New("keep-alive interval must be positive");}if((c=a.KeepAliveTimeout,d=a.KeepAliveInterval,(c.$high65535){$s=-1;return A.New("max frame size must not be larger than 65535");}if(a.MaxReceiveBuffer<=0){$s=-1;return A.New("max receive buffer must be positive");}if(a.MaxStreamBuffer<=0){$s=-1;return A.New("max stream buffer must be positive");}if(a.MaxStreamBuffer>a.MaxReceiveBuffer){$s=-1;return A.New("max stream buffer must not be larger than max receive buffer");}if(a.MaxStreamBuffer>2147483647){$s=-1;return A.New("max stream buffer cannot be larger than 2147483647");}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:W};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.VerifyConfig=W;Y=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(b===AL.nil){b=V();}c=W(b);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return[AM.nil,d];}$s=-1;return[AD(b,a,true),$ifaceNil];}return;}if($f===undefined){$f={$blk:Y};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Client=Y;AD=function(a,b,c){var a,b,c,d;d=new AC.ptr($ifaceNil,AL.nil,0,new B.Mutex.ptr(0,0),0,$chanNil,false,new B.Mutex.ptr(0,0),$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),new J.Value.ptr($ifaceNil),new J.Value.ptr($ifaceNil),$chanNil,$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),new B.Once.ptr(new B.Mutex.ptr(0,0),0),new J.Value.ptr($ifaceNil),$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),$chanNil,0,0,new J.Value.ptr($ifaceNil),$chanNil,$chanNil);d.die=new $Chan(AN,0);d.conn=b;d.config=a;d.streams={};d.chAccepts=new $Chan(AO,1024);d.bucket=((a.MaxReceiveBuffer>>0));d.bucketNotify=new $Chan(AN,1);d.shaper=new $Chan(Z,0);d.writes=new $Chan(Z,0);d.chSocketReadError=new $Chan(AN,0);d.chSocketWriteError=new $Chan(AN,0);d.chProtoError=new $Chan(AN,0);if(c){d.nextStreamID=1;}else{d.nextStreamID=0;}$go($methodVal(d,"shaperLoop"),[]);$go($methodVal(d,"recvLoop"),[]);$go($methodVal(d,"sendLoop"),[]);if(!a.KeepAliveDisabled){$go($methodVal(d,"keepalive"),[]);}return d;};AC.ptr.prototype.OpenStream=function(){var a,b,c,d,e,f,g,h,i,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;if(a.IsClosed()){$s=-1;return[AO.nil,E.ErrClosedPipe];}$r=a.nextStreamIDLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(a.goAway>0){$s=2;continue;}$s=3;continue;case 2:$r=a.nextStreamIDLock.Unlock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[AO.nil,$pkg.ErrGoAway];case 3:a.nextStreamID=a.nextStreamID+(2)>>>0;b=a.nextStreamID;if(b===(c=b%2,c===c?c:$throwRuntimeError("integer divide by zero"))){$s=5;continue;}$s=6;continue;case 5:a.goAway=1;$r=a.nextStreamIDLock.Unlock();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[AO.nil,$pkg.ErrGoAway];case 6:$r=a.nextStreamIDLock.Unlock();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=AG(b,a.config.MaxFrameSize,a);f=a.writeFrame($clone(R(((a.config.Version<<24>>>24)),0,b),Q));$s=9;case 9:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;g=e[1];if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[AO.nil,g];}$r=a.streamLock.Lock();$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(a.streamLock,"Unlock"),[]]);h=$select([[a.chSocketReadError],[a.chSocketWriteError],[a.die],[]]);if(h[0]===0){$s=-1;return[AO.nil,$assertType(a.socketReadError.Load(),$error)];}else if(h[0]===1){$s=-1;return[AO.nil,$assertType(a.socketWriteError.Load(),$error)];}else if(h[0]===2){$s=-1;return[AO.nil,E.ErrClosedPipe];}else if(h[0]===3){i=b;(a.streams||$throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(i)]={k:i,v:d};$s=-1;return[d,$ifaceNil];}$s=-1;return[AO.nil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[AO.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AC.ptr.prototype.OpenStream};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AC.prototype.OpenStream=function(){return this.$val.OpenStream();};AC.ptr.prototype.Open=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.OpenStream();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$s=-1;return[c[0],c[1]];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.Open};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.Open=function(){return this.$val.Open();};AC.ptr.prototype.AcceptStream=function(){var a,b,c,d,e,f,g,h,i,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;b=$chanNil;c=$assertType(a.deadline.Load(),G.Time,true);d=$clone(c[0],G.Time);e=c[1];if(e&&!$clone(d,G.Time).IsZero()){f=G.NewTimer(G.Until($clone(d,G.Time)));$deferred.push([$methodVal(f,"Stop"),[]]);b=f.C;}h=$select([[a.chAccepts],[b],[a.chSocketReadError],[a.chProtoError],[a.die]]);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;if(g[0]===0){i=g[1][0];$s=-1;return[i,$ifaceNil];}else if(g[0]===1){$s=-1;return[AO.nil,$pkg.ErrTimeout];}else if(g[0]===2){$s=-1;return[AO.nil,$assertType(a.socketReadError.Load(),$error)];}else if(g[0]===3){$s=-1;return[AO.nil,$assertType(a.protoError.Load(),$error)];}else if(g[0]===4){$s=-1;return[AO.nil,E.ErrClosedPipe];}$s=-1;return[AO.nil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[AO.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AC.ptr.prototype.AcceptStream};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AC.prototype.AcceptStream=function(){return this.$val.AcceptStream();};AC.ptr.prototype.Accept=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.AcceptStream();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$s=-1;return[c[0],c[1]];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.Accept};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.Accept=function(){return this.$val.Accept();};AC.ptr.prototype.Close=function(){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];b[0]=this;a[0]=false;$r=b[0].dieOnce.Do((function(a,b){return function(){$close(b[0].die);a[0]=true;};})(a,b));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(a[0]){$s=2;continue;}$s=3;continue;case 2:$r=b[0].streamLock.Lock();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=b[0].streams;d=0;e=$keys(c);case 6:if(!(d0){if(J.AddInt32((b.$ptr_bucket||(b.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},b))),((e>>0)))>0){b.notifyBucket();}}delete b.streams[$Uint32.keyFor(a)];$r=b.streamLock.Unlock();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.streamClosed};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.streamClosed=function(a){return this.$val.streamClosed(a);};AC.ptr.prototype.returnTokens=function(a){var a,b;b=this;if(J.AddInt32((b.$ptr_bucket||(b.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},b))),((a>>0)))>0){b.notifyBucket();}};AC.prototype.returnTokens=function(a){return this.$val.returnTokens(a);};AC.ptr.prototype.recvLoop=function(){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=AS.zero();c=AS.zero();case 1:case 3:if(!(J.LoadInt32((a.$ptr_bucket||(a.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},a))))<=0&&!a.IsClosed())){$s=4;continue;}e=$select([[a.bucketNotify],[a.die]]);$s=5;case 5:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;if(d[0]===0){}else if(d[0]===1){$s=-1;return;}$s=3;continue;case 4:g=E.ReadFull(a.conn,new AJ(b));$s=6;case 6:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[1];if($interfaceIsEqual(h,$ifaceNil)){$s=7;continue;}$s=8;continue;case 7:J.StoreInt32((a.$ptr_dataReady||(a.$ptr_dataReady=new AR(function(){return this.$target.dataReady;},function($v){this.$target.dataReady=$v;},a))),1);if(!((new S($clone(b,S)).Version()===((a.config.Version<<24>>>24))))){$s=10;continue;}$s=11;continue;case 10:$r=a.notifyProtoError($pkg.ErrInvalidProtocol);$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 11:i=new S($clone(b,S)).StreamID();j=new S($clone(b,S)).Cmd();if(j===(3)){$s=14;continue;}if(j===(0)){$s=15;continue;}if(j===(1)){$s=16;continue;}if(j===(2)){$s=17;continue;}if(j===(4)){$s=18;continue;}$s=19;continue;case 14:$s=20;continue;case 15:$r=a.streamLock.Lock();$s=21;case 21:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}k=(l=a.streams[$Uint32.keyFor(i)],l!==undefined?[l.v,true]:[AO.nil,false]);m=k[1];if(!m){$s=22;continue;}$s=23;continue;case 22:n=AG(i,a.config.MaxFrameSize,a);o=i;(a.streams||$throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(o)]={k:o,v:n};q=$select([[a.chAccepts,n],[a.die]]);$s=24;case 24:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;if(p[0]===0){}else if(p[0]===1){}case 23:$r=a.streamLock.Unlock();$s=25;case 25:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=20;continue;case 16:$r=a.streamLock.Lock();$s=26;case 26:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}r=(s=a.streams[$Uint32.keyFor(i)],s!==undefined?[s.v,true]:[AO.nil,false]);t=r[0];u=r[1];if(u){$s=27;continue;}$s=28;continue;case 27:$r=t.fin();$s=29;case 29:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}t.notifyReadEvent();case 28:$r=a.streamLock.Unlock();$s=30;case 30:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=20;continue;case 17:if(new S($clone(b,S)).Length()>0){$s=31;continue;}$s=32;continue;case 31:v=K.Get(((new S($clone(b,S)).Length()>>0)));$s=33;case 33:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}w=v;y=E.ReadFull(a.conn,w);$s=34;case 34:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;z=x[0];aa=x[1];if($interfaceIsEqual(aa,$ifaceNil)){$s=35;continue;}$s=36;continue;case 35:$r=a.streamLock.Lock();$s=38;case 38:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}ab=(ac=a.streams[$Uint32.keyFor(i)],ac!==undefined?[ac.v,true]:[AO.nil,false]);ad=ab[0];ae=ab[1];if(ae){$s=39;continue;}$s=40;continue;case 39:af=ad.pushBytes(w);$s=41;case 41:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}af;J.AddInt32((a.$ptr_bucket||(a.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},a))),-((z>>0)));ad.notifyReadEvent();case 40:$r=a.streamLock.Unlock();$s=42;case 42:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=37;continue;case 36:$r=a.notifyReadError(aa);$s=43;case 43:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 37:case 32:$s=20;continue;case 18:ah=E.ReadFull(a.conn,new AJ(c));$s=44;case 44:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ag=ah;ai=ag[1];if($interfaceIsEqual(ai,$ifaceNil)){$s=45;continue;}$s=46;continue;case 45:$r=a.streamLock.Lock();$s=48;case 48:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}aj=(ak=a.streams[$Uint32.keyFor(i)],ak!==undefined?[ak.v,true]:[AO.nil,false]);al=aj[0];am=aj[1];if(am){al.update(new T($clone(c,T)).Consumed(),new T($clone(c,T)).Window());}$r=a.streamLock.Unlock();$s=49;case 49:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=47;continue;case 46:$r=a.notifyReadError(ai);$s=50;case 50:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 47:$s=20;continue;case 19:$r=a.notifyProtoError($pkg.ErrInvalidProtocol);$s=51;case 51:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 20:case 13:$s=9;continue;case 8:$r=a.notifyReadError(h);$s=52;case 52:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 9:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.recvLoop};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.recvLoop=function(){return this.$val.recvLoop();};AC.ptr.prototype.keepalive=function(){var a,b,c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;b=G.NewTicker(a.config.KeepAliveInterval);c=G.NewTicker(a.config.KeepAliveTimeout);$deferred.push([$methodVal(b,"Stop"),[]]);$deferred.push([$methodVal(c,"Stop"),[]]);case 1:e=$select([[b.C],[c.C],[a.die]]);$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;if(d[0]===0){$s=4;continue;}if(d[0]===1){$s=5;continue;}if(d[0]===2){$s=6;continue;}$s=7;continue;case 4:f=a.writeFrameInternal($clone(R(((a.config.Version<<24>>>24)),3,0),Q),b.C,new $Uint64(0,0));$s=8;case 8:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;a.notifyBucket();$s=7;continue;case 5:if(!J.CompareAndSwapInt32((a.$ptr_dataReady||(a.$ptr_dataReady=new AR(function(){return this.$target.dataReady;},function($v){this.$target.dataReady=$v;},a))),1,0)){$s=9;continue;}$s=10;continue;case 9:if(J.LoadInt32((a.$ptr_bucket||(a.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},a))))>0){$s=11;continue;}$s=12;continue;case 11:g=a.Close();$s=13;case 13:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g;$s=-1;return;case 12:case 10:$s=7;continue;case 6:$s=-1;return;case 7:$s=1;continue;case 2:$s=-1;return;}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AC.ptr.prototype.keepalive};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AC.prototype.keepalive=function(){return this.$val.keepalive();};AC.ptr.prototype.shaperLoop=function(){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=this;a[0]=AE.nil;c=new Z.ptr(new $Uint64(0,0),new Q.ptr(0,0,0,AJ.nil),$chanNil);d=$chanNil;case 1:if(a[0].$length>0){$s=3;continue;}$s=4;continue;case 3:d=b.writes;e=H.Pop((a.$ptr||(a.$ptr=new AT(function(){return this.$target[0];},function($v){this.$target[0]=$v;},a))));$s=6;case 6:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}Z.copy(c,$assertType(e,Z));$s=5;continue;case 4:d=$chanNil;case 5:g=$select([[b.die],[b.shaper],[d,$clone(c,Z)]]);$s=7;case 7:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;if(f[0]===0){$s=8;continue;}if(f[0]===1){$s=9;continue;}if(f[0]===2){$s=10;continue;}$s=11;continue;case 8:$s=-1;return;case 9:h=$clone(f[1][0],Z);if(!(d===$chanNil)){$s=12;continue;}$s=13;continue;case 12:$r=H.Push((a.$ptr||(a.$ptr=new AT(function(){return this.$target[0];},function($v){this.$target[0]=$v;},a))),new c.constructor.elem(c));$s=14;case 14:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 13:$r=H.Push((a.$ptr||(a.$ptr=new AT(function(){return this.$target[0];},function($v){this.$target[0]=$v;},a))),new h.constructor.elem(h));$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=11;continue;case 10:case 11:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.shaperLoop};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.shaperLoop=function(){return this.$val.shaperLoop();};AC.ptr.prototype.sendLoop=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=AJ.nil;c=0;d=$ifaceNil;e=AU.nil;f=$assertType(a.conn,AB,true);g=f[0];h=f[1];if(h){b=$makeSlice(AJ,8);e=$makeSlice(AU,2);}else{b=$makeSlice(AJ,65544);}case 1:j=$select([[a.die],[a.writes]]);$s=3;case 3:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;if(i[0]===0){$s=4;continue;}if(i[0]===1){$s=5;continue;}$s=6;continue;case 4:$s=-1;return;case 5:k=$clone(i[1][0],Z);(0>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0]=k.frame.ver);(1>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+1]=k.frame.cmd);$clone(C.LittleEndian,C.littleEndian).PutUint16($subslice(b,2),((k.frame.data.$length<<16>>>16)));$clone(C.LittleEndian,C.littleEndian).PutUint32($subslice(b,4),k.frame.sid);if(e.$length>0){$s=7;continue;}$s=8;continue;case 7:(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=$subslice(b,0,8));(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]=k.frame.data);m=g.WriteBuffers(e);$s=10;case 10:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;c=l[0];d=l[1];$s=9;continue;case 8:$copySlice($subslice(b,8),k.frame.data);o=a.conn.Write($subslice(b,0,(8+k.frame.data.$length>>0)));$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;c=n[0];d=n[1];case 9:c=c-(8)>>0;if(c<0){c=0;}p=new AA.ptr(c,d);$r=$send(k.result,$clone($clone(p,AA),AA));$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$close(k.result);if(!($interfaceIsEqual(d,$ifaceNil))){$s=13;continue;}$s=14;continue;case 13:$r=a.notifyWriteError(d);$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 14:case 6:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.sendLoop};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.sendLoop=function(){return this.$val.sendLoop();};AC.ptr.prototype.writeFrame=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;f=d.writeFrameInternal($clone(a,Q),$chanNil,new $Uint64(0,0));$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.writeFrame};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.writeFrame=function(a){return this.$val.writeFrame(a);};AC.ptr.prototype.writeFrameInternal=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=new Z.ptr(c,$clone(a,Q),new $Chan(AA,1));g=$select([[d.shaper,$clone(e,Z)],[d.die],[d.chSocketWriteError],[b]]);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;if(f[0]===0){$s=2;continue;}if(f[0]===1){$s=3;continue;}if(f[0]===2){$s=4;continue;}if(f[0]===3){$s=5;continue;}$s=6;continue;case 2:$s=6;continue;case 3:$s=-1;return[0,E.ErrClosedPipe];case 4:$s=-1;return[0,$assertType(d.socketWriteError.Load(),$error)];case 5:$s=-1;return[0,$pkg.ErrTimeout];case 6:i=$select([[e.result],[d.die],[d.chSocketWriteError],[b]]);$s=7;case 7:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;if(h[0]===0){j=$clone(h[1][0],AA);$s=-1;return[j.n,j.err];}else if(h[0]===1){$s=-1;return[0,E.ErrClosedPipe];}else if(h[0]===2){$s=-1;return[0,$assertType(d.socketWriteError.Load(),$error)];}else if(h[0]===3){$s=-1;return[0,$pkg.ErrTimeout];}$s=-1;return[0,$ifaceNil];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.writeFrameInternal};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.writeFrameInternal=function(a,b,c){return this.$val.writeFrameInternal(a,b,c);};AE.prototype.Len=function(){var a;a=this;return a.$length;};$ptrType(AE).prototype.Len=function(){return this.$get().Len();};AE.prototype.Less=function(a,b){var a,b,c,d,e;c=this;return(d=((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]).prio,e=((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]).prio,(d.$high=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]),Z);e=$clone(((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]),Z);Z.copy(((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]),d);Z.copy(((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]),e);};$ptrType(AE).prototype.Swap=function(a,b){return this.$get().Swap(a,b);};$ptrType(AE).prototype.Push=function(a){var a,b;b=this;b.$set($append(b.$get(),$assertType(a,Z)));};$ptrType(AE).prototype.Pop=function(){var a,b,c,d,e;a=this;b=a.$get();c=b.$length;e=$clone((d=c-1>>0,((d<0||d>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+d])),Z);a.$set($subslice(b,0,(c-1>>0)));return new e.constructor.elem(e);};AG=function(a,b,c){var a,b,c,d;d=new AF.ptr(0,AM.nil,AU.nil,AU.nil,new B.Mutex.ptr(0,0),0,$chanNil,$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),new J.Value.ptr($ifaceNil),new J.Value.ptr($ifaceNil),0,0,0,0,0,$chanNil);d.id=a;d.chReadEvent=new $Chan(AN,1);d.chUpdate=new $Chan(AN,1);d.frameSize=b;d.sess=c;d.die=new $Chan(AN,0);d.chFinEvent=new $Chan(AN,0);d.peerWindow=262144;return d;};AF.ptr.prototype.ID=function(){var a;a=this;return a.id;};AF.prototype.ID=function(){return this.$val.ID();};AF.ptr.prototype.Read=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;case 1:f=d.tryRead(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];if($interfaceIsEqual(c,$pkg.ErrWouldBlock)){$s=4;continue;}$s=5;continue;case 4:g=d.waitRead();$s=7;case 7:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if(!($interfaceIsEqual(h,$ifaceNil))){i=0;j=h;b=i;c=j;$s=-1;return[b,c];}$s=6;continue;case 5:k=b;l=c;b=k;c=l;$s=-1;return[b,c];case 6:$s=1;continue;case 2:$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.Read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.Read=function(a){return this.$val.Read(a);};AF.ptr.prototype.tryRead=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if(d.sess.config.Version===2){$s=1;continue;}$s=2;continue;case 1:f=d.tryReadv2(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];case 2:if(a.$length===0){g=0;h=$ifaceNil;b=g;c=h;$s=-1;return[b,c];}$r=d.bufferLock.Lock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){b=$copySlice(a,(i=d.buffers,(0>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+0])));(k=d.buffers,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]=$subslice((j=d.buffers,(0>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+0])),b)));if((l=d.buffers,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])).$length===0){(m=d.buffers,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0]=AJ.nil));d.buffers=$subslice(d.buffers,1);K.Put((n=d.heads,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0])));d.heads=$subslice(d.heads,1);}}$r=d.bufferLock.Unlock();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(b>0){d.sess.returnTokens(b);o=b;p=$ifaceNil;b=o;c=p;$s=-1;return[b,c];}q=$select([[d.die],[]]);if(q[0]===0){r=0;s=E.EOF;b=r;c=s;$s=-1;return[b,c];}else if(q[0]===1){t=0;u=$pkg.ErrWouldBlock;b=t;c=u;$s=-1;return[b,c];}$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.tryRead};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.tryRead=function(a){return this.$val.tryRead(a);};AF.ptr.prototype.tryReadv2=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if(a.$length===0){e=0;f=$ifaceNil;b=e;c=f;$s=-1;return[b,c];}g=0;$r=d.bufferLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){b=$copySlice(a,(h=d.buffers,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0])));(j=d.buffers,(0>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+0]=$subslice((i=d.buffers,(0>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+0])),b)));if((k=d.buffers,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])).$length===0){(l=d.buffers,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0]=AJ.nil));d.buffers=$subslice(d.buffers,1);K.Put((m=d.heads,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])));d.heads=$subslice(d.heads,1);}}d.numRead=d.numRead+(((b>>>0)))>>>0;d.incr=d.incr+(((b>>>0)))>>>0;if(d.incr>=(((n=d.sess.config.MaxStreamBuffer/2,(n===n&&n!==1/0&&n!==-1/0)?n>>0:$throwRuntimeError("integer divide by zero"))>>>0))||(d.numRead===((b>>>0)))){g=d.numRead;d.incr=0;}$r=d.bufferLock.Unlock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(b>0){$s=3;continue;}$s=4;continue;case 3:d.sess.returnTokens(b);if(g>0){$s=5;continue;}$s=6;continue;case 5:o=d.sendWindowUpdate(g);$s=8;case 8:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}p=o;q=b;r=p;b=q;c=r;$s=-1;return[b,c];case 6:s=b;t=$ifaceNil;b=s;c=t;$s=-1;return[b,c];case 7:case 4:u=$select([[d.die],[]]);if(u[0]===0){v=0;w=E.EOF;b=v;c=w;$s=-1;return[b,c];}else if(u[0]===1){x=0;y=$pkg.ErrWouldBlock;b=x;c=y;$s=-1;return[b,c];}$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.tryReadv2};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.tryReadv2=function(a){return this.$val.tryReadv2(a);};AF.ptr.prototype.WriteTo=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=new $Int64(0,0);c=$ifaceNil;d=this;if(d.sess.config.Version===2){$s=1;continue;}$s=2;continue;case 1:f=d.writeTov2(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];case 2:case 4:g=AJ.nil;$r=d.bufferLock.Lock();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){g=(h=d.buffers,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0]));d.buffers=$subslice(d.buffers,1);d.heads=$subslice(d.heads,1);}$r=d.bufferLock.Unlock();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(!(g===AJ.nil)){$s=8;continue;}$s=9;continue;case 8:j=a.Write(g);$s=11;case 11:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[0];l=i[1];d.sess.returnTokens(g.$length);K.Put(g);if(k>0){b=(m=(new $Int64(0,k)),new $Int64(b.$high+m.$high,b.$low+m.$low));}if(!($interfaceIsEqual(l,$ifaceNil))){n=b;o=l;b=n;c=o;$s=-1;return[b,c];}$s=10;continue;case 9:p=d.waitRead();$s=12;case 12:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=p;if(!($interfaceIsEqual(q,$ifaceNil))){r=b;s=q;b=r;c=s;$s=-1;return[b,c];}case 10:$s=4;continue;case 5:$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.WriteTo};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.WriteTo=function(a){return this.$val.WriteTo(a);};AF.ptr.prototype.writeTov2=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=new $Int64(0,0);c=$ifaceNil;d=this;case 1:e=0;f=AJ.nil;$r=d.bufferLock.Lock();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){f=(g=d.buffers,(0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0]));d.buffers=$subslice(d.buffers,1);d.heads=$subslice(d.heads,1);}d.numRead=d.numRead+(((f.$length>>>0)))>>>0;d.incr=d.incr+(((f.$length>>>0)))>>>0;if(d.incr>=(((h=d.sess.config.MaxStreamBuffer/2,(h===h&&h!==1/0&&h!==-1/0)?h>>0:$throwRuntimeError("integer divide by zero"))>>>0))||(d.numRead===((f.$length>>>0)))){e=d.numRead;d.incr=0;}$r=d.bufferLock.Unlock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(!(f===AJ.nil)){$s=5;continue;}$s=6;continue;case 5:j=a.Write(f);$s=8;case 8:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[0];l=i[1];d.sess.returnTokens(f.$length);K.Put(f);if(k>0){b=(m=(new $Int64(0,k)),new $Int64(b.$high+m.$high,b.$low+m.$low));}if(!($interfaceIsEqual(l,$ifaceNil))){n=b;o=l;b=n;c=o;$s=-1;return[b,c];}if(e>0){$s=9;continue;}$s=10;continue;case 9:p=d.sendWindowUpdate(e);$s=11;case 11:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=p;if(!($interfaceIsEqual(q,$ifaceNil))){r=b;s=q;b=r;c=s;$s=-1;return[b,c];}case 10:$s=7;continue;case 6:t=d.waitRead();$s=12;case 12:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}u=t;if(!($interfaceIsEqual(u,$ifaceNil))){v=b;w=u;b=v;c=w;$s=-1;return[b,c];}case 7:$s=1;continue;case 2:$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.writeTov2};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.writeTov2=function(a){return this.$val.writeTov2(a);};AF.ptr.prototype.sendWindowUpdate=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;c=AV.nil;d=$chanNil;e=$assertType(b.readDeadline.Load(),G.Time,true);f=$clone(e[0],G.Time);g=e[1];if(g&&!$clone(f,G.Time).IsZero()){c=G.NewTimer(G.Until($clone(f,G.Time)));$deferred.push([$methodVal(c,"Stop"),[]]);d=c.C;}h=$clone(R(((b.sess.config.Version<<24>>>24)),4,b.id),Q);i=AS.zero();$clone(C.LittleEndian,C.littleEndian).PutUint32(new AJ(i),a);$clone(C.LittleEndian,C.littleEndian).PutUint32($subslice(new AJ(i),4),((b.sess.config.MaxStreamBuffer>>>0)));h.data=new AJ(i);k=b.sess.writeFrameInternal($clone(h,Q),d,new $Uint64(0,0));$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;l=j[1];$s=-1;return l;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.sendWindowUpdate};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.sendWindowUpdate=function(a){return this.$val.sendWindowUpdate(a);};AF.ptr.prototype.waitRead=function(){var a,b,c,d,e,f,g,h,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;b=AV.nil;c=$chanNil;d=$assertType(a.readDeadline.Load(),G.Time,true);e=$clone(d[0],G.Time);f=d[1];if(f&&!$clone(e,G.Time).IsZero()){b=G.NewTimer(G.Until($clone(e,G.Time)));$deferred.push([$methodVal(b,"Stop"),[]]);c=b.C;}h=$select([[a.chReadEvent],[a.chFinEvent],[a.sess.chSocketReadError],[a.sess.chProtoError],[c],[a.die]]);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;if(g[0]===0){$s=2;continue;}if(g[0]===1){$s=3;continue;}if(g[0]===2){$s=4;continue;}if(g[0]===3){$s=5;continue;}if(g[0]===4){$s=6;continue;}if(g[0]===5){$s=7;continue;}$s=8;continue;case 2:$s=-1;return $ifaceNil;case 3:$r=a.bufferLock.Lock();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(a.bufferLock,"Unlock"),[]]);if(a.buffers.$length>0){$s=-1;return $ifaceNil;}$s=-1;return E.EOF;case 4:$s=-1;return $assertType(a.sess.socketReadError.Load(),$error);case 5:$s=-1;return $assertType(a.sess.protoError.Load(),$error);case 6:$s=-1;return $pkg.ErrTimeout;case 7:$s=-1;return E.ErrClosedPipe;case 8:$s=-1;return $ifaceNil;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.waitRead};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.waitRead=function(){return this.$val.waitRead();};AF.ptr.prototype.Write=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=0;c=$ifaceNil;d=this;if(d.sess.config.Version===2){$s=1;continue;}$s=2;continue;case 1:f=d.writeV2(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];case 2:g=$chanNil;h=$assertType(d.writeDeadline.Load(),G.Time,true);i=$clone(h[0],G.Time);j=h[1];if(j&&!$clone(i,G.Time).IsZero()){k=G.NewTimer(G.Until($clone(i,G.Time)));$deferred.push([$methodVal(k,"Stop"),[]]);g=k.C;}l=$select([[d.die],[]]);if(l[0]===0){m=0;n=E.ErrClosedPipe;b=m;c=n;$s=-1;return[b,c];}else if(l[0]===1){}o=0;p=$clone(R(((d.sess.config.Version<<24>>>24)),2,d.id),Q);q=a;case 4:if(!(q.$length>0)){$s=5;continue;}r=q.$length;if(r>d.frameSize){r=d.frameSize;}p.data=$subslice(q,0,r);q=$subslice(q,r);t=d.sess.writeFrameInternal($clone(p,Q),g,(new $Uint64(0,d.numWritten)));$s=6;case 6:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}s=t;u=s[0];v=s[1];d.numWritten=d.numWritten+(1)>>>0;o=o+(u)>>0;if(!($interfaceIsEqual(v,$ifaceNil))){w=o;x=v;b=w;c=x;$s=-1;return[b,c];}$s=4;continue;case 5:y=o;z=$ifaceNil;b=y;c=z;$s=-1;return[b,c];}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return[b,c];}if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.Write};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.Write=function(a){return this.$val.Write(a);};AF.ptr.prototype.writeV2=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=0;c=$ifaceNil;d=this;if(a.$length===0){e=0;f=$ifaceNil;b=e;c=f;$s=-1;return[b,c];}g=$select([[d.die],[]]);if(g[0]===0){h=0;i=E.ErrClosedPipe;b=h;c=i;$s=-1;return[b,c];}else if(g[0]===1){}j=$chanNil;k=$assertType(d.writeDeadline.Load(),G.Time,true);l=$clone(k[0],G.Time);m=k[1];if(m&&!$clone(l,G.Time).IsZero()){n=G.NewTimer(G.Until($clone(l,G.Time)));$deferred.push([$methodVal(n,"Stop"),[]]);j=n.C;}o=0;p=$clone(R(((d.sess.config.Version<<24>>>24)),2,d.id),Q);case 1:q=AJ.nil;r=(((J.LoadUint32((d.$ptr_numWritten||(d.$ptr_numWritten=new AW(function(){return this.$target.numWritten;},function($v){this.$target.numWritten=$v;},d))))-J.LoadUint32((d.$ptr_peerConsumed||(d.$ptr_peerConsumed=new AW(function(){return this.$target.peerConsumed;},function($v){this.$target.peerConsumed=$v;},d))))>>>0)>>0));if(r<0){s=0;t=$pkg.ErrConsumed;b=s;c=t;$s=-1;return[b,c];}u=((J.LoadUint32((d.$ptr_peerWindow||(d.$ptr_peerWindow=new AW(function(){return this.$target.peerWindow;},function($v){this.$target.peerWindow=$v;},d))))>>0))-r>>0;if(u>0){$s=3;continue;}$s=4;continue;case 3:if(u>((a.$length>>0))){q=a;a=AJ.nil;}else{q=$subslice(a,0,u);a=$subslice(a,u);}case 5:if(!(q.$length>0)){$s=6;continue;}v=q.$length;if(v>d.frameSize){v=d.frameSize;}p.data=$subslice(q,0,v);q=$subslice(q,v);x=d.sess.writeFrameInternal($clone(p,Q),j,(new $Uint64(0,J.LoadUint32((d.$ptr_numWritten||(d.$ptr_numWritten=new AW(function(){return this.$target.numWritten;},function($v){this.$target.numWritten=$v;},d)))))));$s=7;case 7:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}w=x;y=w[0];z=w[1];J.AddUint32((d.$ptr_numWritten||(d.$ptr_numWritten=new AW(function(){return this.$target.numWritten;},function($v){this.$target.numWritten=$v;},d))),((v>>>0)));o=o+(y)>>0;if(!($interfaceIsEqual(z,$ifaceNil))){aa=o;ab=z;b=aa;c=ab;$s=-1;return[b,c];}$s=5;continue;case 6:case 4:if(a.$length>0){$s=8;continue;}$s=9;continue;case 8:ad=$select([[d.chFinEvent],[d.die],[j],[d.sess.chSocketWriteError],[d.chUpdate]]);$s=11;case 11:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ac=ad;if(ac[0]===0){ae=0;af=E.EOF;b=ae;c=af;$s=-1;return[b,c];}else if(ac[0]===1){ag=o;ah=E.ErrClosedPipe;b=ag;c=ah;$s=-1;return[b,c];}else if(ac[0]===2){ai=o;aj=$pkg.ErrTimeout;b=ai;c=aj;$s=-1;return[b,c];}else if(ac[0]===3){ak=o;al=$assertType(d.sess.socketWriteError.Load(),$error);b=ak;c=al;$s=-1;return[b,c];}else if(ac[0]===4){$s=1;continue;}$s=10;continue;case 9:am=o;an=$ifaceNil;b=am;c=an;$s=-1;return[b,c];case 10:$s=1;continue;case 2:$s=-1;return[b,c];}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return[b,c];}if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.writeV2};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.writeV2=function(a){return this.$val.writeV2(a);};AF.ptr.prototype.Close=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];b[0]=this;a[0]=false;c=$ifaceNil;$r=b[0].dieOnce.Do((function(a,b){return function(){$close(b[0].die);a[0]=true;};})(a,b));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(a[0]){$s=2;continue;}$s=3;continue;case 2:e=b[0].sess.writeFrame($clone(R(((b[0].sess.config.Version<<24>>>24)),1,b[0].id),Q));$s=5;case 5:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;c=d[1];$r=b[0].sess.streamClosed(b[0].id);$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c;case 3:$s=-1;return E.ErrClosedPipe;case 4:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.Close};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.Close=function(){return this.$val.Close();};AF.ptr.prototype.GetDieCh=function(){var a;a=this;return a.die;};AF.prototype.GetDieCh=function(){return this.$val.GetDieCh();};AF.ptr.prototype.SetReadDeadline=function(a){var a,b;b=this;b.readDeadline.Store(new a.constructor.elem(a));b.notifyReadEvent();return $ifaceNil;};AF.prototype.SetReadDeadline=function(a){return this.$val.SetReadDeadline(a);};AF.ptr.prototype.SetWriteDeadline=function(a){var a,b;b=this;b.writeDeadline.Store(new a.constructor.elem(a));return $ifaceNil;};AF.prototype.SetWriteDeadline=function(a){return this.$val.SetWriteDeadline(a);};AF.ptr.prototype.SetDeadline=function(a){var a,b,c,d;b=this;c=b.SetReadDeadline($clone(a,G.Time));if(!($interfaceIsEqual(c,$ifaceNil))){return c;}d=b.SetWriteDeadline($clone(a,G.Time));if(!($interfaceIsEqual(d,$ifaceNil))){return d;}return $ifaceNil;};AF.prototype.SetDeadline=function(a){return this.$val.SetDeadline(a);};AF.ptr.prototype.sessionClose=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];a[0]=this;$r=a[0].dieOnce.Do((function(a){return function(){$close(a[0].die);};})(a));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.sessionClose};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.sessionClose=function(){return this.$val.sessionClose();};AF.ptr.prototype.LocalAddr=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=$assertType(a.sess.conn,AP,true);c=b[0];d=b[1];if(d){$s=1;continue;}$s=2;continue;case 1:e=c.LocalAddr();$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.LocalAddr};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.LocalAddr=function(){return this.$val.LocalAddr();};AF.ptr.prototype.RemoteAddr=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=$assertType(a.sess.conn,AQ,true);c=b[0];d=b[1];if(d){$s=1;continue;}$s=2;continue;case 1:e=c.RemoteAddr();$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.RemoteAddr};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.RemoteAddr=function(){return this.$val.RemoteAddr();};AF.ptr.prototype.pushBytes=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;$r=d.bufferLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d.buffers=$append(d.buffers,a);d.heads=$append(d.heads,a);$r=d.bufferLock.Unlock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.pushBytes};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.pushBytes=function(a){return this.$val.pushBytes(a);};AF.ptr.prototype.recycleTokens=function(){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=0;b=this;$r=b.bufferLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=b.buffers;d=0;while(true){if(!(d=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+e])).$length)>>0;K.Put((g=b.heads,((e<0||e>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+e])));d++;}b.buffers=AU.nil;b.heads=AU.nil;$r=b.bufferLock.Unlock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return a;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.recycleTokens};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.recycleTokens=function(){return this.$val.recycleTokens();};AF.ptr.prototype.notifyReadEvent=function(){var a,b,$r;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$r=$f.$r;}a=this;b=$select([[a.chReadEvent,new AN.ptr()],[]]);if(b[0]===0){}else if(b[0]===1){}if($f===undefined){$f={$blk:AF.ptr.prototype.notifyReadEvent};}$f.a=a;$f.b=b;$f.$r=$r;return $f;};AF.prototype.notifyReadEvent=function(){return this.$val.notifyReadEvent();};AF.ptr.prototype.update=function(a,b){var a,b,c,d,$r;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$r=$f.$r;}c=this;J.StoreUint32((c.$ptr_peerConsumed||(c.$ptr_peerConsumed=new AW(function(){return this.$target.peerConsumed;},function($v){this.$target.peerConsumed=$v;},c))),a);J.StoreUint32((c.$ptr_peerWindow||(c.$ptr_peerWindow=new AW(function(){return this.$target.peerWindow;},function($v){this.$target.peerWindow=$v;},c))),b);d=$select([[c.chUpdate,new AN.ptr()],[]]);if(d[0]===0){}else if(d[0]===1){}if($f===undefined){$f={$blk:AF.ptr.prototype.update};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$r=$r;return $f;};AF.prototype.update=function(a,b){return this.$val.update(a,b);};AF.ptr.prototype.fin=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];a[0]=this;$r=a[0].finEventOnce.Do((function(a){return function(){$close(a[0].chFinEvent);};})(a));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.fin};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.fin=function(){return this.$val.fin();};AH.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([$Int],[AJ],false)},{prop:"Put",name:"Put",pkg:"",typ:$funcType([AJ],[$error],false)}];S.methods=[{prop:"Version",name:"Version",pkg:"",typ:$funcType([],[$Uint8],false)},{prop:"Cmd",name:"Cmd",pkg:"",typ:$funcType([],[$Uint8],false)},{prop:"Length",name:"Length",pkg:"",typ:$funcType([],[$Uint16],false)},{prop:"StreamID",name:"StreamID",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];T.methods=[{prop:"Consumed",name:"Consumed",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"Window",name:"Window",pkg:"",typ:$funcType([],[$Uint32],false)}];AM.methods=[{prop:"OpenStream",name:"OpenStream",pkg:"",typ:$funcType([],[AO,$error],false)},{prop:"Open",name:"Open",pkg:"",typ:$funcType([],[E.ReadWriteCloser,$error],false)},{prop:"AcceptStream",name:"AcceptStream",pkg:"",typ:$funcType([],[AO,$error],false)},{prop:"Accept",name:"Accept",pkg:"",typ:$funcType([],[E.ReadWriteCloser,$error],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"notifyBucket",name:"notifyBucket",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"notifyReadError",name:"notifyReadError",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$error],[],false)},{prop:"notifyWriteError",name:"notifyWriteError",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$error],[],false)},{prop:"notifyProtoError",name:"notifyProtoError",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$error],[],false)},{prop:"IsClosed",name:"IsClosed",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"NumStreams",name:"NumStreams",pkg:"",typ:$funcType([],[$Int],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"streamClosed",name:"streamClosed",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Uint32],[],false)},{prop:"returnTokens",name:"returnTokens",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Int],[],false)},{prop:"recvLoop",name:"recvLoop",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"keepalive",name:"keepalive",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"shaperLoop",name:"shaperLoop",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"sendLoop",name:"sendLoop",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"writeFrame",name:"writeFrame",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([Q],[$Int,$error],false)},{prop:"writeFrameInternal",name:"writeFrameInternal",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([Q,AY,$Uint64],[$Int,$error],false)}];AE.methods=[{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)}];AT.methods=[{prop:"Push",name:"Push",pkg:"",typ:$funcType([$emptyInterface],[],false)},{prop:"Pop",name:"Pop",pkg:"",typ:$funcType([],[$emptyInterface],false)}];AO.methods=[{prop:"ID",name:"ID",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([AJ],[$Int,$error],false)},{prop:"tryRead",name:"tryRead",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"tryReadv2",name:"tryReadv2",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"WriteTo",name:"WriteTo",pkg:"",typ:$funcType([E.Writer],[$Int64,$error],false)},{prop:"writeTov2",name:"writeTov2",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([E.Writer],[$Int64,$error],false)},{prop:"sendWindowUpdate",name:"sendWindowUpdate",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Uint32],[$error],false)},{prop:"waitRead",name:"waitRead",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([AJ],[$Int,$error],false)},{prop:"writeV2",name:"writeV2",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"GetDieCh",name:"GetDieCh",pkg:"",typ:$funcType([],[BD],false)},{prop:"SetReadDeadline",name:"SetReadDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"SetWriteDeadline",name:"SetWriteDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"sessionClose",name:"sessionClose",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"pushBytes",name:"pushBytes",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"recycleTokens",name:"recycleTokens",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[$Int],false)},{prop:"notifyReadEvent",name:"notifyReadEvent",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"update",name:"update",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Uint32,$Uint32],[],false)},{prop:"fin",name:"fin",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)}];N.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"buffers",name:"buffers",embedded:false,exported:false,typ:AI,tag:""}]);Q.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"ver",name:"ver",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"cmd",name:"cmd",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"sid",name:"sid",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"data",name:"data",embedded:false,exported:false,typ:AJ,tag:""}]);S.init($Uint8,8);T.init($Uint8,8);U.init("",[{prop:"Version",name:"Version",embedded:false,exported:true,typ:$Int,tag:""},{prop:"KeepAliveDisabled",name:"KeepAliveDisabled",embedded:false,exported:true,typ:$Bool,tag:""},{prop:"KeepAliveInterval",name:"KeepAliveInterval",embedded:false,exported:true,typ:G.Duration,tag:""},{prop:"KeepAliveTimeout",name:"KeepAliveTimeout",embedded:false,exported:true,typ:G.Duration,tag:""},{prop:"MaxFrameSize",name:"MaxFrameSize",embedded:false,exported:true,typ:$Int,tag:""},{prop:"MaxReceiveBuffer",name:"MaxReceiveBuffer",embedded:false,exported:true,typ:$Int,tag:""},{prop:"MaxStreamBuffer",name:"MaxStreamBuffer",embedded:false,exported:true,typ:$Int,tag:""}]);Z.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"prio",name:"prio",embedded:false,exported:false,typ:$Uint64,tag:""},{prop:"frame",name:"frame",embedded:false,exported:false,typ:Q,tag:""},{prop:"result",name:"result",embedded:false,exported:false,typ:AX,tag:""}]);AA.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"n",name:"n",embedded:false,exported:false,typ:$Int,tag:""},{prop:"err",name:"err",embedded:false,exported:false,typ:$error,tag:""}]);AB.init([{prop:"WriteBuffers",name:"WriteBuffers",pkg:"",typ:$funcType([AU],[$Int,$error],false)}]);AC.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"conn",name:"conn",embedded:false,exported:false,typ:E.ReadWriteCloser,tag:""},{prop:"config",name:"config",embedded:false,exported:false,typ:AL,tag:""},{prop:"nextStreamID",name:"nextStreamID",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"nextStreamIDLock",name:"nextStreamIDLock",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"bucket",name:"bucket",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"bucketNotify",name:"bucketNotify",embedded:false,exported:false,typ:AZ,tag:""},{prop:"streams",name:"streams",embedded:false,exported:false,typ:BA,tag:""},{prop:"streamLock",name:"streamLock",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"die",name:"die",embedded:false,exported:false,typ:AZ,tag:""},{prop:"dieOnce",name:"dieOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"socketReadError",name:"socketReadError",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"socketWriteError",name:"socketWriteError",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"chSocketReadError",name:"chSocketReadError",embedded:false,exported:false,typ:AZ,tag:""},{prop:"chSocketWriteError",name:"chSocketWriteError",embedded:false,exported:false,typ:AZ,tag:""},{prop:"socketReadErrorOnce",name:"socketReadErrorOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"socketWriteErrorOnce",name:"socketWriteErrorOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"protoError",name:"protoError",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"chProtoError",name:"chProtoError",embedded:false,exported:false,typ:AZ,tag:""},{prop:"protoErrorOnce",name:"protoErrorOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"chAccepts",name:"chAccepts",embedded:false,exported:false,typ:BB,tag:""},{prop:"dataReady",name:"dataReady",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"goAway",name:"goAway",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"deadline",name:"deadline",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"shaper",name:"shaper",embedded:false,exported:false,typ:BC,tag:""},{prop:"writes",name:"writes",embedded:false,exported:false,typ:BC,tag:""}]);AE.init(Z);AF.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"id",name:"id",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"sess",name:"sess",embedded:false,exported:false,typ:AM,tag:""},{prop:"buffers",name:"buffers",embedded:false,exported:false,typ:AU,tag:""},{prop:"heads",name:"heads",embedded:false,exported:false,typ:AU,tag:""},{prop:"bufferLock",name:"bufferLock",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"frameSize",name:"frameSize",embedded:false,exported:false,typ:$Int,tag:""},{prop:"chReadEvent",name:"chReadEvent",embedded:false,exported:false,typ:AZ,tag:""},{prop:"die",name:"die",embedded:false,exported:false,typ:AZ,tag:""},{prop:"dieOnce",name:"dieOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"chFinEvent",name:"chFinEvent",embedded:false,exported:false,typ:AZ,tag:""},{prop:"finEventOnce",name:"finEventOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"readDeadline",name:"readDeadline",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"writeDeadline",name:"writeDeadline",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"numRead",name:"numRead",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"numWritten",name:"numWritten",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"incr",name:"incr",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"peerConsumed",name:"peerConsumed",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"peerWindow",name:"peerWindow",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"chUpdate",name:"chUpdate",embedded:false,exported:false,typ:AZ,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=H.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=I.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=J.$init();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}K=AH.nil;L=$toNativeArray($kindUint8,[0,9,1,10,13,21,2,29,11,14,16,18,22,25,3,30,8,12,20,28,15,17,24,7,19,27,23,6,26,5,4,31]);$pkg.ErrInvalidProtocol=A.New("invalid protocol");$pkg.ErrConsumed=A.New("peer consumed more than sent");$pkg.ErrGoAway=A.New("stream id overflows, should start a new connection");$pkg.ErrTimeout=A.New("timeout");$pkg.ErrWouldBlock=A.New("operation would block on IO");M();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/v2fly/BrowserBridge/bridge"]=(function(){var $pkg={},$init,A,F,D,E,B,C,G,I,J,H;A=$packages["fmt"];F=$packages["github.com/v2fly/BrowserBridge/proto"];D=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket"];E=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux"];B=$packages["io"];C=$packages["time"];G=$pkg.Settings=$newType(0,$kindStruct,"bridge.Settings",true,"github.com/v2fly/BrowserBridge/bridge",true,function(DialAddr_){this.$val=this;if(arguments.length===0){this.DialAddr="";return;}this.DialAddr=DialAddr_;});I=$sliceType($emptyInterface);J=$ptrType(E.Config);H=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];case 1:b=C.NewTimer(new C.Duration(0,1000000000));c=(function(a){return function $b(){var c,d,e,f,g,h,i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=D.Dial(a[0].DialAddr);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:g=A.Println(new I([f,new $String(a[0].DialAddr)]));$s=4;case 4:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g;$s=-1;return;case 3:i=E.Client(e,J.nil);$s=5;case 5:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;j=h[0];f=h[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return;}case 6:k=[k];m=j.Accept();$s=8;case 8:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;k[0]=l[0];n=l[1];if(!($interfaceIsEqual(n,$ifaceNil))){$s=9;continue;}$s=10;continue;case 9:o=A.Println(new I([n]));$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}o;$s=-1;return;case 10:$go((function(a,k){return function $b(){var aa,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:q=F.ReadRequest(k[0]);$s=1;case 1:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;r=p[0];s=p[1];if(!($interfaceIsEqual(r,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:t=A.Println(new I([r]));$s=4;case 4:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}t;$s=-1;return;case 3:v=D.Dial(s.Destination);$s=5;case 5:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}u=v;w=u[0];r=u[1];if(!($interfaceIsEqual(r,$ifaceNil))){$s=6;continue;}$s=7;continue;case 6:x=A.Println(new I([r]));$s=8;case 8:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}x;y=k[0].Close();$s=9;case 9:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}y;$s=-1;return;case 7:$go(B.Copy,[k[0],w]);z=B.Copy(w,k[0]);$s=10;case 10:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}z;aa=k[0].Close();$s=11;case 11:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}aa;$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.aa=aa;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};})(a,k),[]);$s=6;continue;case 7:$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.$s=$s;$f.$r=$r;return $f;};})(a);$r=c();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=$recv(b.C);$s=4;case 4:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d[0];$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Bridge=H;G.init("",[{prop:"DialAddr",name:"DialAddr",embedded:false,exported:true,typ:$String,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["log"]=(function(){var $pkg={},$init,A,E,B,C,D,F,G,Z,AA,AB,AC,AD,I,H,J,R;A=$packages["fmt"];E=$packages["github.com/gopherjs/gopherjs/nosync"];B=$packages["io"];C=$packages["os"];D=$packages["runtime"];F=$packages["time"];G=$pkg.Logger=$newType(0,$kindStruct,"log.Logger",true,"log",true,function(mu_,prefix_,flag_,out_,buf_){this.$val=this;if(arguments.length===0){this.mu=new E.Mutex.ptr(false);this.prefix="";this.flag=0;this.out=$ifaceNil;this.buf=Z.nil;return;}this.mu=mu_;this.prefix=prefix_;this.flag=flag_;this.out=out_;this.buf=buf_;});Z=$sliceType($Uint8);AA=$arrayType($Uint8,20);AB=$ptrType(Z);AC=$sliceType($emptyInterface);AD=$ptrType(G);H=function(a,b,c){var a,b,c;return new G.ptr(new E.Mutex.ptr(false),b,c,a,Z.nil);};$pkg.New=H;G.ptr.prototype.SetOutput=function(a){var a,b,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;b.mu.Lock();$deferred.push([$methodVal(b.mu,"Unlock"),[]]);b.out=a;}catch(err){$err=err;}finally{$callDeferred($deferred,$err);}};G.prototype.SetOutput=function(a){return this.$val.SetOutput(a);};J=function(a,b,c){var a,b,c,d,e,f,g;d=AA.zero();e=19;while(true){if(!(b>=10||c>1)){break;}c=c-(1)>>0;g=(f=b/10,(f===f&&f!==1/0&&f!==-1/0)?f>>0:$throwRuntimeError("integer divide by zero"));((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=((((48+b>>0)-($imul(g,10))>>0)<<24>>>24)));e=e-(1)>>0;b=g;}((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=(((48+b>>0)<<24>>>24)));a.$set($appendSlice(a.$get(),$subslice(new Z(d),e)));};G.ptr.prototype.formatHeader=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;a.$set($appendSlice(a.$get(),e.prefix));if(!(((e.flag&7)===0))){$s=1;continue;}$s=2;continue;case 1:if(!(((e.flag&32)===0))){F.Time.copy(b,$clone(b,F.Time).UTC());}if(!(((e.flag&1)===0))){$s=3;continue;}$s=4;continue;case 3:g=$clone(b,F.Time).Date();$s=5;case 5:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[0];i=f[1];j=f[2];J(a,h,4);a.$set($append(a.$get(),47));J(a,((i>>0)),2);a.$set($append(a.$get(),47));J(a,j,2);a.$set($append(a.$get(),32));case 4:if(!(((e.flag&6)===0))){$s=6;continue;}$s=7;continue;case 6:l=$clone(b,F.Time).Clock();$s=8;case 8:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}k=l;m=k[0];n=k[1];o=k[2];J(a,m,2);a.$set($append(a.$get(),58));J(a,n,2);a.$set($append(a.$get(),58));J(a,o,2);if(!(((e.flag&4)===0))){a.$set($append(a.$get(),46));J(a,(p=$clone(b,F.Time).Nanosecond()/1000,(p===p&&p!==1/0&&p!==-1/0)?p>>0:$throwRuntimeError("integer divide by zero")),6);}a.$set($append(a.$get(),32));case 7:case 2:if(!(((e.flag&24)===0))){if(!(((e.flag&16)===0))){q=c;r=c.length-1>>0;while(true){if(!(r>0)){break;}if(c.charCodeAt(r)===47){q=$substring(c,(r+1>>0));break;}r=r-(1)>>0;}c=q;}a.$set($appendSlice(a.$get(),c));a.$set($append(a.$get(),58));J(a,d,-1);a.$set($appendSlice(a.$get(),": "));}$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.formatHeader};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.formatHeader=function(a,b,c,d){return this.$val.formatHeader(a,b,c,d);};G.ptr.prototype.Output=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=$clone(F.Now(),F.Time);e="";f=0;c.mu.Lock();$deferred.push([$methodVal(c.mu,"Unlock"),[]]);if(!(((c.flag&24)===0))){c.mu.Unlock();g=false;h=D.Caller(a);e=h[1];f=h[2];g=h[3];if(!g){e="???";f=0;}c.mu.Lock();}c.buf=$subslice(c.buf,0,0);$r=c.formatHeader((c.$ptr_buf||(c.$ptr_buf=new AB(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))),$clone(d,F.Time),e,f);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c.buf=$appendSlice(c.buf,b);if((b.length===0)||!((b.charCodeAt((b.length-1>>0))===10))){c.buf=$append(c.buf,10);}j=c.out.Write(c.buf);$s=2;case 2:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[1];$s=-1;return k;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:G.ptr.prototype.Output};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};G.prototype.Output=function(a,b){return this.$val.Output(a,b);};G.ptr.prototype.Printf=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=A.Sprintf(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=c.Output(2,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Printf};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Printf=function(a,b){return this.$val.Printf(a,b);};G.ptr.prototype.Print=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprint(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Print};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Print=function(a){return this.$val.Print(a);};G.ptr.prototype.Println=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprintln(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Println};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Println=function(a){return this.$val.Println(a);};G.ptr.prototype.Fatal=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprint(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;C.Exit(1);$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Fatal};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Fatal=function(a){return this.$val.Fatal(a);};G.ptr.prototype.Fatalf=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=A.Sprintf(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=c.Output(2,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;C.Exit(1);$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Fatalf};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Fatalf=function(a,b){return this.$val.Fatalf(a,b);};G.ptr.prototype.Fatalln=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprintln(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;C.Exit(1);$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Fatalln};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Fatalln=function(a){return this.$val.Fatalln(a);};G.ptr.prototype.Panic=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprint(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$panic(new $String(d));$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Panic};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Panic=function(a){return this.$val.Panic(a);};G.ptr.prototype.Panicf=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=A.Sprintf(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=c.Output(2,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;$panic(new $String(e));$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Panicf};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Panicf=function(a,b){return this.$val.Panicf(a,b);};G.ptr.prototype.Panicln=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprintln(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$panic(new $String(d));$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Panicln};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Panicln=function(a){return this.$val.Panicln(a);};G.ptr.prototype.Flags=function(){var a,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;a.mu.Lock();$deferred.push([$methodVal(a.mu,"Unlock"),[]]);return a.flag;}catch(err){$err=err;return 0;}finally{$callDeferred($deferred,$err);}};G.prototype.Flags=function(){return this.$val.Flags();};G.ptr.prototype.SetFlags=function(a){var a,b,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;b.mu.Lock();$deferred.push([$methodVal(b.mu,"Unlock"),[]]);b.flag=a;}catch(err){$err=err;}finally{$callDeferred($deferred,$err);}};G.prototype.SetFlags=function(a){return this.$val.SetFlags(a);};G.ptr.prototype.Prefix=function(){var a,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;a.mu.Lock();$deferred.push([$methodVal(a.mu,"Unlock"),[]]);return a.prefix;}catch(err){$err=err;return"";}finally{$callDeferred($deferred,$err);}};G.prototype.Prefix=function(){return this.$val.Prefix();};G.ptr.prototype.SetPrefix=function(a){var a,b,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;b.mu.Lock();$deferred.push([$methodVal(b.mu,"Unlock"),[]]);b.prefix=a;}catch(err){$err=err;}finally{$callDeferred($deferred,$err);}};G.prototype.SetPrefix=function(a){return this.$val.SetPrefix(a);};G.ptr.prototype.Writer=function(){var a,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;a.mu.Lock();$deferred.push([$methodVal(a.mu,"Unlock"),[]]);return a.out;}catch(err){$err=err;return $ifaceNil;}finally{$callDeferred($deferred,$err);}};G.prototype.Writer=function(){return this.$val.Writer();};R=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=A.Sprintln(a);$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;d=I.Output(2,c);$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d;$s=-1;return;}return;}if($f===undefined){$f={$blk:R};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Println=R;AD.methods=[{prop:"SetOutput",name:"SetOutput",pkg:"",typ:$funcType([B.Writer],[],false)},{prop:"formatHeader",name:"formatHeader",pkg:"log",typ:$funcType([AB,F.Time,$String,$Int],[],false)},{prop:"Output",name:"Output",pkg:"",typ:$funcType([$Int,$String],[$error],false)},{prop:"Printf",name:"Printf",pkg:"",typ:$funcType([$String,AC],[],true)},{prop:"Print",name:"Print",pkg:"",typ:$funcType([AC],[],true)},{prop:"Println",name:"Println",pkg:"",typ:$funcType([AC],[],true)},{prop:"Fatal",name:"Fatal",pkg:"",typ:$funcType([AC],[],true)},{prop:"Fatalf",name:"Fatalf",pkg:"",typ:$funcType([$String,AC],[],true)},{prop:"Fatalln",name:"Fatalln",pkg:"",typ:$funcType([AC],[],true)},{prop:"Panic",name:"Panic",pkg:"",typ:$funcType([AC],[],true)},{prop:"Panicf",name:"Panicf",pkg:"",typ:$funcType([$String,AC],[],true)},{prop:"Panicln",name:"Panicln",pkg:"",typ:$funcType([AC],[],true)},{prop:"Flags",name:"Flags",pkg:"",typ:$funcType([],[$Int],false)},{prop:"SetFlags",name:"SetFlags",pkg:"",typ:$funcType([$Int],[],false)},{prop:"Prefix",name:"Prefix",pkg:"",typ:$funcType([],[$String],false)},{prop:"SetPrefix",name:"SetPrefix",pkg:"",typ:$funcType([$String],[],false)},{prop:"Writer",name:"Writer",pkg:"",typ:$funcType([],[B.Writer],false)}];G.init("log",[{prop:"mu",name:"mu",embedded:false,exported:false,typ:E.Mutex,tag:""},{prop:"prefix",name:"prefix",embedded:false,exported:false,typ:$String,tag:""},{prop:"flag",name:"flag",embedded:false,exported:false,typ:$Int,tag:""},{prop:"out",name:"out",embedded:false,exported:false,typ:B.Writer,tag:""},{prop:"buf",name:"buf",embedded:false,exported:false,typ:Z,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}I=H(C.Stderr,"",3);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"]=(function(){var $pkg={},$init,A,B,C,D,E,G,F;A=$packages["fmt"];B=$packages["github.com/gopherjs/gopherjs/js"];C=$packages["github.com/v2fly/BrowserBridge/bridge"];D=$packages["log"];E=$packages["net/url"];G=$sliceType($emptyInterface);F=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=A.Println(new G([new $String("V3")]));$s=1;case 1:if($c){$c=false;a=a.$blk();}if(a&&a.$blk!==undefined){break s;}a;$go((function $b(){var b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=$internalize($global.window.location.href,$String);d=E.Parse(b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:$r=D.Println(new G([f]));$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 3:g=e.Host;h=A.Sprintf("ws://%v/link",new G([new $String(g)]));$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$r=D.Println(new G([new $String(h)]));$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=A.Sprintf("ws://%v/link",new G([new $String(g)]));$s=7;case 7:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}$r=C.Bridge(new C.Settings.ptr(i));$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$global.location.reload();$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;}),[]);$s=-1;return;}return;}if($f===undefined){$f={$blk:F};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if($pkg===$mainPkg){$s=6;continue;}$s=7;continue;case 6:$r=F();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$mainFinished=true;case 7:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); $synthesizeMethods(); var $mainPkg = $packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"]; $packages["runtime"].$init(); From 44151f342055754c4455670fa3b557714a2b7981 Mon Sep 17 00:00:00 2001 From: rurirei <72071920+rurirei@users.noreply.github.com> Date: Fri, 2 Apr 2021 20:11:07 +0800 Subject: [PATCH 51/60] check ctx to fix. (#841) --- functions.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/functions.go b/functions.go index 972fff39e..836c1bb0e 100644 --- a/functions.go +++ b/functions.go @@ -47,15 +47,15 @@ func StartInstance(configFormat string, configBytes []byte) (*Instance, error) { // // v2ray:api:stable func Dial(ctx context.Context, v *Instance, dest net.Destination) (net.Conn, error) { + if FromContext(ctx) == nil { + ctx = context.WithValue(ctx, v2rayKey, v) + } + dispatcher := v.GetFeature(routing.DispatcherType()) if dispatcher == nil { return nil, newError("routing.Dispatcher is not registered in V2Ray core") } - if ctx.Value(v2rayKey) == nil { - ctx = context.WithValue(ctx, v2rayKey, v) - } - r, err := dispatcher.(routing.Dispatcher).Dispatch(ctx, dest) if err != nil { return nil, err @@ -76,6 +76,10 @@ func Dial(ctx context.Context, v *Instance, dest net.Destination) (net.Conn, err // // v2ray:api:beta func DialUDP(ctx context.Context, v *Instance) (net.PacketConn, error) { + if FromContext(ctx) == nil { + ctx = context.WithValue(ctx, v2rayKey, v) + } + dispatcher := v.GetFeature(routing.DispatcherType()) if dispatcher == nil { return nil, newError("routing.Dispatcher is not registered in V2Ray core") From 1b665d1d3684dec918c0362f29601a0285917ea4 Mon Sep 17 00:00:00 2001 From: Kslr Date: Fri, 2 Apr 2021 20:44:33 +0800 Subject: [PATCH 52/60] remove package path from logs (#840) --- common/common.go | 33 --------------------------------- common/errors/errors.go | 6 +++++- common/errors/errors_test.go | 15 ++------------- 3 files changed, 7 insertions(+), 47 deletions(-) diff --git a/common/common.go b/common/common.go index 6ef3531bb..00cc1d833 100644 --- a/common/common.go +++ b/common/common.go @@ -123,36 +123,3 @@ func GetGOPATH() string { } return GOPATH } - -// GetModuleName returns the value of module in `go.mod` file. -func GetModuleName(pathToProjectRoot string) (string, error) { - var moduleName string - loopPath := pathToProjectRoot - for { - if idx := strings.LastIndex(loopPath, string(filepath.Separator)); idx >= 0 { - gomodPath := filepath.Join(loopPath, "go.mod") - gomodBytes, err := ioutil.ReadFile(gomodPath) - if err != nil { - loopPath = loopPath[:idx] - continue - } - - gomodContent := string(gomodBytes) - moduleIdx := strings.Index(gomodContent, "module ") - newLineIdx := strings.Index(gomodContent, "\n") - - if moduleIdx >= 0 { - if newLineIdx >= 0 { - moduleName = strings.TrimSpace(gomodContent[moduleIdx+6 : newLineIdx]) - moduleName = strings.TrimSuffix(moduleName, "\r") - } else { - moduleName = strings.TrimSpace(gomodContent[moduleIdx+6:]) - } - return moduleName, nil - } - return "", fmt.Errorf("can not get module path in `%s`", gomodPath) - } - break - } - return moduleName, fmt.Errorf("no `go.mod` file in every parent directory of `%s`", pathToProjectRoot) -} diff --git a/common/errors/errors.go b/common/errors/errors.go index 15483ea9a..a40bdef94 100644 --- a/common/errors/errors.go +++ b/common/errors/errors.go @@ -37,7 +37,11 @@ func (err *Error) pkgPath() string { if err.pathObj == nil { return "" } - return reflect.TypeOf(err.pathObj).PkgPath() + path := reflect.TypeOf(err.pathObj).PkgPath() + if strings.HasPrefix(path, "github.com/v2fly/v2ray-core/v4/") { + return path[31:] + } + return path } // Error implements error.Error(). diff --git a/common/errors/errors_test.go b/common/errors/errors_test.go index e51e6aa82..6b1cffcdc 100644 --- a/common/errors/errors_test.go +++ b/common/errors/errors_test.go @@ -2,13 +2,11 @@ package errors_test import ( "io" - "os" "strings" "testing" "github.com/google/go-cmp/cmp" - "github.com/v2fly/v2ray-core/v4/common" . "github.com/v2fly/v2ray-core/v4/common/errors" "github.com/v2fly/v2ray-core/v4/common/log" ) @@ -42,26 +40,17 @@ func TestError(t *testing.T) { type e struct{} func TestErrorMessage(t *testing.T) { - pwd, err := os.Getwd() - if err != nil { - t.Error(err) - } - moduleName, gmnErr := common.GetModuleName(pwd) - if gmnErr != nil { - t.Error(gmnErr) - } - data := []struct { err error msg string }{ { err: New("a").Base(New("b")).WithPathObj(e{}), - msg: moduleName + "/common/errors_test: a > b", + msg: "common/errors_test: a > b", }, { err: New("a").Base(New("b").WithPathObj(e{})), - msg: "a > " + moduleName + "/common/errors_test: b", + msg: "a > common/errors_test: b", }, } From c80a6df7492f119ae57328b34d3d4900a09f7556 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Fri, 2 Apr 2021 20:49:45 +0800 Subject: [PATCH 53/60] Chore: format code (#842) --- common/antireplay/bloomring.go | 3 ++- proxy/shadowsocks/config.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/common/antireplay/bloomring.go b/common/antireplay/bloomring.go index 0e0406189..50fbbffec 100644 --- a/common/antireplay/bloomring.go +++ b/common/antireplay/bloomring.go @@ -1,8 +1,9 @@ package antireplay import ( - ss_bloomring "github.com/v2fly/ss-bloomring" "sync" + + ss_bloomring "github.com/v2fly/ss-bloomring" ) type BloomRing struct { diff --git a/proxy/shadowsocks/config.go b/proxy/shadowsocks/config.go index 45105fd21..470e8028c 100644 --- a/proxy/shadowsocks/config.go +++ b/proxy/shadowsocks/config.go @@ -6,13 +6,13 @@ import ( "crypto/cipher" "crypto/md5" "crypto/sha1" - "github.com/v2fly/v2ray-core/v4/common/antireplay" "io" "golang.org/x/crypto/chacha20poly1305" "golang.org/x/crypto/hkdf" "github.com/v2fly/v2ray-core/v4/common" + "github.com/v2fly/v2ray-core/v4/common/antireplay" "github.com/v2fly/v2ray-core/v4/common/buf" "github.com/v2fly/v2ray-core/v4/common/crypto" "github.com/v2fly/v2ray-core/v4/common/protocol" From 0b39c3beb0e77d63135141d8bfc2bc690141881c Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 2 Apr 2021 14:07:21 +0100 Subject: [PATCH 54/60] Update bundled browserforwarder firmware --- common/platform/securedload/embedded.go | 2 +- release/extra/browserforwarder/index.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/platform/securedload/embedded.go b/common/platform/securedload/embedded.go index bc4e997da..84c520443 100644 --- a/common/platform/securedload/embedded.go +++ b/common/platform/securedload/embedded.go @@ -4,6 +4,6 @@ const allowedHashes = `SHA256 (!#project==v2fly) = fffffffffffffffffffffffffffff SHA256 (!#version==embedded) = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff SHA256 (subscriptions/subscriptionsDefinition.v2flyTemplate) = 3f165dba7de0d7c506fbdff3275ea64b76f307df435316a3ea0914ee957793ab SHA256 (browserforwarder/index.html) = 34f2c573724256421ade769bda18eeac85172bf0aaed00d7b90e41e843a2caef -SHA256 (browserforwarder/index.js) = fbc533343c9ea292b7e7a1b6ecc56c8b54a81bc48e4b939dba76e355b5a5eb15 +SHA256 (browserforwarder/index.js) = cf502dfb70fc81429d3848d21dae4ac9f04d7da1386849392ebd0c5b73cccdcc ` diff --git a/release/extra/browserforwarder/index.js b/release/extra/browserforwarder/index.js index 9db5fe91e..a3d236c9f 100644 --- a/release/extra/browserforwarder/index.js +++ b/release/extra/browserforwarder/index.js @@ -47,11 +47,11 @@ $packages["net/url"]=(function(){var $pkg={},$init,A,B,C,D,E,F,G,H,L,M,U,X,AH,AO $packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket"]=(function(){var $pkg={},$init,B,C,G,H,D,E,A,F,I,K,M,P,Q,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,N,J,L,O,R;B=$packages["bytes"];C=$packages["fmt"];G=$packages["github.com/gopherjs/gopherjs/js"];H=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket/websocketjs"];D=$packages["io"];E=$packages["net"];A=$packages["net/url"];F=$packages["time"];I=$pkg.addr=$newType(0,$kindStruct,"websocket.addr",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(URL_){this.$val=this;if(arguments.length===0){this.URL=Y.nil;return;}this.URL=URL_;});K=$pkg.closeError=$newType(0,$kindStruct,"websocket.closeError",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(Object_,Code_,Reason_,WasClean_){this.$val=this;if(arguments.length===0){this.Object=null;this.Code=0;this.Reason="";this.WasClean=false;return;}this.Object=Object_;this.Code=Code_;this.Reason=Reason_;this.WasClean=WasClean_;});M=$pkg.deadlineErr=$newType(0,$kindStruct,"websocket.deadlineErr",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(){this.$val=this;if(arguments.length===0){return;}});P=$pkg.conn=$newType(0,$kindStruct,"websocket.conn",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(WebSocket_,ch_,readBuf_,readDeadline_){this.$val=this;if(arguments.length===0){this.WebSocket=T.nil;this.ch=$chanNil;this.readBuf=U.nil;this.readDeadline=new F.Time.ptr(new $Uint64(0,0),new $Int64(0,0),V.nil);return;}this.WebSocket=WebSocket_;this.ch=ch_;this.readBuf=readBuf_;this.readDeadline=readDeadline_;});Q=$pkg.messageEvent=$newType(0,$kindStruct,"websocket.messageEvent",true,"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",false,function(Object_,Data_){this.$val=this;if(arguments.length===0){this.Object=null;this.Data=null;return;}this.Object=Object_;this.Data=Data_;});S=$sliceType($emptyInterface);T=$ptrType(H.WebSocket);U=$ptrType(B.Reader);V=$ptrType(F.Location);W=$ptrType(Q);X=$sliceType($Uint8);Y=$ptrType(A.URL);Z=$ptrType(I);AA=$ptrType(K);AB=$ptrType(G.Object);AC=$ptrType(M);AD=$ptrType(P);AE=$chanType(W,false,false);I.ptr.prototype.Network=function(){var a;a=this;return"websocket";};I.prototype.Network=function(){return this.$val.Network();};J=function(a,b){var a,b;return(function $b(c){var c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=b();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$close(a);$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.$s=$s;$f.$r=$r;return $f;});};K.ptr.prototype.Error=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b="";if(!!(a.Object.wasClean)){b="clean";}else{b="unclean";}c=C.Sprintf("CloseEvent: (%s) (%d) %s",new S([new $String(b),new $Int(($parseInt(a.Object.code)>>0)),new $String($internalize(a.Object.reason,$String))]));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}$s=-1;return c;}return;}if($f===undefined){$f={$blk:K.ptr.prototype.Error};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};K.prototype.Error=function(){return this.$val.Error();};L=function(a,b){var a,b;return(function $b(c){var c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=[c];$r=b();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$go((function(c){return function $b(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=$send(a,new K.ptr(c[0],0,"",false));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$close(a);$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.$s=$s;$f.$r=$r;return $f;};})(c),[]);$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.$s=$s;$f.$r=$r;return $f;});};M.ptr.prototype.Error=function(){var a;a=this;return"i/o timeout: deadline reached";};M.prototype.Error=function(){return this.$val.Error();};M.ptr.prototype.Timeout=function(){var a;a=this;return true;};M.prototype.Timeout=function(){return this.$val.Timeout();};M.ptr.prototype.Temporary=function(){var a;a=this;return true;};M.prototype.Temporary=function(){return this.$val.Temporary();};O=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=[b];c=[c];d=[d];e=H.New(a);d[0]=e[0];f=e[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[$ifaceNil,f];}g=new P.ptr(d[0],new $Chan(W,1),U.nil,new F.Time.ptr(new $Uint64(0,0),new $Int64(0,0),V.nil));g.initialize();h=new $Chan($error,1);c[0]=$throwNilPointerError;b[0]=$throwNilPointerError;i=(function(b,c,d){return function(){d[0].RemoveEventListener("open",false,c[0]);d[0].RemoveEventListener("close",false,b[0]);};})(b,c,d);c[0]=J(h,i);b[0]=L(h,i);d[0].AddEventListener("open",false,c[0]);d[0].AddEventListener("close",false,b[0]);k=$recv(h);$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;f=j[0];l=j[1];if(l&&!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return[$ifaceNil,f];}$s=-1;return[g,$ifaceNil];}return;}if($f===undefined){$f={$blk:O};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Dial=O;P.ptr.prototype.onMessage=function(a){var a,b;b=this;$go((function $b(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=$send(b.ch,new Q.ptr(a,null));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.$s=$s;$f.$r=$r;return $f;}),[]);};P.prototype.onMessage=function(a){return this.$val.onMessage(a);};P.ptr.prototype.onClose=function(a){var a,b;b=this;$go((function $b(){var $s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=$send(b.ch,W.nil);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.$s=$s;$f.$r=$r;return $f;}),[]);};P.prototype.onClose=function(a){return this.$val.onClose(a);};P.ptr.prototype.initialize=function(){var a;a=this;a.WebSocket.Object.binaryType=$externalize("arraybuffer",$String);a.WebSocket.AddEventListener("message",false,$methodVal(a,"onMessage"));a.WebSocket.AddEventListener("close",false,$methodVal(a,"onClose"));};P.prototype.initialize=function(){return this.$val.initialize();};P.ptr.prototype.handleFrame=function(a,b){var a,b,c;c=this;if(!b){return[W.nil,D.EOF];}else if(a===W.nil){$close(c.ch);return[W.nil,D.EOF];}return[a,$ifaceNil];};P.prototype.handleFrame=function(a,b){return this.$val.handleFrame(a,b);};P.ptr.prototype.receiveFrame=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;c=$chanNil;if(a&&!$clone(b.readDeadline,F.Time).IsZero()){$s=1;continue;}$s=2;continue;case 1:d=$clone(F.Now(),F.Time);if($clone(d,F.Time).After($clone(b.readDeadline,F.Time))){e=$select([[b.ch],[]]);if(e[0]===0){f=e[1];g=f[0];h=f[1];$s=-1;return b.handleFrame(g,h);}else if(e[0]===1){$s=-1;return[W.nil,N];}}i=F.NewTimer($clone(b.readDeadline,F.Time).Sub($clone(d,F.Time)));$deferred.push([$methodVal(i,"Stop"),[]]);c=i.C;case 2:k=$select([[b.ch],[c]]);$s=3;case 3:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;if(j[0]===0){l=j[1];m=l[0];n=l[1];$s=-1;return b.handleFrame(m,n);}else if(j[0]===1){$s=-1;return[W.nil,N];}$s=-1;return[W.nil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[W.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:P.ptr.prototype.receiveFrame};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};P.prototype.receiveFrame=function(a){return this.$val.receiveFrame(a);};R=function(a){var a,b,c;b=a.constructor;if(b===$global.ArrayBuffer){c=new($global.Uint8Array)(a);return $assertType($internalize(c,$emptyInterface),X);}return(new X($stringToBytes($internalize(a,$String))));};P.ptr.prototype.Read=function(a){var a,b,c,d,e,f,g,h,i,j,k,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if(!(d.readBuf===U.nil)){e=d.readBuf.Read(a);b=e[0];c=e[1];if($interfaceIsEqual(c,D.EOF)){d.readBuf=U.nil;c=$ifaceNil;}if(b>0){$s=-1;return[b,c];}}g=d.receiveFrame(true);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[0];c=f[1];if(!($interfaceIsEqual(c,$ifaceNil))){i=0;j=c;b=i;c=j;$s=-1;return[b,c];}k=R(h.Object.data);b=$copySlice(a,k);if(b>=k.$length){$s=-1;return[b,c];}d.readBuf=B.NewReader($subslice(k,b));$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:P.ptr.prototype.Read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.Read=function(a){return this.$val.Read(a);};P.ptr.prototype.Write=function(a){var a,b,c,d,e,f,g,h;b=0;c=$ifaceNil;d=this;c=d.WebSocket.Send(a);if(!($interfaceIsEqual(c,$ifaceNil))){e=0;f=c;b=e;c=f;return[b,c];}g=a.$length;h=$ifaceNil;b=g;c=h;return[b,c];};P.prototype.Write=function(a){return this.$val.Write(a);};P.ptr.prototype.LocalAddr=function(){var a;a=this;$panic(new $String("we are unable to implement websocket.conn.LocalAddr() due to limitations in the underlying JavaScript API"));};P.prototype.LocalAddr=function(){return this.$val.LocalAddr();};P.ptr.prototype.RemoteAddr=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;c=A.Parse($internalize(a.WebSocket.Object.url,$String));$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}b=c;d=b[0];e=b[1];if(!($interfaceIsEqual(e,$ifaceNil))){$panic(e);}$s=-1;return new I.ptr(d);}return;}if($f===undefined){$f={$blk:P.ptr.prototype.RemoteAddr};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};P.prototype.RemoteAddr=function(){return this.$val.RemoteAddr();};P.ptr.prototype.SetDeadline=function(a){var a,b;b=this;F.Time.copy(b.readDeadline,a);return $ifaceNil;};P.prototype.SetDeadline=function(a){return this.$val.SetDeadline(a);};P.ptr.prototype.SetReadDeadline=function(a){var a,b;b=this;F.Time.copy(b.readDeadline,a);return $ifaceNil;};P.prototype.SetReadDeadline=function(a){return this.$val.SetReadDeadline(a);};P.ptr.prototype.SetWriteDeadline=function(a){var a,b;b=this;return $ifaceNil;};P.prototype.SetWriteDeadline=function(a){return this.$val.SetWriteDeadline(a);};Z.methods=[{prop:"Network",name:"Network",pkg:"",typ:$funcType([],[$String],false)}];AA.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)}];AC.methods=[{prop:"Error",name:"Error",pkg:"",typ:$funcType([],[$String],false)},{prop:"Timeout",name:"Timeout",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"Temporary",name:"Temporary",pkg:"",typ:$funcType([],[$Bool],false)}];AD.methods=[{prop:"onMessage",name:"onMessage",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([AB],[],false)},{prop:"onClose",name:"onClose",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([AB],[],false)},{prop:"initialize",name:"initialize",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([],[],false)},{prop:"handleFrame",name:"handleFrame",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([W,$Bool],[W,$error],false)},{prop:"receiveFrame",name:"receiveFrame",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",typ:$funcType([$Bool],[W,$error],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([X],[$Int,$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([X],[$Int,$error],false)},{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[E.Addr],false)},{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[E.Addr],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([F.Time],[$error],false)},{prop:"SetReadDeadline",name:"SetReadDeadline",pkg:"",typ:$funcType([F.Time],[$error],false)},{prop:"SetWriteDeadline",name:"SetWriteDeadline",pkg:"",typ:$funcType([F.Time],[$error],false)}];I.init("",[{prop:"URL",name:"URL",embedded:true,exported:true,typ:Y,tag:""}]);K.init("",[{prop:"Object",name:"Object",embedded:true,exported:true,typ:AB,tag:""},{prop:"Code",name:"Code",embedded:false,exported:true,typ:$Int,tag:"js:\"code\""},{prop:"Reason",name:"Reason",embedded:false,exported:true,typ:$String,tag:"js:\"reason\""},{prop:"WasClean",name:"WasClean",embedded:false,exported:true,typ:$Bool,tag:"js:\"wasClean\""}]);M.init("",[]);P.init("github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket",[{prop:"WebSocket",name:"WebSocket",embedded:true,exported:true,typ:T,tag:""},{prop:"ch",name:"ch",embedded:false,exported:false,typ:AE,tag:""},{prop:"readBuf",name:"readBuf",embedded:false,exported:false,typ:U,tag:""},{prop:"readDeadline",name:"readDeadline",embedded:false,exported:false,typ:F.Time,tag:""}]);Q.init("",[{prop:"Object",name:"Object",embedded:true,exported:true,typ:AB,tag:""},{prop:"Data",name:"Data",embedded:false,exported:true,typ:AB,tag:"js:\"data\""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=B.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=H.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}N=new M.ptr();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); $packages["container/heap"]=(function(){var $pkg={},$init,A,D,E,H,I;A=$packages["sort"];D=function(a,b){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=a.Push(b);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=a;d=a.Len();$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d-1>>0;$r=H(c,e);$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:D};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Push=D;E=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=a.Len();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b-1>>0;$r=a.Swap(0,c);$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=I(a,0,c);$s=3;case 3:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d;e=a.Pop();$s=4;case 4:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;}return;}if($f===undefined){$f={$blk:E};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Pop=E;H=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:case 1:d=(c=((b-1>>0))/2,(c===c&&c!==1/0&&c!==-1/0)?c>>0:$throwRuntimeError("integer divide by zero"));if(d===b){e=true;$s=5;continue s;}f=a.Less(b,d);$s=6;case 6:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=!f;case 5:if(e){$s=3;continue;}$s=4;continue;case 3:$s=2;continue;case 4:$r=a.Swap(d,b);$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}b=d;$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};I=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=b;case 1:e=($imul(2,d))+1>>0;if(e>=c||e<0){$s=2;continue;}f=e;g=e+1>>0;if(!(gb;}return;}if($f===undefined){$f={$blk:I};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); $packages["github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux"]=(function(){var $pkg={},$init,H,C,A,D,E,F,I,B,J,G,N,Q,S,T,U,Z,AA,AB,AC,AE,AF,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,K,L,M,O,P,R,V,W,Y,AD,AG;H=$packages["container/heap"];C=$packages["encoding/binary"];A=$packages["errors"];D=$packages["fmt"];E=$packages["io"];F=$packages["math"];I=$packages["net"];B=$packages["sync"];J=$packages["sync/atomic"];G=$packages["time"];N=$pkg.Allocator=$newType(0,$kindStruct,"smux.Allocator",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(buffers_){this.$val=this;if(arguments.length===0){this.buffers=AI.nil;return;}this.buffers=buffers_;});Q=$pkg.Frame=$newType(0,$kindStruct,"smux.Frame",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(ver_,cmd_,sid_,data_){this.$val=this;if(arguments.length===0){this.ver=0;this.cmd=0;this.sid=0;this.data=AJ.nil;return;}this.ver=ver_;this.cmd=cmd_;this.sid=sid_;this.data=data_;});S=$pkg.rawHeader=$newType(8,$kindArray,"smux.rawHeader",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);T=$pkg.updHeader=$newType(8,$kindArray,"smux.updHeader",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);U=$pkg.Config=$newType(0,$kindStruct,"smux.Config",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(Version_,KeepAliveDisabled_,KeepAliveInterval_,KeepAliveTimeout_,MaxFrameSize_,MaxReceiveBuffer_,MaxStreamBuffer_){this.$val=this;if(arguments.length===0){this.Version=0;this.KeepAliveDisabled=false;this.KeepAliveInterval=new G.Duration(0,0);this.KeepAliveTimeout=new G.Duration(0,0);this.MaxFrameSize=0;this.MaxReceiveBuffer=0;this.MaxStreamBuffer=0;return;}this.Version=Version_;this.KeepAliveDisabled=KeepAliveDisabled_;this.KeepAliveInterval=KeepAliveInterval_;this.KeepAliveTimeout=KeepAliveTimeout_;this.MaxFrameSize=MaxFrameSize_;this.MaxReceiveBuffer=MaxReceiveBuffer_;this.MaxStreamBuffer=MaxStreamBuffer_;});Z=$pkg.writeRequest=$newType(0,$kindStruct,"smux.writeRequest",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,function(prio_,frame_,result_){this.$val=this;if(arguments.length===0){this.prio=new $Uint64(0,0);this.frame=new Q.ptr(0,0,0,AJ.nil);this.result=$chanNil;return;}this.prio=prio_;this.frame=frame_;this.result=result_;});AA=$pkg.writeResult=$newType(0,$kindStruct,"smux.writeResult",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,function(n_,err_){this.$val=this;if(arguments.length===0){this.n=0;this.err=$ifaceNil;return;}this.n=n_;this.err=err_;});AB=$pkg.buffersWriter=$newType(8,$kindInterface,"smux.buffersWriter",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);AC=$pkg.Session=$newType(0,$kindStruct,"smux.Session",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(conn_,config_,nextStreamID_,nextStreamIDLock_,bucket_,bucketNotify_,streams_,streamLock_,die_,dieOnce_,socketReadError_,socketWriteError_,chSocketReadError_,chSocketWriteError_,socketReadErrorOnce_,socketWriteErrorOnce_,protoError_,chProtoError_,protoErrorOnce_,chAccepts_,dataReady_,goAway_,deadline_,shaper_,writes_){this.$val=this;if(arguments.length===0){this.conn=$ifaceNil;this.config=AL.nil;this.nextStreamID=0;this.nextStreamIDLock=new B.Mutex.ptr(0,0);this.bucket=0;this.bucketNotify=$chanNil;this.streams=false;this.streamLock=new B.Mutex.ptr(0,0);this.die=$chanNil;this.dieOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.socketReadError=new J.Value.ptr($ifaceNil);this.socketWriteError=new J.Value.ptr($ifaceNil);this.chSocketReadError=$chanNil;this.chSocketWriteError=$chanNil;this.socketReadErrorOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.socketWriteErrorOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.protoError=new J.Value.ptr($ifaceNil);this.chProtoError=$chanNil;this.protoErrorOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.chAccepts=$chanNil;this.dataReady=0;this.goAway=0;this.deadline=new J.Value.ptr($ifaceNil);this.shaper=$chanNil;this.writes=$chanNil;return;}this.conn=conn_;this.config=config_;this.nextStreamID=nextStreamID_;this.nextStreamIDLock=nextStreamIDLock_;this.bucket=bucket_;this.bucketNotify=bucketNotify_;this.streams=streams_;this.streamLock=streamLock_;this.die=die_;this.dieOnce=dieOnce_;this.socketReadError=socketReadError_;this.socketWriteError=socketWriteError_;this.chSocketReadError=chSocketReadError_;this.chSocketWriteError=chSocketWriteError_;this.socketReadErrorOnce=socketReadErrorOnce_;this.socketWriteErrorOnce=socketWriteErrorOnce_;this.protoError=protoError_;this.chProtoError=chProtoError_;this.protoErrorOnce=protoErrorOnce_;this.chAccepts=chAccepts_;this.dataReady=dataReady_;this.goAway=goAway_;this.deadline=deadline_;this.shaper=shaper_;this.writes=writes_;});AE=$pkg.shaperHeap=$newType(12,$kindSlice,"smux.shaperHeap",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",false,null);AF=$pkg.Stream=$newType(0,$kindStruct,"smux.Stream",true,"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",true,function(id_,sess_,buffers_,heads_,bufferLock_,frameSize_,chReadEvent_,die_,dieOnce_,chFinEvent_,finEventOnce_,readDeadline_,writeDeadline_,numRead_,numWritten_,incr_,peerConsumed_,peerWindow_,chUpdate_){this.$val=this;if(arguments.length===0){this.id=0;this.sess=AM.nil;this.buffers=AU.nil;this.heads=AU.nil;this.bufferLock=new B.Mutex.ptr(0,0);this.frameSize=0;this.chReadEvent=$chanNil;this.die=$chanNil;this.dieOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.chFinEvent=$chanNil;this.finEventOnce=new B.Once.ptr(new B.Mutex.ptr(0,0),0);this.readDeadline=new J.Value.ptr($ifaceNil);this.writeDeadline=new J.Value.ptr($ifaceNil);this.numRead=0;this.numWritten=0;this.incr=0;this.peerConsumed=0;this.peerWindow=0;this.chUpdate=$chanNil;return;}this.id=id_;this.sess=sess_;this.buffers=buffers_;this.heads=heads_;this.bufferLock=bufferLock_;this.frameSize=frameSize_;this.chReadEvent=chReadEvent_;this.die=die_;this.dieOnce=dieOnce_;this.chFinEvent=chFinEvent_;this.finEventOnce=finEventOnce_;this.readDeadline=readDeadline_;this.writeDeadline=writeDeadline_;this.numRead=numRead_;this.numWritten=numWritten_;this.incr=incr_;this.peerConsumed=peerConsumed_;this.peerWindow=peerWindow_;this.chUpdate=chUpdate_;});AH=$ptrType(N);AI=$sliceType(B.Pool);AJ=$sliceType($Uint8);AK=$sliceType($emptyInterface);AL=$ptrType(U);AM=$ptrType(AC);AN=$structType("",[]);AO=$ptrType(AF);AP=$interfaceType([{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[I.Addr],false)}]);AQ=$interfaceType([{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[I.Addr],false)}]);AR=$ptrType($Int32);AS=$arrayType($Uint8,8);AT=$ptrType(AE);AU=$sliceType(AJ);AV=$ptrType(G.Timer);AW=$ptrType($Uint32);AX=$chanType(AA,false,false);AY=$chanType(G.Time,false,true);AZ=$chanType(AN,false,false);BA=$mapType($Uint32,AO);BB=$chanType(AO,false,false);BC=$chanType(Z,false,false);BD=$chanType(AN,false,true);M=function(){K=O();};O=function(){var a,b,c,d,e,f;a=new N.ptr(AI.nil);a.buffers=$makeSlice(AI,17);b=a.buffers;c=0;while(true){if(!(c=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+e])).New=(function(d){return function(){var f;return $makeSlice(AJ,((f=((d[0]>>>0)),f<32?(1<>0));};})(d);c++;}return a;};$pkg.NewAllocator=O;N.ptr.prototype.Get=function(a){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;if(a<=0||a>65536){$s=-1;return AJ.nil;}c=P(a);if(a===((d=c,d<32?(1<>0)){$s=1;continue;}$s=2;continue;case 1:f=(e=b.buffers,((c<0||c>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+c])).Get();$s=4;case 4:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}$s=-1;return $subslice($assertType(f,AJ),0,a);case 2:i=(g=b.buffers,h=c+1<<24>>>24,((h<0||h>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+h])).Get();$s=5;case 5:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}$s=-1;return $subslice($assertType(i,AJ),0,a);case 3:$s=-1;return AJ.nil;}return;}if($f===undefined){$f={$blk:N.ptr.prototype.Get};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;};N.prototype.Get=function(a){return this.$val.Get(a);};N.ptr.prototype.Put=function(a){var a,b,c,d,e;b=this;c=P(a.$capacity);if((a.$capacity===0)||a.$capacity>65536||!((a.$capacity===((d=c,d<32?(1<>0)))){return A.New("allocator Put() incorrect buffer size");}(e=b.buffers,((c<0||c>=e.$length)?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+c])).Put(a);return $ifaceNil;};N.prototype.Put=function(a){return this.$val.Put(a);};P=function(a){var a,b,c;b=((a>>>0));b=(b|((b>>>1>>>0)))>>>0;b=(b|((b>>>2>>>0)))>>>0;b=(b|((b>>>4>>>0)))>>>0;b=(b|((b>>>8>>>0)))>>>0;b=(b|((b>>>16>>>0)))>>>0;return(c=(($imul(b,130329821)>>>0))>>>27>>>0,((c<0||c>=L.length)?($throwRuntimeError("index out of range"),undefined):L[c]));};R=function(a,b,c){var a,b,c;return new Q.ptr(a,b,c,AJ.nil);};S.prototype.Version=function(){var a;a=this.$val;return a[0];};$ptrType(S).prototype.Version=function(){return new S(this.$get()).Version();};S.prototype.Cmd=function(){var a;a=this.$val;return a[1];};$ptrType(S).prototype.Cmd=function(){return new S(this.$get()).Cmd();};S.prototype.Length=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint16($subslice(new AJ(a),2));};$ptrType(S).prototype.Length=function(){return new S(this.$get()).Length();};S.prototype.StreamID=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint32($subslice(new AJ(a),4));};$ptrType(S).prototype.StreamID=function(){return new S(this.$get()).StreamID();};S.prototype.String=function(){var a,b,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this.$val;b=D.Sprintf("Version:%d Cmd:%d StreamID:%d Length:%d",new AK([new $Uint8(new S($clone(a,S)).Version()),new $Uint8(new S($clone(a,S)).Cmd()),new $Uint32(new S($clone(a,S)).StreamID()),new $Uint16(new S($clone(a,S)).Length())]));$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}$s=-1;return b;}return;}if($f===undefined){$f={$blk:S.prototype.String};}$f.a=a;$f.b=b;$f.$s=$s;$f.$r=$r;return $f;};$ptrType(S).prototype.String=function(){return new S(this.$get()).String();};T.prototype.Consumed=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint32(new AJ(a));};$ptrType(T).prototype.Consumed=function(){return new T(this.$get()).Consumed();};T.prototype.Window=function(){var a;a=this.$val;return $clone(C.LittleEndian,C.littleEndian).Uint32($subslice(new AJ(a),4));};$ptrType(T).prototype.Window=function(){return new T(this.$get()).Window();};V=function(){return new U.ptr(1,false,new G.Duration(2,1410065408),new G.Duration(6,4230196224),32768,4194304,65536);};$pkg.DefaultConfig=V;W=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(!((a.Version===1)||(a.Version===2))){$s=-1;return A.New("unsupported protocol version");}if(!a.KeepAliveDisabled){$s=1;continue;}$s=2;continue;case 1:if((b=a.KeepAliveInterval,(b.$high===0&&b.$low===0))){$s=-1;return A.New("keep-alive interval must be positive");}if((c=a.KeepAliveTimeout,d=a.KeepAliveInterval,(c.$high65535){$s=-1;return A.New("max frame size must not be larger than 65535");}if(a.MaxReceiveBuffer<=0){$s=-1;return A.New("max receive buffer must be positive");}if(a.MaxStreamBuffer<=0){$s=-1;return A.New("max stream buffer must be positive");}if(a.MaxStreamBuffer>a.MaxReceiveBuffer){$s=-1;return A.New("max stream buffer must not be larger than max receive buffer");}if(a.MaxStreamBuffer>2147483647){$s=-1;return A.New("max stream buffer cannot be larger than 2147483647");}$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:W};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};$pkg.VerifyConfig=W;Y=function(a,b){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:if(b===AL.nil){b=V();}c=W(b);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;if(!($interfaceIsEqual(d,$ifaceNil))){$s=-1;return[AM.nil,d];}$s=-1;return[AD(b,a,true),$ifaceNil];}return;}if($f===undefined){$f={$blk:Y};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Client=Y;AD=function(a,b,c){var a,b,c,d;d=new AC.ptr($ifaceNil,AL.nil,0,new B.Mutex.ptr(0,0),0,$chanNil,false,new B.Mutex.ptr(0,0),$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),new J.Value.ptr($ifaceNil),new J.Value.ptr($ifaceNil),$chanNil,$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),new B.Once.ptr(new B.Mutex.ptr(0,0),0),new J.Value.ptr($ifaceNil),$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),$chanNil,0,0,new J.Value.ptr($ifaceNil),$chanNil,$chanNil);d.die=new $Chan(AN,0);d.conn=b;d.config=a;d.streams={};d.chAccepts=new $Chan(AO,1024);d.bucket=((a.MaxReceiveBuffer>>0));d.bucketNotify=new $Chan(AN,1);d.shaper=new $Chan(Z,0);d.writes=new $Chan(Z,0);d.chSocketReadError=new $Chan(AN,0);d.chSocketWriteError=new $Chan(AN,0);d.chProtoError=new $Chan(AN,0);if(c){d.nextStreamID=1;}else{d.nextStreamID=0;}$go($methodVal(d,"shaperLoop"),[]);$go($methodVal(d,"recvLoop"),[]);$go($methodVal(d,"sendLoop"),[]);if(!a.KeepAliveDisabled){$go($methodVal(d,"keepalive"),[]);}return d;};AC.ptr.prototype.OpenStream=function(){var a,b,c,d,e,f,g,h,i,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;if(a.IsClosed()){$s=-1;return[AO.nil,E.ErrClosedPipe];}$r=a.nextStreamIDLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(a.goAway>0){$s=2;continue;}$s=3;continue;case 2:$r=a.nextStreamIDLock.Unlock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[AO.nil,$pkg.ErrGoAway];case 3:a.nextStreamID=a.nextStreamID+(2)>>>0;b=a.nextStreamID;if(b===(c=b%2,c===c?c:$throwRuntimeError("integer divide by zero"))){$s=5;continue;}$s=6;continue;case 5:a.goAway=1;$r=a.nextStreamIDLock.Unlock();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[AO.nil,$pkg.ErrGoAway];case 6:$r=a.nextStreamIDLock.Unlock();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=AG(b,a.config.MaxFrameSize,a);f=a.writeFrame($clone(R(((a.config.Version<<24>>>24)),0,b),Q));$s=9;case 9:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;g=e[1];if(!($interfaceIsEqual(g,$ifaceNil))){$s=-1;return[AO.nil,g];}$r=a.streamLock.Lock();$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(a.streamLock,"Unlock"),[]]);h=$select([[a.chSocketReadError],[a.chSocketWriteError],[a.die],[]]);if(h[0]===0){$s=-1;return[AO.nil,$assertType(a.socketReadError.Load(),$error)];}else if(h[0]===1){$s=-1;return[AO.nil,$assertType(a.socketWriteError.Load(),$error)];}else if(h[0]===2){$s=-1;return[AO.nil,E.ErrClosedPipe];}else if(h[0]===3){i=b;(a.streams||$throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(i)]={k:i,v:d};$s=-1;return[d,$ifaceNil];}$s=-1;return[AO.nil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[AO.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AC.ptr.prototype.OpenStream};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AC.prototype.OpenStream=function(){return this.$val.OpenStream();};AC.ptr.prototype.Open=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.OpenStream();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$s=-1;return[c[0],c[1]];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.Open};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.Open=function(){return this.$val.Open();};AC.ptr.prototype.AcceptStream=function(){var a,b,c,d,e,f,g,h,i,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;b=$chanNil;c=$assertType(a.deadline.Load(),G.Time,true);d=$clone(c[0],G.Time);e=c[1];if(e&&!$clone(d,G.Time).IsZero()){f=G.NewTimer(G.Until($clone(d,G.Time)));$deferred.push([$methodVal(f,"Stop"),[]]);b=f.C;}h=$select([[a.chAccepts],[b],[a.chSocketReadError],[a.chProtoError],[a.die]]);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;if(g[0]===0){i=g[1][0];$s=-1;return[i,$ifaceNil];}else if(g[0]===1){$s=-1;return[AO.nil,$pkg.ErrTimeout];}else if(g[0]===2){$s=-1;return[AO.nil,$assertType(a.socketReadError.Load(),$error)];}else if(g[0]===3){$s=-1;return[AO.nil,$assertType(a.protoError.Load(),$error)];}else if(g[0]===4){$s=-1;return[AO.nil,E.ErrClosedPipe];}$s=-1;return[AO.nil,$ifaceNil];}return;}}catch(err){$err=err;$s=-1;return[AO.nil,$ifaceNil];}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AC.ptr.prototype.AcceptStream};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AC.prototype.AcceptStream=function(){return this.$val.AcceptStream();};AC.ptr.prototype.Accept=function(){var a,b,c,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=a.AcceptStream();$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;$s=-1;return[c[0],c[1]];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.Accept};}$f.a=a;$f.b=b;$f.c=c;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.Accept=function(){return this.$val.Accept();};AC.ptr.prototype.Close=function(){var a,b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];b[0]=this;a[0]=false;$r=b[0].dieOnce.Do((function(a,b){return function(){$close(b[0].die);a[0]=true;};})(a,b));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(a[0]){$s=2;continue;}$s=3;continue;case 2:$r=b[0].streamLock.Lock();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=b[0].streams;d=0;e=$keys(c);case 6:if(!(d0){if(J.AddInt32((b.$ptr_bucket||(b.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},b))),((e>>0)))>0){b.notifyBucket();}}delete b.streams[$Uint32.keyFor(a)];$r=b.streamLock.Unlock();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.streamClosed};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.streamClosed=function(a){return this.$val.streamClosed(a);};AC.ptr.prototype.returnTokens=function(a){var a,b;b=this;if(J.AddInt32((b.$ptr_bucket||(b.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},b))),((a>>0)))>0){b.notifyBucket();}};AC.prototype.returnTokens=function(a){return this.$val.returnTokens(a);};AC.ptr.prototype.recvLoop=function(){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=AS.zero();c=AS.zero();case 1:case 3:if(!(J.LoadInt32((a.$ptr_bucket||(a.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},a))))<=0&&!a.IsClosed())){$s=4;continue;}e=$select([[a.bucketNotify],[a.die]]);$s=5;case 5:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;if(d[0]===0){}else if(d[0]===1){$s=-1;return;}$s=3;continue;case 4:g=E.ReadFull(a.conn,new AJ(b));$s=6;case 6:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[1];if($interfaceIsEqual(h,$ifaceNil)){$s=7;continue;}$s=8;continue;case 7:J.StoreInt32((a.$ptr_dataReady||(a.$ptr_dataReady=new AR(function(){return this.$target.dataReady;},function($v){this.$target.dataReady=$v;},a))),1);if(!((new S($clone(b,S)).Version()===((a.config.Version<<24>>>24))))){$s=10;continue;}$s=11;continue;case 10:$r=a.notifyProtoError($pkg.ErrInvalidProtocol);$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 11:i=new S($clone(b,S)).StreamID();j=new S($clone(b,S)).Cmd();if(j===(3)){$s=14;continue;}if(j===(0)){$s=15;continue;}if(j===(1)){$s=16;continue;}if(j===(2)){$s=17;continue;}if(j===(4)){$s=18;continue;}$s=19;continue;case 14:$s=20;continue;case 15:$r=a.streamLock.Lock();$s=21;case 21:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}k=(l=a.streams[$Uint32.keyFor(i)],l!==undefined?[l.v,true]:[AO.nil,false]);m=k[1];if(!m){$s=22;continue;}$s=23;continue;case 22:n=AG(i,a.config.MaxFrameSize,a);o=i;(a.streams||$throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(o)]={k:o,v:n};q=$select([[a.chAccepts,n],[a.die]]);$s=24;case 24:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;if(p[0]===0){}else if(p[0]===1){}case 23:$r=a.streamLock.Unlock();$s=25;case 25:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=20;continue;case 16:$r=a.streamLock.Lock();$s=26;case 26:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}r=(s=a.streams[$Uint32.keyFor(i)],s!==undefined?[s.v,true]:[AO.nil,false]);t=r[0];u=r[1];if(u){$s=27;continue;}$s=28;continue;case 27:$r=t.fin();$s=29;case 29:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}t.notifyReadEvent();case 28:$r=a.streamLock.Unlock();$s=30;case 30:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=20;continue;case 17:if(new S($clone(b,S)).Length()>0){$s=31;continue;}$s=32;continue;case 31:v=K.Get(((new S($clone(b,S)).Length()>>0)));$s=33;case 33:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}w=v;y=E.ReadFull(a.conn,w);$s=34;case 34:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}x=y;z=x[0];aa=x[1];if($interfaceIsEqual(aa,$ifaceNil)){$s=35;continue;}$s=36;continue;case 35:$r=a.streamLock.Lock();$s=38;case 38:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}ab=(ac=a.streams[$Uint32.keyFor(i)],ac!==undefined?[ac.v,true]:[AO.nil,false]);ad=ab[0];ae=ab[1];if(ae){$s=39;continue;}$s=40;continue;case 39:af=ad.pushBytes(w);$s=41;case 41:if($c){$c=false;af=af.$blk();}if(af&&af.$blk!==undefined){break s;}af;J.AddInt32((a.$ptr_bucket||(a.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},a))),-((z>>0)));ad.notifyReadEvent();case 40:$r=a.streamLock.Unlock();$s=42;case 42:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=37;continue;case 36:$r=a.notifyReadError(aa);$s=43;case 43:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 37:case 32:$s=20;continue;case 18:ah=E.ReadFull(a.conn,new AJ(c));$s=44;case 44:if($c){$c=false;ah=ah.$blk();}if(ah&&ah.$blk!==undefined){break s;}ag=ah;ai=ag[1];if($interfaceIsEqual(ai,$ifaceNil)){$s=45;continue;}$s=46;continue;case 45:$r=a.streamLock.Lock();$s=48;case 48:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}aj=(ak=a.streams[$Uint32.keyFor(i)],ak!==undefined?[ak.v,true]:[AO.nil,false]);al=aj[0];am=aj[1];if(am){al.update(new T($clone(c,T)).Consumed(),new T($clone(c,T)).Window());}$r=a.streamLock.Unlock();$s=49;case 49:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=47;continue;case 46:$r=a.notifyReadError(ai);$s=50;case 50:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 47:$s=20;continue;case 19:$r=a.notifyProtoError($pkg.ErrInvalidProtocol);$s=51;case 51:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 20:case 13:$s=9;continue;case 8:$r=a.notifyReadError(h);$s=52;case 52:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 9:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.recvLoop};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.recvLoop=function(){return this.$val.recvLoop();};AC.ptr.prototype.keepalive=function(){var a,b,c,d,e,f,g,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;b=G.NewTicker(a.config.KeepAliveInterval);c=G.NewTicker(a.config.KeepAliveTimeout);$deferred.push([$methodVal(b,"Stop"),[]]);$deferred.push([$methodVal(c,"Stop"),[]]);case 1:e=$select([[b.C],[c.C],[a.die]]);$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;if(d[0]===0){$s=4;continue;}if(d[0]===1){$s=5;continue;}if(d[0]===2){$s=6;continue;}$s=7;continue;case 4:f=a.writeFrameInternal($clone(R(((a.config.Version<<24>>>24)),3,0),Q),b.C,new $Uint64(0,0));$s=8;case 8:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;a.notifyBucket();$s=7;continue;case 5:if(!J.CompareAndSwapInt32((a.$ptr_dataReady||(a.$ptr_dataReady=new AR(function(){return this.$target.dataReady;},function($v){this.$target.dataReady=$v;},a))),1,0)){$s=9;continue;}$s=10;continue;case 9:if(J.LoadInt32((a.$ptr_bucket||(a.$ptr_bucket=new AR(function(){return this.$target.bucket;},function($v){this.$target.bucket=$v;},a))))>0){$s=11;continue;}$s=12;continue;case 11:g=a.Close();$s=13;case 13:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g;$s=-1;return;case 12:case 10:$s=7;continue;case 6:$s=-1;return;case 7:$s=1;continue;case 2:$s=-1;return;}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AC.ptr.prototype.keepalive};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AC.prototype.keepalive=function(){return this.$val.keepalive();};AC.ptr.prototype.shaperLoop=function(){var a,b,c,d,e,f,g,h,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=this;a[0]=AE.nil;c=new Z.ptr(new $Uint64(0,0),new Q.ptr(0,0,0,AJ.nil),$chanNil);d=$chanNil;case 1:if(a[0].$length>0){$s=3;continue;}$s=4;continue;case 3:d=b.writes;e=H.Pop((a.$ptr||(a.$ptr=new AT(function(){return this.$target[0];},function($v){this.$target[0]=$v;},a))));$s=6;case 6:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}Z.copy(c,$assertType(e,Z));$s=5;continue;case 4:d=$chanNil;case 5:g=$select([[b.die],[b.shaper],[d,$clone(c,Z)]]);$s=7;case 7:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;if(f[0]===0){$s=8;continue;}if(f[0]===1){$s=9;continue;}if(f[0]===2){$s=10;continue;}$s=11;continue;case 8:$s=-1;return;case 9:h=$clone(f[1][0],Z);if(!(d===$chanNil)){$s=12;continue;}$s=13;continue;case 12:$r=H.Push((a.$ptr||(a.$ptr=new AT(function(){return this.$target[0];},function($v){this.$target[0]=$v;},a))),new c.constructor.elem(c));$s=14;case 14:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 13:$r=H.Push((a.$ptr||(a.$ptr=new AT(function(){return this.$target[0];},function($v){this.$target[0]=$v;},a))),new h.constructor.elem(h));$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=11;continue;case 10:case 11:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.shaperLoop};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.shaperLoop=function(){return this.$val.shaperLoop();};AC.ptr.prototype.sendLoop=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=AJ.nil;c=0;d=$ifaceNil;e=AU.nil;f=$assertType(a.conn,AB,true);g=f[0];h=f[1];if(h){b=$makeSlice(AJ,8);e=$makeSlice(AU,2);}else{b=$makeSlice(AJ,65544);}case 1:j=$select([[a.die],[a.writes]]);$s=3;case 3:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;if(i[0]===0){$s=4;continue;}if(i[0]===1){$s=5;continue;}$s=6;continue;case 4:$s=-1;return;case 5:k=$clone(i[1][0],Z);(0>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+0]=k.frame.ver);(1>=b.$length?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+1]=k.frame.cmd);$clone(C.LittleEndian,C.littleEndian).PutUint16($subslice(b,2),((k.frame.data.$length<<16>>>16)));$clone(C.LittleEndian,C.littleEndian).PutUint32($subslice(b,4),k.frame.sid);if(e.$length>0){$s=7;continue;}$s=8;continue;case 7:(0>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+0]=$subslice(b,0,8));(1>=e.$length?($throwRuntimeError("index out of range"),undefined):e.$array[e.$offset+1]=k.frame.data);m=g.WriteBuffers(e);$s=10;case 10:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;c=l[0];d=l[1];$s=9;continue;case 8:$copySlice($subslice(b,8),k.frame.data);o=a.conn.Write($subslice(b,0,(8+k.frame.data.$length>>0)));$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}n=o;c=n[0];d=n[1];case 9:c=c-(8)>>0;if(c<0){c=0;}p=new AA.ptr(c,d);$r=$send(k.result,$clone($clone(p,AA),AA));$s=12;case 12:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$close(k.result);if(!($interfaceIsEqual(d,$ifaceNil))){$s=13;continue;}$s=14;continue;case 13:$r=a.notifyWriteError(d);$s=15;case 15:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;case 14:case 6:$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.sendLoop};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.sendLoop=function(){return this.$val.sendLoop();};AC.ptr.prototype.writeFrame=function(a){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;f=d.writeFrameInternal($clone(a,Q),$chanNil,new $Uint64(0,0));$s=1;case 1:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.writeFrame};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.writeFrame=function(a){return this.$val.writeFrame(a);};AC.ptr.prototype.writeFrameInternal=function(a,b,c){var a,b,c,d,e,f,g,h,i,j,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=this;e=new Z.ptr(c,$clone(a,Q),new $Chan(AA,1));g=$select([[d.shaper,$clone(e,Z)],[d.die],[d.chSocketWriteError],[b]]);$s=1;case 1:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;if(f[0]===0){$s=2;continue;}if(f[0]===1){$s=3;continue;}if(f[0]===2){$s=4;continue;}if(f[0]===3){$s=5;continue;}$s=6;continue;case 2:$s=6;continue;case 3:$s=-1;return[0,E.ErrClosedPipe];case 4:$s=-1;return[0,$assertType(d.socketWriteError.Load(),$error)];case 5:$s=-1;return[0,$pkg.ErrTimeout];case 6:i=$select([[e.result],[d.die],[d.chSocketWriteError],[b]]);$s=7;case 7:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;if(h[0]===0){j=$clone(h[1][0],AA);$s=-1;return[j.n,j.err];}else if(h[0]===1){$s=-1;return[0,E.ErrClosedPipe];}else if(h[0]===2){$s=-1;return[0,$assertType(d.socketWriteError.Load(),$error)];}else if(h[0]===3){$s=-1;return[0,$pkg.ErrTimeout];}$s=-1;return[0,$ifaceNil];}return;}if($f===undefined){$f={$blk:AC.ptr.prototype.writeFrameInternal};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.$s=$s;$f.$r=$r;return $f;};AC.prototype.writeFrameInternal=function(a,b,c){return this.$val.writeFrameInternal(a,b,c);};AE.prototype.Len=function(){var a;a=this;return a.$length;};$ptrType(AE).prototype.Len=function(){return this.$get().Len();};AE.prototype.Less=function(a,b){var a,b,c,d,e;c=this;return(d=((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]).prio,e=((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]).prio,(d.$high=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]),Z);e=$clone(((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]),Z);Z.copy(((a<0||a>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+a]),d);Z.copy(((b<0||b>=c.$length)?($throwRuntimeError("index out of range"),undefined):c.$array[c.$offset+b]),e);};$ptrType(AE).prototype.Swap=function(a,b){return this.$get().Swap(a,b);};$ptrType(AE).prototype.Push=function(a){var a,b;b=this;b.$set($append(b.$get(),$assertType(a,Z)));};$ptrType(AE).prototype.Pop=function(){var a,b,c,d,e;a=this;b=a.$get();c=b.$length;e=$clone((d=c-1>>0,((d<0||d>=b.$length)?($throwRuntimeError("index out of range"),undefined):b.$array[b.$offset+d])),Z);a.$set($subslice(b,0,(c-1>>0)));return new e.constructor.elem(e);};AG=function(a,b,c){var a,b,c,d;d=new AF.ptr(0,AM.nil,AU.nil,AU.nil,new B.Mutex.ptr(0,0),0,$chanNil,$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),$chanNil,new B.Once.ptr(new B.Mutex.ptr(0,0),0),new J.Value.ptr($ifaceNil),new J.Value.ptr($ifaceNil),0,0,0,0,0,$chanNil);d.id=a;d.chReadEvent=new $Chan(AN,1);d.chUpdate=new $Chan(AN,1);d.frameSize=b;d.sess=c;d.die=new $Chan(AN,0);d.chFinEvent=new $Chan(AN,0);d.peerWindow=262144;return d;};AF.ptr.prototype.ID=function(){var a;a=this;return a.id;};AF.prototype.ID=function(){return this.$val.ID();};AF.ptr.prototype.Read=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;case 1:f=d.tryRead(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];if($interfaceIsEqual(c,$pkg.ErrWouldBlock)){$s=4;continue;}$s=5;continue;case 4:g=d.waitRead();$s=7;case 7:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}h=g;if(!($interfaceIsEqual(h,$ifaceNil))){i=0;j=h;b=i;c=j;$s=-1;return[b,c];}$s=6;continue;case 5:k=b;l=c;b=k;c=l;$s=-1;return[b,c];case 6:$s=1;continue;case 2:$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.Read};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.Read=function(a){return this.$val.Read(a);};AF.ptr.prototype.tryRead=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if(d.sess.config.Version===2){$s=1;continue;}$s=2;continue;case 1:f=d.tryReadv2(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];case 2:if(a.$length===0){g=0;h=$ifaceNil;b=g;c=h;$s=-1;return[b,c];}$r=d.bufferLock.Lock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){b=$copySlice(a,(i=d.buffers,(0>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+0])));(k=d.buffers,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0]=$subslice((j=d.buffers,(0>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+0])),b)));if((l=d.buffers,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0])).$length===0){(m=d.buffers,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0]=AJ.nil));d.buffers=$subslice(d.buffers,1);K.Put((n=d.heads,(0>=n.$length?($throwRuntimeError("index out of range"),undefined):n.$array[n.$offset+0])));d.heads=$subslice(d.heads,1);}}$r=d.bufferLock.Unlock();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(b>0){d.sess.returnTokens(b);o=b;p=$ifaceNil;b=o;c=p;$s=-1;return[b,c];}q=$select([[d.die],[]]);if(q[0]===0){r=0;s=E.EOF;b=r;c=s;$s=-1;return[b,c];}else if(q[0]===1){t=0;u=$pkg.ErrWouldBlock;b=t;c=u;$s=-1;return[b,c];}$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.tryRead};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.tryRead=function(a){return this.$val.tryRead(a);};AF.ptr.prototype.tryReadv2=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;if(a.$length===0){e=0;f=$ifaceNil;b=e;c=f;$s=-1;return[b,c];}g=0;$r=d.bufferLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){b=$copySlice(a,(h=d.buffers,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0])));(j=d.buffers,(0>=j.$length?($throwRuntimeError("index out of range"),undefined):j.$array[j.$offset+0]=$subslice((i=d.buffers,(0>=i.$length?($throwRuntimeError("index out of range"),undefined):i.$array[i.$offset+0])),b)));if((k=d.buffers,(0>=k.$length?($throwRuntimeError("index out of range"),undefined):k.$array[k.$offset+0])).$length===0){(l=d.buffers,(0>=l.$length?($throwRuntimeError("index out of range"),undefined):l.$array[l.$offset+0]=AJ.nil));d.buffers=$subslice(d.buffers,1);K.Put((m=d.heads,(0>=m.$length?($throwRuntimeError("index out of range"),undefined):m.$array[m.$offset+0])));d.heads=$subslice(d.heads,1);}}d.numRead=d.numRead+(((b>>>0)))>>>0;d.incr=d.incr+(((b>>>0)))>>>0;if(d.incr>=(((n=d.sess.config.MaxStreamBuffer/2,(n===n&&n!==1/0&&n!==-1/0)?n>>0:$throwRuntimeError("integer divide by zero"))>>>0))||(d.numRead===((b>>>0)))){g=d.numRead;d.incr=0;}$r=d.bufferLock.Unlock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(b>0){$s=3;continue;}$s=4;continue;case 3:d.sess.returnTokens(b);if(g>0){$s=5;continue;}$s=6;continue;case 5:o=d.sendWindowUpdate(g);$s=8;case 8:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}p=o;q=b;r=p;b=q;c=r;$s=-1;return[b,c];case 6:s=b;t=$ifaceNil;b=s;c=t;$s=-1;return[b,c];case 7:case 4:u=$select([[d.die],[]]);if(u[0]===0){v=0;w=E.EOF;b=v;c=w;$s=-1;return[b,c];}else if(u[0]===1){x=0;y=$pkg.ErrWouldBlock;b=x;c=y;$s=-1;return[b,c];}$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.tryReadv2};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.tryReadv2=function(a){return this.$val.tryReadv2(a);};AF.ptr.prototype.WriteTo=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=new $Int64(0,0);c=$ifaceNil;d=this;if(d.sess.config.Version===2){$s=1;continue;}$s=2;continue;case 1:f=d.writeTov2(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];case 2:case 4:g=AJ.nil;$r=d.bufferLock.Lock();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){g=(h=d.buffers,(0>=h.$length?($throwRuntimeError("index out of range"),undefined):h.$array[h.$offset+0]));d.buffers=$subslice(d.buffers,1);d.heads=$subslice(d.heads,1);}$r=d.bufferLock.Unlock();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(!(g===AJ.nil)){$s=8;continue;}$s=9;continue;case 8:j=a.Write(g);$s=11;case 11:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[0];l=i[1];d.sess.returnTokens(g.$length);K.Put(g);if(k>0){b=(m=(new $Int64(0,k)),new $Int64(b.$high+m.$high,b.$low+m.$low));}if(!($interfaceIsEqual(l,$ifaceNil))){n=b;o=l;b=n;c=o;$s=-1;return[b,c];}$s=10;continue;case 9:p=d.waitRead();$s=12;case 12:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=p;if(!($interfaceIsEqual(q,$ifaceNil))){r=b;s=q;b=r;c=s;$s=-1;return[b,c];}case 10:$s=4;continue;case 5:$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.WriteTo};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.WriteTo=function(a){return this.$val.WriteTo(a);};AF.ptr.prototype.writeTov2=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=new $Int64(0,0);c=$ifaceNil;d=this;case 1:e=0;f=AJ.nil;$r=d.bufferLock.Lock();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(d.buffers.$length>0){f=(g=d.buffers,(0>=g.$length?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+0]));d.buffers=$subslice(d.buffers,1);d.heads=$subslice(d.heads,1);}d.numRead=d.numRead+(((f.$length>>>0)))>>>0;d.incr=d.incr+(((f.$length>>>0)))>>>0;if(d.incr>=(((h=d.sess.config.MaxStreamBuffer/2,(h===h&&h!==1/0&&h!==-1/0)?h>>0:$throwRuntimeError("integer divide by zero"))>>>0))||(d.numRead===((f.$length>>>0)))){e=d.numRead;d.incr=0;}$r=d.bufferLock.Unlock();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(!(f===AJ.nil)){$s=5;continue;}$s=6;continue;case 5:j=a.Write(f);$s=8;case 8:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[0];l=i[1];d.sess.returnTokens(f.$length);K.Put(f);if(k>0){b=(m=(new $Int64(0,k)),new $Int64(b.$high+m.$high,b.$low+m.$low));}if(!($interfaceIsEqual(l,$ifaceNil))){n=b;o=l;b=n;c=o;$s=-1;return[b,c];}if(e>0){$s=9;continue;}$s=10;continue;case 9:p=d.sendWindowUpdate(e);$s=11;case 11:if($c){$c=false;p=p.$blk();}if(p&&p.$blk!==undefined){break s;}q=p;if(!($interfaceIsEqual(q,$ifaceNil))){r=b;s=q;b=r;c=s;$s=-1;return[b,c];}case 10:$s=7;continue;case 6:t=d.waitRead();$s=12;case 12:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}u=t;if(!($interfaceIsEqual(u,$ifaceNil))){v=b;w=u;b=v;c=w;$s=-1;return[b,c];}case 7:$s=1;continue;case 2:$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.writeTov2};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.writeTov2=function(a){return this.$val.writeTov2(a);};AF.ptr.prototype.sendWindowUpdate=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;c=AV.nil;d=$chanNil;e=$assertType(b.readDeadline.Load(),G.Time,true);f=$clone(e[0],G.Time);g=e[1];if(g&&!$clone(f,G.Time).IsZero()){c=G.NewTimer(G.Until($clone(f,G.Time)));$deferred.push([$methodVal(c,"Stop"),[]]);d=c.C;}h=$clone(R(((b.sess.config.Version<<24>>>24)),4,b.id),Q);i=AS.zero();$clone(C.LittleEndian,C.littleEndian).PutUint32(new AJ(i),a);$clone(C.LittleEndian,C.littleEndian).PutUint32($subslice(new AJ(i),4),((b.sess.config.MaxStreamBuffer>>>0)));h.data=new AJ(i);k=b.sess.writeFrameInternal($clone(h,Q),d,new $Uint64(0,0));$s=1;case 1:if($c){$c=false;k=k.$blk();}if(k&&k.$blk!==undefined){break s;}j=k;l=j[1];$s=-1;return l;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.sendWindowUpdate};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.sendWindowUpdate=function(a){return this.$val.sendWindowUpdate(a);};AF.ptr.prototype.waitRead=function(){var a,b,c,d,e,f,g,h,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;b=AV.nil;c=$chanNil;d=$assertType(a.readDeadline.Load(),G.Time,true);e=$clone(d[0],G.Time);f=d[1];if(f&&!$clone(e,G.Time).IsZero()){b=G.NewTimer(G.Until($clone(e,G.Time)));$deferred.push([$methodVal(b,"Stop"),[]]);c=b.C;}h=$select([[a.chReadEvent],[a.chFinEvent],[a.sess.chSocketReadError],[a.sess.chProtoError],[c],[a.die]]);$s=1;case 1:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}g=h;if(g[0]===0){$s=2;continue;}if(g[0]===1){$s=3;continue;}if(g[0]===2){$s=4;continue;}if(g[0]===3){$s=5;continue;}if(g[0]===4){$s=6;continue;}if(g[0]===5){$s=7;continue;}$s=8;continue;case 2:$s=-1;return $ifaceNil;case 3:$r=a.bufferLock.Lock();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$deferred.push([$methodVal(a.bufferLock,"Unlock"),[]]);if(a.buffers.$length>0){$s=-1;return $ifaceNil;}$s=-1;return E.EOF;case 4:$s=-1;return $assertType(a.sess.socketReadError.Load(),$error);case 5:$s=-1;return $assertType(a.sess.protoError.Load(),$error);case 6:$s=-1;return $pkg.ErrTimeout;case 7:$s=-1;return E.ErrClosedPipe;case 8:$s=-1;return $ifaceNil;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.waitRead};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.waitRead=function(){return this.$val.waitRead();};AF.ptr.prototype.Write=function(a){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=0;c=$ifaceNil;d=this;if(d.sess.config.Version===2){$s=1;continue;}$s=2;continue;case 1:f=d.writeV2(a);$s=3;case 3:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}e=f;b=e[0];c=e[1];$s=-1;return[b,c];case 2:g=$chanNil;h=$assertType(d.writeDeadline.Load(),G.Time,true);i=$clone(h[0],G.Time);j=h[1];if(j&&!$clone(i,G.Time).IsZero()){k=G.NewTimer(G.Until($clone(i,G.Time)));$deferred.push([$methodVal(k,"Stop"),[]]);g=k.C;}l=$select([[d.die],[]]);if(l[0]===0){m=0;n=E.ErrClosedPipe;b=m;c=n;$s=-1;return[b,c];}else if(l[0]===1){}o=0;p=$clone(R(((d.sess.config.Version<<24>>>24)),2,d.id),Q);q=a;case 4:if(!(q.$length>0)){$s=5;continue;}r=q.$length;if(r>d.frameSize){r=d.frameSize;}p.data=$subslice(q,0,r);q=$subslice(q,r);t=d.sess.writeFrameInternal($clone(p,Q),g,(new $Uint64(0,d.numWritten)));$s=6;case 6:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}s=t;u=s[0];v=s[1];d.numWritten=d.numWritten+(1)>>>0;o=o+(u)>>0;if(!($interfaceIsEqual(v,$ifaceNil))){w=o;x=v;b=w;c=x;$s=-1;return[b,c];}$s=4;continue;case 5:y=o;z=$ifaceNil;b=y;c=z;$s=-1;return[b,c];}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return[b,c];}if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.Write};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.Write=function(a){return this.$val.Write(a);};AF.ptr.prototype.writeV2=function(a){var a,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;aa=$f.aa;ab=$f.ab;ac=$f.ac;ad=$f.ad;ae=$f.ae;af=$f.af;ag=$f.ag;ah=$f.ah;ai=$f.ai;aj=$f.aj;ak=$f.ak;al=$f.al;am=$f.am;an=$f.an;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=0;c=$ifaceNil;d=this;if(a.$length===0){e=0;f=$ifaceNil;b=e;c=f;$s=-1;return[b,c];}g=$select([[d.die],[]]);if(g[0]===0){h=0;i=E.ErrClosedPipe;b=h;c=i;$s=-1;return[b,c];}else if(g[0]===1){}j=$chanNil;k=$assertType(d.writeDeadline.Load(),G.Time,true);l=$clone(k[0],G.Time);m=k[1];if(m&&!$clone(l,G.Time).IsZero()){n=G.NewTimer(G.Until($clone(l,G.Time)));$deferred.push([$methodVal(n,"Stop"),[]]);j=n.C;}o=0;p=$clone(R(((d.sess.config.Version<<24>>>24)),2,d.id),Q);case 1:q=AJ.nil;r=(((J.LoadUint32((d.$ptr_numWritten||(d.$ptr_numWritten=new AW(function(){return this.$target.numWritten;},function($v){this.$target.numWritten=$v;},d))))-J.LoadUint32((d.$ptr_peerConsumed||(d.$ptr_peerConsumed=new AW(function(){return this.$target.peerConsumed;},function($v){this.$target.peerConsumed=$v;},d))))>>>0)>>0));if(r<0){s=0;t=$pkg.ErrConsumed;b=s;c=t;$s=-1;return[b,c];}u=((J.LoadUint32((d.$ptr_peerWindow||(d.$ptr_peerWindow=new AW(function(){return this.$target.peerWindow;},function($v){this.$target.peerWindow=$v;},d))))>>0))-r>>0;if(u>0){$s=3;continue;}$s=4;continue;case 3:if(u>((a.$length>>0))){q=a;a=AJ.nil;}else{q=$subslice(a,0,u);a=$subslice(a,u);}case 5:if(!(q.$length>0)){$s=6;continue;}v=q.$length;if(v>d.frameSize){v=d.frameSize;}p.data=$subslice(q,0,v);q=$subslice(q,v);x=d.sess.writeFrameInternal($clone(p,Q),j,(new $Uint64(0,J.LoadUint32((d.$ptr_numWritten||(d.$ptr_numWritten=new AW(function(){return this.$target.numWritten;},function($v){this.$target.numWritten=$v;},d)))))));$s=7;case 7:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}w=x;y=w[0];z=w[1];J.AddUint32((d.$ptr_numWritten||(d.$ptr_numWritten=new AW(function(){return this.$target.numWritten;},function($v){this.$target.numWritten=$v;},d))),((v>>>0)));o=o+(y)>>0;if(!($interfaceIsEqual(z,$ifaceNil))){aa=o;ab=z;b=aa;c=ab;$s=-1;return[b,c];}$s=5;continue;case 6:case 4:if(a.$length>0){$s=8;continue;}$s=9;continue;case 8:ad=$select([[d.chFinEvent],[d.die],[j],[d.sess.chSocketWriteError],[d.chUpdate]]);$s=11;case 11:if($c){$c=false;ad=ad.$blk();}if(ad&&ad.$blk!==undefined){break s;}ac=ad;if(ac[0]===0){ae=0;af=E.EOF;b=ae;c=af;$s=-1;return[b,c];}else if(ac[0]===1){ag=o;ah=E.ErrClosedPipe;b=ag;c=ah;$s=-1;return[b,c];}else if(ac[0]===2){ai=o;aj=$pkg.ErrTimeout;b=ai;c=aj;$s=-1;return[b,c];}else if(ac[0]===3){ak=o;al=$assertType(d.sess.socketWriteError.Load(),$error);b=ak;c=al;$s=-1;return[b,c];}else if(ac[0]===4){$s=1;continue;}$s=10;continue;case 9:am=o;an=$ifaceNil;b=am;c=an;$s=-1;return[b,c];case 10:$s=1;continue;case 2:$s=-1;return[b,c];}return;}}catch(err){$err=err;$s=-1;}finally{$callDeferred($deferred,$err);if(!$curGoroutine.asleep){return[b,c];}if($curGoroutine.asleep){if($f===undefined){$f={$blk:AF.ptr.prototype.writeV2};}$f.a=a;$f.aa=aa;$f.ab=ab;$f.ac=ac;$f.ad=ad;$f.ae=ae;$f.af=af;$f.ag=ag;$f.ah=ah;$f.ai=ai;$f.aj=aj;$f.ak=ak;$f.al=al;$f.am=am;$f.an=an;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};AF.prototype.writeV2=function(a){return this.$val.writeV2(a);};AF.ptr.prototype.Close=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];b=[b];b[0]=this;a[0]=false;c=$ifaceNil;$r=b[0].dieOnce.Do((function(a,b){return function(){$close(b[0].die);a[0]=true;};})(a,b));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if(a[0]){$s=2;continue;}$s=3;continue;case 2:e=b[0].sess.writeFrame($clone(R(((b[0].sess.config.Version<<24>>>24)),1,b[0].id),Q));$s=5;case 5:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}d=e;c=d[1];$r=b[0].sess.streamClosed(b[0].id);$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return c;case 3:$s=-1;return E.ErrClosedPipe;case 4:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.Close};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.Close=function(){return this.$val.Close();};AF.ptr.prototype.GetDieCh=function(){var a;a=this;return a.die;};AF.prototype.GetDieCh=function(){return this.$val.GetDieCh();};AF.ptr.prototype.SetReadDeadline=function(a){var a,b;b=this;b.readDeadline.Store(new a.constructor.elem(a));b.notifyReadEvent();return $ifaceNil;};AF.prototype.SetReadDeadline=function(a){return this.$val.SetReadDeadline(a);};AF.ptr.prototype.SetWriteDeadline=function(a){var a,b;b=this;b.writeDeadline.Store(new a.constructor.elem(a));return $ifaceNil;};AF.prototype.SetWriteDeadline=function(a){return this.$val.SetWriteDeadline(a);};AF.ptr.prototype.SetDeadline=function(a){var a,b,c,d;b=this;c=b.SetReadDeadline($clone(a,G.Time));if(!($interfaceIsEqual(c,$ifaceNil))){return c;}d=b.SetWriteDeadline($clone(a,G.Time));if(!($interfaceIsEqual(d,$ifaceNil))){return d;}return $ifaceNil;};AF.prototype.SetDeadline=function(a){return this.$val.SetDeadline(a);};AF.ptr.prototype.sessionClose=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];a[0]=this;$r=a[0].dieOnce.Do((function(a){return function(){$close(a[0].die);};})(a));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.sessionClose};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.sessionClose=function(){return this.$val.sessionClose();};AF.ptr.prototype.LocalAddr=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=$assertType(a.sess.conn,AP,true);c=b[0];d=b[1];if(d){$s=1;continue;}$s=2;continue;case 1:e=c.LocalAddr();$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.LocalAddr};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.LocalAddr=function(){return this.$val.LocalAddr();};AF.ptr.prototype.RemoteAddr=function(){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=this;b=$assertType(a.sess.conn,AQ,true);c=b[0];d=b[1];if(d){$s=1;continue;}$s=2;continue;case 1:e=c.RemoteAddr();$s=3;case 3:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}$s=-1;return e;case 2:$s=-1;return $ifaceNil;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.RemoteAddr};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.RemoteAddr=function(){return this.$val.RemoteAddr();};AF.ptr.prototype.pushBytes=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=0;c=$ifaceNil;d=this;$r=d.bufferLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d.buffers=$append(d.buffers,a);d.heads=$append(d.heads,a);$r=d.bufferLock.Unlock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return[b,c];}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.pushBytes};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.pushBytes=function(a){return this.$val.pushBytes(a);};AF.ptr.prototype.recycleTokens=function(){var a,b,c,d,e,f,g,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=0;b=this;$r=b.bufferLock.Lock();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c=b.buffers;d=0;while(true){if(!(d=f.$length)?($throwRuntimeError("index out of range"),undefined):f.$array[f.$offset+e])).$length)>>0;K.Put((g=b.heads,((e<0||e>=g.$length)?($throwRuntimeError("index out of range"),undefined):g.$array[g.$offset+e])));d++;}b.buffers=AU.nil;b.heads=AU.nil;$r=b.bufferLock.Unlock();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return a;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.recycleTokens};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.recycleTokens=function(){return this.$val.recycleTokens();};AF.ptr.prototype.notifyReadEvent=function(){var a,b,$r;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;$r=$f.$r;}a=this;b=$select([[a.chReadEvent,new AN.ptr()],[]]);if(b[0]===0){}else if(b[0]===1){}if($f===undefined){$f={$blk:AF.ptr.prototype.notifyReadEvent};}$f.a=a;$f.b=b;$f.$r=$r;return $f;};AF.prototype.notifyReadEvent=function(){return this.$val.notifyReadEvent();};AF.ptr.prototype.update=function(a,b){var a,b,c,d,$r;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$r=$f.$r;}c=this;J.StoreUint32((c.$ptr_peerConsumed||(c.$ptr_peerConsumed=new AW(function(){return this.$target.peerConsumed;},function($v){this.$target.peerConsumed=$v;},c))),a);J.StoreUint32((c.$ptr_peerWindow||(c.$ptr_peerWindow=new AW(function(){return this.$target.peerWindow;},function($v){this.$target.peerWindow=$v;},c))),b);d=$select([[c.chUpdate,new AN.ptr()],[]]);if(d[0]===0){}else if(d[0]===1){}if($f===undefined){$f={$blk:AF.ptr.prototype.update};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$r=$r;return $f;};AF.prototype.update=function(a,b){return this.$val.update(a,b);};AF.ptr.prototype.fin=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];a[0]=this;$r=a[0].finEventOnce.Do((function(a){return function(){$close(a[0].chFinEvent);};})(a));$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$s=-1;return;}return;}if($f===undefined){$f={$blk:AF.ptr.prototype.fin};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};AF.prototype.fin=function(){return this.$val.fin();};AH.methods=[{prop:"Get",name:"Get",pkg:"",typ:$funcType([$Int],[AJ],false)},{prop:"Put",name:"Put",pkg:"",typ:$funcType([AJ],[$error],false)}];S.methods=[{prop:"Version",name:"Version",pkg:"",typ:$funcType([],[$Uint8],false)},{prop:"Cmd",name:"Cmd",pkg:"",typ:$funcType([],[$Uint8],false)},{prop:"Length",name:"Length",pkg:"",typ:$funcType([],[$Uint16],false)},{prop:"StreamID",name:"StreamID",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"String",name:"String",pkg:"",typ:$funcType([],[$String],false)}];T.methods=[{prop:"Consumed",name:"Consumed",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"Window",name:"Window",pkg:"",typ:$funcType([],[$Uint32],false)}];AM.methods=[{prop:"OpenStream",name:"OpenStream",pkg:"",typ:$funcType([],[AO,$error],false)},{prop:"Open",name:"Open",pkg:"",typ:$funcType([],[E.ReadWriteCloser,$error],false)},{prop:"AcceptStream",name:"AcceptStream",pkg:"",typ:$funcType([],[AO,$error],false)},{prop:"Accept",name:"Accept",pkg:"",typ:$funcType([],[E.ReadWriteCloser,$error],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"notifyBucket",name:"notifyBucket",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"notifyReadError",name:"notifyReadError",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$error],[],false)},{prop:"notifyWriteError",name:"notifyWriteError",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$error],[],false)},{prop:"notifyProtoError",name:"notifyProtoError",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$error],[],false)},{prop:"IsClosed",name:"IsClosed",pkg:"",typ:$funcType([],[$Bool],false)},{prop:"NumStreams",name:"NumStreams",pkg:"",typ:$funcType([],[$Int],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"streamClosed",name:"streamClosed",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Uint32],[],false)},{prop:"returnTokens",name:"returnTokens",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Int],[],false)},{prop:"recvLoop",name:"recvLoop",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"keepalive",name:"keepalive",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"shaperLoop",name:"shaperLoop",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"sendLoop",name:"sendLoop",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"writeFrame",name:"writeFrame",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([Q],[$Int,$error],false)},{prop:"writeFrameInternal",name:"writeFrameInternal",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([Q,AY,$Uint64],[$Int,$error],false)}];AE.methods=[{prop:"Len",name:"Len",pkg:"",typ:$funcType([],[$Int],false)},{prop:"Less",name:"Less",pkg:"",typ:$funcType([$Int,$Int],[$Bool],false)},{prop:"Swap",name:"Swap",pkg:"",typ:$funcType([$Int,$Int],[],false)}];AT.methods=[{prop:"Push",name:"Push",pkg:"",typ:$funcType([$emptyInterface],[],false)},{prop:"Pop",name:"Pop",pkg:"",typ:$funcType([],[$emptyInterface],false)}];AO.methods=[{prop:"ID",name:"ID",pkg:"",typ:$funcType([],[$Uint32],false)},{prop:"Read",name:"Read",pkg:"",typ:$funcType([AJ],[$Int,$error],false)},{prop:"tryRead",name:"tryRead",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"tryReadv2",name:"tryReadv2",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"WriteTo",name:"WriteTo",pkg:"",typ:$funcType([E.Writer],[$Int64,$error],false)},{prop:"writeTov2",name:"writeTov2",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([E.Writer],[$Int64,$error],false)},{prop:"sendWindowUpdate",name:"sendWindowUpdate",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Uint32],[$error],false)},{prop:"waitRead",name:"waitRead",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[$error],false)},{prop:"Write",name:"Write",pkg:"",typ:$funcType([AJ],[$Int,$error],false)},{prop:"writeV2",name:"writeV2",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"Close",name:"Close",pkg:"",typ:$funcType([],[$error],false)},{prop:"GetDieCh",name:"GetDieCh",pkg:"",typ:$funcType([],[BD],false)},{prop:"SetReadDeadline",name:"SetReadDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"SetWriteDeadline",name:"SetWriteDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"SetDeadline",name:"SetDeadline",pkg:"",typ:$funcType([G.Time],[$error],false)},{prop:"sessionClose",name:"sessionClose",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"LocalAddr",name:"LocalAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"RemoteAddr",name:"RemoteAddr",pkg:"",typ:$funcType([],[I.Addr],false)},{prop:"pushBytes",name:"pushBytes",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([AJ],[$Int,$error],false)},{prop:"recycleTokens",name:"recycleTokens",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[$Int],false)},{prop:"notifyReadEvent",name:"notifyReadEvent",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)},{prop:"update",name:"update",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([$Uint32,$Uint32],[],false)},{prop:"fin",name:"fin",pkg:"github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",typ:$funcType([],[],false)}];N.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"buffers",name:"buffers",embedded:false,exported:false,typ:AI,tag:""}]);Q.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"ver",name:"ver",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"cmd",name:"cmd",embedded:false,exported:false,typ:$Uint8,tag:""},{prop:"sid",name:"sid",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"data",name:"data",embedded:false,exported:false,typ:AJ,tag:""}]);S.init($Uint8,8);T.init($Uint8,8);U.init("",[{prop:"Version",name:"Version",embedded:false,exported:true,typ:$Int,tag:""},{prop:"KeepAliveDisabled",name:"KeepAliveDisabled",embedded:false,exported:true,typ:$Bool,tag:""},{prop:"KeepAliveInterval",name:"KeepAliveInterval",embedded:false,exported:true,typ:G.Duration,tag:""},{prop:"KeepAliveTimeout",name:"KeepAliveTimeout",embedded:false,exported:true,typ:G.Duration,tag:""},{prop:"MaxFrameSize",name:"MaxFrameSize",embedded:false,exported:true,typ:$Int,tag:""},{prop:"MaxReceiveBuffer",name:"MaxReceiveBuffer",embedded:false,exported:true,typ:$Int,tag:""},{prop:"MaxStreamBuffer",name:"MaxStreamBuffer",embedded:false,exported:true,typ:$Int,tag:""}]);Z.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"prio",name:"prio",embedded:false,exported:false,typ:$Uint64,tag:""},{prop:"frame",name:"frame",embedded:false,exported:false,typ:Q,tag:""},{prop:"result",name:"result",embedded:false,exported:false,typ:AX,tag:""}]);AA.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"n",name:"n",embedded:false,exported:false,typ:$Int,tag:""},{prop:"err",name:"err",embedded:false,exported:false,typ:$error,tag:""}]);AB.init([{prop:"WriteBuffers",name:"WriteBuffers",pkg:"",typ:$funcType([AU],[$Int,$error],false)}]);AC.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"conn",name:"conn",embedded:false,exported:false,typ:E.ReadWriteCloser,tag:""},{prop:"config",name:"config",embedded:false,exported:false,typ:AL,tag:""},{prop:"nextStreamID",name:"nextStreamID",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"nextStreamIDLock",name:"nextStreamIDLock",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"bucket",name:"bucket",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"bucketNotify",name:"bucketNotify",embedded:false,exported:false,typ:AZ,tag:""},{prop:"streams",name:"streams",embedded:false,exported:false,typ:BA,tag:""},{prop:"streamLock",name:"streamLock",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"die",name:"die",embedded:false,exported:false,typ:AZ,tag:""},{prop:"dieOnce",name:"dieOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"socketReadError",name:"socketReadError",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"socketWriteError",name:"socketWriteError",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"chSocketReadError",name:"chSocketReadError",embedded:false,exported:false,typ:AZ,tag:""},{prop:"chSocketWriteError",name:"chSocketWriteError",embedded:false,exported:false,typ:AZ,tag:""},{prop:"socketReadErrorOnce",name:"socketReadErrorOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"socketWriteErrorOnce",name:"socketWriteErrorOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"protoError",name:"protoError",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"chProtoError",name:"chProtoError",embedded:false,exported:false,typ:AZ,tag:""},{prop:"protoErrorOnce",name:"protoErrorOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"chAccepts",name:"chAccepts",embedded:false,exported:false,typ:BB,tag:""},{prop:"dataReady",name:"dataReady",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"goAway",name:"goAway",embedded:false,exported:false,typ:$Int32,tag:""},{prop:"deadline",name:"deadline",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"shaper",name:"shaper",embedded:false,exported:false,typ:BC,tag:""},{prop:"writes",name:"writes",embedded:false,exported:false,typ:BC,tag:""}]);AE.init(Z);AF.init("github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux",[{prop:"id",name:"id",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"sess",name:"sess",embedded:false,exported:false,typ:AM,tag:""},{prop:"buffers",name:"buffers",embedded:false,exported:false,typ:AU,tag:""},{prop:"heads",name:"heads",embedded:false,exported:false,typ:AU,tag:""},{prop:"bufferLock",name:"bufferLock",embedded:false,exported:false,typ:B.Mutex,tag:""},{prop:"frameSize",name:"frameSize",embedded:false,exported:false,typ:$Int,tag:""},{prop:"chReadEvent",name:"chReadEvent",embedded:false,exported:false,typ:AZ,tag:""},{prop:"die",name:"die",embedded:false,exported:false,typ:AZ,tag:""},{prop:"dieOnce",name:"dieOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"chFinEvent",name:"chFinEvent",embedded:false,exported:false,typ:AZ,tag:""},{prop:"finEventOnce",name:"finEventOnce",embedded:false,exported:false,typ:B.Once,tag:""},{prop:"readDeadline",name:"readDeadline",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"writeDeadline",name:"writeDeadline",embedded:false,exported:false,typ:J.Value,tag:""},{prop:"numRead",name:"numRead",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"numWritten",name:"numWritten",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"incr",name:"incr",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"peerConsumed",name:"peerConsumed",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"peerWindow",name:"peerWindow",embedded:false,exported:false,typ:$Uint32,tag:""},{prop:"chUpdate",name:"chUpdate",embedded:false,exported:false,typ:AZ,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=H.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=A.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=I.$init();$s=7;case 7:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=J.$init();$s=9;case 9:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=G.$init();$s=10;case 10:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}K=AH.nil;L=$toNativeArray($kindUint8,[0,9,1,10,13,21,2,29,11,14,16,18,22,25,3,30,8,12,20,28,15,17,24,7,19,27,23,6,26,5,4,31]);$pkg.ErrInvalidProtocol=A.New("invalid protocol");$pkg.ErrConsumed=A.New("peer consumed more than sent");$pkg.ErrGoAway=A.New("stream id overflows, should start a new connection");$pkg.ErrTimeout=A.New("timeout");$pkg.ErrWouldBlock=A.New("operation would block on IO");M();}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); -$packages["github.com/v2fly/BrowserBridge/bridge"]=(function(){var $pkg={},$init,A,F,D,E,B,C,G,I,J,H;A=$packages["fmt"];F=$packages["github.com/v2fly/BrowserBridge/proto"];D=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket"];E=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux"];B=$packages["io"];C=$packages["time"];G=$pkg.Settings=$newType(0,$kindStruct,"bridge.Settings",true,"github.com/v2fly/BrowserBridge/bridge",true,function(DialAddr_){this.$val=this;if(arguments.length===0){this.DialAddr="";return;}this.DialAddr=DialAddr_;});I=$sliceType($emptyInterface);J=$ptrType(E.Config);H=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];case 1:b=C.NewTimer(new C.Duration(0,1000000000));c=(function(a){return function $b(){var c,d,e,f,g,h,i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=D.Dial(a[0].DialAddr);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:g=A.Println(new I([f,new $String(a[0].DialAddr)]));$s=4;case 4:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g;$s=-1;return;case 3:i=E.Client(e,J.nil);$s=5;case 5:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;j=h[0];f=h[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return;}case 6:k=[k];m=j.Accept();$s=8;case 8:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;k[0]=l[0];n=l[1];if(!($interfaceIsEqual(n,$ifaceNil))){$s=9;continue;}$s=10;continue;case 9:o=A.Println(new I([n]));$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}o;$s=-1;return;case 10:$go((function(a,k){return function $b(){var aa,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:q=F.ReadRequest(k[0]);$s=1;case 1:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;r=p[0];s=p[1];if(!($interfaceIsEqual(r,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:t=A.Println(new I([r]));$s=4;case 4:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}t;$s=-1;return;case 3:v=D.Dial(s.Destination);$s=5;case 5:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}u=v;w=u[0];r=u[1];if(!($interfaceIsEqual(r,$ifaceNil))){$s=6;continue;}$s=7;continue;case 6:x=A.Println(new I([r]));$s=8;case 8:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}x;y=k[0].Close();$s=9;case 9:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}y;$s=-1;return;case 7:$go(B.Copy,[k[0],w]);z=B.Copy(w,k[0]);$s=10;case 10:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}z;aa=k[0].Close();$s=11;case 11:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}aa;$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.aa=aa;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};})(a,k),[]);$s=6;continue;case 7:$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.$s=$s;$f.$r=$r;return $f;};})(a);$r=c();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=$recv(b.C);$s=4;case 4:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d[0];$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Bridge=H;G.init("",[{prop:"DialAddr",name:"DialAddr",embedded:false,exported:true,typ:$String,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/v2fly/BrowserBridge/bridge"]=(function(){var $pkg={},$init,A,C,B,D,E,F,G,I,J,H;A=$packages["fmt"];C=$packages["github.com/v2fly/BrowserBridge/proto"];B=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/gopherjs/websocket"];D=$packages["github.com/v2fly/BrowserBridge/vendor/github.com/xtaci/smux"];E=$packages["io"];F=$packages["time"];G=$pkg.Settings=$newType(0,$kindStruct,"bridge.Settings",true,"github.com/v2fly/BrowserBridge/bridge",true,function(DialAddr_){this.$val=this;if(arguments.length===0){this.DialAddr="";return;}this.DialAddr=DialAddr_;});I=$sliceType($emptyInterface);J=$ptrType(D.Config);H=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=[a];case 1:b=F.NewTimer(new F.Duration(0,1000000000));c=(function(a){return function $b(){var c,d,e,f,g,h,i,j,k,l,m,n,o,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:d=B.Dial(a[0].DialAddr);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:g=A.Println(new I([f,new $String(a[0].DialAddr)]));$s=4;case 4:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}g;$s=-1;return;case 3:i=D.Client(e,J.nil);$s=5;case 5:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}h=i;j=h[0];f=h[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=-1;return;}case 6:k=[k];m=j.Accept();$s=8;case 8:if($c){$c=false;m=m.$blk();}if(m&&m.$blk!==undefined){break s;}l=m;k[0]=l[0];n=l[1];if(!($interfaceIsEqual(n,$ifaceNil))){$s=9;continue;}$s=10;continue;case 9:o=A.Println(new I([n]));$s=11;case 11:if($c){$c=false;o=o.$blk();}if(o&&o.$blk!==undefined){break s;}o;$s=-1;return;case 10:$go((function(a,k){return function $b(){var aa,p,q,r,s,t,u,v,w,x,y,z,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;aa=$f.aa;p=$f.p;q=$f.q;r=$f.r;s=$f.s;t=$f.t;u=$f.u;v=$f.v;w=$f.w;x=$f.x;y=$f.y;z=$f.z;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:q=C.ReadRequest(k[0]);$s=1;case 1:if($c){$c=false;q=q.$blk();}if(q&&q.$blk!==undefined){break s;}p=q;r=p[0];s=p[1];if(!($interfaceIsEqual(r,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:t=A.Println(new I([r]));$s=4;case 4:if($c){$c=false;t=t.$blk();}if(t&&t.$blk!==undefined){break s;}t;$s=-1;return;case 3:v=B.Dial(s.Destination);$s=5;case 5:if($c){$c=false;v=v.$blk();}if(v&&v.$blk!==undefined){break s;}u=v;w=u[0];r=u[1];if(!($interfaceIsEqual(r,$ifaceNil))){$s=6;continue;}$s=7;continue;case 6:x=A.Println(new I([r]));$s=8;case 8:if($c){$c=false;x=x.$blk();}if(x&&x.$blk!==undefined){break s;}x;y=k[0].Close();$s=9;case 9:if($c){$c=false;y=y.$blk();}if(y&&y.$blk!==undefined){break s;}y;$s=-1;return;case 7:$go(E.Copy,[k[0],w]);z=E.Copy(w,k[0]);$s=10;case 10:if($c){$c=false;z=z.$blk();}if(z&&z.$blk!==undefined){break s;}z;aa=k[0].Close();$s=11;case 11:if($c){$c=false;aa=aa.$blk();}if(aa&&aa.$blk!==undefined){break s;}aa;$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.aa=aa;$f.p=p;$f.q=q;$f.r=r;$f.s=s;$f.t=t;$f.u=u;$f.v=v;$f.w=w;$f.x=x;$f.y=y;$f.z=z;$f.$s=$s;$f.$r=$r;return $f;};})(a,k),[]);$s=6;continue;case 7:$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.$s=$s;$f.$r=$r;return $f;};})(a);$r=c();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}d=$recv(b.C);$s=4;case 4:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d[0];$s=1;continue;case 2:$s=-1;return;}return;}if($f===undefined){$f={$blk:H};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Bridge=H;G.init("",[{prop:"DialAddr",name:"DialAddr",embedded:false,exported:true,typ:$String,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); $packages["log"]=(function(){var $pkg={},$init,A,E,B,C,D,F,G,Z,AA,AB,AC,AD,I,H,J,R;A=$packages["fmt"];E=$packages["github.com/gopherjs/gopherjs/nosync"];B=$packages["io"];C=$packages["os"];D=$packages["runtime"];F=$packages["time"];G=$pkg.Logger=$newType(0,$kindStruct,"log.Logger",true,"log",true,function(mu_,prefix_,flag_,out_,buf_){this.$val=this;if(arguments.length===0){this.mu=new E.Mutex.ptr(false);this.prefix="";this.flag=0;this.out=$ifaceNil;this.buf=Z.nil;return;}this.mu=mu_;this.prefix=prefix_;this.flag=flag_;this.out=out_;this.buf=buf_;});Z=$sliceType($Uint8);AA=$arrayType($Uint8,20);AB=$ptrType(Z);AC=$sliceType($emptyInterface);AD=$ptrType(G);H=function(a,b,c){var a,b,c;return new G.ptr(new E.Mutex.ptr(false),b,c,a,Z.nil);};$pkg.New=H;G.ptr.prototype.SetOutput=function(a){var a,b,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;b.mu.Lock();$deferred.push([$methodVal(b.mu,"Unlock"),[]]);b.out=a;}catch(err){$err=err;}finally{$callDeferred($deferred,$err);}};G.prototype.SetOutput=function(a){return this.$val.SetOutput(a);};J=function(a,b,c){var a,b,c,d,e,f,g;d=AA.zero();e=19;while(true){if(!(b>=10||c>1)){break;}c=c-(1)>>0;g=(f=b/10,(f===f&&f!==1/0&&f!==-1/0)?f>>0:$throwRuntimeError("integer divide by zero"));((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=((((48+b>>0)-($imul(g,10))>>0)<<24>>>24)));e=e-(1)>>0;b=g;}((e<0||e>=d.length)?($throwRuntimeError("index out of range"),undefined):d[e]=(((48+b>>0)<<24>>>24)));a.$set($appendSlice(a.$get(),$subslice(new Z(d),e)));};G.ptr.prototype.formatHeader=function(a,b,c,d){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;l=$f.l;m=$f.m;n=$f.n;o=$f.o;p=$f.p;q=$f.q;r=$f.r;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:e=this;a.$set($appendSlice(a.$get(),e.prefix));if(!(((e.flag&7)===0))){$s=1;continue;}$s=2;continue;case 1:if(!(((e.flag&32)===0))){F.Time.copy(b,$clone(b,F.Time).UTC());}if(!(((e.flag&1)===0))){$s=3;continue;}$s=4;continue;case 3:g=$clone(b,F.Time).Date();$s=5;case 5:if($c){$c=false;g=g.$blk();}if(g&&g.$blk!==undefined){break s;}f=g;h=f[0];i=f[1];j=f[2];J(a,h,4);a.$set($append(a.$get(),47));J(a,((i>>0)),2);a.$set($append(a.$get(),47));J(a,j,2);a.$set($append(a.$get(),32));case 4:if(!(((e.flag&6)===0))){$s=6;continue;}$s=7;continue;case 6:l=$clone(b,F.Time).Clock();$s=8;case 8:if($c){$c=false;l=l.$blk();}if(l&&l.$blk!==undefined){break s;}k=l;m=k[0];n=k[1];o=k[2];J(a,m,2);a.$set($append(a.$get(),58));J(a,n,2);a.$set($append(a.$get(),58));J(a,o,2);if(!(((e.flag&4)===0))){a.$set($append(a.$get(),46));J(a,(p=$clone(b,F.Time).Nanosecond()/1000,(p===p&&p!==1/0&&p!==-1/0)?p>>0:$throwRuntimeError("integer divide by zero")),6);}a.$set($append(a.$get(),32));case 7:case 2:if(!(((e.flag&24)===0))){if(!(((e.flag&16)===0))){q=c;r=c.length-1>>0;while(true){if(!(r>0)){break;}if(c.charCodeAt(r)===47){q=$substring(c,(r+1>>0));break;}r=r-(1)>>0;}c=q;}a.$set($appendSlice(a.$get(),c));a.$set($append(a.$get(),58));J(a,d,-1);a.$set($appendSlice(a.$get(),": "));}$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.formatHeader};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.l=l;$f.m=m;$f.n=n;$f.o=o;$f.p=p;$f.q=q;$f.r=r;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.formatHeader=function(a,b,c,d){return this.$val.formatHeader(a,b,c,d);};G.ptr.prototype.Output=function(a,b){var a,b,c,d,e,f,g,h,i,j,k,$s,$deferred,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;j=$f.j;k=$f.k;$s=$f.$s;$deferred=$f.$deferred;$r=$f.$r;}var $err=null;try{s:while(true){switch($s){case 0:$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);c=this;d=$clone(F.Now(),F.Time);e="";f=0;c.mu.Lock();$deferred.push([$methodVal(c.mu,"Unlock"),[]]);if(!(((c.flag&24)===0))){c.mu.Unlock();g=false;h=D.Caller(a);e=h[1];f=h[2];g=h[3];if(!g){e="???";f=0;}c.mu.Lock();}c.buf=$subslice(c.buf,0,0);$r=c.formatHeader((c.$ptr_buf||(c.$ptr_buf=new AB(function(){return this.$target.buf;},function($v){this.$target.buf=$v;},c))),$clone(d,F.Time),e,f);$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}c.buf=$appendSlice(c.buf,b);if((b.length===0)||!((b.charCodeAt((b.length-1>>0))===10))){c.buf=$append(c.buf,10);}j=c.out.Write(c.buf);$s=2;case 2:if($c){$c=false;j=j.$blk();}if(j&&j.$blk!==undefined){break s;}i=j;k=i[1];$s=-1;return k;}return;}}catch(err){$err=err;$s=-1;return $ifaceNil;}finally{$callDeferred($deferred,$err);if($curGoroutine.asleep){if($f===undefined){$f={$blk:G.ptr.prototype.Output};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.j=j;$f.k=k;$f.$s=$s;$f.$deferred=$deferred;$f.$r=$r;return $f;}}};G.prototype.Output=function(a,b){return this.$val.Output(a,b);};G.ptr.prototype.Printf=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=A.Sprintf(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=c.Output(2,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Printf};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Printf=function(a,b){return this.$val.Printf(a,b);};G.ptr.prototype.Print=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprint(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Print};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Print=function(a){return this.$val.Print(a);};G.ptr.prototype.Println=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprintln(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Println};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Println=function(a){return this.$val.Println(a);};G.ptr.prototype.Fatal=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprint(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;C.Exit(1);$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Fatal};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Fatal=function(a){return this.$val.Fatal(a);};G.ptr.prototype.Fatalf=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=A.Sprintf(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=c.Output(2,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;C.Exit(1);$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Fatalf};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Fatalf=function(a,b){return this.$val.Fatalf(a,b);};G.ptr.prototype.Fatalln=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprintln(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;C.Exit(1);$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Fatalln};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Fatalln=function(a){return this.$val.Fatalln(a);};G.ptr.prototype.Panic=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprint(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$panic(new $String(d));$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Panic};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Panic=function(a){return this.$val.Panic(a);};G.ptr.prototype.Panicf=function(a,b){var a,b,c,d,e,f,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:c=this;d=A.Sprintf(a,b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}e=d;f=c.Output(2,e);$s=2;case 2:if($c){$c=false;f=f.$blk();}if(f&&f.$blk!==undefined){break s;}f;$panic(new $String(e));$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Panicf};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Panicf=function(a,b){return this.$val.Panicf(a,b);};G.ptr.prototype.Panicln=function(a){var a,b,c,d,e,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;e=$f.e;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=this;c=A.Sprintln(a);$s=1;case 1:if($c){$c=false;c=c.$blk();}if(c&&c.$blk!==undefined){break s;}d=c;e=b.Output(2,d);$s=2;case 2:if($c){$c=false;e=e.$blk();}if(e&&e.$blk!==undefined){break s;}e;$panic(new $String(d));$s=-1;return;}return;}if($f===undefined){$f={$blk:G.ptr.prototype.Panicln};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.$s=$s;$f.$r=$r;return $f;};G.prototype.Panicln=function(a){return this.$val.Panicln(a);};G.ptr.prototype.Flags=function(){var a,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;a.mu.Lock();$deferred.push([$methodVal(a.mu,"Unlock"),[]]);return a.flag;}catch(err){$err=err;return 0;}finally{$callDeferred($deferred,$err);}};G.prototype.Flags=function(){return this.$val.Flags();};G.ptr.prototype.SetFlags=function(a){var a,b,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;b.mu.Lock();$deferred.push([$methodVal(b.mu,"Unlock"),[]]);b.flag=a;}catch(err){$err=err;}finally{$callDeferred($deferred,$err);}};G.prototype.SetFlags=function(a){return this.$val.SetFlags(a);};G.ptr.prototype.Prefix=function(){var a,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;a.mu.Lock();$deferred.push([$methodVal(a.mu,"Unlock"),[]]);return a.prefix;}catch(err){$err=err;return"";}finally{$callDeferred($deferred,$err);}};G.prototype.Prefix=function(){return this.$val.Prefix();};G.ptr.prototype.SetPrefix=function(a){var a,b,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);b=this;b.mu.Lock();$deferred.push([$methodVal(b.mu,"Unlock"),[]]);b.prefix=a;}catch(err){$err=err;}finally{$callDeferred($deferred,$err);}};G.prototype.SetPrefix=function(a){return this.$val.SetPrefix(a);};G.ptr.prototype.Writer=function(){var a,$deferred;var $err=null;try{$deferred=[];$deferred.index=$curGoroutine.deferStack.length;$curGoroutine.deferStack.push($deferred);a=this;a.mu.Lock();$deferred.push([$methodVal(a.mu,"Unlock"),[]]);return a.out;}catch(err){$err=err;return $ifaceNil;}finally{$callDeferred($deferred,$err);}};G.prototype.Writer=function(){return this.$val.Writer();};R=function(a){var a,b,c,d,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;b=$f.b;c=$f.c;d=$f.d;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=A.Sprintln(a);$s=1;case 1:if($c){$c=false;b=b.$blk();}if(b&&b.$blk!==undefined){break s;}c=b;d=I.Output(2,c);$s=2;case 2:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}d;$s=-1;return;}return;}if($f===undefined){$f={$blk:R};}$f.a=a;$f.b=b;$f.c=c;$f.d=d;$f.$s=$s;$f.$r=$r;return $f;};$pkg.Println=R;AD.methods=[{prop:"SetOutput",name:"SetOutput",pkg:"",typ:$funcType([B.Writer],[],false)},{prop:"formatHeader",name:"formatHeader",pkg:"log",typ:$funcType([AB,F.Time,$String,$Int],[],false)},{prop:"Output",name:"Output",pkg:"",typ:$funcType([$Int,$String],[$error],false)},{prop:"Printf",name:"Printf",pkg:"",typ:$funcType([$String,AC],[],true)},{prop:"Print",name:"Print",pkg:"",typ:$funcType([AC],[],true)},{prop:"Println",name:"Println",pkg:"",typ:$funcType([AC],[],true)},{prop:"Fatal",name:"Fatal",pkg:"",typ:$funcType([AC],[],true)},{prop:"Fatalf",name:"Fatalf",pkg:"",typ:$funcType([$String,AC],[],true)},{prop:"Fatalln",name:"Fatalln",pkg:"",typ:$funcType([AC],[],true)},{prop:"Panic",name:"Panic",pkg:"",typ:$funcType([AC],[],true)},{prop:"Panicf",name:"Panicf",pkg:"",typ:$funcType([$String,AC],[],true)},{prop:"Panicln",name:"Panicln",pkg:"",typ:$funcType([AC],[],true)},{prop:"Flags",name:"Flags",pkg:"",typ:$funcType([],[$Int],false)},{prop:"SetFlags",name:"SetFlags",pkg:"",typ:$funcType([$Int],[],false)},{prop:"Prefix",name:"Prefix",pkg:"",typ:$funcType([],[$String],false)},{prop:"SetPrefix",name:"SetPrefix",pkg:"",typ:$funcType([$String],[],false)},{prop:"Writer",name:"Writer",pkg:"",typ:$funcType([],[B.Writer],false)}];G.init("log",[{prop:"mu",name:"mu",embedded:false,exported:false,typ:E.Mutex,tag:""},{prop:"prefix",name:"prefix",embedded:false,exported:false,typ:$String,tag:""},{prop:"flag",name:"flag",embedded:false,exported:false,typ:$Int,tag:""},{prop:"out",name:"out",embedded:false,exported:false,typ:B.Writer,tag:""},{prop:"buf",name:"buf",embedded:false,exported:false,typ:Z,tag:""}]);$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=F.$init();$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}I=H(C.Stderr,"",3);}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); -$packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"]=(function(){var $pkg={},$init,A,B,C,D,E,G,F;A=$packages["fmt"];B=$packages["github.com/gopherjs/gopherjs/js"];C=$packages["github.com/v2fly/BrowserBridge/bridge"];D=$packages["log"];E=$packages["net/url"];G=$sliceType($emptyInterface);F=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=A.Println(new G([new $String("V3")]));$s=1;case 1:if($c){$c=false;a=a.$blk();}if(a&&a.$blk!==undefined){break s;}a;$go((function $b(){var b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=$internalize($global.window.location.href,$String);d=E.Parse(b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:$r=D.Println(new G([f]));$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 3:g=e.Host;h=A.Sprintf("ws://%v/link",new G([new $String(g)]));$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$r=D.Println(new G([new $String(h)]));$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=A.Sprintf("ws://%v/link",new G([new $String(g)]));$s=7;case 7:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}$r=C.Bridge(new C.Settings.ptr(i));$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$global.location.reload();$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;}),[]);$s=-1;return;}return;}if($f===undefined){$f={$blk:F};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if($pkg===$mainPkg){$s=6;continue;}$s=7;continue;case 6:$r=F();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$mainFinished=true;case 7:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); +$packages["github.com/v2fly/BrowserBridge/bridge/bridgejs"]=(function(){var $pkg={},$init,A,B,C,D,E,G,F;A=$packages["fmt"];B=$packages["github.com/gopherjs/gopherjs/js"];C=$packages["github.com/v2fly/BrowserBridge/bridge"];D=$packages["log"];E=$packages["net/url"];G=$sliceType($emptyInterface);F=function(){var a,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;a=$f.a;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:a=A.Println(new G([new $String("V3")]));$s=1;case 1:if($c){$c=false;a=a.$blk();}if(a&&a.$blk!==undefined){break s;}a;$go((function $b(){var b,c,d,e,f,g,h,i,$s,$r;$s=0;var $f,$c=false;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;b=$f.b;c=$f.c;d=$f.d;e=$f.e;f=$f.f;g=$f.g;h=$f.h;i=$f.i;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:b=$internalize($global.window.location.href,$String);d=E.Parse(b);$s=1;case 1:if($c){$c=false;d=d.$blk();}if(d&&d.$blk!==undefined){break s;}c=d;e=c[0];f=c[1];if(!($interfaceIsEqual(f,$ifaceNil))){$s=2;continue;}$s=3;continue;case 2:$r=D.Println(new G([f]));$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}case 3:g=e.Host;h=A.Sprintf("ws://%v/link",new G([new $String(g)]));$s=5;case 5:if($c){$c=false;h=h.$blk();}if(h&&h.$blk!==undefined){break s;}$r=D.Println(new G([new $String(h)]));$s=6;case 6:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}i=A.Sprintf("ws://%v/link",new G([new $String(g)]));$s=7;case 7:if($c){$c=false;i=i.$blk();}if(i&&i.$blk!==undefined){break s;}$r=C.Bridge(new C.Settings.ptr(i));$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$global.location.reload();$s=-1;return;}return;}if($f===undefined){$f={$blk:$b};}$f.b=b;$f.c=c;$f.d=d;$f.e=e;$f.f=f;$f.g=g;$f.h=h;$f.i=i;$f.$s=$s;$f.$r=$r;return $f;}),[]);$s=-1;return;}return;}if($f===undefined){$f={$blk:F};}$f.a=a;$f.$s=$s;$f.$r=$r;return $f;};$init=function(){$pkg.$init=function(){};var $f,$c=false,$s=0,$r;if(this!==undefined&&this.$blk!==undefined){$f=this;$c=true;$s=$f.$s;$r=$f.$r;}s:while(true){switch($s){case 0:$r=A.$init();$s=1;case 1:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=B.$init();$s=2;case 2:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=C.$init();$s=3;case 3:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=D.$init();$s=4;case 4:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$r=E.$init();$s=5;case 5:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}if($pkg===$mainPkg){$s=6;continue;}$s=7;continue;case 6:$r=F();$s=8;case 8:if($c){$c=false;$r=$r.$blk();}if($r&&$r.$blk!==undefined){break s;}$mainFinished=true;case 7:}return;}if($f===undefined){$f={$blk:$init};}$f.$s=$s;$f.$r=$r;return $f;};$pkg.$init=$init;return $pkg;})(); $synthesizeMethods(); -var $mainPkg = $packages["github.com/xiaokangwang/BrowserBridge/bridge/bridgejs"]; +var $mainPkg = $packages["github.com/v2fly/BrowserBridge/bridge/bridgejs"]; $packages["runtime"].$init(); $go($mainPkg.$init, []); $flushConsole(); From b50d69212826a9ed90853400ff45bd5f8da80ebf Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Fri, 2 Apr 2021 21:48:27 +0800 Subject: [PATCH 55/60] Chore: update protobuf & dependencies (#844) --- go.mod | 6 +++--- go.sum | 14 +++++++------- proxy/shadowsocks/config.pb.go | 9 ++------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index f8f4cb9fd..3c029efcd 100644 --- a/go.mod +++ b/go.mod @@ -12,14 +12,14 @@ require ( github.com/pires/go-proxyproto v0.5.0 github.com/seiflotfy/cuckoofilter v0.0.0-20201222105146-bc6005554a0c github.com/stretchr/testify v1.7.0 - github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd + github.com/v2fly/BrowserBridge v0.0.0-20210402111049-048ea079a400 github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e go.starlark.net v0.0.0-20210312235212-74c10e2c17dc golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 - golang.org/x/net v0.0.0-20210326220855-61e056675ecf + golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210326220804-49726bf1d181 + golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 google.golang.org/grpc v1.36.1 google.golang.org/protobuf v1.26.0 h12.io/socks v1.0.2 diff --git a/go.sum b/go.sum index 2f88e8c07..083b8af98 100644 --- a/go.sum +++ b/go.sum @@ -176,8 +176,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd h1:fQ4O/lTTwSPHbIDhnT/npwHTgJ/5RQWQaQG01VbIYcc= -github.com/v2fly/BrowserBridge v0.0.0-20210327130545-c01e4317fadd/go.mod h1:skmBSeT/GvVqal/eylE9E16x9RC29xFXCbxDLVmatOk= +github.com/v2fly/BrowserBridge v0.0.0-20210402111049-048ea079a400 h1:aEW75Hq5bqMEEEMGxlR9LBfPyTjskthn1BQeigjxN9c= +github.com/v2fly/BrowserBridge v0.0.0-20210402111049-048ea079a400/go.mod h1:skmBSeT/GvVqal/eylE9E16x9RC29xFXCbxDLVmatOk= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848 h1:p1UzXK6VAutXFFQMnre66h7g1BjRKUnLv0HfmmRoz7w= github.com/v2fly/VSign v0.0.0-20201108000810-e2adc24bf848/go.mod h1:p80Bv154ZtrGpXMN15slDCqc9UGmfBuUzheDFBYaW/M= github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e h1:5QefA066A1tF8gHIiADmOVOV5LS43gt3ONnlEl3xkwI= @@ -219,8 +219,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210326220855-61e056675ecf h1:WUcCxqQqDT0aXO4VnQbfMvp4zh7m1Gb2clVuHUAGGRE= -golang.org/x/net v0.0.0-20210326220855-61e056675ecf/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= +golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c h1:KHUzaHIpjWVlVVNh65G3hhuj3KB1HnjY6Cq5cTvRQT8= +golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -250,9 +250,9 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201231184435-2d18734c6014/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210326220804-49726bf1d181 h1:64ChN/hjER/taL4YJuA+gpLfIMT+/NFherRZixbxOhg= -golang.org/x/sys v0.0.0-20210326220804-49726bf1d181/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 h1:rF3Ohx8DRyl8h2zw9qojyLHLhrJpEMgyPOImREEryf0= +golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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= diff --git a/proxy/shadowsocks/config.pb.go b/proxy/shadowsocks/config.pb.go index 3f703068f..4f7d80b61 100644 --- a/proxy/shadowsocks/config.pb.go +++ b/proxy/shadowsocks/config.pb.go @@ -1,13 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0 -// protoc v3.13.0 +// protoc-gen-go v1.26.0 +// protoc v3.15.6 // source: proxy/shadowsocks/config.proto package shadowsocks import ( - proto "github.com/golang/protobuf/proto" net "github.com/v2fly/v2ray-core/v4/common/net" protocol "github.com/v2fly/v2ray-core/v4/common/protocol" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -23,10 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - type CipherType int32 const ( From 01380177b8f24b66a4f72031a7cef38da4753028 Mon Sep 17 00:00:00 2001 From: kslr Date: Fri, 2 Apr 2021 22:04:53 +0800 Subject: [PATCH 56/60] refine package prefix cleanup --- common/errors/errors.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/errors/errors.go b/common/errors/errors.go index a40bdef94..82da2fc49 100644 --- a/common/errors/errors.go +++ b/common/errors/errors.go @@ -38,9 +38,8 @@ func (err *Error) pkgPath() string { return "" } path := reflect.TypeOf(err.pathObj).PkgPath() - if strings.HasPrefix(path, "github.com/v2fly/v2ray-core/v4/") { - return path[31:] - } + path = strings.TrimPrefix(path, "github.com/v2fly/v2ray-core/v4") + path = strings.TrimPrefix(path, "github.com/v2fly/v2ray-core/v4/") return path } From e87e3d6b8550eab2296c4a37968d28cb21438cd4 Mon Sep 17 00:00:00 2001 From: kslr Date: Fri, 2 Apr 2021 22:19:52 +0800 Subject: [PATCH 57/60] move non-VMessAEAD warning to startup --- proxy/vmess/encoding/server.go | 1 - v2ray.go | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/vmess/encoding/server.go b/proxy/vmess/encoding/server.go index 02dae2635..30e63c027 100644 --- a/proxy/vmess/encoding/server.go +++ b/proxy/vmess/encoding/server.go @@ -199,7 +199,6 @@ func (s *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.Request if s.isAEADForced { return nil, drainConnection(newError("invalid user: VMessAEAD is enforced and a non VMessAEAD connection is received. You can still disable this security feature with environment variable v2ray.vmess.aead.forced = false . You will not be able to enable legacy header workaround in the future.")) } - newError("Critical Warning: potentially invalid user: a non VMessAEAD connection is received. From 2022 Jan 1st, this kind of connection will be rejected by default. You should update or replace your client software now. ").AtWarning().WriteToLog() user = userLegacy iv := hashTimestamp(md5.New(), timestamp) vmessAccount = userLegacy.Account.(*vmess.MemoryAccount) diff --git a/v2ray.go b/v2ray.go index 6a0278f08..46b07f7ab 100644 --- a/v2ray.go +++ b/v2ray.go @@ -340,6 +340,7 @@ func (s *Instance) Start() error { } newError("V2Ray ", Version(), " started").AtWarning().WriteToLog() + newError("Starting 2022, non-VMessAEAD connections will be rejected by default.").AtWarning().WriteToLog() return nil } From 78c19934313a206c29a41cb104524163fb535e5b Mon Sep 17 00:00:00 2001 From: kslr Date: Fri, 2 Apr 2021 22:24:14 +0800 Subject: [PATCH 58/60] fix logs prefix matching order --- common/errors/errors.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/errors/errors.go b/common/errors/errors.go index 82da2fc49..00ea45408 100644 --- a/common/errors/errors.go +++ b/common/errors/errors.go @@ -38,8 +38,8 @@ func (err *Error) pkgPath() string { return "" } path := reflect.TypeOf(err.pathObj).PkgPath() - path = strings.TrimPrefix(path, "github.com/v2fly/v2ray-core/v4") path = strings.TrimPrefix(path, "github.com/v2fly/v2ray-core/v4/") + path = strings.TrimPrefix(path, "github.com/v2fly/v2ray-core/v4") return path } From ebd4a563523a721502e2760bca6c19f2e6f48cf1 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Sat, 3 Apr 2021 00:41:38 +0800 Subject: [PATCH 59/60] Chore: remove deprecated scopelint (#847) --- .github/linters/.golangci.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/linters/.golangci.yml b/.github/linters/.golangci.yml index 74b60dcb9..8fcb314bc 100644 --- a/.github/linters/.golangci.yml +++ b/.github/linters/.golangci.yml @@ -5,10 +5,6 @@ run: issues: new: true - exclude-rules: - - path: _test\.go - linters: - - scopelint linters: enable: @@ -25,7 +21,6 @@ linters: - misspell - nakedret - rowserrcheck - - scopelint - staticcheck - structcheck - stylecheck From f08a00229481edbc090841480b3203ad4511c598 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 2 Apr 2021 22:09:29 +0100 Subject: [PATCH 60/60] Update Version --- core.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core.go b/core.go index ddcd44de4..d122e8f8e 100644 --- a/core.go +++ b/core.go @@ -18,7 +18,7 @@ import ( ) var ( - version = "4.36.2" + version = "4.37.0" build = "Custom" codename = "V2Fly, a community-driven edition of V2Ray." intro = "A unified platform for anti-censorship."